I'm making a problem to maximize the production in a certain refinery (college studies).

The software gives me the information that my problem is unbounded (badly scaled), what is the reason?

And the optimal solution is not correct.

The code is in attachment to this post.

Thank you in advance.

*Model:*

Set

a declaration of type of fuels /FO, G95, G98/

;

Parameters

costs(a) costs of production for each type of fuel in € per liter

revenue(a) revenue of selling each type of fuel in € per liter

mindemandgasoline minimum anticipated demand of gasoline (per day)

maxdemandfueloil production limit of fuel oil (per day)

;

*Import of the numerical data of the problem (input data file must be in project directory):

$call GDXXRW.exe i=data_input.xlsx o=data_input.gdx par=costs rng=Refinery!B2:C5 rdim=1 par=revenue rng=Refinery!B7:C10 rdim=1 par=maxdemandfueloil rng=Refinery!B13 dim=0 par=mindemandgasoline rng=Refinery!B16 dim=0

$GDXIN data_input.gdx

$LOAD costs, revenue, maxdemandfueloil, mindemandgasoline

$GDXIN

Positive Variables

totalrevenue total revenue in €

totalcosts total costs in €

;

Free Variables

totalprofit total profit in €

z(a) decision variable in kg per each paper type

;

Equations

objfunction objective function

totalrevenuecalc revenue calculation

totalcostscalc costs calculation

restriction1 restricting the minimum demand of gasoline per day

restriction2 restricting the maximum demand of fuel oil production per day

restriction3 restricting two parts of fuel oil for units of gasoline;

totalrevenuecalc

..totalrevenue =e=(sum(a,revenue(a)*z(a)));

totalcostscalc

..totalcosts =e=(sum(a,costs(a)*z(a)));

objfunction

..totalprofit=e=((sum(a,revenue(a)*z(a)))-((sum(a,costs(a)*z(a)))));

*Profit equals revenue minus costs

restriction1..((z("G95"))+(z("G98")))=g= mindemandgasoline;

*restricts the production of gasoline to a minimum demand value given

restriction2..(z("FO"))=l= maxdemandfueloil;

*restricts the maximum production of fuel oil

restriction3..(z("FO"))=g=(2*(z("G95")+z("G98")));

*restricts the amount of gasoline to at least half the amount

*fuel oil

Model

Refinery /all/

;

* Chosing of the minos solver for this solution

Option lp=minos; File opt 'Minos option file' /minos.opt/;

*Output file configuration in following code:

putclose opt 'Iteration limit 10000'/ 'Feasibility tolerance 1.0E-5'/;

File Dispatch this is the internal .doc /refinery_outputdata.doc/;

puttl Dispatch, "Economical evaluation of production refinery"///;

puthd "Products are the following:"/;

put

@10,"Fuel oil - FO"/

@10,"Gasoline 95 - G95"/

@10,"Gasoline 98 - G98"//

;

Solve

Refinery using lp maximizing totalprofit

Set

a declaration of type of fuels /FO, G95, G98/

;

Parameters

costs(a) costs of production for each type of fuel in € per liter

revenue(a) revenue of selling each type of fuel in € per liter

mindemandgasoline minimum anticipated demand of gasoline (per day)

maxdemandfueloil production limit of fuel oil (per day)

;

*Import of the numerical data of the problem (input data file must be in project directory):

$call GDXXRW.exe i=data_input.xlsx o=data_input.gdx par=costs rng=Refinery!B2:C5 rdim=1 par=revenue rng=Refinery!B7:C10 rdim=1 par=maxdemandfueloil rng=Refinery!B13 dim=0 par=mindemandgasoline rng=Refinery!B16 dim=0

$GDXIN data_input.gdx

$LOAD costs, revenue, maxdemandfueloil, mindemandgasoline

$GDXIN

Positive Variables

totalrevenue total revenue in €

totalcosts total costs in €

;

Free Variables

totalprofit total profit in €

z(a) decision variable in kg per each paper type

;

Equations

objfunction objective function

totalrevenuecalc revenue calculation

totalcostscalc costs calculation

restriction1 restricting the minimum demand of gasoline per day

restriction2 restricting the maximum demand of fuel oil production per day

restriction3 restricting two parts of fuel oil for units of gasoline;

totalrevenuecalc

..totalrevenue =e=(sum(a,revenue(a)*z(a)));

totalcostscalc

..totalcosts =e=(sum(a,costs(a)*z(a)));

objfunction

..totalprofit=e=((sum(a,revenue(a)*z(a)))-((sum(a,costs(a)*z(a)))));

*Profit equals revenue minus costs

restriction1..((z("G95"))+(z("G98")))=g= mindemandgasoline;

*restricts the production of gasoline to a minimum demand value given

restriction2..(z("FO"))=l= maxdemandfueloil;

*restricts the maximum production of fuel oil

restriction3..(z("FO"))=g=(2*(z("G95")+z("G98")));

*restricts the amount of gasoline to at least half the amount

*fuel oil

Model

Refinery /all/

;

* Chosing of the minos solver for this solution

Option lp=minos; File opt 'Minos option file' /minos.opt/;

*Output file configuration in following code:

putclose opt 'Iteration limit 10000'/ 'Feasibility tolerance 1.0E-5'/;

File Dispatch this is the internal .doc /refinery_outputdata.doc/;

puttl Dispatch, "Economical evaluation of production refinery"///;

puthd "Products are the following:"/;

put

@10,"Fuel oil - FO"/

@10,"Gasoline 95 - G95"/

@10,"Gasoline 98 - G98"//

;

Solve

Refinery using lp maximizing totalprofit