Sample optimization script using Julia


In [1]:
# First we solve the knapsack problem using ECOS
# see: https://www.embotech.com/ECOS/How-to-use/Julia
#      https://github.com/JuliaOpt/ECOS.jl

using JuMP # http://jump.readthedocs.io/en/latest/installation.html
using ECOS

items  = [:Gold, :Silver, :Bronze]
values = Dict(:Gold => 5.0,  :Silver => 3.0,  :Bronze => 1.0)
weight = Dict(:Gold => 2.0,  :Silver => 1.5,  :Bronze => 0.3)

m = Model(solver=ECOSSolver())
@variable(m, 0 <= take[items] <= 1)  # Define a variable for each item
@objective(m, Max, sum( values[item] * take[item] for item in items))
@constraint(m, sum( weight[item] * take[item] for item in items) <= 3)
solve(m)

println(getvalue(take))
# take
# [  Gold] = 0.9999999680446406
# [Silver] = 0.46666670881026834
# [Bronze] = 0.9999999633898735


take: 1 dimensions:
[  Gold] = 0.9999999995823805
[Silver] = 0.46666666721774464
[Bronze] = 0.9999999995191614

ECOS 2.0.5 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
 0  -5.808e+00  -1.695e+01  +8e+00  5e-03  3e-01  1e+00  1e+00    ---    ---    1  1  - |  -  - 
 1  -7.021e+00  -8.183e+00  +9e-01  4e-04  4e-02  8e-02  1e-01  0.8975  1e-02   0  0  0 |  0  0
 2  -7.342e+00  -7.486e+00  +1e-01  5e-05  5e-03  1e-02  2e-02  0.9055  3e-02   0  0  0 |  0  0
 3  -7.399e+00  -7.401e+00  +2e-03  7e-07  6e-05  2e-04  2e-04  0.9867  6e-04   0  0  0 |  0  0
 4  -7.400e+00  -7.400e+00  +2e-05  7e-09  7e-07  2e-06  2e-06  0.9890  1e-04   1  0  0 |  0  0
 5  -7.400e+00  -7.400e+00  +2e-07  8e-11  8e-09  2e-08  3e-08  0.9890  1e-04   1  0  0 |  0  0
 6  -7.400e+00  -7.400e+00  +2e-09  9e-13  9e-11  2e-10  3e-10  0.9890  1e-04   1  0  0 |  0  0

OPTIMAL (within feastol=8.6e-11, reltol=2.8e-10, abstol=2.1e-09).
Runtime: 0.000143 seconds.


In [ ]: