Lezione 2 · Canale 1 · giovedì 24 settembre 2026

Modelli di ottimizzazione e richiami su ℝ

Programmazione Matematica

Dal problema al modello

Un problema espresso a parole non si risolve direttamente. Lo si traduce in un modello matematico, che dice che cosa si chiede, e a quel modello si applica un algoritmo numerico, che calcola la soluzione. La traduzione è spesso la parte più difficile.

Problema in linguaggio naturaleModello matematicovariabili, vincoli, obiettivoAlgoritmo numericoSoluzione
Il modello e l'algoritmo sono due cose distinte: il modello formula il problema, l'algoritmo lo risolve.

Un modello ha quattro ingredienti:

  • parametri: i dati assegnati, che non si possono modificare;
  • variabili di decisione: i parametri liberi, ciò su cui si può agire;
  • vincoli: le condizioni che le variabili devono rispettare;
  • funzione obiettivo: la quantità da minimizzare o massimizzare.

Provare a costruire a mano una soluzione intuitiva non serve: prima si scrive il modello. Quattro problemi classici mostrano come.

Assegnamento di ingegneri a progetti

Ci sono 30 ingegneri e 30 progetti. Ogni ingegnere va a un solo progetto e ogni progetto a un solo ingegnere. Il tempo di addestramento tijt_{ij} dell'ingegnere ii sul progetto jj è un parametro assegnato: non si decide. Si decide chi va dove, con variabili che valgono 00 o 11 (variabili binarie):

