Anonymous user
Knapsack problem/Unbounded: Difference between revisions
→{{header|SAS}}
m (→{{header|REXX}}: changed/added comments and whitespace, changed indentations.) |
|||
Line 2,982:
3 6 5 11 54500
4 9 0 11 54500
</pre>
Use SAS/OR:
<lang sas>
/* 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;
</lang>
MILP solver output:
<pre>
TotalValue
54500
[1] NumSelected
gold (bars) 11
ichor (ampules of) 0
panacea (vials of) 9
</pre>
CLP solver output:
<pre>
TotalValue
54500
[1]
gold (bars) 11
ichor (ampules of) 15
panacea (vials of) 0
[1]
gold (bars) 11
ichor (ampules of) 10
panacea (vials of) 3
[1]
gold (bars) 11
ichor (ampules of) 5
panacea (vials of) 6
[1]
gold (bars) 11
ichor (ampules of) 0
panacea (vials of) 9
</pre>
|