Hi @rahmat, thanks for the question! There are various ways to implement such a model, where the best choice of modeling approach can depend very much on the use case.
In AIMMS, both Robust Optimization and Stochastic Programming are supported. These are two popular approaches to dealing with uncertainty in optimization problems.
Robust Optimization
The benefits of using robust optimization is that you can be confident that the solution from your optimization is going to be feasible (even optimal) in the worst-case scenario. If this is desired, then robust optimization is a great approach to dealing with uncertainty in a mathematical optimization model. A disadvantage of this is that the solution from robust optimization can be overly conservative, if the worst-case scenario is very unlikely, then your solution may be expensive.
Stochastic Programming
This approach is generally less conservative than Robust Optimization, and aims to find a solution that is feasible and 'optimal on average' (across many scenarios) instead of just in the worst case. This means that if the worst case scenario occurs, you will still have a feasible solution, but the solution will not be tailored to best suit these boundary scenarios. This means that the solution from Stochastic Programming will often be less conservative than Robust Optimization, i.e., more practical in many cases. Stochastic Programming can be considered a form of sequential decision making, where we can split the problem into stages. For example, in a two-stage stochastic program, there are some decisions that need to be made now (first stage), and others that (depend on the first stage decisions) that can be made later (second stage). First-stage decisions need to be calculated such that they allow for feasible and (on average) optimal for all realizations of uncertainty. Second-stage decisions are considered 'recourse actions’ that work with the existing first-stage decisions to optimize the program.
Applying Robust Optimization in AIMMS
Here is an example problem that uses Robust Optimization: https://how-to.aimms.com/Articles/484/484-Uncertainty-productionplanningro.html
Here is some documentation that could help understand how to apply Robust Optimization in AIMMS: https://documentation.aimms.com/language-reference/optimization-modeling-components/robust-optimization/index.html
I created an AIMMS program using Robust Optimization with the problem you described. For the two uniform uncertain parameters, I checked the property 'Uncertain’ and applied a Box uncertainty set with a min and max that corresponds with the min and max from the uniform distribution. For the normal distribution, I created a procedure to sample many times from the normal distribution. After sampling, I checked the min and max values that I sampled, and used those as a min and max in a Box uncertainty set. There are of course more ways to do this, and different uncertainty sets that can be used. By running this simple example, it should be clear how you can use Robust Optimization to solve the problem you described in AIMMS.
Applying Stochastic Programming in AIMMS
Some documentation on how to implement it: https://documentation.aimms.com/language-reference/optimization-modeling-components/stochastic-programming/index.html
An example: https://how-to.aimms.com/Articles/436/436-stochastic-programming.html
The implementation of a stochastic program based on the example you have provided depends on the number of scenarios you would like to use, then number of stages in the model, and on the probability of each scenario occurring (in this case you can think of scenarios as samples from the probability distributions for each parameter). If you run into any difficulties implementing a stochastic programming counterpart of the deterministic model you provided, let me know!
Hopefully this helps answer your question regarding how to implement a model with uncertain parameters in AIMMS!
Hello @FergusHathorn ,
Thank you for your answer of the optimization problem with uncertainty parameter. What is the different when we applied robust method with direct definition of uncertain parameter? Let say, if we defined uncertain parameter as:
a := uniform(9,11);
b := normal(15,1.5);
c := uniform(24,26);
Thank you very much