<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mintoc.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulScharnhorst</id>
	<title>mintOC - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mintoc.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulScharnhorst"/>
	<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Special:Contributions/PaulScharnhorst"/>
	<updated>2026-06-09T08:00:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1659</id>
		<title>Goddart&#039;s rocket problem (Bocop)</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1659"/>
		<updated>2016-02-01T16:56:55Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a [[:Category: Bocop | Bocop]] implementation of [[Goddart&#039;s rocket problem]]. The .def, .constants and .bounds files can be obtained through defining the problems dimensions in the GUI. The .tpp files need to be edited separately.&lt;br /&gt;
== Problem.def ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file defines all dimensions and parameters&lt;br /&gt;
# values for your problem :&lt;br /&gt;
&lt;br /&gt;
# Initial and final time :&lt;br /&gt;
time.free string final&lt;br /&gt;
time.initial double 0&lt;br /&gt;
time.final double 1&lt;br /&gt;
&lt;br /&gt;
# Dimensions :&lt;br /&gt;
state.dimension integer 3&lt;br /&gt;
control.dimension integer 1&lt;br /&gt;
algebraic.dimension integer 0&lt;br /&gt;
parameter.dimension integer 1&lt;br /&gt;
constant.dimension integer 6&lt;br /&gt;
boundarycond.dimension integer 4&lt;br /&gt;
constraint.dimension integer 1&lt;br /&gt;
&lt;br /&gt;
# Discretization :&lt;br /&gt;
discretization.steps integer 100&lt;br /&gt;
discretization.method string gauss&lt;br /&gt;
&lt;br /&gt;
# Optimization :&lt;br /&gt;
optimization.type string batch&lt;br /&gt;
batch.type integer 0&lt;br /&gt;
batch.index integer 5&lt;br /&gt;
batch.nrange integer 3&lt;br /&gt;
batch.lowerbound double 0.3&lt;br /&gt;
batch.upperbound double 0.9&lt;br /&gt;
batch.directory string Batch-C&lt;br /&gt;
&lt;br /&gt;
# Initialization :&lt;br /&gt;
initialization.type string from_init_file&lt;br /&gt;
initialization.file string none&lt;br /&gt;
&lt;br /&gt;
# Parameter identification :&lt;br /&gt;
paramid.type string false&lt;br /&gt;
paramid.separator string ,&lt;br /&gt;
paramid.file string no_directory&lt;br /&gt;
paramid.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Names :&lt;br /&gt;
state.0 string position&lt;br /&gt;
state.1 string speed&lt;br /&gt;
state.2 string mass&lt;br /&gt;
control.0 string acceleration_u&lt;br /&gt;
parameter.0 string finaltime&lt;br /&gt;
boundarycond.0 string r(0)&lt;br /&gt;
boundarycond.1 string v(0)&lt;br /&gt;
boundarycond.2 string m(0)&lt;br /&gt;
boundarycond.3 string r(f)&lt;br /&gt;
constraint.0 string drag_minus_C&lt;br /&gt;
constant.0 string Tmax&lt;br /&gt;
constant.1 string A&lt;br /&gt;
constant.2 string k&lt;br /&gt;
constant.3 string r0&lt;br /&gt;
constant.4 string b&lt;br /&gt;
constant.5 string C&lt;br /&gt;
&lt;br /&gt;
# Solution file :&lt;br /&gt;
solution.file string problem.sol&lt;br /&gt;
&lt;br /&gt;
# Iteration output frequency :&lt;br /&gt;
iteration.output.frequency integer 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.constants ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains the values of the constants of your problem.&lt;br /&gt;
# Number of constants used in your problem : &lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
# Values of the constants : &lt;br /&gt;
3.5&lt;br /&gt;
310&lt;br /&gt;
500&lt;br /&gt;
1&lt;br /&gt;
7&lt;br /&gt;
0.6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.bounds ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains all the bounds of your problem.&lt;br /&gt;
# Bounds are stored in standard format : &lt;br /&gt;
# [lower bound]  [upper bound] [type of bound]&lt;br /&gt;
&lt;br /&gt;
# Dimensions (i&amp;amp;f conditions, y, u, z, p, path constraints) :&lt;br /&gt;
4 3 1 0 1 1&lt;br /&gt;
&lt;br /&gt;
# Bounds for the initial and final conditions :&lt;br /&gt;
1 1 equal&lt;br /&gt;
0 0 equal&lt;br /&gt;
1 1 equal&lt;br /&gt;
1.01 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the state variables :&lt;br /&gt;
&amp;gt;0:1:0 1 2e+020 lower&lt;br /&gt;
&amp;gt;1:1:1 0 2e+020 lower&lt;br /&gt;
&amp;gt;2:1:2 0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the control variables :&lt;br /&gt;
0 1 both&lt;br /&gt;
&lt;br /&gt;
# Bounds for the algebraic variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the optimization parameters :&lt;br /&gt;
0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the path constraints :&lt;br /&gt;
-2e+020 0 upper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== criterion.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_criterion&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CRITERION FOR GODDARD PROBLEM&lt;br /&gt;
	&lt;br /&gt;
	// MAXIMIZE FINAL MASS&lt;br /&gt;
	criterion = -final_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dynamics.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_dynamics&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// DYNAMICS FOR GODDARD PROBLEM&lt;br /&gt;
	// dr/dt = v&lt;br /&gt;
	// dv/dt = (Thrust(u) - Drag(r,v)) / m - grav(r)&lt;br /&gt;
	// dm/dt = -b*|u|&lt;br /&gt;
&lt;br /&gt;
	double Tmax = constants[0];&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double b = constants[4];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
	Tdouble m = state[2];&lt;br /&gt;
&lt;br /&gt;
	state_dynamics[0] = v;&lt;br /&gt;
	state_dynamics[1] = (thrust(control[0],Tmax) - drag(r,v,A,k,r0)) / m - grav(r);&lt;br /&gt;
	state_dynamics[2] = - b * control[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boundarycond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_boundarycond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// INITIAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
	// r0 = 1    v0 = 0   m0 = 1&lt;br /&gt;
	// MODELED AS 1 &amp;lt;= r0 &amp;lt;= 1, etc&lt;br /&gt;
	boundary_conditions[0] = initial_state[0];&lt;br /&gt;
	boundary_conditions[1] = initial_state[1];&lt;br /&gt;
	boundary_conditions[2] = initial_state[2];&lt;br /&gt;
&lt;br /&gt;
	// FINAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
  	// rf &amp;gt;= 1.01   MODELED AS   1.01 &amp;lt;= rf&lt;br /&gt;
	boundary_conditions[3] = final_state[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pathcond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_pathcond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CONSTRAINT ON MAX DRAG FOR GODDARD PROBLEM&lt;br /&gt;
	// Drag &amp;lt;= C ie Drag - C &amp;lt;= 0&lt;br /&gt;
	&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double C = constants[5];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
&lt;br /&gt;
	path_constraints[0] = drag(r,v,A,k,r0) - C;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dependencies.tpp ==&lt;br /&gt;
The dependencies file is only needed if you use additional functions like the three following.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;./grav.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./drag.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./thrust.tpp&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== drag.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GODDARD DRAG&lt;br /&gt;
// drag = 310 v^2 exp (-500(r-1))&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
// v: velocity&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble drag(Tdouble r, Tdouble v, double A, double k, double r0)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble drag;&lt;br /&gt;
	drag = A * v * v * exp(-k*(fabs(r)-r0));&lt;br /&gt;
	return drag;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== grav.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GRAVITY &lt;br /&gt;
// g = 1 / r^2&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble grav(Tdouble r)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble grav;&lt;br /&gt;
	grav = 1e0 / r / r;&lt;br /&gt;
	return grav;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== thrust.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR THRUST (GODDARD)&lt;br /&gt;
// T = u * Tmax&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble thrust(Tdouble u, double Tmax)&lt;br /&gt;
{&lt;br /&gt;
	Tdouble thrust;&lt;br /&gt;
	thrust = u * Tmax;&lt;br /&gt;
	return thrust;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Bocop]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1658</id>
		<title>Goddart&#039;s rocket problem (Bocop)</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1658"/>
		<updated>2016-02-01T16:55:26Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a [[:Category: Bocop | Bocop]] implementation of [[Goddart&#039;s rocket problem]]. The .def, .constants and .bounds files can be obtained through defining the problems dimensions in the GUI. The .tpp files need to be edited separately.&lt;br /&gt;
== Problem.def ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file defines all dimensions and parameters&lt;br /&gt;
# values for your problem :&lt;br /&gt;
&lt;br /&gt;
# Initial and final time :&lt;br /&gt;
time.free string final&lt;br /&gt;
time.initial double 0&lt;br /&gt;
time.final double 1&lt;br /&gt;
&lt;br /&gt;
# Dimensions :&lt;br /&gt;
state.dimension integer 3&lt;br /&gt;
control.dimension integer 1&lt;br /&gt;
algebraic.dimension integer 0&lt;br /&gt;
parameter.dimension integer 1&lt;br /&gt;
constant.dimension integer 6&lt;br /&gt;
boundarycond.dimension integer 4&lt;br /&gt;
constraint.dimension integer 1&lt;br /&gt;
&lt;br /&gt;
# Discretization :&lt;br /&gt;
discretization.steps integer 100&lt;br /&gt;
discretization.method string gauss&lt;br /&gt;
&lt;br /&gt;
# Optimization :&lt;br /&gt;
optimization.type string batch&lt;br /&gt;
batch.type integer 0&lt;br /&gt;
batch.index integer 5&lt;br /&gt;
batch.nrange integer 3&lt;br /&gt;
batch.lowerbound double 0.3&lt;br /&gt;
batch.upperbound double 0.9&lt;br /&gt;
batch.directory string Batch-C&lt;br /&gt;
&lt;br /&gt;
# Initialization :&lt;br /&gt;
initialization.type string from_init_file&lt;br /&gt;
initialization.file string none&lt;br /&gt;
&lt;br /&gt;
# Parameter identification :&lt;br /&gt;
paramid.type string false&lt;br /&gt;
paramid.separator string ,&lt;br /&gt;
paramid.file string no_directory&lt;br /&gt;
paramid.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Names :&lt;br /&gt;
state.0 string position&lt;br /&gt;
state.1 string speed&lt;br /&gt;
state.2 string mass&lt;br /&gt;
control.0 string acceleration_u&lt;br /&gt;
parameter.0 string finaltime&lt;br /&gt;
boundarycond.0 string r(0)&lt;br /&gt;
boundarycond.1 string v(0)&lt;br /&gt;
boundarycond.2 string m(0)&lt;br /&gt;
boundarycond.3 string r(f)&lt;br /&gt;
constraint.0 string drag_minus_C&lt;br /&gt;
constant.0 string Tmax&lt;br /&gt;
constant.1 string A&lt;br /&gt;
constant.2 string k&lt;br /&gt;
constant.3 string r0&lt;br /&gt;
constant.4 string b&lt;br /&gt;
constant.5 string C&lt;br /&gt;
&lt;br /&gt;
# Solution file :&lt;br /&gt;
solution.file string problem.sol&lt;br /&gt;
&lt;br /&gt;
# Iteration output frequency :&lt;br /&gt;
iteration.output.frequency integer 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.constants ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains the values of the constants of your problem.&lt;br /&gt;
# Number of constants used in your problem : &lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
# Values of the constants : &lt;br /&gt;
3.5&lt;br /&gt;
310&lt;br /&gt;
500&lt;br /&gt;
1&lt;br /&gt;
7&lt;br /&gt;
0.6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.bounds ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains all the bounds of your problem.&lt;br /&gt;
# Bounds are stored in standard format : &lt;br /&gt;
# [lower bound]  [upper bound] [type of bound]&lt;br /&gt;
&lt;br /&gt;
# Dimensions (i&amp;amp;f conditions, y, u, z, p, path constraints) :&lt;br /&gt;
4 3 1 0 1 1&lt;br /&gt;
&lt;br /&gt;
# Bounds for the initial and final conditions :&lt;br /&gt;
1 1 equal&lt;br /&gt;
0 0 equal&lt;br /&gt;
1 1 equal&lt;br /&gt;
1.01 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the state variables :&lt;br /&gt;
&amp;gt;0:1:0 1 2e+020 lower&lt;br /&gt;
&amp;gt;1:1:1 0 2e+020 lower&lt;br /&gt;
&amp;gt;2:1:2 0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the control variables :&lt;br /&gt;
0 1 both&lt;br /&gt;
&lt;br /&gt;
# Bounds for the algebraic variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the optimization parameters :&lt;br /&gt;
0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the path constraints :&lt;br /&gt;
-2e+020 0 upper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== criterion.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_criterion&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CRITERION FOR GODDARD PROBLEM&lt;br /&gt;
	&lt;br /&gt;
	// MAXIMIZE FINAL MASS&lt;br /&gt;
	criterion = -final_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dynamics.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_dynamics&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// DYNAMICS FOR GODDARD PROBLEM&lt;br /&gt;
	// dr/dt = v&lt;br /&gt;
	// dv/dt = (Thrust(u) - Drag(r,v)) / m - grav(r)&lt;br /&gt;
	// dm/dt = -b*|u|&lt;br /&gt;
&lt;br /&gt;
	double Tmax = constants[0];&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double b = constants[4];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
	Tdouble m = state[2];&lt;br /&gt;
&lt;br /&gt;
	state_dynamics[0] = v;&lt;br /&gt;
	state_dynamics[1] = (thrust(control[0],Tmax) - drag(r,v,A,k,r0)) / m - grav(r);&lt;br /&gt;
	state_dynamics[2] = - b * control[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boundarycond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_boundarycond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// INITIAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
	// r0 = 1    v0 = 0   m0 = 1&lt;br /&gt;
	// MODELED AS 1 &amp;lt;= r0 &amp;lt;= 1, etc&lt;br /&gt;
	boundary_conditions[0] = initial_state[0];&lt;br /&gt;
	boundary_conditions[1] = initial_state[1];&lt;br /&gt;
	boundary_conditions[2] = initial_state[2];&lt;br /&gt;
&lt;br /&gt;
	// FINAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
  	// rf &amp;gt;= 1.01   MODELED AS   1.01 &amp;lt;= rf&lt;br /&gt;
	boundary_conditions[3] = final_state[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pathcond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_pathcond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CONSTRAINT ON MAX DRAG FOR GODDARD PROBLEM&lt;br /&gt;
	// Drag &amp;lt;= C ie Drag - C &amp;lt;= 0&lt;br /&gt;
	&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double C = constants[5];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
&lt;br /&gt;
	path_constraints[0] = drag(r,v,A,k,r0) - C;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dependencies.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;./grav.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./drag.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./thrust.tpp&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== drag.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GODDARD DRAG&lt;br /&gt;
// drag = 310 v^2 exp (-500(r-1))&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
// v: velocity&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble drag(Tdouble r, Tdouble v, double A, double k, double r0)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble drag;&lt;br /&gt;
	drag = A * v * v * exp(-k*(fabs(r)-r0));&lt;br /&gt;
	return drag;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== grav.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GRAVITY &lt;br /&gt;
// g = 1 / r^2&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble grav(Tdouble r)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble grav;&lt;br /&gt;
	grav = 1e0 / r / r;&lt;br /&gt;
	return grav;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== thrust.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR THRUST (GODDARD)&lt;br /&gt;
// T = u * Tmax&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble thrust(Tdouble u, double Tmax)&lt;br /&gt;
{&lt;br /&gt;
	Tdouble thrust;&lt;br /&gt;
	thrust = u * Tmax;&lt;br /&gt;
	return thrust;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Bocop]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Category:Bocop&amp;diff=1657</id>
		<title>Category:Bocop</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Category:Bocop&amp;diff=1657"/>
		<updated>2016-02-01T16:49:44Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category lists all problems for which Bocop code is provided.&lt;br /&gt;
&lt;br /&gt;
Bocop stands for &#039;a toolBox for Optimal COntrol Problems&#039;. It provides an interface for defining optimal control problems and solves these via discretization and optimization of the resulting NLP.&lt;br /&gt;
&lt;br /&gt;
For more information visit the [http://bocop.org/ Bocop] website.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;biblist /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Implementation]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1609</id>
		<title>Goddart&#039;s rocket problem (Bocop)</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem_(Bocop)&amp;diff=1609"/>
		<updated>2016-01-29T15:23:48Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Problem.def ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file defines all dimensions and parameters&lt;br /&gt;
# values for your problem :&lt;br /&gt;
&lt;br /&gt;
# Initial and final time :&lt;br /&gt;
time.free string final&lt;br /&gt;
time.initial double 0&lt;br /&gt;
time.final double 1&lt;br /&gt;
&lt;br /&gt;
# Dimensions :&lt;br /&gt;
state.dimension integer 3&lt;br /&gt;
control.dimension integer 1&lt;br /&gt;
algebraic.dimension integer 0&lt;br /&gt;
parameter.dimension integer 1&lt;br /&gt;
constant.dimension integer 6&lt;br /&gt;
boundarycond.dimension integer 4&lt;br /&gt;
constraint.dimension integer 1&lt;br /&gt;
&lt;br /&gt;
# Discretization :&lt;br /&gt;
discretization.steps integer 100&lt;br /&gt;
discretization.method string gauss&lt;br /&gt;
&lt;br /&gt;
# Optimization :&lt;br /&gt;
optimization.type string batch&lt;br /&gt;
batch.type integer 0&lt;br /&gt;
batch.index integer 5&lt;br /&gt;
batch.nrange integer 3&lt;br /&gt;
batch.lowerbound double 0.3&lt;br /&gt;
batch.upperbound double 0.9&lt;br /&gt;
batch.directory string Batch-C&lt;br /&gt;
&lt;br /&gt;
# Initialization :&lt;br /&gt;
initialization.type string from_init_file&lt;br /&gt;
initialization.file string none&lt;br /&gt;
&lt;br /&gt;
# Parameter identification :&lt;br /&gt;
paramid.type string false&lt;br /&gt;
paramid.separator string ,&lt;br /&gt;
paramid.file string no_directory&lt;br /&gt;
paramid.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Names :&lt;br /&gt;
state.0 string position&lt;br /&gt;
state.1 string speed&lt;br /&gt;
state.2 string mass&lt;br /&gt;
control.0 string acceleration_u&lt;br /&gt;
parameter.0 string finaltime&lt;br /&gt;
boundarycond.0 string r(0)&lt;br /&gt;
boundarycond.1 string v(0)&lt;br /&gt;
boundarycond.2 string m(0)&lt;br /&gt;
boundarycond.3 string r(f)&lt;br /&gt;
constraint.0 string drag_minus_C&lt;br /&gt;
constant.0 string Tmax&lt;br /&gt;
constant.1 string A&lt;br /&gt;
constant.2 string k&lt;br /&gt;
constant.3 string r0&lt;br /&gt;
constant.4 string b&lt;br /&gt;
constant.5 string C&lt;br /&gt;
&lt;br /&gt;
# Solution file :&lt;br /&gt;
solution.file string problem.sol&lt;br /&gt;
&lt;br /&gt;
# Iteration output frequency :&lt;br /&gt;
iteration.output.frequency integer 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.constants ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains the values of the constants of your problem.&lt;br /&gt;
# Number of constants used in your problem : &lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
# Values of the constants : &lt;br /&gt;
3.5&lt;br /&gt;
310&lt;br /&gt;
500&lt;br /&gt;
1&lt;br /&gt;
7&lt;br /&gt;
0.6&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.bounds ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains all the bounds of your problem.&lt;br /&gt;
# Bounds are stored in standard format : &lt;br /&gt;
# [lower bound]  [upper bound] [type of bound]&lt;br /&gt;
&lt;br /&gt;
# Dimensions (i&amp;amp;f conditions, y, u, z, p, path constraints) :&lt;br /&gt;
4 3 1 0 1 1&lt;br /&gt;
&lt;br /&gt;
# Bounds for the initial and final conditions :&lt;br /&gt;
1 1 equal&lt;br /&gt;
0 0 equal&lt;br /&gt;
1 1 equal&lt;br /&gt;
1.01 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the state variables :&lt;br /&gt;
&amp;gt;0:1:0 1 2e+020 lower&lt;br /&gt;
&amp;gt;1:1:1 0 2e+020 lower&lt;br /&gt;
&amp;gt;2:1:2 0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the control variables :&lt;br /&gt;
0 1 both&lt;br /&gt;
&lt;br /&gt;
# Bounds for the algebraic variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the optimization parameters :&lt;br /&gt;
0 2e+020 lower&lt;br /&gt;
&lt;br /&gt;
# Bounds for the path constraints :&lt;br /&gt;
-2e+020 0 upper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== criterion.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_criterion&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CRITERION FOR GODDARD PROBLEM&lt;br /&gt;
	&lt;br /&gt;
	// MAXIMIZE FINAL MASS&lt;br /&gt;
	criterion = -final_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dynamics.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_dynamics&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// DYNAMICS FOR GODDARD PROBLEM&lt;br /&gt;
	// dr/dt = v&lt;br /&gt;
	// dv/dt = (Thrust(u) - Drag(r,v)) / m - grav(r)&lt;br /&gt;
	// dm/dt = -b*|u|&lt;br /&gt;
&lt;br /&gt;
	double Tmax = constants[0];&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double b = constants[4];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
	Tdouble m = state[2];&lt;br /&gt;
&lt;br /&gt;
	state_dynamics[0] = v;&lt;br /&gt;
	state_dynamics[1] = (thrust(control[0],Tmax) - drag(r,v,A,k,r0)) / m - grav(r);&lt;br /&gt;
	state_dynamics[2] = - b * control[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boundarycond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_boundarycond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// INITIAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
	// r0 = 1    v0 = 0   m0 = 1&lt;br /&gt;
	// MODELED AS 1 &amp;lt;= r0 &amp;lt;= 1, etc&lt;br /&gt;
	boundary_conditions[0] = initial_state[0];&lt;br /&gt;
	boundary_conditions[1] = initial_state[1];&lt;br /&gt;
	boundary_conditions[2] = initial_state[2];&lt;br /&gt;
&lt;br /&gt;
	// FINAL CONDITIONS FOR GODDARD PROBLEM&lt;br /&gt;
  	// rf &amp;gt;= 1.01   MODELED AS   1.01 &amp;lt;= rf&lt;br /&gt;
	boundary_conditions[3] = final_state[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pathcond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_pathcond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// CONSTRAINT ON MAX DRAG FOR GODDARD PROBLEM&lt;br /&gt;
	// Drag &amp;lt;= C ie Drag - C &amp;lt;= 0&lt;br /&gt;
	&lt;br /&gt;
	double A = constants[1];&lt;br /&gt;
	double k = constants[2];&lt;br /&gt;
	double r0 = constants[3];&lt;br /&gt;
	double C = constants[5];&lt;br /&gt;
&lt;br /&gt;
	Tdouble r = state[0];&lt;br /&gt;
	Tdouble v = state[1];&lt;br /&gt;
&lt;br /&gt;
	path_constraints[0] = drag(r,v,A,k,r0) - C;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dependencies.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;./grav.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./drag.tpp&amp;quot;&lt;br /&gt;
#include &amp;quot;./thrust.tpp&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== drag.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GODDARD DRAG&lt;br /&gt;
// drag = 310 v^2 exp (-500(r-1))&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
// v: velocity&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble drag(Tdouble r, Tdouble v, double A, double k, double r0)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble drag;&lt;br /&gt;
	drag = A * v * v * exp(-k*(fabs(r)-r0));&lt;br /&gt;
	return drag;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== grav.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR GRAVITY &lt;br /&gt;
// g = 1 / r^2&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble grav(Tdouble r)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	Tdouble grav;&lt;br /&gt;
	grav = 1e0 / r / r;&lt;br /&gt;
	return grav;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== thrust.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;adolc/adolc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;adolc/adouble.h&amp;quot;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// FUNCTION FOR THRUST (GODDARD)&lt;br /&gt;
// T = u * Tmax&lt;br /&gt;
&lt;br /&gt;
// Arguments:&lt;br /&gt;
// r: radius&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class Tdouble&amp;gt; Tdouble thrust(Tdouble u, double Tmax)&lt;br /&gt;
{&lt;br /&gt;
	Tdouble thrust;&lt;br /&gt;
	thrust = u * Tmax;&lt;br /&gt;
	return thrust;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Bocop]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Lotka_Volterra_fishing_problem_(Bocop)&amp;diff=1366</id>
		<title>Lotka Volterra fishing problem (Bocop)</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Lotka_Volterra_fishing_problem_(Bocop)&amp;diff=1366"/>
		<updated>2016-01-21T09:20:43Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Problem.def ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file defines all dimensions and parameters&lt;br /&gt;
# values for your problem :&lt;br /&gt;
&lt;br /&gt;
# Initial and final time :&lt;br /&gt;
time.free string none&lt;br /&gt;
time.initial double 0&lt;br /&gt;
time.final double 12&lt;br /&gt;
&lt;br /&gt;
# Dimensions :&lt;br /&gt;
state.dimension integer 3&lt;br /&gt;
control.dimension integer 1&lt;br /&gt;
algebraic.dimension integer 0&lt;br /&gt;
parameter.dimension integer 0&lt;br /&gt;
constant.dimension integer 2&lt;br /&gt;
boundarycond.dimension integer 3&lt;br /&gt;
constraint.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Discretization :&lt;br /&gt;
discretization.steps integer 100&lt;br /&gt;
discretization.method string lobatto&lt;br /&gt;
&lt;br /&gt;
# Optimization :&lt;br /&gt;
optimization.type string single&lt;br /&gt;
batch.type integer 0&lt;br /&gt;
batch.index integer 0&lt;br /&gt;
batch.nrange integer 1&lt;br /&gt;
batch.lowerbound double 0&lt;br /&gt;
batch.upperbound double 0&lt;br /&gt;
batch.directory string none&lt;br /&gt;
&lt;br /&gt;
# Initialization :&lt;br /&gt;
initialization.type string from_init_file&lt;br /&gt;
initialization.file string none&lt;br /&gt;
&lt;br /&gt;
# Parameter identification :&lt;br /&gt;
paramid.type string false&lt;br /&gt;
paramid.separator string ,&lt;br /&gt;
paramid.file string no_directory&lt;br /&gt;
paramid.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Names :&lt;br /&gt;
state.0 string x0&lt;br /&gt;
state.1 string x1&lt;br /&gt;
state.2 string x2&lt;br /&gt;
control.0 string w&lt;br /&gt;
boundarycond.0 string x00&lt;br /&gt;
boundarycond.1 string x10&lt;br /&gt;
boundarycond.2 string x20&lt;br /&gt;
constant.0 string c0&lt;br /&gt;
constant.1 string c1&lt;br /&gt;
&lt;br /&gt;
# Solution file :&lt;br /&gt;
solution.file string problem.sol&lt;br /&gt;
&lt;br /&gt;
# Iteration output frequency :&lt;br /&gt;
iteration.output.frequency integer 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.constants ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains the values of the constants of your problem.&lt;br /&gt;
# Number of constants used in your problem : &lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
# Values of the constants : &lt;br /&gt;
0.4&lt;br /&gt;
0.2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.bounds ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains all the bounds of your problem.&lt;br /&gt;
# Bounds are stored in standard format : &lt;br /&gt;
# [lower bound]  [upper bound] [type of bound]&lt;br /&gt;
&lt;br /&gt;
# Dimensions (boundary conditions, state, control, algebraic &lt;br /&gt;
# variables, optimization parameters, path constraints) :&lt;br /&gt;
3 3 1 0 0 0&lt;br /&gt;
0.5 0.5 equal&lt;br /&gt;
0.7 0.7 equal&lt;br /&gt;
0 0 equal&lt;br /&gt;
&lt;br /&gt;
# Bounds for the initial and final conditions :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the state variables :&lt;br /&gt;
&amp;gt;0:1:0 0 0 free&lt;br /&gt;
&amp;gt;1:1:1 0 0 free&lt;br /&gt;
&amp;gt;2:1:2 0 0 free&lt;br /&gt;
0 1 both&lt;br /&gt;
&lt;br /&gt;
# Bounds for the control variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the algebraic variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the optimization parameters :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the path constraints :&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== criterion.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_criterion&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the criterion&lt;br /&gt;
	// &amp;quot;criterion&amp;quot; is a function of all variables X[]&lt;br /&gt;
	criterion = final_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dynamics.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_dynamics&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the dynamics&lt;br /&gt;
	// Please give a function or a value for the dynamics of each state variable&lt;br /&gt;
	double c0 = constants[0];&lt;br /&gt;
	double c1 = constants[1];&lt;br /&gt;
	&lt;br /&gt;
	Tdouble x0 = state[0];&lt;br /&gt;
	Tdouble x1 = state[1];&lt;br /&gt;
	Tdouble x2 = state[2];&lt;br /&gt;
	&lt;br /&gt;
	state_dynamics[0] = x0-x0*x1-c0*x0*control[0];&lt;br /&gt;
	state_dynamics[1] = -x1+x0*x1-c1*x1*control[0];&lt;br /&gt;
	state_dynamics[2] = (x0-1)*(x0-1)+(x1-1)*(x1-1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boundarycond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_boundarycond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the initial and final conditions&lt;br /&gt;
	// Please give a function or a value for each element of boundaryconditions&lt;br /&gt;
        boundary_conditions[0] = initial_state[0];&lt;br /&gt;
	boundary_conditions[1] = initial_state[1];&lt;br /&gt;
	boundary_conditions[2] = initial_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Category:Bocop]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Lotka_Volterra_fishing_problem_(Bocop)&amp;diff=1365</id>
		<title>Lotka Volterra fishing problem (Bocop)</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Lotka_Volterra_fishing_problem_(Bocop)&amp;diff=1365"/>
		<updated>2016-01-21T09:20:06Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: Created page with &amp;quot; == Problem.def == &amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt; # This file defines all dimensions and parameters # values for your problem :  # Initial and final time : time.free string none time.in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Problem.def ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file defines all dimensions and parameters&lt;br /&gt;
# values for your problem :&lt;br /&gt;
&lt;br /&gt;
# Initial and final time :&lt;br /&gt;
time.free string none&lt;br /&gt;
time.initial double 0&lt;br /&gt;
time.final double 12&lt;br /&gt;
&lt;br /&gt;
# Dimensions :&lt;br /&gt;
state.dimension integer 3&lt;br /&gt;
control.dimension integer 1&lt;br /&gt;
algebraic.dimension integer 0&lt;br /&gt;
parameter.dimension integer 0&lt;br /&gt;
constant.dimension integer 2&lt;br /&gt;
boundarycond.dimension integer 3&lt;br /&gt;
constraint.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Discretization :&lt;br /&gt;
discretization.steps integer 100&lt;br /&gt;
discretization.method string lobatto&lt;br /&gt;
&lt;br /&gt;
# Optimization :&lt;br /&gt;
optimization.type string single&lt;br /&gt;
batch.type integer 0&lt;br /&gt;
batch.index integer 0&lt;br /&gt;
batch.nrange integer 1&lt;br /&gt;
batch.lowerbound double 0&lt;br /&gt;
batch.upperbound double 0&lt;br /&gt;
batch.directory string none&lt;br /&gt;
&lt;br /&gt;
# Initialization :&lt;br /&gt;
initialization.type string from_init_file&lt;br /&gt;
initialization.file string none&lt;br /&gt;
&lt;br /&gt;
# Parameter identification :&lt;br /&gt;
paramid.type string false&lt;br /&gt;
paramid.separator string ,&lt;br /&gt;
paramid.file string no_directory&lt;br /&gt;
paramid.dimension integer 0&lt;br /&gt;
&lt;br /&gt;
# Names :&lt;br /&gt;
state.0 string x0&lt;br /&gt;
state.1 string x1&lt;br /&gt;
state.2 string x2&lt;br /&gt;
control.0 string w&lt;br /&gt;
boundarycond.0 string x00&lt;br /&gt;
boundarycond.1 string x10&lt;br /&gt;
boundarycond.2 string x20&lt;br /&gt;
constant.0 string c0&lt;br /&gt;
constant.1 string c1&lt;br /&gt;
&lt;br /&gt;
# Solution file :&lt;br /&gt;
solution.file string problem.sol&lt;br /&gt;
&lt;br /&gt;
# Iteration output frequency :&lt;br /&gt;
iteration.output.frequency integer 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.constants ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains the values of the constants of your problem.&lt;br /&gt;
# Number of constants used in your problem : &lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
# Values of the constants : &lt;br /&gt;
0.4&lt;br /&gt;
0.2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem.bounds ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# This file contains all the bounds of your problem.&lt;br /&gt;
# Bounds are stored in standard format : &lt;br /&gt;
# [lower bound]  [upper bound] [type of bound]&lt;br /&gt;
&lt;br /&gt;
# Dimensions (boundary conditions, state, control, algebraic &lt;br /&gt;
# variables, optimization parameters, path constraints) :&lt;br /&gt;
3 3 1 0 0 0&lt;br /&gt;
0.5 0.5 equal&lt;br /&gt;
0.7 0.7 equal&lt;br /&gt;
0 0 equal&lt;br /&gt;
&lt;br /&gt;
# Bounds for the initial and final conditions :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the state variables :&lt;br /&gt;
&amp;gt;0:1:0 0 0 free&lt;br /&gt;
&amp;gt;1:1:1 0 0 free&lt;br /&gt;
&amp;gt;2:1:2 0 0 free&lt;br /&gt;
0 1 both&lt;br /&gt;
&lt;br /&gt;
# Bounds for the control variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the algebraic variables :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the optimization parameters :&lt;br /&gt;
&lt;br /&gt;
# Bounds for the path constraints :&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== criterion.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_criterion&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the criterion&lt;br /&gt;
	// &amp;quot;criterion&amp;quot; is a function of all variables X[]&lt;br /&gt;
	criterion = final_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dynamics.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_dynamics&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the dynamics&lt;br /&gt;
	// Please give a function or a value for the dynamics of each state variable&lt;br /&gt;
	double c0 = constants[0];&lt;br /&gt;
	double c1 = constants[1];&lt;br /&gt;
	&lt;br /&gt;
	Tdouble x0 = state[0];&lt;br /&gt;
	Tdouble x1 = state[1];&lt;br /&gt;
	Tdouble x2 = state[2];&lt;br /&gt;
	&lt;br /&gt;
	state_dynamics[0] = x0-x0*x1-c0*x0*control[0];&lt;br /&gt;
	state_dynamics[1] = -x1+x0*x1-c1*x1*control[0];&lt;br /&gt;
	state_dynamics[2] = (x0-1)*(x0-1)+(x1-1)*(x1-1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boundarycond.tpp ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;header_boundarycond&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
	// HERE : description of the function for the initial and final conditions&lt;br /&gt;
	// Please give a function or a value for each element of boundaryconditions&lt;br /&gt;
    boundary_conditions[0] = initial_state[0];&lt;br /&gt;
	boundary_conditions[1] = initial_state[1];&lt;br /&gt;
	boundary_conditions[2] = initial_state[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Category:Bocop]]&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1266</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1266"/>
		<updated>2016-01-16T12:14:39Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude(radius), speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \min_{m,r,v,u,T} &amp;amp;  -m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
C &amp;amp;=&amp;amp; 0.6&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference Solution ==&lt;br /&gt;
&lt;br /&gt;
The following reference solution was generated using BOCOP. The optimal value of the objective function is -0.63389. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Reference solution plots&amp;quot; widths=&amp;quot;180px&amp;quot; heights=&amp;quot;140px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
 Image:Goddartacc.png| Control u over time.&lt;br /&gt;
 Image:Goddartpos.png| Position r over time.&lt;br /&gt;
 Image:Goddartspeed.png| Speed v over time.&lt;br /&gt;
 Image:Goddartmass.png| Mass m over time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References == &lt;br /&gt;
The Problem can be found  in the  [http://bocop.org/ BOCOP User Guide].&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1264</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1264"/>
		<updated>2016-01-14T13:33:10Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude, speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \min_{m,r,v,u,T} &amp;amp;  -m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
C &amp;amp;=&amp;amp; 0.6&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference Solution ==&lt;br /&gt;
&lt;br /&gt;
The following reference solution was generated using BOCOP. The optimal value of the objective function is -0.63389. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Reference solution plots&amp;quot; widths=&amp;quot;180px&amp;quot; heights=&amp;quot;140px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
 Image:Goddartacc.png| Control u over time.&lt;br /&gt;
 Image:Goddartpos.png| Position r over time.&lt;br /&gt;
 Image:Goddartspeed.png| Speed v over time.&lt;br /&gt;
 Image:Goddartmass.png| Mass m over time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References == &lt;br /&gt;
The Problem can be found  in the  [http://bocop.org/ BOCOP User Guide].&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1263</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1263"/>
		<updated>2016-01-14T13:27:53Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude, speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \min_{m,r,v,u,T} &amp;amp;  -m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
C &amp;amp;=&amp;amp; 0.6&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference Solution ==&lt;br /&gt;
&lt;br /&gt;
The following reference solution was generated using BOCOP. The optimal value of the objective function is -0.63389. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Reference solution plots&amp;quot; widths=&amp;quot;180px&amp;quot; heights=&amp;quot;140px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
 Image:Goddartacc.png| Control u over time.&lt;br /&gt;
 Image:Goddartpos.png| Position r over time.&lt;br /&gt;
 Image:Goddartspeed.png| Speed v over time.&lt;br /&gt;
 Image:Goddartmass.png| Mass m over time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1262</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1262"/>
		<updated>2016-01-14T13:27:23Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude, speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \max_{m,r,v,u,T} &amp;amp;  m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
C &amp;amp;=&amp;amp; 0.6&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference Solution ==&lt;br /&gt;
&lt;br /&gt;
The following reference solution was generated using BOCOP. The optimal value of the objective function is -0.63389. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Reference solution plots&amp;quot; widths=&amp;quot;180px&amp;quot; heights=&amp;quot;140px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
 Image:Goddartacc.png| Control u over time.&lt;br /&gt;
 Image:Goddartpos.png| Position r over time.&lt;br /&gt;
 Image:Goddartspeed.png| Speed v over time.&lt;br /&gt;
 Image:Goddartmass.png| Mass m over time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=File:Goddartspeed.png&amp;diff=1261</id>
		<title>File:Goddartspeed.png</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=File:Goddartspeed.png&amp;diff=1261"/>
		<updated>2016-01-14T13:21:46Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=File:Goddartpos.png&amp;diff=1260</id>
		<title>File:Goddartpos.png</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=File:Goddartpos.png&amp;diff=1260"/>
		<updated>2016-01-14T13:21:32Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=File:Goddartacc.png&amp;diff=1259</id>
		<title>File:Goddartacc.png</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=File:Goddartacc.png&amp;diff=1259"/>
		<updated>2016-01-14T13:21:12Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=File:Goddartmass.png&amp;diff=1258</id>
		<title>File:Goddartmass.png</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=File:Goddartmass.png&amp;diff=1258"/>
		<updated>2016-01-14T13:20:57Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1257</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1257"/>
		<updated>2016-01-14T13:20:08Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude, speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \max_{m,r,v,u,T} &amp;amp;  m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
C &amp;amp;=&amp;amp; 0.6&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
	<entry>
		<id>https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1144</id>
		<title>Goddart&#039;s rocket problem</title>
		<link rel="alternate" type="text/html" href="https://mintoc.de/index.php?title=Goddart%27s_rocket_problem&amp;diff=1144"/>
		<updated>2016-01-11T12:53:32Z</updated>

		<summary type="html">&lt;p&gt;PaulScharnhorst: Created page with &amp;quot;In Goddart&amp;#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Goddart&#039;s rocket problem we model the ascent (vertical; restricted to 1 dimension) of a rocket. The aim is to reach a certain altitude with minimal fuel consumption. It is equivalent to maximize the mass at the final altitude.&lt;br /&gt;
[[Category:MIOCP]]&lt;br /&gt;
== Variables ==&lt;br /&gt;
The state variables &amp;lt;math&amp;gt;r,v,m&amp;lt;/math&amp;gt; describe the altitude, speed and mass.&lt;br /&gt;
 &lt;br /&gt;
The drag is given by &lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D(r,v):= Av^2 \rho(r)\text{, with }\rho(r):= exp(-k\cdot (r-r_0)).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
All units are renormalized.&lt;br /&gt;
&lt;br /&gt;
== Mathematical formulation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{llcll}&lt;br /&gt;
 \displaystyle \max_{m,r,v,u,T} &amp;amp;  m(T)\\[1.5ex]&lt;br /&gt;
 \mbox{s.t.} &amp;amp; \dot{r} &amp;amp; = &amp;amp; v, \\&lt;br /&gt;
 &amp;amp; \dot{v} &amp;amp; = &amp;amp; -\frac{1}{r^2} + \frac{1}{m} (T_{max}u-D(r,v)) \\[1.5ex]&lt;br /&gt;
&amp;amp; \dot{m} &amp;amp; = &amp;amp; -b T_{max} u, \\&lt;br /&gt;
&amp;amp; u(\cdot) &amp;amp;\in&amp;amp; [0,1] \\&lt;br /&gt;
 &amp;amp; r(0) &amp;amp;=&amp;amp; r_0, \\&lt;br /&gt;
 &amp;amp; v(0) &amp;amp;=&amp;amp; v_0, \\&lt;br /&gt;
 &amp;amp; m(0) &amp;amp;=&amp;amp; m_0, \\&lt;br /&gt;
 &amp;amp; r(T) &amp;amp;=&amp;amp; r_T, \\&lt;br /&gt;
 &amp;amp; D(r(\cdot),v(\cdot))&amp;amp;\le&amp;amp; C \\&lt;br /&gt;
&amp;amp; T free&lt;br /&gt;
\end{array} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rcl}&lt;br /&gt;
r_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
v_0 &amp;amp;=&amp;amp; 0  \\&lt;br /&gt;
m_0 &amp;amp;=&amp;amp; 1  \\&lt;br /&gt;
r_T &amp;amp;=&amp;amp; 1.01 \\&lt;br /&gt;
b &amp;amp;=&amp;amp; 7 \\&lt;br /&gt;
T_{max} &amp;amp;=&amp;amp; 3.5 \\&lt;br /&gt;
A &amp;amp;=&amp;amp; 310 \\&lt;br /&gt;
k &amp;amp;=&amp;amp; 500 \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;/div&gt;</summary>
		<author><name>PaulScharnhorst</name></author>
	</entry>
</feed>