Un agricoltore vuole coltivare nel suo terreno tre prodotti U, V, W.
Per ogni ettaro coltivato a U occorrono 15 giornate di lavoro, 10 per ognuno coltivato a V,
20 per ognuno coltivato a W.
La superficie massima utilizzabile è di 50 ettari.
In un anno dispone di 650 giornate di lavoro di operai. La coltivazione di W non può superare i 25 ettari.
Sia m l'unità di misura monetaria in vigore.
Per U si ha un utile di
max | m = 28 u + 23 v + 30 w (in centinaia di unità monetarie) | ||
u + v + w ≤ 50 | 0 ≤ u | ||
15 u + 10 v + 20 w ≤ 650 | 0 ≤ v | ||
w ≤ 25 | 0 ≤ w |
Risolviamo il problema con R usando la funzione simplex:
library(boot) # Carico la libreria contenente "simplex" # I vincoli: A11 <- c(1,1,1); b11 <- 50 # quelli ≤ A12 <- c(15,10,20); b12 <- 650 A13 <- c(0,0,1); b13 <- 25 A21 <- c(1,0,0); b21 <- 0 # quelli ≥ A22 <- c(0,1,0); b22 <- 0 A23 <- c(0,0,1); b23 <- 0 # Il problema da massimizzare a1 <- c(28,23,30) simplex(A1=rbind(A11,A12,A13),A2=rbind(A21,A22,A23),a=a1, b1=c(b11,b12,b13), b2=c(b21,b22,b23) ,maxi=TRUE) Optimal solution has the following values x1 x2 x3 30 20 0 The optimal value of the objective function is 1300.
Conviene coltivare 30 ettari con U e 20 con V. Il massimo utile è di 1300·100 m.
Avrei ottenuto la stessa risposta con WolframAlpha mettendo
maximize[28x+23y+30z, {x+y+z<=50 && 15x+10y+20z<=650 && z<=25 && y>=0 && 0<=x && z >=0} ]
Approfondimenti in: Programmazione lineare neGli Oggetti Matematici.