Constraints
Constraints overview
Constraints are the limits which should not be violated during model optimization. For example: the objective you set is to maximize the profit over the next five years. You probably can achieve better results if you borrow and invest more money but excessive debts carry substantial risks. If you want to limit those risks you may constrain your debt to be not more than some certain amount through these five years. Here are some examples of constraints:
- Equity >=0 for each month from 1 to 60;
- Debt/Equity >=0 for each month from 1 to 60;
- Cumulative FCF >=0 for month 60 constraints:
- New Subscribers growth rate <= 20% for each month from 1 to 60
- Installation fee as a share growth rate <= 20% for each month from 1 to 60
Obviously if too many or too strict constraints are set optimization could fail. That means constraints must be realistic. For example it is hard to imagine how to build a huge business in a short time without big investments for scaling up. That means if we set “debt > 0” constraint at the scaling up phase of business development optimization could fail. A reasonable strategy for approaching a successful optimization result is an iteration process:
- Add “soft” constraints and make them more and more strict by next optimizations. This is the preferable approach.
- Add constraints one by one.
The caveat in the latter approach is that if optimization fails after the addition of another constraint it does not mean that exactly this constraint is the cause of failure. The cause is the combination of this and other constraints that were added earlier. To make optimization succeed there is no need to remove the last added constraint but to soften it and other constraints. So we come to the recommended approach which was mentioned in the list above.
Constraints: 1) Equity >=0 for each month from 1 to 60 2) Debt/Equity >=0 for each month from 1 to 60 3) Cumulative FCF >=0 for month 60 Controllables constraints: 4) New Subscribers growth rate <= 20% for each month from 1 to 60 5) Installation fee as a share growth rate <= 20% for each month from 1 to 60
Add constraint
Prerequisite to create constraints. Constraints could be created only for a valid model. AIMES software considers a model valid if a scenario of the model could be calculated without errors. Simply speaking the sequence of users actions should be:
- Create your model design and fill it with data;
- Go to Scenarios view and create at least one scenario;
- Calculate this scenario by clicking on the triangle located to the right of scenario name;
- In the pop-up menu there will be a “Calculation success” message.
- Only now AIMES software “knows” that model contains no errors and allows users to set up constraints.
To set up constraints:
- Go to the Optimization view.
- In the scenarios menu on the left there will be a list of successfully calculated scenarios. Left click on one of them to select it for the optimization process.
- At the main area right below the toolbar several horizontal segments will appear. The most left of them will be blue. These segments are called an Optimization stepper. Stepper is a visual tool representing several steps of setting up an optimization process. If you hover the mouse pointer over any of these segments the step name will pop-up above the segment (Add objectives, Add constraints, Add controls, Priorities and Algorithms). When you open the Optimization view the Add objectives step opens by default. You may add objectives first and then proceed to adding constraints. But you can also add constraints first. To do it hover the mouse pointer over the second left segment of the Optimization stepper. A note *Add constraints” will appear. Left click on the segment.
- At the main area named Add constraint an option to Add formula or python nodes will appear.
- Left click on the field with the + sign.
- A drop-down list of all formula and python nodes of your project will appear.
- Click on the name of the node which contains the data which you want to constrain. If the drop-down list is too long just start typing the name of the desired node in the field with a + sign. The drop-down list will be filtered for the node names containing letters you type.
- A blank table from the selected node will appear in the main area.
- Hover the mouse pointer over the blank cell in the table and click on the cell.
- Two bars with a notice Select constraint will appear in the cell. In the upper bar you may set the upper limit for the values in the cell. In the lower bar you may set the lower limit for the values in the cell.
- Right click on the upper or the lower bar and a pop-up menu will appear. Another way to summon this pop-up menu is to click on the pictogram of a drop-down list to the right of the Select constraint notice in the cell.
-
The following options are available for setting up limits:
- for upper limit: “less than” and “less than and equal to;
- for lower limit: “more than” and “more than and equal to”;
- for both limits: “infinity sign”. This sign means that values in this cell will participate in the optimization process but will not be constrained. You may need this option when you do not want to set both limits: upper and lower, but just one of them. For example you constrain the lower limit of managers number to 20 but do not want to constrain the upper limit of their number. Then you set the upper limit to “infinity sign”.
-
To set up the duration of the constraint period, hover the mouse pointer over the constraint bar. Two vertical bars will appear at the left and right edge of the constraint bar. Hover the mouse pointer over one of those bars, left click and drag the constraint border to the right or left to the desired time period.
Edit constraint
To change a constraint duration, hover the mouse pointer over the constraint bar. Vertical “handle”-bars will appear at both ends of the constraint bar. Drag those handles to the desired time period to change the constraint duration.
To edit a constraint limits (min, max) right click on the upper or lower part of the constraint bar. Then change the desired options in the summoned pop-up menu. For details of options see the Create constraint section.
Delete constraint
To delete a constraint right click on it. Then click on the Delete constraint menu item in the summoned pop-up menu. Another way to delete a constraint is to select it (left click on constraint bar and it will get a blue frame) and then press the Delete button on your keyboard.