Issue parsing Ipopt_jll string option when there is blank space in path

The following code does not work when called from path that has blank space.

using JuMP, AmplNLWriter, Ipopt_jll

mod = Model(() -> AmplNLWriter.Optimizer(Ipopt_jll.amplexe))
set_attribute(mod, "output_file", joinpath(@__DIR__,"output.txt"))
optimize!(mod)

The output is:

Ipopt 3.14.17: output_file=/home/karlo/Desktop/mwe
Unknown keyword “2/output.txt”

Not sure on what package should I post issue report. Already have opened one on Yggdrasil issues, but seems it is not due to them.

@amontoison , @odow

If you dump(mod) you’ll see at some point something like

raw_status_string: String "Error calling the solver. Failed with: ProcessFailedException(Base.Process[Process(setenv(`/path/to/bin/ipopt /path/to/jl_imeXZ0/model.nl -AMPL 'hsllib=/path/to/mwe 2/something.txt' linear_solver=ma27`,[...]), ProcessExited(1))])"

As I’ve been trying to say for hours in Issue parsing Ipopt_jll string option when there is blank space in path · Issue #10540 · JuliaPackaging/Yggdrasil · GitHub, whatever piece of code is calling ipopt is not quoting the path correctly. I have no clue of what is calling ipopt, but there is where the issue. Or maybe it’s ipopt which can’t parse paths with strings. Either way, nothing to do with Yggdrasil.

2 Likes

Hi @KSepetanc,

I’ve moved this thread to the Optimization section of Discourse: Optimization (Mathematical) - Julia Programming Language

If you have JuMP-related questions in future, please post here first, instead of opening GitHub issues. If it is a bug, I can help direct you to the appropriate place.

In this case, it is a bug in Escape spaces in cmd · Issue #196 · jump-dev/AmplNLWriter.jl · GitHub

Until I fix it, a work-around is probably:

using JuMP, AmplNLWriter, Ipopt_jll

mod = Model(() -> AmplNLWriter.Optimizer(Ipopt_jll.amplexe))
set_attribute(mod, "output_file", escape_string(joinpath(@__DIR__,"output.txt"), " "))
optimize!(mod)

Mose’s dump(mod) gets you there, but a better way is to call solution_summary(mod). This would explain what happened in more detail.

This is fixed in v1.2.3 of AmplNLWriter.jl.

For earlier versions, the work-around needed to be:

output_file = joinpath(@__DIR__,"output.txt")
set_attribute(mod, "output_file", "\"$(output_file)\"")
1 Like

Thank you for fixing it so quickly. Also for merging other PR’s.

1 Like