Skip to main content

No project description provided

Project description

Chimera: hierarchy-based multi-objective optimization

Chimera is a general purpose achievement scalarizing function for multi-objective optimization. It allows the user to set a hierarchy of objectives along with relative or absolute thresholds for them to be optimized concurrently. For more details, please refer to the following publication:

F. Häse, L.M. Roch, and A. Aspuru-Guzik. "Chimera: enabling hierarchy based multi-objective optimization for self-driving laboratories". Chemical Science 2018, 9(39), 7642-7655.

Installation

Chimera can be installed with pip:

pip install matter-chimera

The installation requires only python >= 3 and numpy.

Usage

from chimera import Chimera

chimera = Chimera(tolerances=[0.5, 0.2], absolutes=[False, False], goals=['min', 'max'])

In the example above, we have 2 objectives. We want to minimize the first and maximize the second (argument goals). We use relative tolerances for both objectives (argument absolutes) to define at which point the next objective in the hierarchy should be optimized. In this example, we are saying that we allow the first objective to degrade up to 50% in order to improve upon the second objective. And we allow the second objective to degrade up to 20% in order to keep improving the first objective further. If we were to set tolerances=[0.5, 0.0], in the regions of parameters space where the first contraint is satisfied (i.e. first objective is better than 50% of the objective values range observed), Chimerawould scalarize the objectives in such a way that we would be optimising only the second objective and never return to the first. Please refer to the paper for a more detailed description of the algorithm.

Sometimes we know our objective well, and we might want to optimize to at least a specific value for this objective. This setup can be achieved by using absolute rather than relative tolerances, by specifying absolute=[True, True]:

chimera = Chimera(tolerances=[10, 120], absolutes=[True, True], goals=['min', 'max'])

In this case, we are saying that we would like to minimize the first objective to at least a value of 10, and maximize the second objective to at least a value of 120. Where a value of 120 is reached for the second objective, Chimera will scalarize the objectives in such a way that the first objective becomes again the limiting one, and we will keep minimizing it as much as possible. To maximize the second objective without any bounds, you can set its absolute tolerance to a very large/small value, even if it may not be reachable in practice.

Once you have an instance of Chimera, you can use it to scalarize the objective function values obtained to reduce them to a single merit value:

merit = chimera.scalarize(objectives)

Where objectives is a two-dimensional array with the objective function values for all samples and objectives. Each row should correspond to a different sample, and each column to a different objective. Note that the order of columns should reflect the desired hierarchy of the objectives, with the first column being the most important objective and the last column the least important one.

Citation

Chimera is research software. If you make use of it in scientific publications, please cite the following article:

@article{chimera,
    author ="Florian Häse and Loïc M. Roch and Alán Aspuru-Guzik",
    title  ="Chimera: enabling hierarchy based multi-objective optimization for self-driving laboratories",
    journal  ="Chemical Science",
    year  = "2018",
    volume  = "9",
    issue  = "39",
    pages  = "7642-7655",
    publisher = "The Royal Society of Chemistry",
    doi = "10.1039/C8SC02239A",
    url = "http://dx.doi.org/10.1039/C8SC02239A"}

License

Chimera is distributed under an MIT License.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matter-chimera-1.0.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

matter_chimera-1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file matter-chimera-1.0.tar.gz.

File metadata

  • Download URL: matter-chimera-1.0.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20201009 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for matter-chimera-1.0.tar.gz
Algorithm Hash digest
SHA256 9f20eb02c4997cdcea551d21c88dbc00b82cba28cdaf76ef6fa6599cec7720f9
MD5 cd36c1b9e3bf410c874c0ee3e846c4f9
BLAKE2b-256 6601850b72f71d941480d78d7eaad0a8c7bdfb024bbcf089aaf2fdd2a75d7868

See more details on using hashes here.

File details

Details for the file matter_chimera-1.0-py3-none-any.whl.

File metadata

  • Download URL: matter_chimera-1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20201009 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for matter_chimera-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59964d037adb8b0a8810ea4475932d3f8409ed4459989deef3d83616d6c197b8
MD5 0a9d8e2af2013b380d3440737688c50f
BLAKE2b-256 19945f9ed864987833065cd50db8ad78471d496fef5266fea72289a2afbc480c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page