-
Notifications
You must be signed in to change notification settings - Fork 19
/
topbrass3.jl
32 lines (24 loc) · 974 Bytes
/
topbrass3.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# the types of trophies produced
sports = [:football, :soccer]
# ingredients involved
ingredients = [:wood, :plaque, :brass_football, :brass_soccer]
# profits returned (for each sport)
profit = Dict( zip( sports, [ 12, 9 ] ) )
# quantities available (for each ingredient)
quant_avail = Dict( zip( ingredients, [ 4800, 1750, 1000, 1500 ] ) )
# recipes (sport, ingredient)
using NamedArrays
recipe_mat = [ 4 1 1 0
2 1 0 1 ]
recipe = NamedArray( recipe_mat, (sports,ingredients), ("sport","ingredient",) )
;
using JuMP, Clp
m = Model(with_optimizer(Clp.Optimizer))
@variable(m, trophies[sports] >= 0 )
@expression(m, total_profit, sum( profit[s]*trophies[s] for s in sports) )
@constraint(m, constr[i in ingredients], sum( recipe[s,i]*trophies[s] for s in sports ) <= quant_avail[i] )
@objective(m, Max, total_profit )
optimize!(m)
println(value(trophies[:football]))
println(value(trophies[:soccer]))
println("Total profit is: \$", value(total_profit))