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

Allow automatically choosing maxExperiments based on the complexity of the parameter space #58

Closed
Saethox opened this issue Sep 5, 2023 · 3 comments

Comments

@Saethox
Copy link
Contributor

Saethox commented Sep 5, 2023

I'm using irace to tune heuristics generated by a hyper-heuristic before they are evaluated using the best parameters found by irace. These heuristics have wildly different parameter spaces, which are dynamically generated, so I don't know their exact complexity beforehand.

So far, so good.

My problem is that different parameter spaces also result in pretty significant ranges of the minimumBudget calculated by irace. If I choose the value for maxExperiments too low, irace will abort, and if I choose it too high, I will waste computational budget on my low complexity parameter spaces.

It would be nice not to need to specify maxExperiments explicitly, but set it automatically based on minimumBudget and some new parameter > 1. Alternatively, a function to calculate the minimumBudget explicitly given a scenario and parameters would be nice. I would rather avoid having to re-implement the minimumBudget calculation, if irace already has all of this information internally.

@MLopez-Ibanez
Copy link
Owner

It would be easy to have new option minExperiments and just make sure maxExperiments = max(minimumBudget, minExperiments). Will this do what you want?

I don't understand what "some new parameter > 1" would do. The function that computes the minimumBudget is here:

https://github.com/MLopez-Ibanez/irace/blob/faa2c4bc6a44203268f4123d5ece308798a84853/R/irace.R#L234C5

I could export it, but the values of minSurvival and boundEstimate would need to be provided, which complicates things for users, so I don't think this is a good idea.

@Saethox
Copy link
Contributor Author

Saethox commented Sep 6, 2023

It would be easy to have new option minExperiments and just make sure maxExperiments = max(minimumBudget, minExperiments). Will this do what you want?

A minExperiments parameter would also solve my problem.

I don't understand what "some new parameter > 1" would do.

I forgot some parts there. By "some new parameter > 1" I mean some parameter x where maxExperiments is then calculated as minimumBudget * x, but your minExperiments proposal works just as well.

I could export it, but the values of minSurvival and boundEstimate would need to be provided, which complicates things for users, so I don't think this is a good idea.

A minimumBudget(scenario, parameters) has all the information to calculate minSurvival and boundEstimate internally and could call the private computeMinimumBudget, right? But something like minExperiments seems like a better idea.

@MLopez-Ibanez
Copy link
Owner

I just committed a possible fix. Please check whether it works for you and reopen otherwise.

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

No branches or pull requests

2 participants