Hi!
The included file is parsed by AMPL (and NEOS server) without a glitch
and is actually solved.
However, glpsol returns the following error message which I do not
comprehend:
GLPSOL: GLPK LP/MIP Solver, v4.52
Parameter(s) specified in the command line:
--model AggrPlan.neos
Reading model section from AggrPlan.neos...
Reading data section from AggrPlan.neos...
AggrPlan.neos:123: syntax error in parameter data block
Context: ...itOut := A 0 B 0 ; param FinOut := A 0 B 0 ; param InitWrk =
MathProg model processing error
What am I doing wrong here?
I would appreciate any help in bypassing the trouble. I have spend hours
in trying to find an error by I can't.
Google searches do not seem to provide me with any useful answer.
Thank you in advance,
A. Ph.
#
# Aggregate Planning Model Example solve on NEOS server (who does not like end;)
#
set PROD; # Set of products
param T > 0; # Time horizon (number of months)
param InitWrk >=0; # Initial work force
param OTLimit >=0; # Over-time limit in relation to regular time of the labor
param Demand{PROD, 1..T} >= 0; # Demand for each product in each period
param InvCost{PROD} >= 0; # Inventory cost for each product
param StCost{PROD} >= 0; # Stock out cost for each product
param PrCost{PROD} >= 0; # Production cost for each product
param SubCost{PROD} >= 0; # Subcontracting cost for each product
param ProdRate{PROD}>= 0; # Production rate per period for each product
param ProdTime{PROD}>= 0; # Time required to produce a unit of a product
param InitInv{PROD} >= 0; # Initial Inventory for each product
param InitOut{PROD} >= 0; # Initial stock out/backlog for each product
param FinInv{PROD} >= 0; # Final Inventory for each product
param FinOut{PROD} >= 0; # Final stock out/backlog for each product
param FTCost{1..T} >= 0; # Full-time workers cost per period
param OTCost{1..T} >= 0; # Over-time cost per period
param HCost{1..T} >= 0; # Hiring cost of new labor per period
param LCost{1..T} >= 0; # Layoff cost per period
var w{0..T} >= 0; # Total numbers of emploees working in each period
var h{1..T} >= 0; # Workesrs hired at the beginning of a period
var l{1..T} >= 0; # Workers laid off at the beginning of a period
var o{1..T} >= 0; # Overtime hours worked in period t
var W{p in PROD, t in 1..T} >= 0; # Labor working on product p in month t
var P{p in PROD, t in 1..T} >= 0; # Units of product p produced at the end of
period t
var I{p in PROD, t in 0..T} >= 0; # Inventory of product p at the end of perio t
var S{p in PROD, t in 0..T} >= 0; # Units of product p stocked out/backlogged
at the end of period t
var C{p in PROD, t in 1..T} >= 0; # Units of product p subcontracted for period
t
var O{p in PROD, t in 1..T} >= 0; # Overtime hours on product p in period t
minimize total_cost:
sum{t in 1..T} ( FTCost[t]*w[t] + OTCost[t]*o[t] + HCost[t]*h[t] +
LCost[t] *l[t] ) +
sum{p in PROD, t in 1..T} ( InvCost[p]*I[p,t] + StCost[p]*S[p,t] +
PrCost[p]*P[p,t] + SubCost[p]*C[p,t]);
subject to workforce{t in 1..T}:
w[t] = w[t-1] + h[t] -l[t];
subject to total_workforce{t in 1..T}:
w[t] = sum{p in PROD} W[p,t];
subject to capacity{p in PROD, t in 1..T}:
P[p,t] <= ProdRate[p]*W[p,t] + O[p,t]/ProdTime[p];
subject to overtime{p in PROD, t in 1..T}:
O[p,t] <= OTLimit * W[p,t];
subject to total_overtime{t in 1..T}:
o[t] = sum{p in PROD} O[p,t];
subject to inventory_balance{p in PROD, t in 1..T}:
I[p,t-1] + P[p,t] + C[p,t] = Demand[p,t] + S[p,t-1] + I[p,t] - S[p,t];
subject to initial_workforce:
w[0] = InitWrk;
subject to initial_inventory{p in PROD}:
I[p,0] = InitInv[p];
subject to initial_stock_out{p in PROD}:
S[p,0] = InitOut[p];
subject to final_inventory{p in PROD}:
I[p,T] = FinInv[p];
subject to final_stock_out{p in PROD}:
S[p,T] = FinOut[p];
# end;
data;
set PROD := A B;
param T := 6;
param OTLimit := 48;
param InvCost := A 2 B 3;
param StCost := A 6 B 8;
param PrCost := A 10 B 15;
param SubCost := A 35 B 50;
param ProdRate := A 480 B 320;
param ProdTime := A 0.33 B 0.50;
param FTCost := 1 2560 2 2560 3 2560 4 2560 5 2560 6 2560;
param OTCost := 1 24 2 24 3 24 4 24 5 24 6 24;
param HCost := 1 200 2 200 3 200 4 200 5 200 6 200;
param LCost := 1 300 2 300 3 300 4 300 5 300 6 300;
param Demand : 1 2 3 4 5 6 :=
A 1300 1500 2000 1400 2000 1800
B 1000 3000 4000 2000 2000 2200 ;
param InitInv := A 50 B 50;
param FinInv := A 50 B 50;
param InitOut := A 0 B 0;
param FinOut := A 0 B 0;
param InitWrk = 15;
# end;
solve;
display total_cost;
display w;
dispaly o;
display P;
display I;
display S;
display C;
_______________________________________________
Help-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-glpk