Oscar Dowson
Oscar Dowson
> Some conic solvers might not behave so well with zero rows on the SOC constraints This might be a good motivation.
So I've been looking into this. It's quite complicated. We'd need to add a `final_touch` to the bridge to loop through and check if any variables had been deleted, and...
> How would that error be useful for the user ? The solver would throw `DeleteNotAllowed` and the cache would then rebuild. User wouldn't see anything. > We could also...
Why does the bridge need to be responsible for deciding whether deletion is allowed here? The inner optimizer can throw `DeleteNotAllowed` if it doesn't support deleting a variable that results...
Can you find an example that demonstrates the problem? ```Julia julia> using JuMP, ECOS julia> function main(optimizer) model = Model(optimizer) set_silent(model) @variable(model, x[1:2]) @objective(model, Min, sum(x.^2)) optimize!(model) print(backend(model).optimizer.model) delete(model, x[2])...
So which solver supports variable deletions _and_ has a problem with `0` rows? (And doesn't throw an error if that is a problem)
I still don't see how this is a bug, but rather less than perfect behavior. Can we have a concrete example of a solver and bridge where this is a...
For vector-outputs, we could potentially do something like this: ```julia A = [1 2; 3 4] x = [MOI.VariableIndex(1), MOI.VariableIndex(2)] f(x) = sum(A * x) | i | node_type |...
> Gurobi will support array-valued nonlinear expressions and also needs JuMP to compute derivatives? No. They're going to do their own thing, and won't support arrays to start with. But...
I guess there are multiple options for the size. It probably doesn't really matter which one you go with, so long as it is consistent. The other option, instead of...