Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BOP-Elites #496

Open
wants to merge 23 commits into
base: master
Choose a base branch
from
Open

BOP-Elites #496

wants to merge 23 commits into from

Conversation

szhaovas
Copy link
Collaborator

Description

Implement BOP-Elites.

TODO

  • Implement an emitter that maintains GP surrogrates on the objective and measure functions, and emits solutions maximizing the Expected Joint Improvement of Elites (EJIE) acquisition function.
  • Implement a scheduler to accommodate archive upscaling.
  • Write a simple script that demos how to run a BOP-Elites experiment.

Questions

  • None

Status

  • I have read the guidelines in
    CONTRIBUTING.md
  • I have formatted my code using yapf
  • I have tested my code by running pytest
  • I have linted my code with pylint
  • I have added a one-line description of my change to the changelog in
    HISTORY.md
  • This PR is ready to go

Copy link
Member

@btjanaka btjanaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @szhaovas! Left a bunch of comments. I haven't really looked at the emitter and scheduler themselves yet; I'll wait for you to fix the big things like how the scheduler works before taking a closer look.

### cma ###
"cma",
### pymoo ###
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should create another extra for pymoo if we are adding it here. Also, do we actually use pymoo in BOP-Elites?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we actually use pymoo in BOP-Elites?

BOP-Elites uses PatternSearch optimizer to optimize EJIE acquisition. I initially considered making our own pattern search implementation to avoid adding extra dependencies, but we might eventually need pymoo anyways if we decide to add multi-objective optimization to pyribs.

boe_test.py Outdated
BayesianOptimizationEmitter(
archive=archive,
init_data=(init_sol, init_obj, init_meas),
bounds=[(-10.24, 10.24)] * sphere_domain.solution_dim,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is a demo script, I think it's better to just put the params in here directly. Users can then figure out how to configure their parameters on their own later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The general idea of an example is to make something that's fairly clear and easy to understand.

qd_score_offset=self.qd_score_offset,
seed=self._seed,
dtype=self.dtypes,
# extra_fields=None,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extra_fields would need to be included. As stated on my ArchiveBase comment, I think there may be a better way to do this method, but let's come back to it later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants