Overview
Phoenics is an optimization algorithm for objectives that are costly to evaluate, including physical experiments and demanding computations. It combines ideas from Bayesian optimization and Bayesian kernel density estimation to propose parameter points for global optimization. Its role is to recommend what to evaluate next; the experiment or computation supplies the resulting objective values. The README documents sequential and parallelizable batch workflows, with separate examples for periodic parameters and multiple objectives.
The documented Python interface creates a Phoenics instance from a configuration file and passes prior observations to phoenics.choose(observations = observations). The output is a set of suggested parameters. After those parameters have been evaluated externally, the resulting observations can be supplied in another recommendation cycle. This makes Phoenics a candidate component for iterative experimental planning rather than a complete laboratory execution system. The supplied excerpt does not specify the full configuration or observation schema, so implementation should begin with the linked examples.
For multiple objectives, Phoenics automatically uses Chimera when the configuration defines more than one objective. Chimera converts objective values into a single scalar value using an importance hierarchy and relative tolerances for acceptable degradation. It is also offered as a standalone wrapper for other single-objective optimizers. The README lists PyMC3 and Edward as alternative probabilistic-modeling libraries and reports testing with Python 3.6 and specific historical dependencies. It also marks the repository as under construction; the excerpts do not establish current environment compatibility or provide quantitative performance results.
Key Features
- Combines Bayesian optimization with Bayesian kernel density estimation for global optimization of expensive-to-evaluate objectives.
- Recommends new parameter points from prior observations through the documented `phoenics.choose(observations = observations)` interface.
- Supports sequential optimization and parallelizable batch optimization, with dedicated examples for each.
- Documents periodic parameter support through a dedicated optimization example.
- Automatically applies Chimera for configurations containing multiple objectives, using objective priorities and relative tolerances.
- Provides Chimera separately as a wrapper that converts multiple objective values into a scalar objective for other optimization methods.
Use Cases
- Intended evaluation: use the sequential example to assess an iterative chemistry experiment-planning loop in which measured results inform the next parameter recommendation.
- Intended evaluation: assess batch recommendations for expensive computations or experiments that can be evaluated in parallel.
- Intended evaluation: explore multi-objective experimental planning with an explicit priority hierarchy and acceptable degradation tolerances using Chimera.
- Intended evaluation: study the documented virtual-robot auto-calibration example as a starting point for a calibration workflow.
How to Use
- Read the official README to understand the recommendation loop, installation options and listed dependencies. Treat its reported Python 3.6 testing as historical evidence, not confirmation of current compatibility.
- Choose the sequential example or batch example to inspect the configuration and observation representation before preparing your own inputs.
- Follow the documented setup route, then create a Phoenics instance from a configuration file. Supply prior observations to
phoenics.choose(observations = observations)to request suggested parameter points. - Evaluate those points through your experiment or computation, record the objective values, and feed the new observations back into the next recommendation cycle. Initially assess this workflow on a controlled example.
- For multiple objectives, consult the multi-objective example and define priorities and tolerances. Consult the periodic-parameter example if your parameters require periodic treatment.