Help needed with AmplNLWriter

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

1 Like

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]
2 Likes

Hello,

Thanks for the reply!

I got the problems solved. It worked on VS codes when running without debugging.

-Emily

2 Likes