model Dakota !se ho capito correttamente, dovrebbero essere i valori ottenuti tramite l’objective function !di slide 27 quando la nostra scelta di acquisto iniziale (x_I, x_f, x_c) è quella di una !particolare ipotesi iniziale di domanda (low, m. likely, high). I valori di profitto riportati !sono i massimi della precedente objective function, che considera tutte le !possibili domande di prodotti che possono verificarsi dopo l’acquisto iniziale. !Ho scritto come esercizio il seguente codice Mosel che permette di trovare !i valori dell’ultima colonna di slide 35 prendendo in ingresso solo la scelta di acquisto iniziale !(1 per low, 2 per m. likely, 3 per high). I risultati coincidono correttamente con quelli delle slide. options noimplicit uses "mmxprs" declarations ! indexes products = 1..3 scenarios = 1..3 resources = 1..3 ! variables plan: integer y: array(products) of mpvar price: array(products) of integer demand: array(products,scenarios) of integer bought: array(resources,scenarios) of integer need: array(resources,products) of real p: array(scenarios) of real earn: array(scenarios) of real cost: array(resources) of real s: array(scenarios) of string pr: array(products) of string profit:linctr end-declarations ! initialization price::[60,40,10] demand::[50,150,250,20,110,250,200,225,500] bought::[520,1860,3500,240,820,1500,130,465,875] need::[8,6,1,4,2,1.5,2,1.5,0.5] p::[0.3,0.4,0.3] cost::[2,4,5.2] s::["Low","Most likely","High"] pr::["Desks\t","Tables\t","Chairs\t"] ! planned scenario plan := 3 writeln("Planned: ",s(plan)) ! constraints forall(i in products) y(i) is_integer forall(j in resources) sum(i in products) need(j,i)*y(i) <= bought(j,plan) forall(k in scenarios) do forall(i in products) y(i) <= demand(i,getlast(scenarios)+1-k) ! maximize earns profit := p(k)*sum(i in products) price(i)*y(i) maximize(profit) writeln("Actual: ",s(getlast(scenarios)+1-k)) forall(i in products) writeln(pr(i),getsol(y(i))) earn(k) := getobjval end-do ! minimize expenses profit := sum(j in resources) -cost(j)*bought(j,plan)+sum(i in scenarios) earn(i) maximize(profit) writeln("Expected profit: ", getobjval) end-model