-
Notifications
You must be signed in to change notification settings - Fork 94
Description
The purpose of Allocate-Load is to be able to communicate the model in two-pass across layers without the need to create intermediate CachingOptimizer
.
However, it's not yet implemented by the bridge optimizers and it's not clear to me whether there is a way to do this without complicating the job of creating new bridges for users.
This new features #1286 allows to pass non-bridges constraints across layers which allows to avoid copying the function as the destination model of the copy can get the CanonicalConstraintFunction
directly from the source model.
So a model needed Allocate-Load could implement MOIU.pass_nonvariable_constraints
instead and it would work if no constraint if bridges.
To also work with bridging constraints, it should also implement MOI.add_constraint
but only allow it to be called during the copy operation.
This is what is done for MatrixOfConstraints: #1287.
In fact, I expect most solver needing Allocate-Load to be rewritten with MatrixOfConstraints like Clp in jump-dev/Clp.jl#111.
The only two exceptions are CSDP and SDPA but there is no point in keeping the Allocate-Load API just for these two.
I'll keep this open until we're close to releasing v0.10 to evaluate if things happens as expected and then we can decide.