I'm currently working on a model that use an excel file, with binary inputs for 8760 hours (1 year.) The file is structured so that in the interested column you have either a 1 or a 0. GAMS is reading correctly the file but the problem occurs later.

Practically I need to code this statement "

**if x(t)=1 then g(t)=A, else g(t)=B**"

the why I used in GAMS is the following ( I wrote it just after the Equations description) :

if (pk(t)=e= 1,

cg(t)=36.367;

else

cg(t)=47.898;

);

However I got an error saying that an uncontrolled set is entered as a costant. (actually I got various errors but this is the first that appears and otehr mistakes are only related to this one because before using this statement everything was working).

Any Idea How?

The Full Code is:

*** SETS DEFINITION ***

***********************

Sets

*** PLANTS DEFINITION

i units /chp,pv,sto,grid/

CHP(i) /chp/

Grid(i) /grid/

Storage(i) /sto/

Power(i) /chp,grid/

*** TIME PERIODS

t time /t0001*t8760/

;

$call=xls2gms r=a1:b8760 i=PV.xls o=PV.inc

$call=xls2gms r=a1:b8760 i=PD.xls o=PD.inc

$call=xls2gms r=a1:b8760 i=HD.xls o=HD.inc

$call=xls2gms r=a1:b8760 i=Peak.xls o=Peak.inc

*** PARAMETERS DEFINITION ***

*****************************

Parameters

*** Costs Parameters

a(i) Power Production Costs [Euro\MWh] /chp 25.028/

c(i) Start-up Costs [Euro] /chp 400/

*** Production Parameters

pmin(i) Minimum Power Production [MW] /chp 0.9588, grid 0/

pmax(i) Maximum Power Production [MW] /chp 4.794/

lmin(i) Minimum Level of Storage [MWh] /sto 0/

lmax(i) Maximum Level of Storage [MWh] /sto 350/

*** Other Parameters

delta(i) Heat-To-Power ratio /chp 3.979/

***CHECK THESE VALUES

char_eff(i) Charging Efficiency of the Storage /sto 0.96/

dis_eff(i) Discharging Efficiency of the Storage /sto 0.98/

****

st_eff(i) Storage Efficciency /sto 0.9566/

;

Scalar

f_up Ramp Up Rate /1/

f_down Ramp Down Rate /0.6/

;

Parameter

*** Solar Production ***

s(t) solar production [MWh]

/

$include PV.inc

/

;

*** Demand Parameters

Parameter pd(t) power demand (MWh)

/

$include PD.inc

/

;

Parameter hd(t) heat demand (MWh)

/

$include HD.inc

/

;

Parameter pk(t) Peak Variable [-]

/

$include peak.inc

/

;

*** VARIABLES DEFINITION ***

****************************

Free Variables

*** Objective Function Variable

z Total costs [Euro]

cg(t) Power Cost from Grid [Euro\MWh]

;

Positive Variables

*** Generation Variables

p(i,t) Power Generation Level [MWh]

q(i,t) Heat Generation Level [MWh]

q_ch(i,t) Storage Charging Level [MWh]

q_dis(i,t) Storage Discharging Level [MWh]

l(i,t) Storage Level [MWh]

***Start Up Variable

v(i,t) Start-Up [-]

x(i,t) Shut-Down [-]

;

Binary Variable

*** Online Status Variable

u(i,t) Online Status [-]

;

*** EQUATIONS DEFINITION ***

****************************

Equations

Costs Total Costs

MinGenPow(i,t) Minimum Power Generation Level When Online [MW]

MaxGenPow(i,t) Maximum Power Generation Level When Online [MW]

HeatToPow(i,t) Heat To Power Ratio

*MaxGenHeat(i,t) Maximum Heat Generation Level When Online [MW]

StartUp(i,t) Start-Up Status

ShutDown(i,t) Shut Down Status

RampUp(i,t) Ramp-Up Status

RampDown(i,t) Ramp-Down Status

BalancePow(t) Balance Power Demand

BalanceHeat(t) Balance Heat Demand

StorageLevel(i,t) Balance of Storage Level

MinStorageLevel(i,t) Minimum Level of the Storage

MaxStorageLevel(i,t) Maximum Level of the Storage

;

if (pk(t)=e= 1,

cg(t)=36.367;

else

cg(t)=47.898;

);

*** Total Cost Equation, Objective Function

Costs .. z =e= sum(t,sum(i$(CHP(i)),a(i)*p(i,t)+c(i)*(v(i,t)+x(i,t)))

+ sum(i$(Grid(i)),cg*p(i,t));

*** Power Generation Level Equations h +10000000*(dslackplus(t)+dslackminus(t))

MinGenPow(i,t)$Power(i) .. p(i,t) =g= pmin(i)*u(i,t);

MaxGenPow(i,t)$CHP(i) .. p(i,t) =l= pmax(i)*u(i,t);

*** Heat Generation Level Equations

HeatToPow(i,t)$(CHP(i)) .. q(i,t) =e= delta(i)*p(i,t);

*** Start-Up and Ramp-Up Equations

StartUp(i,t)$(CHP(i)) .. u(i,t)-u(i,t--1) =l= v(i,t);

ShutDown(i,t)$(CHP(i)) .. u(i,t)-u(i,t--1) =g= x(i,t);

RampUp(i,t)$(CHP(i)) .. p(i,t)-p(i,t--1) =l= f_up*pmax(i);

RampDown(i,t)$(CHP(i)) .. p(i,t--1)-p(i,t) =l= f_down*pmax(i);

*** Demand Equations

BalancePow(t) .. sum(i$(Power(i)),p(i,t)) =e= pd(t)-s(t);

BalanceHeat(t) .. q('chp',t)+q_dis('sto',t)-q_ch('sto',t) =e= hd(t);

*** Storage Equations

StorageLevel(i,t)$(Storage(i)).. l(i,t) =e= st_eff(i)*l(i,t--1)+q_ch(i,t)*char_eff(i)-q_dis(i,t)/dis_eff(i);

MinStorageLevel(i,t)$(Storage(i)).. l(i,t) =g= lmin(i);

MaxStorageLevel(i,t)$(Storage(i)).. l(i,t) =l= lmax(i);

************************

*** END OF THE MODEL ***

************************

***********************

*** SOLVE THE MODEL ***

***********************

Model uc /all/;

Solve uc using rmip minimizing z;

Display z.l, u.l, p.l, q.l,l.l,HD,PD,s, q_ch.l, q_dis.l;