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

[FEATURE REQUEST] Diversity Optimization #474

Open
8 of 15 tasks
btjanaka opened this issue Jun 26, 2024 · 3 comments
Open
8 of 15 tasks

[FEATURE REQUEST] Diversity Optimization #474

btjanaka opened this issue Jun 26, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@btjanaka
Copy link
Member

btjanaka commented Jun 26, 2024

Description

Issue to track progress of diversity optimization implementation in pyribs.

General:

  • Modify the scheduler API to support diversity optimization -> Support diversity optimization in Scheduler.tell #473
  • Add tutorial
  • Show how to plot landscapes (unsure if should make a viz function for this)
            fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
            bound = config["dim"] / 2 * 5.12
            x = np.linspace(-bound, bound, 40)
            y = np.linspace(-bound, bound, 40)
            xxs, yys = np.meshgrid(x, y)
            measures = np.stack((xxs.ravel(), yys.ravel()), axis=1)
            novelty = scheduler.archive.compute_novelty(measures).reshape(
                xxs.shape)
            ax.plot_surface(xxs, yys, novelty, antialiased=False)
            plt.savefig(outdir / f"{name}_novelty_{itr:05d}.png")
            plt.close(fig)

Emitters:

  • Modify all emitters to support diversity optimization (i.e., objective should be allowed to be None)
    • All but GradientArborescenceEmitter will work. Getting GradientArborescenceEmitter to work may not be straightforward.
  • Add a NoveltyRanker -> Add NoveltyRanker for novelty search #477
  • Add an NSLC Ranker

Novelty Search:

DDS:

@btjanaka btjanaka added the enhancement New feature or request label Jun 26, 2024
@gresavage
Copy link
Contributor

@btjanaka FYI I'm working on the Novelty and NSLC rankers right now.

@btjanaka
Copy link
Member Author

Sounds good; let's put those in a separate PR. By the way, would you like to meet sometime? Perhaps we can chat a bit about pyribs and these things especially since we've greatly expanded the scope beyond your original request. You can reach out to me on the pyribs Discord (https://discord.gg/QxhcJSqZ8G -- I'm username btjanaka) or over email (tjanaka@usc.edu)

@btjanaka
Copy link
Member Author

@gresavage I talked with Matt Fontaine in our lab, and we agree your original approach to local competition makes sense. It just seems strange that there is no documentation of it in the NSLC paper. Roughly, if a solution is below the novelty threshold, we should compare its objective to its nearest neighbor and replace if necessary. I'll work on putting that back in.

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

No branches or pull requests

2 participants