#------------ parametri --------------------- param n integer > 0; # numero di modelli da produrre param domanda{i in 1..n} >= 0; # domanda[i] = numero di collettori ordinati del modello i param OreFase1{i in 1..n} >= 0 ; # OreFase1[i] = numero di ore di lavorazione della fase 1 # necessarie per produrre un collettore del modello i param cap1 >= 0; # numero di ore disponibili per la fase 1 di lavorazione param OreFase2{i in 1..n} >= 0 ; # OreFase2[i] = numero di ore di lavorazione della fase 2 # necessarie per produrre un collettore del modello i param cap2 >= 0; # numero di ore disponibili per la fase 2 di lavorazione param CostoProduzione{i in 1..n} >= 0 ; # CostoProduzione[i] = costo per produrre un collettore del modello i param CostoAcquisto{i in 1..n} >= 0 ; # CostoAcquisto[i] = costo per acquistare dall'azienda concorrente # un collettore del modello i #------------- variabili ------------------- var x{i in 1..n} >= 0 integer; # x[i] = numero di collettori del modello i prodotti in casa var y{i in 1..n} >= 0 integer; # y[i] = numero di collettori del modello i acquistati dall'azienda concorrente #------------- funzione obiettivo ------------------- minimize CostoTotale: sum{i in 1..n} CostoProduzione[i]*x[i] + sum{i in 1..n} CostoAcquisto[i]*y[i]; #------------- vincoli ------------------- s.t. VincoloFase1: sum{i in 1..n} OreFase1[i]*x[i] <= cap1; s.t. VincoloFase2: sum{i in 1..n} OreFase2[i]*x[i] <= cap2; s.t. VincoliDomanda{i in 1..n}: x[i] + y[i] = domanda[i];