Hello,
I am trying to use “Bonmin” or “Couenne” from AmplNLWriter in Julia. My code is attached below.
using JuMP, AmplNLWriter, Couenne_jll
#model = Model(() -> AmplNLWriter.Optimizer("bonmin"))
model = Model(() -> AmplNLWriter.Optimizer(Couenne_jll.amplexe))
v = [10, 20, 12, 23, 42]
w = [12, 45, 12, 22, 21]
@variable(model, x[1:5], Bin)
@objective(model, Max, v' * x)
@constraint(model, sum(w[i]*x[i]^2 for i in 1:5) <= 45)
optimize!(model)
println(termination_status(model))
println(objective_value(model))
println(value.(x))
I got the errors when running
“ERROR: ERROR: The provided optimizer_constructor is invalid. It must be callable with zero arguments. For example, “Ipopt.Optimizer” or “() → ECOS.Optimizer()”. It should not be an instantiated optimizer like “Ipopt.Optimizer()” or “ECOS.Optimizer()”. (Note the difference in parentheses!)”
I am new to Julia so I was wondering maybe there is something simple that I missed in my codes. Thank you for taking the time to read my post and for any help you can provide.
Thanks,
Emily
The code you provided works perfectly on my end - do you have problems with specific versions of Julia/Packages?
Check my output below.
Ouput
A JuMP Model
Feasibility problem with:
Variables: 0
Model mode: AUTOMATIC
CachingOptimizer state: EMPTY_OPTIMIZER
Solver name: AmplNLWriter
5-element Vector{Int64}:
10
20
12
23
42
5-element Vector{Int64}:
12
45
12
22
21
5-element Vector{VariableRef}:
x[1]
x[2]
x[3]
x[4]
x[5]
10 x[1] + 20 x[2] + 12 x[3] + 23 x[4] + 42 x[5]
12 x[1]² + 45 x[2]² + 12 x[3]² + 22 x[4]² + 21 x[5]² ≤ 45
Couenne 0.5.8 -- an Open-Source solver for Mixed Integer Nonlinear Optimization
Mailing list: couenne@list.coin-or.org
Instructions: http://www.coin-or.org/Couenne
couenne:
ANALYSIS TEST: Couenne: new cutoff value 0.0000000000e+00 (0.075899 seconds)
NLP0012I
Num Status Obj It time Location
NLP0014I 1 OPT -77.755059 14 0.06618
Couenne: new cutoff value -6.4000000000e+01 (0.18193 seconds)
NLP0014I 2 OPT -64 0 0
Loaded instance "/tmp/jl_blQ19y/model.nl"
Constraints: 1
Variables: 5 (5 integer)
Auxiliaries: 7 (7 integer)
Coin0506I Presolve 17 (0) rows, 11 (-1) columns and 41 (-1) elements
Clp0006I 0 Obj -107 Primal inf 2.547618 (1)
Clp0006I 12 Obj -67
Clp0000I Optimal - objective value -67
Clp0032I Optimal objective -67 - 12 iterations time 0.002, Presolve 0.00
Clp0000I Optimal - objective value -67
NLP Heuristic: time limit reached.
Clp0000I Optimal - objective value -67
Optimality Based BT: Couenne: new cutoff value -6.5000000000e+01 (0.252534 seconds)
1 improved bounds
Probing: 0 improved bounds
NLP Heuristic: time limit reached.
Cbc0013I At root node, 0 cuts changed objective from -67 to -65 in 1 passes
Cbc0014I Cut generator 0 (Couenne convexifier cuts) - 0 row cuts average 0.0 elements, 5 column cuts (5 active)
Cbc0004I Integer solution of -65 found after 0 iterations and 0 nodes (0.03 seconds)
Cbc0001I Search completed - best objective -65, took 0 iterations and 0 nodes (0.03 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
"Finished"
Linearization cuts added at root node: 17
Linearization cuts added in total: 17 (separation time: 0.001672s)
Total solve time: 0.039566s (0.039541s in branch-and-bound)
Lower bound: -65
Upper bound: -65 (gap: 0.00%)
Branch-and-bound nodes: 0
Performance of FBBT: 0.000828s, 4 runs. fix: 0 shrnk: 0 ubd: 0 2ubd: 0 infeas: 0
Performance of OBBT: 0.004393s, 1 runs. fix: 9 shrnk: 0 ubd: 0 2ubd: 0 infeas: 0
LOCALLY_SOLVED
65.0
[0.0, 0.0, 0.0, 1.0, 1.0]
Hello,
Thanks for the reply!
I got the problems solved. It worked on VS codes when running without debugging.
-Emily