Home | Research Interests | Publications | Positions | Personal | Models | Seminar Abstracts | Powerpoint Talks
 

 

» Agprice
» Constraint
» Curve
» Decent
» Distrib
» Economy
» Efficient
  Factory
» Farm
» Food
» Hydro
» Logic
» Manpower
» Market
» Milk
» Mining
» OandX
» Opencast
» Refinery
» Tariff
» TSP
» Yield
 

Model Factory

  MODEL Factory
  DATA
    n_per = 6
  SET
   

Prod = {1 .. 7}, MACH = {1 .. 5}, PER = {1 .. n_per};

  DATA
    hours_avail = 384,
    time[MACH,Prod] << "time.dat",
    market[n_per,Prod] << "sale.dat",
    totmach[MACH,n_per] << "mach.dat",
    prof[Prod] = [10,6,8,4,11,9,3];
  VARIABLES
   

mprod[Prod,n_per], sprod[Prod,n_per], hprod[Prod,n_per];

  OBJECTIVE
 

 

MAXIMIZE PROFIT = sum {t in PER, i in Prod} (prof[i]*sprod[i,t] - 0.5*hprod[i,t]);
  CONSTRAINTS
   

bal{i in Prod, t in PER, t=1}: mprod[i,t] - sprod[i,t] - hprod[i,t] = 0,

   

bal{i in Prod, t in PER, t>1}: hprod[i,t-1] + mprod[i,t] - sprod[i,t] - hprod[i,t] = 0,

   

cap{m in MACH, t in PER}: sum {i in Prod} time[m,i]*mprod[i,t] <= hours_avail*totmach[m,t],

   

for {i in Prod, t in PER} {sprod[i,t] <= market[t,i], if (t<n_per) hprod[i,t] <= 100 else hprod[i,t] = 50 };

  END MODEL
   

solve Factory;

   

print solution for Factory >> "Factory.sol";

   

quit;


 
  MODEL Factoryb
  DATA
    n_per = 6;
  SET
    Prod = {1 .. 7}, MACH = {1 .. 5}, PER = {1 .. n_per};
  DATA
    hours_avail = 384,
    time[MACH,Prod] << "time.dat",
    market[n_per,Prod] << "sale.dat",
    mach_avail[MACH] = [4,2,3,1,1],
    prof[Prod] = [10,6,8,4,11,9,3],
    n_down[MACH] = [2,2,3,1,1];
  VARIABLES
    mprod[Prod,n_per], sprod[Prod,n_per],
    sprod[Prod,n_per],
    hprod[Prod,n_per],
    nd[MACH,n_per] integer;
  OBJECTIVE
    MAXIMIZE PROFIT = sum {t in PER, i in Prod} (prof[i]*sprod[i,t] - 0.5*hprod[i,t]);
  CONSTRAINTS
    bal{i in Prod, t in PER, t=1}: mprod[i,t] - sprod[i,t] - hprod[i,t] = 0,
    bal{i in Prod, t in PER, t>1}: hprod[i,t-1] + mprod[i,t] - sprod[i,t] - hprod[i,t] = 0,
    cap{m in MACH, t in PER}: sum {i in Prod} time[m,i]*mprod[i,t] <= hours_avail*(mach_avail[m]-nd[m,t]),
    down{m in MACH}: sum {t in PER} nd[m,t] = n_down[m],
    for {m in MACH, t in PER} nd[m,t] <= n_down[m],
    for {i in Prod, t in PER} {sprod[i,t] <= market[t,i], if (t <n_per) hprod[i,t] <= 100 else hprod[i,t] = 50 };
  END MODEL
    solve Factory;
    print solution for Factoryb >> "Factoryb.sol
    quit;

  mach.dat
    [3,4,4,4,3,4,
    2,2,2,1,1,2,
    3,1,3,3,3,2,
    1,1,1,1,1,0]

  sale.dat
    [500,1000,300,300,800,200,100,
    600,500,200,0,400,300,150,
    300,600,0,0,500,400,100,
    200,300,400,500,200,0,100,
    0,100,500,100,1000,300,0,
    500,500,100,300,1100,500,60]

  time.dat
    [0.5,0.7,0,0,0.3,0.2,0.5,
    0.1,0.2,0,0.3,0,0.6,0,
    0.2,0,0.8,0,0,0,0.6,
    0.05,0.03,0,0.07,0.1,0,0.08,
    0,0,0.01,0,0.05,0,0.05]

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 
         
 
Site updated December 2021 | email: h.p.williams@lse.ac.uk