Bocop 2.0.5

Well, it took a bit longer than expected, but Bocop 2.0.5 is out !
More precisely the linux version comes first, windows and mac will follow.

Note: when installing a new version of Bocop, the GUI will retain the settings from the previous version, such as the current problem loaded at startup. It will also point to the previous core package location, which may cause a version number warning. Just select the path to the new install when prompted. This message will occur only once.

Changelog info:

2017/02/06: bocop-2.0.5
– package: improved windows installer will automatically offer to install Cmake and MinGW.
It should also not require PATH edits or reboots anymore (the latter may depend on windows
– package: link to GUI added to desktop.
– package: root directory for Bocop package should now be properly set up after install.
– IO: float precision for .sol file set to 15 instead of 20 to avoid spurious digits.
– GUI: added red lines for bounds for state, control and algebraic variables in visualization tab.
– GUI: ‘Clean problem’ in Build&Run menu now checks for file existence, thus preventing
warnings for trying to remove missing files.
– GUI: ‘Save .sol as’ in visualization tab should now overwrite properly if confirmed.
– GUI: reverted bounds format (in .bounds file) for state variables from block (experimental)
to normal.
– GUI: fixed some mis-positionning between bounds and labels in .bounds file (this bug was
cosmetic only and had no impact).
– GUI: in starting point tab, Ymin and Ymax should now be updated according to the figure
(linear or spline interpolations).
– GUI: constants are now numbered from 0 to n-1 for consistency with c++ code.
– GUI: tab ‘Discretization’ was merged into ‘Definition’ (method and time steps).
– GUI: prompt for clean and rebuild if Cmake fails to build the executable.
– GUI: prompt for build if executable not present when launching the optimization.
– GUI: splitted some functions for better code clarity
– GUI: fixed bug in export function for algebraic variables (time stages).
– example/contrast added: contrast optimization in magnetic resonance imaging.
– example/swimmer added: optimal swimming for 3-link Purcell type micro-swimmer.
– example/jackson: reorganization of the different versions of the parameter identification.
– example/methane: renamed to bioreactor; fixed improper use of Tdouble variables
(initial_time, final_time) in call to function parametrizedcontrol (pathcond.tpp).
– example/stateconstraint3: removed some bounds that could make the problem unfeasible.
– core: option for iteration output was disabled for now for debugging.

Links are available on the Download page.

Bocop 2.0.4

Bocop 2.0.4 is out.

This is mostly a bugfix release. Main changes include:

  • Bug fix / feature removal: removed the ability to edit the C++ function of the problem in Definition tab. The .tpp files can be handled by any text editor (qtcreator, gedit, notepad++, …). This feature had caused some pretty annoying bugs (e.g. recently mixing files criterion.tpp and dynamics.tpp) and was getting increasingly complicated to maintain properly.
  • Bug fix: the button to stop an ongoing optimization works again.
  • GUI commands for clean / build / run were revamped for faster (and hopefully more stable) building process.
  • GUI / core: changed some default initialization values from 0 to 0.1 to reduce the risk of math errors on first iteration.

Links are available on the Download page.

GUI bugs

Hi everyone.
Packages will be offline for a few days due to some bugs in the Qt GUI.
For instance, the GUI can in some cases mix up the buffers for source files criterion.tpp and dynamics.tpp, which is quite annoying to say the least.
Working on it for a 2.0.4 release soon.

2.0.3 bugfix

15 oct update: windows package was incorrectly linked to an empty file. Fixed.

Packages for 2.0.3 are up again.
In particular, problems written with previous problems should no longer fail to build due to the absence of the file ‘dependencies.cpp’ (you could also create an empty file as a quick workaround).

Bocop 2.0.3

Bocop 2.0.3 is out.

This is mostly a maintenance release. Main changes include:

  • Bug fix: fix for the “don’t have function for random number generator” error that could prevent building Ipopt on Linux.
  • Bug fix: a pre-built version of Ipopt for Windows was added as a workaround to the build process hanging during Matlab detection.
  • GUI command ‘Run’ now automatically saves the c++ files and builds the bocop executable if needed. Therefore, no more error message for missing executable, and no need to launch the ‘Build’ command manually before ‘Run’. Also, building process now uses Release settings by default, the option to build with ‘Debug’ settings was added in the Build menu.
  • New optional feature: you can now save the solution files corresponding to the iterations of the optimization solver (Ipopt). This option is governed by a new parameter in the problem.def file: iteration.output.frequency. The default value of 0 will disable the save of iterations, keeping only the usual .sol file at the convergence. A value of k will save one in k iterations. These iterations saves are named problem.sol.iterxxx. This option is useful to track the progress of the optimization, for instance to investigate convergence problems, or help tune Ipopt parameters.

Links and complete changelog are available on the Download page.

BocopHJB 1.0.1

BocopHJB 1.0.1 is out!

The BocopHJB package implements a global optimization method. Similarly to the Dynamic Programming approach, the optimal control problem is solved in two steps. First we solve the Hamilton-Jacobi-Bellman equation satisfied by the value function of the problem. Then we simulate the optimal trajectory from any chosen initial condition.

Key features:

  • Global optimization for both deterministic and stochastic optimal control problems.
  • Handles switching between discrete modes of the system.
  • Stopping time problems can be solved using switching.
  • Built-in simulation module to recompute optimal strategies.
  • Support advanced rules to define the discrete control set.
  • Parallel execution with OpenMP.
  • Matlab/Python scripts to read the value function and simulated trajectories.

Ipopt incompatibility with gcc 4.8.3

The following error may occur when compiling Bocop for the first time on Linux:

error: #error "don't have function for random number generator"

It is caused by an incompatibility between Ipopt 3.11.8 and gcc 4.8.3.

We will release a new version of Bocop that fix that problem. Meanwhile, to fix it, you can compile Ipopt yourself by executing the following commands:

cd <BOCOP>/ThirdParty/Ipopt-3.11.8
./configure --prefix=<BOCOP>/ThirdParty/Ipopt-3.11.8/ --enable-static coin_skip_warn_cxxflags=yes
make -j
make install

where <BOCOP> is the absolute path to the install directory of Bocop (the one in which you have extracted the package).

Bocop 2.0.2

Bocop 2.0.2 is out.

Main changes include:

  • Single variable initialization from file.
  • New pre-defined functions callable in problem definition source files (see section A.4  “Public Tools” in the User Guide).
  • Automatic backup files of problem definition and solution.

Links and complete changelog are available on the Download page.