RAPOSa#

RAPOSa is a global optimization solver, specifically designed for mixed-integer polynomial programming problems with box-constrained variables. Written entirely in C++, it is based on the Reformulation-Linearization Technique developed by Hanif D. Sherali and Cihan H. Tuncbilek, and subsequently improved by Hanif D. Sherali, Evrim Dalkiran and collaborators.

Learn More | Features | Options | Download

How to use it#

from amplpy import AMPL
ampl = AMPL()
...
ampl.solve(solver="raposa", raposa_options="option1=value1 option2=value2")

Learn more about what we have to offer to implement and deploy Optimization in Python.

AMPL APIs give access to AMPL from a programming language:

ampl: option solver raposa; # change the solver
ampl: option raposa_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem

Features#

Algorithms#

Global: reformulation-linearization

RAPOSa solves polynomial (mixed-integer) models with bounded variables by the reformulation-linearization technique. Time limit: maxtime (default 300). Subsolvers: linsolver (LP) and intnonlinsolver (MINLP, for the upper bounds).

Modeling with MP expressions#

MP expressions: logic, counting, complementarity (MP2NL)

Natively, RAPOSa solves polynomial models with continuous and integer variables. MP’s expressions (==>, or, atmost, count, alldiff, piecewise-linear terms, …) and complements are not part of its native model type: through MP2NL, MP reformulates them into it first.

Call MP2NL as the solver and name RAPOSa inside it; MP’s options go into mp2nl_options, RAPOSa’s own into raposa_options.

MP reformulates logic with binary variables, which RAPOSa handles as integer variables.

ampl.solve(solver="mp2nl", mp2nl_options="solver=raposa cvt:compl=1")
ampl: option solver mp2nl;
ampl: option mp2nl_options 'solver=raposa cvt:compl=1';
ampl: solve;

More: Meta-driver MP2NL.

Options#

Full list of solver options:

Retrieving solutions#

The outcome of the last optimization is stored in the AMPL parameter solve_result_num and the relative message in solve_result.

display solve_result_num, solve_result;

RAPOSa solve result codes:

Solve result table (AMPL default ranges)
          0- 99 solved: optimal for an optimization problem, feasible for a satisfaction problem
        100-199 solved? solution candidate returned but error likely
        200-299 infeasible
        300-399 unbounded
        400-499 limit
        500-999 failure, no solution returned