A basic question, before searching these: are they "input compatible"? I mean, can a problem be formulated once and then be solved by a variety of solvers? Or does each one of them use its own input language?
A basic question, before searching these: are they "input compatible"? I mean, can a problem be formulated once and then be solved by a variety of solvers? Or does each one of them use its own input language?
Nearly every solver supports the MPS format, but that's a really old format straight from the era of punchcards, it sucks.
Many solvers support the nl format, which is a low level format spat out by the AMPL tool (commercial software for mathematical modeling).
Many solvers support the CPLEX lp format, which is a nice human readable and writable format.
Google OR-Tools includes an API for mathematical modeling that supports the relevant open source MIP solvers plus Gurobi I think and its own CP solver. There are Python and Julia packages that try to do the same (rather than calling the solver APIs directly they usually spit out a problem in nl format though).
MiniZinc supports various open source MILP solvers plus various CP solvers. Very nice language, very high level.
For MINLP the only standard I know of is OSiL but support for it is spotty, mostly supported by open source tools I think.
def objective(model: WtaModel) -> SumExpression:
return sum(
model.target_values[t_j]
* prod(
model.survival_rates[w_i][t_j]
** model.target_selected[w_i, t_j]
for w_i in model.weapon_types
)
for t_j in model.targets
)[1] https://jump.dev/ [2] https://jump.dev/JuMP.jl/stable/installation/#Supported-solv...