-
Notifications
You must be signed in to change notification settings - Fork 10
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
Representing Optimisation Problems in the Model #220
Comments
RFC: @ozgurakgun @lixitrixi @Kieranoski702 @gskorokhod @PedroGGBM Unanswered questions:
|
Would the optimisation also be expressed using |
Also, how do solvers (mostly Minion) handle optimisation and how is it handled in Conjure currently? This could be a starting point |
From a minion_rs pov, it would be passed in the SearchMethod. In minion language, it is expressed something like so: https://github.com/minion/minion/blob/main/test_instances/new_optimisetest.minion
That's right - optimisation is just specifying "MAXIMISING x / MINIMISING y" It does not change the model, just how the model is solved. Of course, as with SAT encodings, etc rules may want this information so that we can tailor optimisation problems. The Minion manual (in the GH repo) would give more details on what exactly we can support here. |
As with SAT Encodings, solver, etc this is information needed alongside the model itself for knowing which rules to apply, but is not something that is directly represented in the model, at least for Minion. I.e. it might be something we store in the Model struct, or the Context discussed in #221. |
Thanks! I'd lean towards having it as a separate field in the Model. I think the optimisation information is something that's different from general settings / metadata (which would be in the context), and potentially different solver adaptors could also handle it differently? (In the worst case scenario, if the solver doesn't support it entirely, we might have to get all solutions and pick the best ones manually) |
getting all solutions and picking is never an option I think. it'll just be extremely expensive. I agree though it should be another field in model. call it objective. it contains a single expression that is of an orderable type (so not necessarily a boolean and for now all types we have are orderable). |
Motivation
As well as satisfaction problems (find me the x that satisfies these constraints), Minion and other solvers support optimisation problems (find me the x that fulfills the most/least of these criteria).
The Problem
We need to store optimisation information in the model. This should be used to determine what rules to apply (for example, if we have optimisation specific rules). This information also needs to be accessible to the solver adaptor.
Related Issues
The text was updated successfully, but these errors were encountered: