Combinatorial Efficient Global Optimization

Model building, surrogate model based optimization and Efficient Global Optimization in combinatorial or mixed search spaces.


CEGO Patch Notes

Version 2.3.0 @ 2019-03-05 - Fixed a bug that occured when checking for duplicates (to avoid them) in optimCEGO - A bug in optimMIES was fixed. The wrong sigma variable was used in the self-adpation for real-valued parameters. - optimMIES was changed to include categoricals only if they are coded as integers (but not necessarily as a sequence) See also the changed example in optimMIES' help. - Fixed a potential alloc/PROTECT problem in distancePermutationInterchange and distancePermutationInsert (found by rchk) - This update now includes all methods for dealing with indefinite kernels in Kriging, as reported in Chapter 8 of "Surrogate Models for Discrete Optimization Problems" by Martin Zaefferer (2018). See ?modelKriging for some more details.

Version 2.2.0 @ 2017-07-12 - New functionality: - CEGO now contains an implementation of a Mixed Integer Evolution Strategy (MIES), see optimMIES. - Distances for numerical (binary) data as well as for string data are now included in the package. See distanceNumeric* and distanceString* - Several new mutation* and recombination* functions (for binary, string and permutation data) have been added. - The EA (optimEA) can now handle parts of its configuration in a self-adaptive way. See documentation. - Objects created by modelKriging can now be used for simulation (rather than just estimation/prediction), by calling simulate.modelKriging. Connected to this last, there are now two functions that can be used to create simulation-based test functions: createSimulatedTestFunction and testFunctionGeneratorSim

- Other major changes:
- Changed some details (e.g., registering, interfacing) of C code calls, to satisfy recently introduced CRAN check procedures. 
  Incidentally, this may speed up calls to the various distance* functions that employ C code.

- Other minor changes:
- Fixed a bug in the optimInterface function: the restarts variable is now actually used (and by default TRUE)
- Feature embedding is now included in the correctionDistanceMatrix function
- The object returned by modelKriging now has a more informative print function
- Various improvements of documentation (content and formatting)

Version 2.1.0 @ 2016-08-17 - New functionality: - By setting the control parameters indefiniteType, indefiniteMethod and indefiniteRepair, the modelKriging function has now several options of dealing with indefinite kernels / correlation functions.

  • The new functions is.CNSD, is.NSD and is.PSD check for (conditional) definiteness of matrices. These Properties are required, e.g., for distance/kernel matrices in Kriging or Support Vector Machine Modelsmodels.
    • The new functions correctionCNSD, correctionDefinite, correctionKernelMatrix and correctionDistanceMatrix take matrices that lack required properties (definiteness) and correct the matrices to enforce the required properties.

    • The new functions repairConditionsDistanceMatrix and repairConditionsCorrelationMatrix repair the diagonal as well as the value range of the respective definite matrices, so that they are valid distance or correlation matrices.

    • The new function nearCNSD computes the nearest Conditionally Negative Semi-Definite matrix, similar to the nearPD function from the Matrix package (which computes the nearest Positive Semi-Definite matrix).

    • Other major changes:

    • Instead of choosing, multiple distances can now be combined in modelKriging, using a weighting scheme. This can be done by providing several distances function (or distance matrices) and setting control$combineDistances to TRUE.

    • A new design function and a new optimizer: designMaxMinDist creates a design of experiment, by sequentially adding samples with maximum minimum distances to the existing samples optimMaxMinDist uses the above method as an one-shot optimizer.

    • Other minor changes:

  • Landscapes generated by landscapeGeneratorUNI (or *MUL, *Gaussian) now wrap non-list inputs into a list.
    • Slightly changed configuration of landscapeGeneratorGaussian
  • Fixed optimInterface: in case of method="L-BFGS-B", the number of function evaluations (counts) should now be calculated correctly.
  • Improved the numerical stability of the maximum likelihood estimation in modelKriging.
    • optim2opt now also keeps an archive of solutions (optional, default).
    • Various documentation improvements.
    • Switched off several warnings in likelihood estimation function for modelKriging, because they occured to frequentlty without being problematic.

Version 2.0.0 @ 2015-10-06 - General remark: This update includes some changes that are not backwards compatible. E.g., Several of the main function interfaces changed, to make functions more usable/flexible/understandable. See details below.
- Deprecated distancePermutationLCSeq. Replaced by distancePermutationInsert to stress edit-distance character of the function, for better readability and to avoid confusion of LCSeq and LCStr. The deprecated distancePermutationLCSeq will be removed in the next patch. - Variable names in optimInterface changed - Unified the interfaces of all optim* functions in the package. Now all take x, fun and control as input. creationFunction is part of control now. - Unfied interface for distance based landscape generators, landscapes now expect list of solutions as input. (i.e., even a single solution has to be wrapped into a list) - Renamed all modeling functions and the corresponding objects, e.g., combinatorialKriging is now modelKriging (old functions are deprecated and will be removed in next update).

  • Moved from .C to .Call interface for several permutation distance measures. This may speed up distance calculation quite significantly in some cases: E.g., distancePermutationInterchange and distancePermutationInsert (formerly LCSeq) are now ~3 times faster for typical test cases. Some distance measures that do not rely on C code (e.g., Hamming, Euclidean) are not affected by this change.
    • Added pivoting to Cholesky decomposition in likelihood estimation function for modelKriging. Allows for PSD correlation matrices.
    • New "control" parameter in modelKriging: control$scaling. When this is set to TRUE, the distance matrix is divided by the maximum distance to yield values between 0 and 1. This allows to avoid scaling bias when distance functions may yield values larger than one.
  • Improved documentation for several functions
    • Bugfix for the weighted tardiness benchmark, weight vector now handled correctly
  • New mutation operator for permutations (reversal mutation): mutationPermutationReversal
  • Keeping an archive of candidate solutions in the EA is now optional. See the control parameter "archive" in optimEA.
    • Custom choices for duplicate removal are now in optimEA. See control parameters "duplicateFunction" and "duplicateRemoval".
  • In case model building fails during a run of optimCEGO, the run stops (with a warning), giving the result so far as well as a termination message.

Version 1.0.1108 @ 2015-01-06 - Initial Release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


2.3.0 by Martin Zaefferer, 15 days ago

Browse source code at

Authors: Martin Zaefferer <[email protected]>

Documentation:   PDF Manual  

GPL (>= 3) license

Imports MASS, stats, DEoptim, graphics, quadprog, Matrix, methods, ParamHelpers, fastmatch

Suggests nloptr

See at CRAN