xij={1ingegnere i→progetto j0altrimentix_{ij}=\begin{cases}1&\text{ingegnere }i\to\text{progetto }j\\0&\text{altrimenti}\end{cases}

Ogni ingegnere ha esattamente un progetto, e ogni progetto esattamente un ingegnere:

∑j=130xij=1i=1,…,30∑i=130xij=1j=1,…,30\begin{gathered} \sum_{j=1}^{30}x_{ij}=1\qquad i=1,\dots,30\\ \sum_{i=1}^{30}x_{ij}=1\qquad j=1,\dots,30 \end{gathered}

L'obiettivo è il tempo complessivo di addestramento. Nel prodotto tijxijt_{ij}x_{ij} contano solo le coppie scelte, quelle con xij=1x_{ij}=1:

min⁡∑i=130∑j=130tij xij\min\sum_{i=1}^{30}\sum_{j=1}^{30}t_{ij}\,x_{ij}

Calendario sportivo

Per un campionato di N=16N=16 squadre il girone di andata ha 15 giornate; il ritorno è speculare. Le variabili hanno tre indici:

xijk={1la squadra i gioca in casacontro la squadra j alla giornata k0altrimentix_{ijk}=\begin{cases}1&\text{la squadra }i\text{ gioca in casa}\\&\text{contro la squadra }j\text{ alla giornata }k\\0&\text{altrimenti}\end{cases}

Su queste variabili si scrivono tutti i vincoli del calendario e uno o più obiettivi. Se la squadra S1S_1 non può giocare in casa alla giornata 3, la somma delle sue partite in casa alla giornata 3 deve essere nulla. La somma corre su tutte le squadre jj:

∑j=1Nx1j3=0\sum_{j=1}^{N}x_{1j3}=0

Un calendario ha un centinaio di vincoli. Se sono incompatibili nessuna scelta delle xx li soddisfa tutti: il problema è inammissibile, e l'algoritmo lo segnala. Allora bisogna indebolire qualche richiesta.

Problema dello zaino

Un convegno ha un budget bb fissato (100 000 euro nell'esempio) e NN relatori tra cui scegliere. Per il relatore ii si stima il numero cic_i di partecipanti che attrae e il costo di ingaggio aia_i (viaggio e alloggio compresi). Si decide solo se invitarlo:

xi={1ingaggio il relatore i0altrimentix_i=\begin{cases}1&\text{ingaggio il relatore }i\\0&\text{altrimenti}\end{cases}

Il vincolo è il budget, l'obiettivo sono le presenze:

∑i=1Nai xi≤bmax⁡∑i=1Nci xi\begin{gathered} \sum_{i=1}^{N}a_i\,x_i\le b\\ \max\sum_{i=1}^{N}c_i\,x_i \end{gathered}

Se xi=0x_i=0 il relatore non pesa né sul costo né sulle presenze.

Problema del trasporto

Ci sono MM magazzini e NN punti vendita. Sono assegnati il costo unitario cijc_{ij} di trasporto dal magazzino ii al punto vendita jj, la capacità aia_i del magazzino ii e la domanda djd_j del punto vendita jj. Qui xijx_{ij} non è 00 o 11: è la quantità trasportata da ii a jj, quindi xij≥0x_{ij}\ge 0.

Da un magazzino non esce più della sua capacità; a un punto vendita arriva esattamente la sua domanda:

∑j=1Nxij≤aii=1,…,M∑i=1Mxij=djj=1,…,N\begin{gathered} \sum_{j=1}^{N}x_{ij}\le a_i\qquad i=1,\dots,M\\ \sum_{i=1}^{M}x_{ij}=d_j\qquad j=1,\dots,N \end{gathered}

Si minimizza il costo complessivo:

min⁡∑i=1M∑j=1Ncij xij\min\sum_{i=1}^{M}\sum_{j=1}^{N}c_{ij}\,x_{ij}

La natura del bene decide il tipo delle variabili. Per le automobili xijx_{ij} è intera, perché non si trasporta 0,70{,}7 di un'auto; per il grano può essere reale. Con variabili intere si usa una classe di algoritmi diversa, e il problema è computazionalmente molto più difficile.

Estremo inferiore e superiore

Il corso porta in Rn\mathbb R^n ciò che si conosce in R\mathbb R. Si richiamano le definizioni in R\mathbb R.

Sia A⊆RA\subseteq\mathbb R. Un numero λ\lambda è un minorante di AA se

λ≤x∀x∈A\lambda\le x\qquad\forall x\in A

L'estremo inferiore è il più grande dei minoranti. Quindi λ=inf⁡A\lambda=\inf A se valgono due condizioni:

(1) λ eˋ un minorante di A(2) λ≥L∀ L minorante di A\begin{gathered} \text{(1) }\lambda\text{ è un minorante di }A\\ \text{(2) }\lambda\ge L\quad\forall\,L\text{ minorante di }A \end{gathered}

Per l'estremo superiore si inverte tutto: un maggiorante è un numero ≥x\ge x per ogni x∈Ax\in A, e λ=sup⁡A\lambda=\sup A è il più piccolo dei maggioranti, cioè λ≤L\lambda\le L per ogni maggiorante LL.

Queste definizioni hanno senso perché R\mathbb R è totalmente ordinato: due numeri si confrontano sempre. In R2\mathbb R^2 non c'è un ordine totale, e di un insieme del piano non si definiscono estremo inferiore e superiore.

Condizioni necessarie e sufficienti

Siano PP una proprietà e CC una condizione. Il «solo se» esprime la condizione necessaria, il «se» la sufficiente:

C necessaria per P:P⇒CC sufficiente per P:C⇒PC necessaria e sufficiente:P⟺C\begin{gathered} C\text{ necessaria per }P:\quad P\Rightarrow C\\ C\text{ sufficiente per }P:\quad C\Rightarrow P\\ C\text{ necessaria e sufficiente:}\quad P\Longleftrightarrow C \end{gathered}

Avere almeno 18 anni è necessario per avere la patente, ma non sufficiente: manca l'esame. Vincere tutte le partite è sufficiente per vincere il campionato, ma non necessario.

In R\mathbb R, per AA non vuoto, la limitatezza è necessaria e sufficiente perché esistano finiti sia inf⁡A\inf A sia sup⁡A\sup A. Dimostrare il «se» significa partire da AA limitato e ricavare i due estremi; dimostrare il «solo se» significa partire dai due estremi e ricavare che AA è limitato. Prima di dimostrare, bisogna riconoscere quale implicazione si sta provando.

Intorni

Dati x0∈Rx_0\in\mathbb R e un raggio ρ>0\rho>0, l'intorno sferico è

Bρ(x0)={x∈R: ∣x−x0∣<ρ}B_\rho(x_0)=\{x\in\mathbb R:\ |x-x_0|<\rho\}

cioè l'intervallo aperto (x0−ρ, x0+ρ)(x_0-\rho,\,x_0+\rho). Un intorno di x0x_0 è un intervallo qualsiasi, non necessariamente sferico, che contiene un intorno sferico di x0x_0.

Intorno sferico di

−1−0,500,511,5200,511,5
  • altezza negli estremi
L'intorno è l'intervallo aperto di centro e raggio : muovendo si allarga e si stringe restando centrato in .

Punti di accumulazione e punti isolati

Un punto x0∈Rx_0\in\mathbb R è di accumulazione per A⊆RA\subseteq\mathbb R se ogni intorno sferico di x0x_0 contiene almeno un punto di AA diverso da x0x_0:

∀ρ>0  ∃x∈A:x≠x0,  x∈Bρ(x0)\forall\rho>0\ \ \exists x\in A:\quad x\ne x_0,\ \ x\in B_\rho(x_0)

Un punto di accumulazione sta in R\mathbb R e può non appartenere ad AA. L'insieme dei punti di accumulazione si indica con DADA. Per A={x∈R: 0<x≤1}A=\{x\in\mathbb R:\ 0<x\le 1\} si ha

DA={x∈R: 0≤x≤1}DA=\{x\in\mathbb R:\ 0\le x\le 1\}

Il punto 00 non appartiene ad AA, ma ogni suo intorno contiene punti di AA.

Accumulazione per

−0,4−0,200,20,40,60,811,2−0,100,10,20,30,4
Per quanto piccolo sia , l'intorno di contiene punti di (la croce): è di accumulazione per pur non appartenendogli.

Un punto di AA che non è di accumulazione per AA si dice isolato: appartiene ad AA e ha un intorno sferico in cui non cade nessun altro punto di AA.

Da R\mathbb R a Rn\mathbb R^n

In R\mathbb R la distanza fra due punti è il valore assoluto della differenza. In R2\mathbb R^2, R3\mathbb R^3, Rn\mathbb R^n il valore assoluto è sostituito da una norma ∥⋅∥\|\cdot\| (la sua definizione formale si dà dopo). L'intorno sferico diventa

Bρ(x0)={x∈Rn: ∥x−x0∥<ρ}B_\rho(x_0)=\{x\in\mathbb R^n:\ \|x-x_0\|<\rho\}

Le definizioni di punto di accumulazione e di punto isolato poggiano sull'intorno: la differenza fra R\mathbb R e Rn\mathbb R^n sta tutta nella distanza.

Formulario

Assegnamento

∑j=130xij=1∑i=130xij=1\begin{gathered} \sum_{j=1}^{30}x_{ij}=1\\ \sum_{i=1}^{30}x_{ij}=1 \end{gathered} min⁡∑i=130∑j=130tij xij\min\sum_{i=1}^{30}\sum_{j=1}^{30}t_{ij}\,x_{ij}

Zaino

∑i=1Nai xi≤bmax⁡∑i=1Nci xi\begin{gathered} \sum_{i=1}^{N}a_i\,x_i\le b\\ \max\sum_{i=1}^{N}c_i\,x_i \end{gathered}

Trasporto

∑j=1Nxij≤ai∑i=1Mxij=djxij≥0\begin{gathered} \sum_{j=1}^{N}x_{ij}\le a_i\\ \sum_{i=1}^{M}x_{ij}=d_j\\ x_{ij}\ge 0 \end{gathered} min⁡∑i=1M∑j=1Ncij xij\min\sum_{i=1}^{M}\sum_{j=1}^{N}c_{ij}\,x_{ij}

Minorante di AA

λ≤x∀x∈A\lambda\le x\quad\forall x\in A

Estremo inferiore

λ minoranteλ≥L  ∀L minorante\begin{gathered} \lambda\text{ minorante}\\ \lambda\ge L\ \ \forall L\text{ minorante} \end{gathered}

Estremo superiore

λ maggioranteλ≤L  ∀L maggiorante\begin{gathered} \lambda\text{ maggiorante}\\ \lambda\le L\ \ \forall L\text{ maggiorante} \end{gathered}

Condizioni

C necessaria: P⇒CC sufficiente: C⇒P\begin{gathered} C\text{ necessaria: }P\Rightarrow C\\ C\text{ sufficiente: }C\Rightarrow P \end{gathered}

Intorno sferico

Bρ(x0)={x: ∣x−x0∣<ρ}B_\rho(x_0)=\{x:\ |x-x_0|<\rho\}

Punto di accumulazione

∀ρ>0 ∃x∈A:x≠x0, x∈Bρ(x0)\begin{gathered} \forall\rho>0\ \exists x\in A:\\ x\ne x_0,\ x\in B_\rho(x_0) \end{gathered}

Punto isolato

x0∈A e nondi accumulazione\begin{gathered} x_0\in A\text{ e non}\\ \text{di accumulazione} \end{gathered}