|
The goal of this package is *not* to provide a full-fledged Julia API or even |
|
a modeling API. These things can be built on top of this package. |
Is this still true?
|
See [MOI_FEATURES.md](MOI_FEATURES.md) for a comprehensive list of: |
Does not exist
|
**Custom User-Defined Operators**: Supports JuMP's `@operator` macro for user-defined functions with provided derivatives. |
Niiiiice! Did it all work properly? Any issues?
|
| `MOI.VectorQuadraticFunction` | `MOI.Indicator{MOI.ACTIVATE_ON_ONE, S}` | Quadratic indicator | |
|
| `MOI.VectorNonlinearFunction` | `MOI.Indicator{MOI.ACTIVATE_ON_ONE, S}` | Nonlinear indicator | |
Nice! These are missing from Xpress.jl.
|
### Custom Objective Bridge |
|
|
|
XpressAPI provides a **custom objective slack bridge** (`StrictObjectiveSlackBridge`) that reformulates non-native objective types: |
|
|
|
**Transformation**: |
|
``` |
|
min/max F(x) |
|
``` |
|
becomes: |
|
``` |
|
min/max c |
|
s.t. F(x) - c == 0 |
|
``` |
|
|
|
This bridge enables Xpress to solve problems with objective functions that would otherwise require reformulation. |
|
|
|
**Automatically applied for**: |
|
- Nonlinear objectives (`MOI.ScalarNonlinearFunction`) |
|
- Any other objective function type not natively supported by Xpress |
We should revisit this. It really shouldn't be needed.
|
### MOI Bridge Support |
|
|
|
XpressAPI works seamlessly with MOI's automatic bridging system, which can transform: |
|
- Conic constraints → Quadratic constraints (e.g., `MOI.SecondOrderCone`) |
|
- Interval constraints → Separate bounds |
|
- And many more transformations |
|
|
|
To use bridges with XpressAPI: |
|
```julia |
|
using JuMP, XpressAPI |
|
model = Model(() -> MOI.Bridges.full_bridge_optimizer(XpressAPI.Optimizer(), Float64)) |
|
``` |
This is not needed. JuMP adds bridges by default. Users need model = Model(XpressAPI.Optimizer).
XpressAPI.jl/README.md
Lines 9 to 10 in f20e039
Is this still true?
XpressAPI.jl/README.md
Line 45 in f20e039
Does not exist
XpressAPI.jl/README.md
Line 258 in f20e039
Niiiiice! Did it all work properly? Any issues?
XpressAPI.jl/README.md
Lines 271 to 272 in f20e039
Nice! These are missing from Xpress.jl.
XpressAPI.jl/README.md
Lines 363 to 381 in f20e039
We should revisit this. It really shouldn't be needed.
XpressAPI.jl/README.md
Lines 383 to 394 in f20e039
This is not needed. JuMP adds bridges by default. Users need
model = Model(XpressAPI.Optimizer).