reset; reset; printf"\n\n------------- (a) trova la soluzione ottima--------------\n\n"; model prod1.mod; data prod1.dat; option solver gurobi; solve; printf"\nLa soluzione ottima รจ:\n\n"; printf"Produrre \n"; for{i in 1..n}{ printf"%g collettori del modello %g\n",x[i],i; } printf"\ne comprare \n"; for{i in 1..n}{ printf"%g collettori del modello %g\n",y[i],i; } printf"\nCosto ottimale di produzione = %g \n",sum{i in 1..n} CostoProduzione[i]*x[i] ; printf"\nCosto ottimale di acquisto = %g \n",sum{i in 1..n} CostoAcquisto[i]*y[i] ; printf"\nCosto ottimale totale = %g \n",CostoTotale ; printf"\nOre richieste per la fase 1 di lavorazione = %g \n",sum{i in 1..n} OreFase1[i]*x[i] ; printf"\nOre disponibili per la fase 1 di lavorazione = %g \n",cap1 ; printf"\nVariabile duale associata al vincolo relativo alla fase 1 = %g \n",VincoloFase1 ; printf"\nOre richieste per la fase 2 di lavorazione = %g \n",sum{i in 1..n} OreFase2[i]*x[i] ; printf"\nOre disponibili per la fase 2 di lavorazione = %g \n",cap2 ; printf"\nVariabile duale associata al vincolo relativo alla fase 2 = %g \n",VincoloFase2 ; printf"\n\n------------- (b) varia il costo di produzione dei colletori del modello 1 --------------\n\n"; set Pb := 0 .. 15 by 0.1; # parametro alfa varia nell'insieme Pb param ValOttPertb{Pb} >= 0; # valore ottimo del problema perturbato for{alpha in Pb}{ let CostoProduzione[1] := 50 + alpha; solve; let ValOttPertb[alpha] := CostoTotale; } printf"\nAlpha - CostoTotale \n"; for{alpha in Pb}{ printf"%g \t %g \n",alpha,ValOttPertb[alpha] ; } let CostoProduzione[1] := 50; printf"\n\n------------- (c) varia il costo di acquisto dei collettori del modello 1 --------------\n\n"; set Pc := 0 .. 15 by 0.1; # parameter beta varies in the set Pc param ValOttPertc{Pc} >= 0; # optimal value of the perturbed problem for{beta in Pc}{ let CostoAcquisto[1] := 61 - beta; solve; let ValOttPertc[beta] := CostoTotale; } printf"\nBeta - CostoTotale \n"; for{beta in Pc}{ printf"%g \t %g \n",beta,ValOttPertc[beta] ; } let CostoAcquisto[1] := 61; printf"\n\n------------- (d) variano le ore disponibili per la fase 1 --------------\n\n"; set Pd := 0 .. 500 by 10 ; # parameter gamma varies in the set Pd param ValOttPertd{Pd} >= 0; # optimal value of the perturbed problem for{gamma in Pd}{ let cap1 := 10000 + gamma; solve; let ValOttPertd[gamma] := CostoTotale; } printf"\nGamma - CostoTotale \n"; for{gamma in Pd}{ printf"%g \t %g \n",gamma,ValOttPertd[gamma] ; } let cap1 := 10000 ; printf"\n\n------------- (e) variano le ore disponibili per la fase 2 --------------\n\n"; set Pe := 0 .. 500 by 10 ; # parameter delta varies in the set Pe param ValOttPerte{Pe} >= 0; # optimal value of the perturbed problem for{delta in Pe}{ let cap2 := 5000 + delta; solve; let ValOttPerte[delta] := CostoTotale; } printf"\nDelta - CostoTotale \n"; for{delta in Pe}{ printf"%g \t %g \n",delta,ValOttPerte[delta] ; }