Difference between revisions of "Mixed-Integer linear programming"
Jump to navigation
Jump to search
Kevin Dunn (talk | contribs) (Created page with "__NOTOC__ {{ClassSidebar | date = 25 March 2015 | dates_alt_text = | vimeoID1 = 123236313 | vimeoID2 = | vimeoID3 = | vimeoID4 = | vimeoID5 = | vimeoID6 = | vimeoID7 = | vim...") |
Kevin Dunn (talk | contribs) |
||
Line 76: | Line 76: | ||
model recipe /all/; | model recipe /all/; | ||
SOLVE recipe using MIP maximizing income; | SOLVE recipe using MIP maximizing income; | ||
</syntaxhighlight> | |||
===Solving the knapsack problem=== | |||
<syntaxhighlight lang="matlab"> | |||
free variable value "total value"; | |||
sets j "item j" /1*5/; | |||
binary variables x(j) "whether to include item in the knapsack"; | |||
parameter v(j) "value of object j" | |||
/1 4, | |||
2 2, | |||
3 10, | |||
4 1, | |||
5 2/; | |||
parameter w(j) "weight of object j" | |||
/1 12, | |||
2 1, | |||
3 4, | |||
4 1, | |||
5 2/; | |||
EQUATIONS | |||
obj "maximize value", | |||
weight "weight constraint"; | |||
obj.. value =e= sum(j, v(j)*x(j)); | |||
weight.. sum(j, w(j)*x(j)) =L= 15; | |||
model knapsack /all/; | |||
solve knapsack using mip maximizing value; | |||
</syntaxhighlight> | |||
=== Solving the knapsack problem for selecting amount projects, with constraints === | |||
<syntaxhighlight lang="matlab"> | |||
free variable value "total value"; | |||
sets j "item j" /1*5/; | |||
binary variables x(j) "whether to include item in the project"; | |||
parameter v(j) "value of object j" | |||
/1 50, | |||
2 72, | |||
3 25, | |||
4 41, | |||
5 17/; | |||
parameter w(j) "cost of object j" | |||
/1 8, | |||
2 21, | |||
3 15, | |||
4 10, | |||
5 7/; | |||
EQUATIONS | |||
obj "maximize value", | |||
weight "weight constraint", | |||
me1v2 "1 and 2 are mutually exclusive", | |||
me1v3v5 "1, 3 and 5 are mutually exclusive", | |||
d4v3 "4 depends on 3"; | |||
obj.. value =e= sum(j, v(j)*x(j)); | |||
weight.. sum(j, w(j)*x(j)) =L= 35; | |||
me1v2.. x('1') + x('2') =L= 1; | |||
me1v3v5.. x('1') + x('3') + x('5') =L= 1; | |||
d4v3.. x('4') =L= x('3'); | |||
model projects /all/; | |||
solve projects using mip maximizing value; | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:44, 30 March 2015
Class date(s): | 25 March 2015 | ||||
| |||||
Resources
Scroll down, if necessary, to see the resources.
Date | Class number | Topic | Slides/handouts for class | Video file | References and Notes |
---|---|---|---|---|---|
25 February | 11B |
|
Video |
Solving a basic ILP
free variable income "total income";
positive variables x1, x2;
binary variable delta "use ingredient x3 or not at all";
EQUATIONS
obj "maximize income",
blend "blending constraint";
obj.. income =E= 18*x1 - 3*x2 - 9*(20*delta);
blend.. 2*x1 + x2 + 7*(20*delta) =L= 150;
x1.up = 25;
x2.up = 30;
model recipe /all/;
SOLVE recipe using MIP maximizing income;
Solving the knapsack problem
free variable value "total value";
sets j "item j" /1*5/;
binary variables x(j) "whether to include item in the knapsack";
parameter v(j) "value of object j"
/1 4,
2 2,
3 10,
4 1,
5 2/;
parameter w(j) "weight of object j"
/1 12,
2 1,
3 4,
4 1,
5 2/;
EQUATIONS
obj "maximize value",
weight "weight constraint";
obj.. value =e= sum(j, v(j)*x(j));
weight.. sum(j, w(j)*x(j)) =L= 15;
model knapsack /all/;
solve knapsack using mip maximizing value;
Solving the knapsack problem for selecting amount projects, with constraints
free variable value "total value";
sets j "item j" /1*5/;
binary variables x(j) "whether to include item in the project";
parameter v(j) "value of object j"
/1 50,
2 72,
3 25,
4 41,
5 17/;
parameter w(j) "cost of object j"
/1 8,
2 21,
3 15,
4 10,
5 7/;
EQUATIONS
obj "maximize value",
weight "weight constraint",
me1v2 "1 and 2 are mutually exclusive",
me1v3v5 "1, 3 and 5 are mutually exclusive",
d4v3 "4 depends on 3";
obj.. value =e= sum(j, v(j)*x(j));
weight.. sum(j, w(j)*x(j)) =L= 35;
me1v2.. x('1') + x('2') =L= 1;
me1v3v5.. x('1') + x('3') + x('5') =L= 1;
d4v3.. x('4') =L= x('3');
model projects /all/;
solve projects using mip maximizing value;