Bilevel program optimal solution

Problems with modeling
Post Reply
tkrist
User
User
Posts: 1
Joined: 5 months ago

Bilevel program optimal solution

Post by tkrist » 5 months ago

In the below program I dont obtain the global solution unless I give the the global solution as starting values.
Is there a way I can improve the modelling to achieve the global solution of t=835, a=208 and d=1. It particularly seems that that t does not achieve the maximum value in the subproblem.

Thanks

$offtext

$if not set nlpsolver $set nlpsolver conopt


*-------------------------------------------------------------------------------
scalar a_l /10/
t_l / 30/
d13_l / 1/
d23_l / 0/
T13 /100/
T23 /800/;

Equations
outerobj
innerobj
innereq1
innereq2
e1
e2
e3
e4
e5
e6
e7
e8
e9;

Variables
out
in
d13
d23
t;

Positive Variables
a;

a.l=a_l;
t.l=t_l;
d13.l=d13_l;
d23.l=d23_l;

outerobj.. out =e= a*(40*d13+10*d23);

innerobj.. in =e= t*(60*d13+10*d23);

innereq1.. T13+t*d13=l= 900;
innereq2.. T23+t*d23=l= 900;

e1.. 2/3*( T13+a*d13)+1/3*(T23+a*d23)=l= 900;
e2.. 2/3*( T13+(a+t)*d13)+1/3*(T23+(a+t)*d23)=l= 900;
e3.. 1/3*( T13+a*d13)+2/3*(T23+a*d23)=l= 900;
e4.. 1/3*( T13+(a+t)*d13)+2/3*(T23+(a+t)*d23)=l= 900;
e5.. 1/3*( T13+a*d13)-1/3*(T23+a*d23)=l= 200;
e6.. 1/3*( T13+(a+t)*d13)-1/3*(T23+(a+t)*d23)=l= 200;
e7.. -1/3*( T13+a*d13)+1/3*(T23+a*d23)=l= 200;
e8.. -1/3*( T13+(a+t)*d13)+1/3*(T23+(a+t)*d23)=l= 200;
e9.. d13*d13+d23*d23=e= 1;

model outer / outerobj,e1,e2,e3,e4,e5,e6,e7,e8,e9 /
inner / innerobj, innereq1,innereq2 /
bilevel / outer, inner /;

$echo bilevel a d13 d23 max in t innerobj innereq1 innereq2 > "%emp.info%"
*$onecho > "%emp.info%"
*bilevel a d13 d23 t
*max in innerobj innereq1 innereq2
*$offecho

option dnlp=%nlpsolver%;

a.l=a_l;
t.l=t_l;
d13.l=d13_l;
d23.l=d23_l;

solve bilevel using emp maximizing out;

Post Reply