Skip to content

Releases: ibex-team/ibex-lib

v2.8.9

22 Oct 22:36
Compare
Choose a tag to compare

An important bug has been fixed in the composition of functions with Minibex.

v2.8.8

08 Sep 19:27
Compare
Choose a tag to compare

Release notes v 2.8.8

Main changes

  • cmake: the compilation of ibex with cmake has made significant progresses. Now it works well under linux and MacOS both in static/dynamic. It also works under Windows but the LP library cannot be set yet. Note that binaries for Windows are now also periodically published. With cmake, plugins become packages and are installed differently, as separate libraries. See the installation documentation. However, the java, sip or affine plugins are not yet ready to be compiled with cmake.

    waf is still the official way to compile ibex.

  • project organization. Plugins have been moved to different repositories. The global optimization has been reintegrated into the core library. There is no ibex-optim plugin anymore.

  • new symbolic simplification engine. Now there is an option --simpl in ibexsolve and ibexopt that allows to choose the "level" of symbolic simplification. The new engine is more powerful as it allows to merge equivalent terms in a polynomial of expressions. Unfortunately, the process can be slow (and even blowup if you chose the full-developing variant) and part of the DAG structure may also be lost. Which means that the running time may be worse, even if we leave aside the symbolic processing time.
    For these reasons, the default simplification level (=1) in ibexsolve and ibexoptcorresponds to the old algorithm, which has been slightly improved.

  • mutable constants. Now, if you precede a constant by a star '*' in a Minibex file, e.g.,

    constants 
     * x = 1;   // ---> mutable constant
       y = 2;   //        regular constant
    

    the constant is accessible in c++ and can be dynamically changed! See the System::constant(char*) function. But be aware that a mutable constant also hinders the simplification process... to be used with parsimony!

  • definition domain. It is possible now to generate from a Function object the system that characterizes its definition domain. See #456

