Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Con queste tecniche si possono risolvere problemi come quello del commesso
viaggiatore, il SUDOKU, tecniche bancarie etc.
Molti di questi problemi possono risolversi sia graficamente che con strumenti di
calcolo usando, nel caso LP, il metodo del simplex (vedi Wikipedia), del punto
intermedio (primal-dual interior point); mentre nel caso MIPS tecniche come "Branch
and bound".
Molti di questi problemi sono isomorfi, nel senso che capito come si risolve uno di essi,
tutti gli altri problemi, anche se con descrizione diversa, possono essere ricondotti ad
una tale tecnica.
Esempio
Supponiamo che la Fargo è una società che produce barattoli di pittura bianca, gialla,
nera e rossa. Per fare queste pitture la Fargo usa tre materiali grezzi: 40 litri di olio,
25 litri di solvente e 20 litri di pigmenti.
Per fare il bianco si spendono 12 euro, con 0.8 litri di pigmento, 0.4 di solvente e 0.5 di
olio.
Per fare il giallo si spendono 8 euro, con 0.5 litri di pigmento, 0.2 di solvente e 0.7 di
olio.
Per fare il nero si spendono 9 euro, con 0.2 litri di pigmento, 0.5 litri di solvente, 0.6
di olio.
Per fare il rosso si spendono 11 euro, con 0.3 litri di pigmento, 0.6 litri di solvente e
0.4 litri di olio.
Installiamo GNUWin32 e inseriamo nel PATH di windows il percorso fino alla directory
bin.
Il primo passo è formalizzare il problema. Esistono molti formati per farlo (GMPL, LP
etc).
Nel seguito useremo il formato più intuitivo LP per la formalizzazione algebrica, poi
successivamente quello GMPL.
Maximize
obj: 12 x1 + 8 x2 + 9 x3 + 11 x4
Subject to
c1: .8 x1 + .5 x2 + .2 x3 + .3 x4 <= 20
c2: .4 x1 + .2 x2 + .5 x3 + .6 x4 <= 25
c3: .5 x1 + .7 x2 + .6 x3 + .4 x4 <= 40
End
Da DOS sotto Windows (comando cmd) ci posizioniamo nella directory del file
Fargo.txt.
Problem:
Rows: 3
Columns: 4
Non-zeros: 12
Status: OPTIMAL
Objective: obj = 553.7037037 (MAXimum)
End of output
# MODEL file
set R; /* resources */
/* resource capacity */
end;
data;
set R := Pigment Solvent Oil;
param : b :=
Pigment 20 /* liters */
Solvent 25 /* liters */
Oil 40 /* liters */ ;
param : c :=
PaintA 12 /* euros */
PaintB 8 /* euros */
PaintC 9 /* euros */
PaintD 11 /* euros */ ;
Per una introduzione teorica dei problemi LP vi segnalo il pdf "Linear Programming
A Concise Introduction - Thomas S. Ferguson" che potrete scaricare da internet.