@rmateus
When DEX reads a 0 in any supported file format into a numerical parameter that has a 0 default, then no value is stored by AIMMS. This makes a 0 encountered in a file read via DEX indistinguishable from an empty field.
There are several ways around that:
- Specify another default for the parameter. In this solution you may have to use the NonDefault function to prevent the non-0 default to be used when you don't want it.
- Specify the force-dense attribute in the DEX mapping. The identifier you specify for this attribute will be set to 1 for any non-empty value encountered in a file read via DEX. You can then use this parameter to distinguish between a 0 value and an empty value. When writing a file via DEX, 0 values will also be written back if the force-dense parameter holds a non-zero value.
Hello Mateus,
AIMMS parameters have a default value in their attributes. If you have not changed this, then you capacity parameter should have a default that is empty, which means 0 for numerical identifiers such as parameters. In this case, when reading from you Excel file, no changes will be perceived in the parameter.
Now, to the second part, imposing that stock is 0.
You could simply have a constraint that does this, as per your suggestion. stock <= capacity would limit the variable to 0.
Or, which is my suggestion, you could add a index domain to the variable and not even generate the variable. This can save processing time for matrix generation and solvers to eliminate unneeded variables.
Simple example:
Parameter p_capacity {
IndexDomain: t;
}
Variable v_stock {
IndexDomain: t | p_capacity(t) > 0;
Range: nonnegative;
}
I hope this helps.
Best regards