Minor changes

  • important bug fixes in ibexsolve (#470) and operator& (#463)
  • Fix COV format id/version mixup
  • Fix of a bug when comparing expressions with mutable constants
  • Fix #468, #454, #425, #452, #450, #446
  • Fix #437. The "infeasible" return status of ibexopt also includes the case of all feasible points outside the definition domain of the goal function. See the discussion (in French)
  • iterators for Array, Map keys with template type

ibex-lib-2.8.6dev-nolp

29 Apr 08:47
Compare
Choose a tag to compare

ibexlib compiled without lp solver

v2.8.7

14 Feb 22:12
Compare
Choose a tag to compare

Release notes v 2.8.7

Main changes

The interface for linear programming (LPSolver) has been entirely redesigned, documented, tested and wrappers for Soplex and Cplex re-implemented, a work by Antoine Marendet.

The new wrappers are now working with Soplex 4 and Cplex 12. The wrapper for CLP has not been re-implemented so it has been dropped (until someone decides to work again on it).

The new LPSolver code is more clean and stable. In particular, the solver accepts any input problem providing that variable bounds are finite (hence: no more arbitrary test on input box diameter and the LPException class has been removed). Note however there as still few cases where the LP Solver returns an 'unknown' status, this is still being investigated.

Performances are not impacted.

Other changes

  • kernel: important bug fix in the backward operator of expression vectors with mixed dimensions
  • some improvements on symbolic simplification
  • Constructors with initializer lists for vector, matrices, etc. Ex, you can write now
IntervalVector x{{0,1},{1,2}};
  • [java] Fix a bug in parser which could lead to buggy behavior !

Minor changes

  • Fix #425, #442, #431
  • Fix seg fault of ibexsolve in case of no constraint
  • Add norm2 and sqnorm2 for interval vectors

v2.8.6

11 Nov 23:02
Compare
Choose a tag to compare

Release notes v 2.8.6

Main changes

  • The recently added features of the optim plugin, that is the KKT contractor and the rigor mode have been thoroughly tested and many bugs related to these features have been fixed (#403, #404, #406, #407, #408, #415, #411). The optim plugin can now be considered as stable !

  • A new ODE plugin has been added. It contains a program that allows to calculate a region inside which all points converge to the fixpoint of a dynamical system.
    See documentation here: https://github.com/ibex-team/ibex-lib/blob/develop/plugins/ode/README.rst

  • The parser has been reogranized so that all the input and output structures are now managed in a unique generic class P_Struct, and the generation code can now be overriden.
    The new ODE plugin with its P_LyapunovStruct class gives an illlustration of this gain in simplicity/genericity.

  • Introduction of the integer keyword in Minibex that allows now to declare a variable as integer for ibexsolve or ibexopt !
    The floor and ceil operators have also been introduced (isse #168).
    Just add a constraints like this:

       integer(x).
    

    This may help for simple mixed integer/continuous problems. However, for more involved combinatorial constraints, use CHOCO+IBEX via the java plugin.

  • [optim] Creation of a OptimizerConfig class hierarchy and integration of Bertrand's "optimizer04" configuration (Optimizer04Config).
    Note that KKT contractor is now activated by default for unconstrained problems (#405)

Other changes

  • LinearizerCompo replaces the old LinearizerCombo, with a more clean interface.
  • [java] Now the plugin can be compiled with jdk>=10 (see #379, #423)

Minor changes

  • [optim] fix of a small bug that made a "new_uplo>loup" appear in case of unreachable precision
  • All references to plugins have been removed from kernel
  • Fix #401 (for linking with coinOR), #410, #416, #419
  • Fix #398 on the semantic of smear-based bisector, which was producing non-monotic performances wrt precision.
    Discussion on the topic is still open, see #400.
  • Fix three problems for compiling examples under MinGW, including #422
  • All Travis tests are now OK again

Still in progress

  • Cmake compilation scripts. See discussion in #368

v2.8.5

05 Sep 19:32
Compare
Choose a tag to compare

Release notes v 2.8.5

Important bug fix for unconstrained problems

v2.8.4

04 Sep 11:20
Compare
Choose a tag to compare

Release notes v 2.8.4

  • Installation problem of v2.8.3 fixed on MacOS
  • [optim] anticipated filtering is now correct
  • small bug fix in BitSet composition
  • some warnings removed on Darwin
  • Travis tests OK

v2.8.3

03 Sep 09:01
Compare
Choose a tag to compare

Release notes v 2.8.3

Main changes

  • Two contractors for optimization, based on the KKT conditions (Khun-Tucker local optimality necessary conditions). The first variant is CtcKhunTucker and uses

    • a quick rejection test based on: "First Order Rejection Tests For Multiple-Objective Optimization"
      by Goldsztejn A., Domes F., Chevalier B. (JOGO)
    • a Newton iteration on the system of equations corresponding to the KKT conditions. The equations are represented by a purely numerical function (Fnc) that is calculated dynamically by considering only active constraints (equalities, active inequalities and active bounds of the initial box).

    The second variant is CtcKhunTuckerLP and builds statically a (symbolic) System object corresponding to the KKT conditions considering all the constraints. For efficiency reasons, the system is solved using X-Newton (whence LP suffix).

    The KKT contractor (first variant) can be activated in ibexopt using the new --kkt option.

  • [optim] Rigorous mode improved and tested. Now, the loup finder starts from the midpoint when no is loup is found with relaxed inequalities instead of skipping the search

  • Function evaluation: the evaluation with selected components has been improved and extendeed to matrix-valued functions (allowing to eval selected rows). Some dimension issues have been fixed with eval_vector/eval_matrix.

  • Expression simplification improved and some memory problems have been solved (releaved by bug #366)

Other changes

In progress

  • Cmake compilation scripts. See discussion in ##368

v2.8.2

24 May 07:18
Compare
Choose a tag to compare

Release notes v 2.8.2

  • There was an installation problem in v 2.8.1.
  • Fix #380

v2.8.1

21 May 22:31
Compare
Choose a tag to compare

Release notes v 2.8.1

Main changes

  • Ibex is now compatible with Soplex 3 (note: no backward compatibility with older releases of Soplex, including Soplex 1). The archive of ibex now contains Soplex 3.1.1.

  • [sip] new release (results submitted to EJOR)

  • [optim] feasible diving becomes default strategy

  • [optim] new loup finder based on duality. Advantage: the expansion point can be any point in the box (e.g., the midpoint or the argmin of the linear relaxation) instead of a corner as with the XTaylor linearizer. Though, this loup finder is not used by default by ibexopt (seems not making a substantial difference in practice).

  • [optim] new variant of Lsmear, robust to the problem of inactive constraints, see #344

  • System::minibex() function to generate minibex code of a system

Other changes

  • new "sum" operator in Minibex, see #362

  • Problems with Python 3 fixed

  • [optim] bug fix in monotonicity analysis, see 850f804

  • [optim]: new option to desactivate anticipated upper bounding

  • Fixes: #358, bug in Kernel.cpp (f93bc4f) and inflating Newton (98cbc09)

  • Reintroducing Function::used(int), see 850f804

In progress

  • Bug fix and improvements in first-order conditions operators (PdcFirstOrder,FncKhunTucker)