HomotopyContinuation.jl icon indicating copy to clipboard operation
HomotopyContinuation.jl copied to clipboard

Failure to evaluate numerical expression

Open baggepinnen opened this issue 2 years ago • 1 comments

I get results like

julia> HomotopyContinuation.evaluate(constraints, (Dict(f.variables .=> real.(sol))))
8-element Vector{Expression}:
       -1.77635683940025e-15*-0.235475
 -0.929620778338419*-0.222360917086043
  -3.00918102352667*-0.198144357487694
    -8.44189647517252*-0.1555001812606
 -28.9660551738096*-0.0884901134798353
 -276.162595297163*-0.0162316466214997
 -70.7686049843743*-0.0896340387513346
              -2.98369032774388*-1.025

which seems strange, why wouldn't this return numerical values?

The array of constraints looks like this

ulia> constraints
8-element Vector{Expression}:
                        -0.235475*(-4.24673532222104*(0.1 + 1.0*a0₀^2) + 1.0*b₀^2)
 -0.222360917086043*(-4.49719318081895*(0.193069772888325 + 1.0*a0₀^2) + 1.0*b₀^2)
 -0.198144357487694*(-5.04682551993491*(0.372759372031494 + 1.0*a0₀^2) + 1.0*b₀^2)
   -0.1555001812606*(-6.43086067098607*(0.719685673001152 + 1.0*a0₀^2) + 1.0*b₀^2)
  -0.0884901134798353*(-11.300697452805*(1.38949549437314 + 1.0*a0₀^2) + 1.0*b₀^2)
 -0.0162316466214997*(-61.6080440462182*(2.68269579527973 + 1.0*a0₀^2) + 1.0*b₀^2)
 -0.0896340387513346*(-11.1564759764338*(5.17947467923121 + 1.0*a0₀^2) + 1.0*b₀^2)
                         -1.025*(-0.975609756097561*(10.0 + 1.0*a0₀^2) + 1.0*b₀^2)

and the parameters were created like this

na = 1
nb = 0
@var a0[0:na-1] b[0:nb]

I'm trying to solve a QCQP but where the constraints is in the wrong (non-convex) direction, and get the correct results sometimes but not always, I wonder if it's related to my problem setup that causes some internal confusion that leads to expressions like the first one above?

baggepinnen avatar Jan 01 '22 18:01 baggepinnen

This should in principle evaluate to floats and not expressions but there seems to be a specialization for dicts as input missing.

You can first convert to a System before evaluating it (https://www.juliahomotopycontinuation.org/HomotopyContinuation.jl/stable/model_kit/#HomotopyContinuation.ModelKit.System).

I am also happy to look at your specific QCQP problem if your problem persists

saschatimme avatar Jan 02 '22 13:01 saschatimme