Skip to content

[WIP] Refactoring of the reformulation chain#611

Merged
cvanaret merged 21 commits into
mainfrom
reformulation_refactoring
Mar 21, 2026
Merged

[WIP] Refactoring of the reformulation chain#611
cvanaret merged 21 commits into
mainfrom
reformulation_refactoring

Conversation

@cvanaret

@cvanaret cvanaret commented Mar 19, 2026

Copy link
Copy Markdown
Owner

Refactoring of the reformulation chain

The inequality handling method now:

  • reformulates the problem (original or feasibility)
  • updates the Parameterization parameterization parameter (contains e.g. the barrier parameter)

... and that's it! The rest (subproblems, subproblem solvers) is controlled by the constraint relaxation strategy instead.

@cvanaret cvanaret self-assigned this Mar 19, 2026
@cvanaret

cvanaret commented Mar 20, 2026

Copy link
Copy Markdown
Owner Author

Hi @amontoison, I get a new error on a MOI test:

[8](https://github.com/cvanaret/Uno/actions/runs/23347405765/job/67916436845#step:9:209)
test_linear_VectorAffineFunction_empty_row: Error During Test at /home/runner/.julia/packages/MathOptInterface/Q3V1z/src/Test/test_linear.jl:2566
  Test threw exception
  Expression: ≈(MOI.get(model, MOI.DualObjectiveValue()), T(0), config)
  BoundsError: attempt to access 1-element Vector{Float64} at index [-1]

even though there is a safeguard on the use of MOI.DualObjectiveValue:

https://github.com/jump-dev/MathOptInterface.jl/blob/15b62adcfa3ce73de71ca67b50e98249af0aecb5/src/Test/test_linear.jl#L2565-L2567

I don't see what could have caused that on the C++ side 🤔 Do you have any ideas?

Edit: oh wait, that happens in a totally unrelated PR now: #614
They must have broken something over at MOI... (edit: how nasty of me. It came from AmplNLWriter.jl)

@amontoison

amontoison commented Mar 20, 2026

Copy link
Copy Markdown
Collaborator

@cvanaret
The culprit is the release 1.4.0 of AMPLNLWriter.jl.
jump-dev/AmplNLWriter.jl#207

You just need to add MOI.DualObjectiveValue in the list of excluded tests (for AMPL).

@cvanaret

Copy link
Copy Markdown
Owner Author

@cvanaret The culprit is the release 1.4.0 of AMPLNLWriter.jl. jump-dev/AmplNLWriter.jl#207

You just need to add MOI.DualObjectiveValue in the list of excluded tests (for AMPL).

Beautiful, thanks a lot 🤩

cvanaret added 21 commits March 20, 2026 21:45
…s the problem and updates a parameterization (e.g., barrier parameter)
…equalityConstrainedMethod can return the problem as is (not reformulated)
…ed set_number_variables() just after reformulation
@cvanaret cvanaret force-pushed the reformulation_refactoring branch from cb987b4 to e20f189 Compare March 20, 2026 20:47
@cvanaret cvanaret merged commit 625b5fd into main Mar 21, 2026
52 checks passed
@cvanaret cvanaret deleted the reformulation_refactoring branch March 21, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants