Ad una azienda tessile viene richiesto di produrre un tessuto che deve contenere cotone e almeno 25 kg di filo sintetico e 45 kg di lana. L'azienda può usare una miscela di due filati, così costituiti: (1) cotone 20%, sintetico 50%, lana 30%, o: (2) cotone 30%, sintetico 10%, lana 60%. Sia m la moneta corrente. Il filato (1) costa 30 m/kg, il filato (2) 20 m/kg. In quali quantità deve utilizzare i due filati per minimizzare i costi? Risolvi il problema "geometricamente".
Siano x ed y i due tipi di filato. Il problema è:
0.5 x + 0.1 y ≥ 25 | |
0.3 x + 0.6 y ≥ 45 | |
x + 0y ≥ 0 | |
0x + y ≥ 0 |
source("http://macosa.dima.unige.it/r.R") P <- function(x,y) (0.5*x+0.1*y>= 25) & (0.3*x+0.6*y>= 45) & (0<= x) & (0<= y) HF <- 3; BF <- 3 # La scelta della porzione di piano (eventualmente poi # ritraccio dopo la rappresentazione delle rette) Piano(-5,200, -5,300) diseq2(P,0, "grey") # Dove P > 0 ovvero P = 1 diseq2(P,0, "grey") f1 <- function(x,y) 0.5*x+0.1*y - 25; f2 <- function(x,y) 0.3*x+0.6*y - 45 f3 <- function(x,y) x; f4 <- function(x,y) y curva(f1,"red"); curva(f2,"green"); curva(f3,"orange"); curva(f4,"blue") F <- function(x,y) 30*x + 20*y - M M <- 0; cur(F,"black") M <- 1000; cur(F,"black") # intersezione tra rossa (f1) e verde (f2) frazio(sistema(c(0.5,0.1,25, 0.3,0.6, 45))) # 38.88889 55.55556 # 350/9 500/9 PUNTO(350/9, 500/9, "blue") M <- 0; F(350/9,500/9) # 2277.778 M <-ultimo(); cur(F,"black")
Mi conviene prendere 38.9 kg del primo filato e 55.6 kg del secondo.
In questo caso (semplice da risolvere geometricamente) l'algoritmo "simplex" non avrebbe fornito una risposta.
Comunque con WolframAlpha la ottengo facilmente:
minimize[30x+20y, {0.5x+0.1y>=25 && 0.3x+0.6y >= 45 && y>=0 && 0<=x} ]
fornisce min ≈ 2277.78 at (x,y) ≈ (38.8889, 55.5556)
Approfondimenti in: Programmazione lineare neGli Oggetti Matematici.