Skip to content

Releases: ICB-DCM/pyscat

PyScat v0.1.0

Choose a tag to compare

@dweindl dweindl released this 12 Feb 12:31
Immutable release. Only release title and notes can be modified.
e023677

What's Changed

Breaking changes

  • Changed SacessOptimizer results, disable autosave by @dweindl in #51 and #56
    • Intermediate results are only saved to file if explicitly requested.
    • The tmpdir argument has been replaced by autosave_dir.
    • The SacessOptimizer.minimize result no longer contains all local optimization results. They can be recovered from the autosave files if required and if enabled.
  • The SacessOptimizer.minimize result contains one single OptimizerResult representing the best point found across all workers. Its .history contains the monotonic history of the globally best point.
  • Don't store an OptimizerResult for every iteration by @dweindl in #47
    The same information is available from the history stored in the result
  • Refactor/move .plot.monotonic_history -> .utils.merge_monotonic_histories by @dweindl in #50 and #55

Features

  • Apply resource limits to local optimizer if supported by @dweindl in #38
  • Lift numpy requirement to >=2.0 by @dweindl in #37
  • Optional inclusion of local solutions in ESSOptimizer.minimize result by @dweindl in #44
  • Allow passing custom history instance to ESSOptimizer.minimize by @dweindl in #46
  • Set .history on ESSOptimizer OptimizerResult by @dweindl in #49

Fixes

  • Fix n_eval-criterion for worker adaptation by @dweindl in #42
  • Fix lagging best known solution in ESSOptimizer after cooperation step by @dweindl in #53
  • Fix monotonic_history for empty histories by @dweindl in #30
  • Refuse Problem with x_guesses by @dweindl in #34
  • Better adherence to the walltime limit by SacessOptimizer, in particular in the cases of low limits by @dweindl in #35
  • Don't create outcmaes directory in SacessCmaFactory by @dweindl in #48
  • Include worker index in WorkerResult, sort SacessOptimizer.worker_results by @dweindl in #54
  • Prevent infinite loop in ESSOptimizer in case of permanent objective failures by @dweindl in #57

Full Changelog: v0.0.1.post1...v0.1.0

PyScat v0.0.1.post1

Choose a tag to compare

@dweindl dweindl released this 02 Dec 08:43
Immutable release. Only release title and notes can be modified.

PyScat started from the scatter search implementation included in pyPESTO 0.5.7.

Most relevant changes since pyPESTO 0.5.7

  • The deprecated startpoint_method has been removed from SacessOptimizer.minimize and ESSOptimizer.minimize. Problem.startpoint_method is now used instead.
  • Fixed a bug in counting of function evaluations that led to double counting of some function evaluations in eSS and saCeSS optimizers, potentially resulting in premature termination if a function evaluation budget was set.
  • Fixed a bug in the ranking of candidates for local optimization startpoints in eSS and saCeSS optimizers.
  • Updated/extended documentation and examples.
  • Initialization of SacessOptimizer is now problem-dependent, i.e., a Problem instance has to be provided at initialization instead of at minimize time. This simplifies changing local optimizers; SacessOptimizer.set_local_optimizer was added.
  • If the provided objective function does not provide gradient information, no local optimizer is used by default. This may change in future (minor) releases.
  • Added experimental functionality to record all function evaluations during optimization, or the k-best ones, or those below a certain threshold based on the best objective function value found so far. This is intended to construct parameter ensembles for uncertainty quantification. See example in the documentation.

Migrating from SacessOptimizer in pyPESTO 0.5.7 to PyScat 0.0.1

Old pyPESTO 0.5.7 code:

from pypesto import Problem
from pypesto.optimize import SacessOptimizer
from pypesto.optimize.ess import get_default_ess_options

problem = Problem(...)  # define your problem here

ess_init_args = get_default_ess_options(
    num_workers=12,
    dim=problem.dim,
    local_optimizer=False,
)
optimizer = SacessOptimizer(
    ess_init_args=ess_init_args,
    max_walltime_s=5,
    sacess_loglevel=logging.WARNING
)
result = optimizer.minimize(problem)

New PyScat 0.0.1 code:

from pypesto import Problem
from pyscat import SacessOptimizer

problem = Problem(...)  # define your problem here

optimizer = SacessOptimizer(
    problem=problem,
    num_workers=12,
    max_walltime_s=5,
    sacess_loglevel=logging.WARNING
)
optimizer.set_local_optimizer(None)
result = optimizer.minimize()

Full Changelog: https://github.com/ICB-DCM/pyscat/commits/v0.0.1.post1

PyScat v0.0.1

Choose a tag to compare

@dweindl dweindl released this 02 Dec 08:35
Immutable release. Only release title and notes can be modified.

PyScat started from the scatter search implementation included in pyPESTO 0.5.7.

Most relevant changes since pyPESTO 0.5.7

  • The deprecated startpoint_method has been removed from SacessOptimizer.minimize and ESSOptimizer.minimize. Problem.startpoint_method is now used instead.
  • Fixed a bug in counting of function evaluations that led to double counting of some function evaluations in eSS and saCeSS optimizers, potentially resulting in premature termination if a function evaluation budget was set.
  • Fixed a bug in the ranking of candidates for local optimization startpoints in eSS and saCeSS optimizers.
  • Updated/extended documentation and examples.
  • Initialization of SacessOptimizer is now problem-dependent, i.e., a Problem instance has to be provided at initialization instead of at minimize time. This simplifies changing local optimizers; SacessOptimizer.set_local_optimizer was added.
  • If the provided objective function does not provide gradient information, no local optimizer is used by default. This may change in future (minor) releases.
  • Added experimental functionality to record all function evaluations during optimization, or the k-best ones, or those below a certain threshold based on the best objective function value found so far. This is intended to construct parameter ensembles for uncertainty quantification. See example in the documentation.

Migrating from SacessOptimizer in pyPESTO 0.5.7 to PyScat 0.0.1

Old pyPESTO 0.5.7 code:

from pypesto.optimize import SacessOptimizer
from pypesto.optimize.ess import get_default_ess_options

problem = Problem(...)  # define your problem here

ess_init_args = get_default_ess_options(
    num_workers=12,
    dim=problem.dim,
    local_optimizer=False,
)
optimizer = SacessOptimizer(
    ess_init_args=ess_init_args,
    max_walltime_s=5,
    sacess_loglevel=logging.WARNING
)
result = optimizer.minimize(problem)

New PyScat 0.0.1 code:

from pyscat import SacessOptimizer

problem = Problem(...)  # define your problem here

optimizer = SacessOptimizer(
    problem=problem,
    num_workers=12,
    max_walltime_s=5,
    sacess_loglevel=logging.WARNING
)
optimizer.set_local_optimizer(None)
result = optimizer.minimize()

Full Changelog: https://github.com/ICB-DCM/pyscat/commits/v0.0.1