https://github.com/aspuru-guzik-group/chimera
Chimera: hierarchy-based multi-objective optimization
Science Score: 33.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
✓DOI references
Found 4 DOI reference(s) in README -
✓Academic publication links
Links to: rsc.org -
✓Committers with academic emails
2 of 2 committers (100.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.5%) to scientific vocabulary
Keywords
Repository
Chimera: hierarchy-based multi-objective optimization
Basic Info
Statistics
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 5
- Releases: 0
Topics
Metadata Files
README.md
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.
Note there is also the possibility to define tolerances are percentiles rather than fractions with the percentiles
argument:
chimera = Chimera(tolerances=[0.5, 0.2], percentiles=[True, True], goals=['min', 'max'])
In this case, we are saying that we allow the first objective to degrade up to observed value of the 50% percentile
in order to improve upon the second objective. We then allow the second objective to degrade up to the 20% percentile
value in order go back to improve the first objective. As in the previous example, if once we achieve the desired
target for the first objective we want to optimise the second objective as much as possible, we can set tolerances=[0.5, 0.0].
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.
Owner
- Name: Aspuru-Guzik group repo
- Login: aspuru-guzik-group
- Kind: organization
- Website: http://aspuru.chem.harvard.edu/
- Repositories: 30
- Profile: https://github.com/aspuru-guzik-group
GitHub Events
Total
- Issues event: 1
- Watch event: 3
Last Year
- Issues event: 1
- Watch event: 3
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 19
- Total Committers: 2
- Avg Commits per committer: 9.5
- Development Distribution Score (DDS): 0.211
Top Committers
| Name | Commits | |
|---|---|---|
| Matteo Aldeghi | m****h@m****e | 15 |
| Matteo Aldeghi | m****i@v****i | 4 |
Committer Domains (Top 20 + Academic)
Packages
- Total packages: 1
-
Total downloads:
- pypi 325 last-month
- Total dependent packages: 0
- Total dependent repositories: 2
- Total versions: 1
- Total maintainers: 1
pypi.org: matter-chimera
- Homepage: https://github.com/aspuru-guzik-group/chimera
- Documentation: https://matter-chimera.readthedocs.io/
- License: MIT
-
Latest release: 1.0
published about 5 years ago
Rankings
Maintainers (1)
Dependencies
- numpy *