Skip to content

Notes from the README #8

Description

@odow

XpressAPI.jl/README.md

Lines 9 to 10 in f20e039

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?

XpressAPI.jl/README.md

Lines 271 to 272 in f20e039

| `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.

XpressAPI.jl/README.md

Lines 363 to 381 in f20e039

### 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.

XpressAPI.jl/README.md

Lines 383 to 394 in f20e039

### 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions