Skip to content

Expression interface #237

@glebbelov

Description

@glebbelov

For solvers accepting expression trees (SCIP 9, Xpress, Lindo), extend MP FlatConverter to support them.

Advantage: better numerical properties (see SCIP 8 release paper.)

Scope:

  • Allow mixing flat constraints with expressions. For example, SCIP supports resvar = AND(v1, ..., vn), along with expressions.
  • Keep the existing automatic redefinition mechanism.
  • Allow per-expression type setting, whether it should be passed to the solver, or redefined - similar to flat constraints.
  • This should obvously coexist with the mp::NLHandler and mp::Expr interfaces passing expression trees directly from the NL file.
    • Developer documentation when to use which.
  • Inline expressions wherever reasonable, e.g., linear expressions into each other. See Presolve #153, Inline algebraic expressions #266.
    • For MP2NL, this affects, CplexASL/XpressASL, Conopt3/4, Couenne.
  • Vice versa, explicify multiply-used expressions
    • Option cvt:expr:refcountmax (cvt:expr:nlassign)
    • However for MP2NL it should used defined variables, unless the result variable has stronger bounds?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions