* Added:
Refinement phase for improved local search: see option
refinement_frequency and new options that start with tr_.
Support for Python 3.
* Changed:
OptAlgorithm is now called RbfoptAlgoritm.
RbfSettings is now called RbfoptSettings.
Automatic model selection is now active by default, using fast
linear algebra routines.
Rbf functions in module rbfopt_utils now use Numpy, triggering
several code optimization changes and major improvement in
iteration speed.
Several default settings have been changed.
* Removed:
Module rbfopt_model_selection is no longer necessary.
Option model_selection_solver is no longer necessary.
Option max_stalled_obj_fun_impr is subsumed by eps_impr.
Cython modules and setup.py have been removed.
2017-06-08 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_utils.py (get_model_quality_estimate)
(get_best_rbf_model): Functions moved to this module from the
former model_selection module.
* rbfopt_model_selection.py: Module removed.
* rbfopt_settings.py (RbfoptSettings): Many default settings have
been updated, most notably rbf is now set to auto, and some
settings have been deleted.
2017-06-03 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_utils.py: Major optimizations in the computation of
radial basis functions.
* setup.py: File removed, since there is no longer a speed
advantage using Cython and compilation is therefore not necessary.
2017-05-31 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_refinement.py: The module provides functions to
periodically run a trust-region based refinement phase. This is
only supported for the serial search engine, at the moment.
* rbfopt_settings.py (max_consecutive_local_searches): This
parameter has been removed.
* rbfopt_settings.py (RbfoptSettings): The class RbfSettings was
renamed RbfoptSettings.
* rbfopt_algorithm.py (RbfoptAlgorithm): The class OptAlgorithm
was renamed RbfoptAlgorithm.
2017-05-22 Giacomo Nannicini <nannicinius.ibm.com>
Upgraded code to support Python 3.
2017-03-15 Giacomo Nannicini <nannicinius.ibm.com>
Version 2.1 released.
* requirements.txt: Updated requirements.
* setup.py: Improved build system on Windows.
2017-02-16 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_algorithm.py (optimize_serial, optimize_parallel): The
algorithm now checks if points generated after restart have been
explored before restart. If so, it uses the previously evaluated
value.
* rbfopt_settings.py (max_consecutive_discarded): This setting is
now intended to be per cpu, i.e. the actual value is obtained
multiplying by the number of CPUs.
2017-02-09 Giacomo Nannicini <nannicinius.ibm.com>
Major changes with the introduction of Numpy and Cython.
* rbfopt_aux_problems.py (get_min_bump_node, get_bump_new_node):
These functions are moved to aux_problems from utils, to allow
faster performance using Cython.
* rbfopt_utils.pyx, rbfopt_aux_problems.pyx: Hybrid Python/C
version of these modules. At the moment only the RBF functions are
written in real C.
* setup.py: Created, for automatic compilation in Cython.
2016-10-02 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_cl_interface.py (register_options): Options are now
grouped into Algorithmic settings and Execution settings.
* rbfopt_cl_interface.py (rbfopt_cl_interface): Added option to
read initialization points from file.
* rbfopt_algorithm.py (restart): Now adds user-provided points to
the initial sample. It is no longer possible to provide a full
initial sample to the algorithm, and employ user-provided points
instead of the generated sample.
2016-07-25 Giacomo Nannicini <nannicinius.ibm.com>
Version 2.0 released.
* rbfopt_aux_problems.py (global_search, pure_global_search):
Restructured to allow for 'genetic', 'sampling' and 'solver'
solution methods..
* rbfopt_aux_problem.py (MetricSRSMObj): The option
modified_msrsm_score now determines the weight for the objective
function component of the score: the classical MSRSM is obtained
setting it to False, the default is True.
2016-07-20 Giacomo Nannicini <nannicinius.ibm.com>
Removed the possibility of setting integer_vars to None. It now
has to be empty if there are no integer variables.
The argument integer_vars now always appears immediately after
var_upper.
* rbfopt_algorithm.py (__init__): Resolved a bug in handling fixed
variables with integer variables.
* rbfopt_aux_algorithm.py (GutmannHkObj): Improved numerical
stability of formulas.
2016-07-19 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_settings.py: Added global_search_method option to allow
for solution of auxiliary subproblems not based on solvers.
* rbfopt_aux_problems.py (ga_optimize, ga_mate, ga_mutate): New
functions for genetic algorithm, which can be used instead of the
solvers.
* rbfopt_aux_problems.py (MetricSRSMObj): Reworked for faster
computation.
* rbfopt_aux_problem.py (MaximinDistanceObj, GutmannHkObj)
(GutmannMukObj): New classes to allow solution of auxiliary
problems via genetic algorithms.
2016-07-14 Giacomo Nannicini <nannicinius.ibm.com>
Updated dependency to Pyomo 4.3.11388.
* rbfopt_config.py: Added MINLP_SOLVER_PATH and NLP_SOLVER_PATH
options.
* rbfopt_aux_problems.py: Now use PATH option.
* rbfopt_algorithm.py: Using binary mode to load/save state files
to fix issues on Windows.
2016-05-05 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_settings.py: Added save_state_interval and
save_state_file settings.
* rbfopt_algorithm.py (optimize_serial, optimize_parallel):
Supports periodic state save according to the two options above.
2016-04-20 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_algorithm.py (__init__, optimize): Fixed variables no
longer cause numerical issues and are correctly handled.
2016-03-17 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_algorithm.py (update_log): Log file format change to fit
within 80 characters, and print elapsed time.
2016-03-16 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_algorithm.py (OptAlgorithm.optimize_parallel): Added
parallel version of the optimization engine.
* rbfopt_algorithm.py (OptAlgorithm.optimize_serial): Code for the
serial (standard) optimizer was moved here.
* rbfopt_algorithm.py (optimize): Now simply redirects to either
the serial or parallel version.
* rbfopt_black_box.py (BlackBox): Added abstract class to define a
black box optimization problem.
* rbfopt_black_box_example.py (BlackBox): Added an example of an
implementation of the BlackBox abstract class.
* rbfopt_utils.py: Added several utility functions for parallel
optimization.
* README: Documentation updated to discuss the parallel optimizer.
2016-03-07 Giacomo Nannicini <nannicinius.ibm.com>
* rbfopt_algorithm.py (OptAlgorithm): Added class for optimization
algorithm. Allows saving/loading algorithm state.
* rbfopt.py (rbf_optimize): Now simply redirects to OptAlgorithm.
2016-02-28 Giacomo Nannicini <nannicinius.ibm.com>
* test_rbfopt.py: Moved to tests/rbfopt_test_interface.py.
* tests/: Added unit tests for all modules to documentation.
* rbfopt.py (rbf_optimize): Several buxfixes.
* rbfopt_utils.py (several functions): Several bugfixes.
Version 1.2.0 released.
2015-11-21 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt.py (rbf_optimize): Implementation of Metric SRSM method.
* rbfopt_utils.py: Performance improvements. Bulk version of some
utility functions (bulk_evaluate_rbf, bulk_get_min_distance).
* rbfopt_aux_problems.py (maximize_one_over_mu): Renamed to
pure_global_search.
* rbfopt_aux_problems.py (maximize_h_k): Renamed to global_search.
* rbfopt_aux_problems.py (MetricSRSMObj): New class to support the
Metric SRSM method.
2015-10-26 Giacomo Nannicini <nannicinisutd.edu.sg>
* README: Updated installation instructions for Windows systems.
2015-09-23 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt.py (rbf_optimize): Minor bug fixing and performance
improvements in handling the noisy oracle.
2015-07-29 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt_model_selection.py: Introduced stand-alone module for
model selection. Increased efficiency of cross-validation via LPs
solved with Cplex or Clp.
* rbfopt_settings.py (RbfSettings): Introduced unpacking of
parameters from dictionary.
* rbfopt_settings.py (RbfSettings): skip_targetval_clipping
flipped and renamed to targetval_clipping.
* rbfopt_cl_interface.py (rbfopt_cl_interface): Switched to
dictionary to pass algorithmic parameters.
* test_rbfopt: Switched to dictionary to pass algorithmic
parameters.
Version 1.1.0 released.
2015-07-17 Giacomo Nannicini <nannicinisutd.edu.sg>
Switch to Pyomo 4. The relevant files have been updated to use the
pyomo module rather than coopr.
2015-06-23 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt_settings.py (RbfSettings): Added log_scaling_threshold
option. Moved RbfSettings here from the rbfopt module.
* rbfopt.py (rbf_optimize): Improved automatic function
scaling. Improved efficiencyhen skipping infstep.
* rbfopt_cl_interface.py (register_options): Parameters are now
read automatically from the rbfopt_settings module.
2015-06-11 Giacomo Nannicini <nannicinisutd.edu.sg>
* black_box.py: Introduced class BlackBox as a wrapper around the
black-box methods.
Improved docstrings following NumPy's format.
Added documentation in the doc/ directory.
Version 1.0.2 released.
2015-06-03 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt.py (rbf_optimize): Better printout of initialization
points.
2015-05-17 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt_cl_interface.py: Added module for command line interface.
* rbfopt_utils.py (initialize_nodes): Added test for linear
independence of the generated points.
* test_rbfopt.py (test_rbfopt): Function removed.
* test_rbfopt.py: Module restructured to integrate with
rbfopt_cl_interface.py.
Version 1.0.1 released.
2015-05-03 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt.py (RbfSettings): Added print_solver_output option.
* rbfopt_aux_problems: Added support for print_solver_output.
* rbfopt_aux_problems (maximize_h_k): Added initialization of
auxiliary variables for the problem.
* test_functions: Added several MINLP functions.
2014-12-05 Giacomo Nannicini <nannicinisutd.edu.sg>
Version 1.0 released.
2014-11-19 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt.py (rbf_optimize): Added support for redirection of
output stream in rbfopt.py.
* rbfopt_utils.py (transform_function_values): Fixed division by
zero bug when fmin is zero.
2014-11-05 Giacomo Nannicini <nannicinisutd.edu.sg>
* rbfopt_utils.py (transform_function_values): Fixed misspelled
keyword 'a ffine'.
2014-09-24 Giacomo Nannicini <nannicinisutd.edu.sg>
Version 0.9 released.