For MILP there isn't one single standard, but multiple competing solutions.
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.
This is a good list --- would also add Pyomo. There's plenty of nuance to algebraic modeling languages like Pyomo and JuMP, but at base you're just writing mathematical expressions in Python for Pyomo (or in Julia for JuMP) to parse and transform into the target format. E.g. taking the objective from the Weapon Target Assignment problem (https://en.wikipedia.org/wiki/Weapon_target_assignment_probl...):
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
)
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.