I attach my gams file, the model is a modified EOGLSP adapted to a case study.
Solving the problem on Gams in fact the problem does not give solution, could someone help me? I have been stuck on this work for months
Set
k 'insieme dei prodotti, di cui lo 0 è fittizio' /0,1/
t 'insieme dei macroperiodi' /0,1,2/
s 'insieme dei macroperiodi produttivi' /0*200/
r 'insieme dei macroperiodi energetici' /0*2/
swith(t,s) /1.1*100, 2.101*200/
swithout(t,s) /1.1*99, 2.101*199/
rwith(t,r) /1.0*1, 2.2/;
alias(k, k_primo);
Table sc(k_primo, k)'fattore di costo per attrezzaggio macchina dal prodotto k_primo al prodotto k'
0 1
0 0 0
1 0 0;
Table st(k_primo,k) 'tempo necessario per lattrezzaggio da k_primo a k'
0 1
0 0 0.0069
1 0.0069 0;
Parameter
a(k) 'tempo richiesto per la realizzazione di un prodotto'
/0 0.0000231481
1 0.0000231481/
hc(k) 'costo di stoccaggio del prodotto k'
/0 0
1 0.0003/
pc(k) 'costo per il preserving della macchina per il prodotto k'
/0 0
1 0.00014/
ec(r)'prezzo di acquisto energia nel microperiodo energetico r'
/0 0
1 0.21
2 0.22/
ee(r)'prezzo di vendita energia nel microperiodo energetico r'
/0 0
1 0.15
2 0.16/
p_apiceq(k) 'energia richiesta per la produzione del prodotto k'
/0 0
1 0.00083/
p_apiceqsegnato(k) 'energia richiesta per il preserving della macchina per il prodotto k'
/0 0
1 0.0006/
M 'numero molto grande' /100/
lr 'lunghezza di un microperiodo orientato allenergia' /20/;
Table
p_apicez(k_primo, k) 'consumo di energia per il cambio da k_primo a k sulla macchina'
0 1
0 0 0
1 0 0 ;
Parameter
E_apiceg(r) 'energia generata nel microperiodo energetico r'
/0 0
1 4700
2 4625/
Es 'massima capacità di stoccaggio' /13.5/
C(t) 'lunghezza del microperiodo t'
/1 120
2 120/;
Table
d(k,t) 'domanda di prodotto k nel macroperiodo t'
1 2
0 0 0
1 6806 13611 ;
alias(r,rp);
Variable
Y 'variabile funzione obiettivo'
I(k, t) 'inventario del prodotto k al termine del periodo t'
q_segnato(k, s) 'durata per la quale la macchina viene preservata per il prodotto k nel microperiodo produttivo s'
E_apicep(r) 'quantità di energia acquistata nel microperiodo energetico r'
E_apiceo(r) 'quantità di energia venduta nel microperiodo energetico r'
z(k_primo, k, s) 'variabile di decisione binaria che vale 1 se nel periodo s avviene un cambio da k_primo a k sulla macchina'
l_apiceq(k,r,s) 'lunghezza del microperiodo s assegnato al microperiodo r e utilizzato per produrre k'
l_apiceqsegnato(k,r,s) 'lunghezza del microperiodo s assegnato al microperiodo r e utilizzato per preservare la macchina per la produzione di k'
l_apicez(k_primo, k, r, s) 'lunghezza del microperiodo s assegnato al microperiodo r utilizzata per effettuare il cambio da k_primo a k sulla macchina'
E_apices(r) 'energia stoccata nel microperiodo energetico s'
q(k,s) 'quantità di prodotto k realizzata nel microperiodo s'
e(s) 'lunghezza del microperiodo s'
v(k,s)'variabile di decisione binaria che vale 1 se il prodotto k viene realizzato in s'
v_segnato(k,s) 'variabile di decisione binaria che vale 1 se la macchina viene preservata per il prodotto k in s'
omega(k,s) 'variabile di decisione binaria che vale 1 se la macchina è settata per k in s'
omega(k_primo,s) 'uguale a sopra ma per k_primo'
l(r,s) 'lunghezza di s assegnata a r'
u(r,s) 'variabile di decisione binaria che vale 1 se s è interamente assegnato ad r e precedenti';
Positive Variable q, q_segnato, I, e, E_apices, E_apicep, E_apiceo, l, l_apiceq, l_apiceqsegnato, l_apicez;
Binary Variable omega, z, v, v_segnato, u;
Equation
obj 'costo complessivo'
vincolo1
vincolo2
vincolo3
vincolo4
vincolo5
vincolo6
vincolo7
vincolo8
vincolo9
vincolo10
vincolo11
vincolo12
vincolo13
vincolo14
vincolo15
vincolo16
vincolo17
vincolo18
vincolo19
vincolo20
vincolo21
vincolo22
vincolo23
vincolo24
vincolo25
vincolo26;
obj.. Y =e= (sum((s,k,k_primo)$(ord(s)>1), z(k_primo, k, s) * sc(k_primo, k)) + (sum(t $(ord(t)>1), I('1',t) * hc('1'))) + (sum((k,s)$(ord(s)>1),q_segnato(k,s)*pc(k))) + (sum (r $(ord (r)>1), (E_apicep(r)*ec(r)-E_apiceo(r)*ee(r)))));
vincolo1(r) $(ord(r)>1).. (sum((s,k) $(ord(s)>1), l_apiceq(k, r, s)*p_apiceq(k) + l_apiceqsegnato(k, r, s)*p_apiceqsegnato(k) + sum(k_primo, l_apicez(k_primo, k, r, s)*p_apicez(k_primo,k))))+E_apiceo(r)+E_apices(r) =e= E_apiceg(r)+E_apicep(r)+E_apices(r-1);
vincolo2(r).. E_apices(r) =l= Es;
vincolo3(t,k) $(ord(k)>1 and ord (t)>1).. I(k,t)=e=I(k,t-1)+sum(s $(swith(t,s)), q(k,s)-d(k,t));
vincolo4(s).. (sum(k, a(k)*q(k,s)+q_segnato(k,s))) + (sum(k_primo, sum(k, st(k_primo,k)*z(k_primo,k,s))))=e=e(s);
vincolo5(t).. sum(s $(swith(t,s)), e(s))=e=C(t);
vincolo6(k,s).. q(k,s)=l=v(k,s)*M;
vincolo7(k,s).. q_segnato(k,s)=l=v_segnato(k,s)*M;
vincolo8(s).. sum(k,v(k,s)+v_segnato(k,s)+sum(k_primo, z(k_primo,k,s)))=e=1;
vincolo9(s).. sum(k, omega(k,s))=e=1;
vincolo10(k,t,s) $(swith(t,s)).. a(k)*q(k,s)+q_segnato(k,s) =l= C(t)*omega(k,s);
vincolo11(k_primo,k,s) $(ord(s)>1).. z(k_primo,k,s)=g=omega(k_primo,s-1)+omega(k,s)-1;
vincolo12(r) $(ord(r)>1).. sum(s, l(r,s))=e=lr;
vincolo13(s).. sum(r, l(r,s))=e=e(s);
vincolo14(r,s).. sum(rp$(ord(rp)<=ord(r)),l(rp,s))-e(s) =g= (-1+u(r,s))*M;
vincolo15(r,s) $(ord(s)>1).. u(r,s)=l= u(r,s-1);
vincolo16(r,s) $(ord(s)>1).. l(r,s)=l=u(r,s-1)*lr;
vincolo17(k,r,s).. l_apiceq(k,r,s)=g=(v(k,s)-1)*M+l(r,s);
vincolo18 (k,r,s).. l_apiceqsegnato(k,r,s)=g=(v_segnato(k,s)-1)*M+l(r,s);
vincolo19(k_primo,k,r,s).. l_apicez(k_primo,k,r,s)=g=(z(k_primo,k,s)-1)*M+l(r,s);
vincolo20(r,s).. sum(k,l_apiceq(k,r,s)+l_apiceqsegnato(k,r,s)+sum(k_primo,l_apicez(k_primo,k,r,s)))=l=l(r,s);
vincolo21(t,s) $(swithout(t,s)).. e(s)*M=g=e(s+1);
vincolo22(k,t,s) $(swithout(t,s)).. v(k,s)+v(k,s+1)=l=1;
vincolo23(k,t,s) $(swithout(t,s)).. v_segnato(k,s)+v_segnato(k,s+1)=l=1;
vincolo24(r).. u(r, '0')=e=1;
vincolo25(k).. I(k,'0')=e=0;
vincolo26.. omega('0', '0')=e=1;
model EOGLSP_newframework /all/;
solve EOGLSP_newframework minimizing Y using MIP;