BocopHJB 1.1.0

BocopHJB 1.1.0 is out, introducing a new Qt GUI similar to the one for Bocop.

Besides the user interface, this version also includes several new extensions and examples. A summary of the updates is given in the changelog below, and more information can be found in the user guide and examples catalog.
Packages for Linux and MacOS are available on the Download page, the windows version is in progress.

Changelog info:

2017/09/01: bocophjb-1.1.0
– [gui] BocopHJB now has a Qt GUI ! Gui allows for problem definition
(except the C++ code), executable build and run, and visualization.
– [core] added specific function for constraints on final state.
– [core] for switched systems, added function for possible state jumps at
transitions. Also added option to restrict the set of admissible
transitions (see maze example), defined by file or function.
– [core] optional computation of state probability distribution (see maze
example). Distribution is an output only, cannot be used in functions.
Probability of state transitions and mode switchings are also recorded.
– [core] input file .def was reorganized and expanded, all blocks must be
present in the correct order. Control discretization options were revamped.
State discretization is now in .def file instead of stateDisc/ folder.
Starting point/mode for simulated trajectory is also in .def file instead
of the C/C++ file simulation.cpp, which is removed.
Parameter timestep.output.frequency is now hardcoded to 10%.
– [core] new checks for cost functions when building in Debug mode.
– [core] some new info added in output file;
matlab reading script was updated accordingly.
– [core] new optional functions: preProcessing.cpp, postProcessing.cpp, and
dependencies.hpp/cpp. Dummy files are used if not present in problem folder.
Function preProcessing can modify the starting point (initial conditions)
as well as the number of modes (if they depend on some problem constants).
– [core] added checks for initial point in the interior of the state grid,
as well as for the starting mode of the trajectory simulation.
– [core] splitted IO functions in separate source files (core/sources/IO).
– [core] improved handling of infeasible case during trajectory simulation.
– [core] added recomputation of the objective during trajectory simulation,
with separate terms for the running, final and switching cost.
– [core] minor changes to value function and simulated trajectory log files.
– [core] improved control discretization info in log files.
– [core] several internal improvements (hjb constructor)

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.