### An MIP formulation for MPEC can be solved with option optcr=0. However, the result appears not an optimal solution.

Posted:

**Wed Jun 28, 2017 5:17 am**Hello,

I have developed an MIP formulation for MPEC as follows. It can be solved with option optcr=0. However, the result appears not an optimal solution. If we set Pb_h.fx(h) = 20, a better solution can be derived. It is strange. Would you please help me.

Thank so much in advance

sets

d demand /1/,

b /1*2/,

w /1*2/,

g thermal generation /1/,

h hydro /1/;

scalars

Pb_cap price cap for bids[$.MWh^-1] /50/,

Mmax /10000/;

parameters

qd(d) demand /1 200/,

Pb_g(g, w, b) price offer by block bg of thermal generating unit g in time period t and scenario w /1.1.1 22, 1.1.2 23, 1.2.1 22.1, 1.2.2 22.3/,

q_hmax(h) maximum capacity of hydroplant in time period t[MW] /1 200/,

q_gmax(g, w, b) maximum capacity of block bg of thermal generating unit g in time period t /1.1.1 150, 1.1.2 150, 1.2.1 150, 1.2.2 150/,

q_gmin(g, w, b) minimum capacity of block bg of thermal generating unit g in time period t/1.1.1 0, 1.1.2 0, 1.2.1 0, 1.2.2 0/;

positive variables

Pb_h(h) price offer by block bg of hydropower plant in period t ,

qb_h(h) quantity offer by block bg of hydropower plant in period t;

*Pb_h.fx(h) = 20;

variables

obj the target,

lamda(w) locational marginal price at node n in period t and scenario w,

q_h(h, w) power produced by block bg of hydropower plant in period t and scenario w,

q_g(g, w, b) power produced block bg of thermal generating unit g in period t and scenario w,

miu_hmax(h, w) duel,

miu_hmin(h, w),

miu_gmax(g, w, b),

miu_gmin(g, w, b);

binary variables

ah_min(h, w),

ah_max(h, w),

ag_min(g, w, b),

ag_max(g, w, b);

equations

ob,

BidLimit(h, b),

BlockLimit(h),

DerLamda(w),

derH(h, w),

derG(g, w, b),

CompHmin1(h, w),

CompHmin2(h, w),

CompHmin3(h, w),

CompHmin4(h, w),

CompGmin1(g, w, b),

CompGmin2(g, w, b),

CompGmin3(g, w, b),

CompGmin4(g, w, b),

CompHmax1(h, w),

CompHmax2(h, w),

CompHmax3(h, w),

CompHmax4(h, w),

CompGmax1(g, w, b),

CompGmax2(g, w, b),

CompGmax3(g, w, b),

CompGmax4(g, w, b);

ob.. obj =e= -sum((g, w, b), q_g(g, w, b) * Pb_g(g, w, b)) + sum((d, w), Lamda(w) * qd(d)) - sum((g, w, b), miu_gmax(g, w, b) * q_gmax(g, w, b)) - sum(h, Pb_h(h));

BidLimit(h, b).. Pb_h(h) =l= Pb_cap;

BlockLimit(h).. qb_h(h) =e= q_hmax(h);

DerLamda(w).. sum(d, qd(d)) - sum(h, q_h(h, w)) - sum((g, b), q_g(g, w, b)) =e= 0;

derH(h, w).. Pb_h(h) - Lamda(w) + miu_hmax(h, w) - miu_hmin(h, w) =e= 0;

derG(g, w, b).. Pb_g(g, w, b) - Lamda(w) + miu_gmax(g, w, b) - miu_gmin(g, w, b) =e= 0;

CompHmin1(h, w) .. q_h(h, w) =g= 0;

CompHmin2(h, w) .. miu_hmin(h, w) =g= 0;

CompHmin3(h, w) .. q_h(h, w) =l= ah_min(h, w)*Mmax;

CompHmin4(h, w) .. miu_hmin(h, w) =l= (1-ah_min(h, w))*Mmax;

CompHmax1(h, w) .. qb_h(h)-q_h(h, w) =g= 0;

CompHmax2(h, w) .. miu_hmax(h, w) =g= 0;

CompHmax3(h, w) .. qb_h(h)-q_h(h, w) =l= ah_max(h, w)*Mmax;

CompHmax4(h, w) .. miu_hmax(h, w) =l= (1-ah_max(h, w))*Mmax;

CompGmin1(g, w, b) .. q_g(g, w, b)-q_gmin(g, w, b) =g= 0;

CompGmin2(g, w, b) .. miu_gmin(g, w, b) =g= 0;

CompGmin3(g, w, b) .. q_g(g, w, b)-q_gmin(g, w, b) =l= ag_min(g, w, b)*Mmax;

CompGmin4(g, w, b) .. miu_gmin(g, w, b) =l= (1-ag_min(g, w, b))*Mmax;

CompGmax1(g, w, b) .. q_gmax(g, w, b)-q_g(g, w, b) =g= 0;

CompGmax2(g, w, b) .. miu_gmax(g, w, b) =g= 0;

CompGmax3(g, w, b) .. q_gmax(g, w, b)-q_g(g, w, b) =l= ag_max(g, w, b)*Mmax;

CompGmax4(g, w, b) .. miu_gmax(g, w, b) =l= (1-ag_max(g, w, b))*Mmax;

