Pyomo is a Python-based open-source software package that supports a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models.
A core capability of Pyomo is modeling structured optimization applications. Pyomo can be used to define general symbolic problems, create specific problem instances, and solve these instances using commercial and open-source solvers. Pyomo’s modeling objects are embedded within a full-featured high-level programming language providing a rich set of supporting libraries, which distinguishes Pyomo from other algebraic modeling languages like AMPL, AIMMS and GAMS.
Link to website:http://www.pyomo.org/
Source: http://ifors.org/developing_countries/index.php?title=Pyomo
Pyomo code for formulating an optimal control problem for a system with Differential Algebratic Equations:
>>> model = ConcreteModel() >>> model.t1 = ContinuousSet(bounds=(0, 10)) >>> model.t2 = ContinuousSet(bounds=(-1, 1)) >>> model.s = Set(initialize=['A', 'B', 'C']) >>> model.X = Var(model.t1, model.t2, model.s) >>> def _intX1(m, t1, t2, s): ... return m.X[t1, t2, s] >>> model.intX1 = Integral(model.t1, model.t2, model.s, wrt=model.t1, ... rule=_intX1) >>> def _intX2(m, t2, s): ... return m.intX1[t2, s] >>> model.intX2 = Integral(model.t2, model.s, wrt=model.t2, rule=_intX2) >>> def _obj(m): ... return sum(m.intX2[k] for k in m.s) >>> model.obj = Objective(rule=_obj)
https://pyomo.readthedocs.io/en/latest/modeling_extensions/dae.html