knapsack_basic.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
x: array(Items) of mpvar ! Decision variables
end-declarations
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
forall(i in Items) x(i) is_binary ! All x are 0/1
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
WtMax:= sum(i in Items) WEIGHT(i)*x(i) <= WTMAX ! Weight restriction
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2))
end-model
|
|
knapsack_ellipsoid.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
rev. May 2017
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
WTPERCENT=0.3 ! Uncertainty as a percentage
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
x: array(Items) of mpvar ! Decision variables
WeightUncertainty: array(Items) of uncertain ! Uncertains representing
! deviation from weight
end-declarations
forall(i in Items) x(i) is_binary ! All x are 0/1
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
sum(i in Items) WeightUncertainty(i)^2 <= WTPERCENT * sum(i in Items) WEIGHT(i)
WtMax:= sum(i in Items) (WEIGHT(i) + WeightUncertainty(i))*x(i) <= WTMAX
! Weight restriction
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value Uncertain")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2), strfmt(getsol(WeightUncertainty(i)),8,2))
writeln("Total weight: ", getact(WtMax))
end-model
|
|
knapsack_polyhedron.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
rev. May 2017
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
WTPERCENT=0.3 ! Uncertainty as a percentage
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
x: array(Items) of mpvar ! Decision variables
WeightUncertainty: array(Items) of uncertain ! Uncertains representing
! deviation from weight
end-declarations
forall(i in Items) x(i) is_binary ! All x are 0/1
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
forall(i in Items) do
WeightUncertainty(i) >= 0
end-do
sum(i in Items) WeightUncertainty(i) <= WTPERCENT * sum(i in Items) WEIGHT(i)
WtMax:= sum(i in Items) (WEIGHT(i) + WeightUncertainty(i))*x(i) <= WTMAX
! Weight restriction
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2))
writeln("Total weight: ", getact(WtMax))
end-model
|
|
knapsack_scenario.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
rev. May 2017
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
UNCERTAINTY_LEVEL=0.3 ! How much we are uncertain about the weight
HISTORIC_PERIODS=100 ! Number of scenarios
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
UncertainWeight:array(Items) of uncertain
x: array(Items) of mpvar ! 1 if we take item i; 0 otherwise
historical_weights: array(range, set of uncertain) of real
end-declarations
forall(i in Items) x(i) is_binary ! All x are 0/1
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
WtMax:= sum(i in Items) (WEIGHT(i)+UncertainWeight(i))*x(i) <= WTMAX
! Generate historical data, this would be data collected from actual realizations
forall(period in 1..HISTORIC_PERIODS, i in Items)
historical_weights(period, UncertainWeight(i)) :=
WEIGHT(i)*UNCERTAINTY_LEVEL*random
! Generate a solution that would be feasible for ALL historic realizations
scenario(historical_weights)
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2))
writeln("Total weight: ", getact(WtMax))
end-model
|
|
knapsack_simplebounds.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
rev. May 2017
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
WTPERCENT=0.3 ! Uncertainty as a percentage
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
x: array(Items) of mpvar
WeightUncertainty: array(Items) of uncertain ! Uncertains representing
! deviation from weight
end-declarations
forall(i in Items) x(i) is_binary ! All x are 0/1
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
forall(i in Items) do
WeightUncertainty(i) <= WTPERCENT*WEIGHT(i) ! Uncertainty is a percentage of
! the expected weight
WeightUncertainty(i) >= 0 ! and only expected to go up this time
end-do
WtMax:= sum(i in Items) (WEIGHT(i) + WeightUncertainty(i))*x(i) <= WTMAX
! Weight restriction
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2))
writeln("Total weight: ", getact(WtMax))
end-model
|
|
knapsack_simplebounds_direct.mos |
(!******************************************************
Mosel Example Problems
======================
Example model for the
Robust Optimization with Xpress white paper
(c) 2014 Fair Isaac Corporation
rev. May 2017
*******************************************************!)
model Knapsack
uses "mmrobust" ! Load the robust library
parameters
NUM=5 ! Number of items
MAXVAL=100 ! Maximum value
MAXWEIGHT=80 ! Maximum weight
WTMAX=102 ! Max weight allowed for haul
WTPERCENT=0.3 ! Uncertainty as a percentage
end-parameters
declarations
Items=1..NUM ! Index range for items
VALUE: array(Items) of real ! Value of items
WEIGHT: array(Items) of real ! Weight of items
x: array(Items) of mpvar ! Decision variables
end-declarations
forall(i in Items) x(i) is_binary ! All x are 0/1
setrandseed(5);
forall(i in Items) do
VALUE(i):=50+random*MAXVAL
WEIGHT(i):=1+random*MAXWEIGHT
end-do
MaxVal:= sum(i in Items) VALUE(i)*x(i) ! Objective: maximize total value
WtMax:= sum(i in Items) WEIGHT(i)*(1+WTPERCENT)*x(i) <= WTMAX
! Weight restriction
maximize(MaxVal)
writeln("Solution:\n Objective: ", getobjval)
writeln("Item Weight Value")
forall(i in Items)
writeln(i, ": ", getsol(x(i)), strfmt(WEIGHT(i),8,2), strfmt(VALUE(i),8,2))
writeln("Total weight: ", getact(WtMax))
end-model
|
|