model simple /all/;

option optcr=0;

solve simple using MIP maximizing obj;

I have developed an MIP formulation for MPEC as follows. It can be solved with option optcr=0. However, the result appears not an optimal solution. If we set Pb_h.fx(h) = 20, a better solution can be derived. It is strange. Would you please help me.

Thank so much in advance

sets

d demand /1/,

b /1*2/,

w /1*2/,

g thermal generation /1/,

h hydro /1/;

scalars

Pb_cap price cap for bids[$.MWh^-1] /50/,

Mmax /10000/;

parameters

qd(d) demand /1 200/,

Pb_g(g, w, b) price offer by block bg of thermal generating unit g in time period t and scenario w /1.1.1 22, 1.1.2 23, 1.2.1 22.1, 1.2.2 22.3/,

q_hmax(h) maximum capacity of hydroplant in time period t[MW] /1 200/,

q_gmax(g, w, b) maximum capacity of block bg of thermal generating unit g in time period t /1.1.1 150, 1.1.2 150, 1.2.1 150, 1.2.2 150/,

q_gmin(g, w, b) minimum capacity of block bg of thermal generating unit g in time period t/1.1.1 0, 1.1.2 0, 1.2.1 0, 1.2.2 0/;

positive variables

Pb_h(h) price offer by block bg of hydropower plant in period t ,

qb_h(h) quantity offer by block bg of hydropower plant in period t;

*Pb_h.fx(h) = 20;

variables

obj the target,

lamda(w) locational marginal price at node n in period t and scenario w,

q_h(h, w) power produced by block bg of hydropower plant in period t and scenario w,

q_g(g, w, b) power produced block bg of thermal generating unit g in period t and scenario w,

miu_hmax(h, w) duel,

miu_hmin(h, w),

miu_gmax(g, w, b),

miu_gmin(g, w, b);

binary variables

ah_min(h, w),

ah_max(h, w),

ag_min(g, w, b),

ag_max(g, w, b);

equations

ob,

BidLimit(h, b),

BlockLimit(h),

DerLamda(w),

derH(h, w),

derG(g, w, b),

CompHmin1(h, w),

CompHmin2(h, w),

CompHmin3(h, w),

CompHmin4(h, w),

CompGmin1(g, w, b),

CompGmin2(g, w, b),

CompGmin3(g, w, b),

CompGmin4(g, w, b),

CompHmax1(h, w),

CompHmax2(h, w),

CompHmax3(h, w),

CompHmax4(h, w),

CompGmax1(g, w, b),

CompGmax2(g, w, b),

CompGmax3(g, w, b),

CompGmax4(g, w, b);

ob.. obj =e= -sum((g, w, b), q_g(g, w, b) * Pb_g(g, w, b)) + sum((d, w), Lamda(w) * qd(d)) - sum((g, w, b), miu_gmax(g, w, b) * q_gmax(g, w, b)) - sum(h, Pb_h(h));

BidLimit(h, b).. Pb_h(h) =l= Pb_cap;

BlockLimit(h).. qb_h(h) =e= q_hmax(h);

DerLamda(w).. sum(d, qd(d)) - sum(h, q_h(h, w)) - sum((g, b), q_g(g, w, b)) =e= 0;

derH(h, w).. Pb_h(h) - Lamda(w) + miu_hmax(h, w) - miu_hmin(h, w) =e= 0;

derG(g, w, b).. Pb_g(g, w, b) - Lamda(w) + miu_gmax(g, w, b) - miu_gmin(g, w, b) =e= 0;

CompHmin1(h, w) .. q_h(h, w) =g= 0;

CompHmin2(h, w) .. miu_hmin(h, w) =g= 0;

CompHmin3(h, w) .. q_h(h, w) =l= ah_min(h, w)*Mmax;

CompHmin4(h, w) .. miu_hmin(h, w) =l= (1-ah_min(h, w))*Mmax;

CompHmax1(h, w) .. qb_h(h)-q_h(h, w) =g= 0;

CompHmax2(h, w) .. miu_hmax(h, w) =g= 0;

CompHmax3(h, w) .. qb_h(h)-q_h(h, w) =l= ah_max(h, w)*Mmax;

CompHmax4(h, w) .. miu_hmax(h, w) =l= (1-ah_max(h, w))*Mmax;

CompGmin1(g, w, b) .. q_g(g, w, b)-q_gmin(g, w, b) =g= 0;

CompGmin2(g, w, b) .. miu_gmin(g, w, b) =g= 0;

CompGmin3(g, w, b) .. q_g(g, w, b)-q_gmin(g, w, b) =l= ag_min(g, w, b)*Mmax;

CompGmin4(g, w, b) .. miu_gmin(g, w, b) =l= (1-ag_min(g, w, b))*Mmax;

CompGmax1(g, w, b) .. q_gmax(g, w, b)-q_g(g, w, b) =g= 0;

CompGmax2(g, w, b) .. miu_gmax(g, w, b) =g= 0;

CompGmax3(g, w, b) .. q_gmax(g, w, b)-q_g(g, w, b) =l= ag_max(g, w, b)*Mmax;

CompGmax4(g, w, b) .. miu_gmax(g, w, b) =l= (1-ag_max(g, w, b))*Mmax;

model simple /all/;

option optcr=0;

solve simple using MIP maximizing obj;