Monday, October 26, 2015

METAL LPs

MetalLPs

Two very simple Linear Programming problems from the METAL Series (Mathematics for Economics: enhancing Teaching and Learning).
http://www.metalproject.co.uk/METAL/Resources/Films/

The Chocolatier Problem

In [1]:
using JuMP
In [2]:
m1=Model()
Out[2]:
$$ \begin{alignat*}{1}\min\quad & 0\\ \text{Subject to} \quad\end{alignat*} $$
In [3]:
@defVar(m1,x[1:2])
Out[3]:
$$ x_{i} free \quad\forall i \in \{1,2\} $$
In [4]:
@addConstraint(m1,4x[1]+18x[2]<=1296)
@addConstraint(m1,12x[1]+6x[2]<=1824)
@addConstraint(m1,x[1]>=0)
@addConstraint(m1,x[2]>=0)
Out[4]:
$$ x_{2} \geq 0 $$
In [5]:
@setObjective(m1,Max,55x[1]+89x[2])
Out[5]:
$$ 55 x_{1} + 89 x_{2} $$
In [6]:
print(m1)
Max 55 x[1] + 89 x[2]
Subject to
 4 x[1] + 18 x[2] ≤ 1296
 12 x[1] + 6 x[2] ≤ 1824
 x[1] ≥ 0
 x[2] ≥ 0
 x[i] free ∀ i ∈ {1,2}
In [7]:
solve(m1)
Out[7]:
:Optimal
In [8]:
print(getValue(x))
[130.5,43.0]
In [9]:
println("Objective is: ",m1.objVal)
Objective is: 11004.5

Tomatoes vs Lettuces Problem

In [10]:
m2=Model()
Out[10]:
$$ \begin{alignat*}{1}\min\quad & 0\\ \text{Subject to} \quad\end{alignat*} $$
In [11]:
@defVar(m2,y[1:2])
Out[11]:
$$ y_{i} free \quad\forall i \in \{1,2\} $$
In [12]:
@addConstraint(m2,10y[1]+15y[2]<=420)
@addConstraint(m2,y[1]+2y[2]<=50)
@addConstraint(m2,y[1]<=10)
@addConstraint(m2,y[2]>=12)
@addConstraint(m2,y[1]>=0)
Out[12]:
$$ y_{1} \geq 0 $$
In [13]:
@setObjective(m2,Max,6.25y[1]+20y[2])
Out[13]:
$$ 6.25 y_{1} + 20 y_{2} $$
In [14]:
print(m2)
Max 6.25 y[1] + 20 y[2]
Subject to
 10 y[1] + 15 y[2] ≤ 420
 y[1] + 2 y[2] ≤ 50
 y[1] ≤ 10
 y[2] ≥ 12
 y[1] ≥ 0
 y[i] free ∀ i ∈ {1,2}
In [15]:
solve(m2)
Out[15]:
:Optimal
In [16]:
print(getValue(y))
[-0.0,25.0]
In [17]:
println("Objective is: ",m2.objVal)
Objective is: 500.0