Tutorial document (4 pages, 1 scheme, for download)
Would you like to check how robust are your optimized decisions, if possible, construct better ones? Every project is different, with new people to be introduced to the idea, and it is handy to have a step-by-step guide on what to do to construct a new algorithm (see below a table, a file to download is attached).
I am an assistant professor of Operations Research at the Erasmus University Rotterdam, doing mostly robust optimization. Based on the internship OR projects of my students, I wrote a short tutorial with key steps to define what exactly is needed, and about what to think in advance. Its aim is to help with such projects in the future and give a guidence “what to look for”.
I hope the attached document is useful for your work. Any comments or criticism are welcome!
Best, Krzysztof
Step | Questions to answer | |
1. | How are solutions determined now? | What are the decisions and what are the parameters? What are the constraints? What is the process leading to finding a solution? |
2. | Estimate the hidden costs of the current decision making. | Simulate (data-based) different realizations of the parameters. For each, compute the costs of (i) fixes needed when constraints become violated (ii) unused resources if some robustness is there already. |
3. | Average performance or the difficult scenarios? | What is the thing that you care the most about - long-term average value of the objective function or the “really bad outcomes”? Do you re-optimize every day/week/month? Or is it a one-off design problem? |
4. | Is your problem one-stage or multi-stage? | Is the final state a start for another problem? Can some decisions be made after some initially unknown parameters become known? Multi-stage approach makes the here-and-now decisions leave space for good later-stage decisions. |
5. | Build the optimization model & The corresponding uncertainty model | What is the maximum solution time? What are the software/memory limitations? How complicated can the model be? Use (adjustable) robust optimization / (multi-stage) stochastic optimization / distributionally robust optimization. Identify a possibly small set of parameters impacting the solution’s performance the most. If available, construct a set of scenarios/probability distribution. If not, use expert knowledge to generate a reasonable set of scenarios. |
6. | Validate the model | For the obtained solution, assess its performance in a simulation study. If the robust solution is more robust than wanted, shrink the set of scenarios. Compare the long-term simulated costs of non-robust and robust models. |
7. | Construct a data to model loop | Automate the construction of the set of scenarios plugged into the robust model. Automate the calibration process (like “validation” in machine learning”). What data do you want to collect for future improvements in the model? |