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 /12/,
w /12/,
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;