Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,30 @@
|
|||
data one;
|
||||
wtpanacea=0.3; wtichor=0.2; wtgold=2.0;
|
||||
volpanacea=0.025; volichor=0.015; volgold=0.002;
|
||||
valpanacea=3000; valichor=1800; valgold=2500;
|
||||
maxwt=25; maxvol=0.25;
|
||||
|
||||
/* we can prune the possible selections */
|
||||
maxpanacea = floor(min(maxwt/wtpanacea, maxvol/volpanacea));
|
||||
maxichor = floor(min(maxwt/wtichor, maxvol/volichor));
|
||||
maxgold = floor(min(maxwt/wtgold, maxvol/volgold));
|
||||
do i1 = 0 to maxpanacea;
|
||||
do i2 = 0 to maxichor;
|
||||
do i3 = 0 to maxgold;
|
||||
panacea = i1; ichor=i2; gold=i3; output;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
run;
|
||||
data one; set one;
|
||||
vals = valpanacea*panacea + valichor*ichor + valgold*gold;
|
||||
totalweight = wtpanacea*panacea + wtichor*ichor + wtgold*gold;
|
||||
totalvolume = volpanacea*panacea + volichor*ichor + volgold*gold;
|
||||
if (totalweight le maxwt) and (totalvolume le maxvol);
|
||||
run;
|
||||
proc sort data=one;
|
||||
by descending vals;
|
||||
run;
|
||||
proc print data=one (obs=4);
|
||||
var panacea ichor gold vals;
|
||||
run;
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/* create SAS data set */
|
||||
data mydata;
|
||||
input Item $1-19 Value weight Volume;
|
||||
datalines;
|
||||
panacea (vials of) 3000 0.3 0.025
|
||||
ichor (ampules of) 1800 0.2 0.015
|
||||
gold (bars) 2500 2.0 0.002
|
||||
;
|
||||
|
||||
/* call OPTMODEL procedure in SAS/OR */
|
||||
proc optmodel;
|
||||
/* declare sets and parameters, and read input data */
|
||||
set <str> ITEMS;
|
||||
num value {ITEMS};
|
||||
num weight {ITEMS};
|
||||
num volume {ITEMS};
|
||||
read data mydata into ITEMS=[item] value weight volume;
|
||||
|
||||
/* declare variables, objective, and constraints */
|
||||
var NumSelected {ITEMS} >= 0 integer;
|
||||
max TotalValue = sum {i in ITEMS} value[i] * NumSelected[i];
|
||||
con WeightCon:
|
||||
sum {i in ITEMS} weight[i] * NumSelected[i] <= 25;
|
||||
con VolumeCon:
|
||||
sum {i in ITEMS} volume[i] * NumSelected[i] <= 0.25;
|
||||
|
||||
/* call mixed integer linear programming (MILP) solver */
|
||||
solve;
|
||||
|
||||
/* print optimal solution */
|
||||
print TotalValue;
|
||||
print NumSelected;
|
||||
|
||||
/* to get all optimal solutions, call CLP solver instead */
|
||||
solve with CLP / findallsolns;
|
||||
|
||||
/* print all optimal solutions */
|
||||
print TotalValue;
|
||||
for {s in 1.._NSOL_} print {i in ITEMS} NumSelected[i].sol[s];
|
||||
quit;
|
||||
Loading…
Add table
Add a link
Reference in a new issue