AIMMS-Infeasible or Unbounded

520 views
Skip to first unread message

sΔmΔn

unread,
Feb 29, 2012, 9:26:02 AM2/29/12
to ai...@googlegroups.com
Dear Guru,

I am trying to model a problem which is stated in the attached .pdf file. It is an assumed project with 63 activities; each of these activities have 3 to 5 different options to be adopted (only 1 option at a time will be selected throughout the modeling).
Regarding the selection of the options (by the way, each option has its corresponding Duration and Cost) I am trying to minimize the total cost of the project. There is also a constant daily cost of 2300$ per day, thus 2300*Duration of the project is added to Total cost function.

x011 to x635 are index (binary) variables resembling selection of the options. x01 to x63 assures only one option is selected. F01 to F63 defines completion day for activities, and PredF16 to PredF61 are constraints added to fulfill the precedence constraints. DUR stands for total duration which gains its value in accord with the constraints (DURF58 to DURF63).
Total cost function is divided into 15 cost variables (Cost1 to Cost15) due to character limitations (255 characters for each variable in AIMMS).

Mathematical function of TotalCostMin is the objective of this problem that needs to be solved.

However, when I run this program, it gives the ensuing error:
Warning: After 124 iterations the preprocessor of CPLEX 12.4 concluded that TotalCostMin is infeasible or unbounded.

I would really appreciate if you could take a look at the program, because I just couldn't find a defect in the model.

Thanks in advance.

Sincerely yours,
sΔmΔn 
63-activity.rar
63-activity.pdf

Guido Diepen

unread,
Feb 29, 2012, 9:44:46 AM2/29/12
to ai...@googlegroups.com
Hi,

First of all, did not take a look at the project you sent, but just want to provide some general pointers that are useful in these cases.

The question whether your problem is infeasible or unbounded can be solved easily by adding a temporary new constraint on the objective value, which will restrict it to be <= Large_value (in case of a maximimzation problem), or >= Large_Negative_value (in case of a minimization problem). In both cases you must select a value that is sufficiently large. If you solve the problem again, and you do not get any errors anymore, but instead the problems gets solved it means that your problem was actually unbounded. In case you still get an error, it means your problem is infeasible.

When your problem is unbounded, it means that somehow a combination of your variables are not restricted and can direct your objective to +/-infinity.

In case your problem is infeasible, please see this Knowledge base article for more information (including reference to the Language Reference).

Guido Diepen
AIMMS

Luis Pinto

unread,
Feb 29, 2012, 10:25:12 AM2/29/12
to ai...@googlegroups.com
Hello,

You can try switching off the CPLEX pre-solver (Project options -> CPLEX 12.4 -> Presolve) and try to solve again.
This will tell if the problem is actually infeasible or unbounded.

Other option is to generate the IIS which is the set of contraints that our generating the infeasibility.
Look for it in the project options as well.

Hope it helps,

Cheers,

Luis Pinto

www.unisoma.com.br

--
You received this message because you are subscribed to the Google Groups "AIMMS - The Modeling System" group.
To view this discussion on the web visit https://groups.google.com/d/msg/aimms/-/cKHfyz8JGLgJ.
To post to this group, send email to ai...@googlegroups.com.
To unsubscribe from this group, send email to aimms+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/aimms?hl=en.

Rahul Sharma

unread,
Mar 2, 2012, 1:12:42 AM3/2/12
to ai...@googlegroups.com
I continue to encounter the infeasibility issue. The odd thing I observe is that CPLEX does not even attempt to solve it. Progress window shows up "after zero iterations CPLEX found the integer solution to the objective function doesn't exist".
I opened the IIS listing file to see what constraints are causing the infeasibility and my entire constraint set shows up in the IIS listing file.
Is there any pre-solve settings which would help me find out why CPLEX doesn't even do any iteration to determine infeasibility.

Rahul Sharma

unread,
Mar 2, 2012, 2:01:44 AM3/2/12
to ai...@googlegroups.com
While using the violation penalty, the function reference says: The value of the VIOLATION PENALTY attribute must be either a  1-dimensional parameter with index domain AllVariablesConstraints, or
2-dimensional parameter defined over AllVariablesConstraints and AllViolationTypes.
As far as syntax is concerned, Does this mean I should create a 2D parameter indexed over the AllVariablesConstraints and AllViolationTypes and type the parameter name under the violation penalty column for the mathematical program? Or should I provide specific indices over which the constrains and variables were created? What exactly should I type in the violation penatly column? When I enter "AllVariablesConstraints,AllViolationTypes, AIMMS shows up an error saying it expects IndexVariablesConstraints, IndexViolationTypes..
Suggestions would be greatly helpful.
Thanks,

On Wednesday, February 29, 2012 9:26:02 AM UTC-5, sΔmΔn wrote:

Guido Diepen

unread,
Mar 2, 2012, 3:09:06 AM3/2/12
to ai...@googlegroups.com
Hi, 

the fact that CPLEX doesn't do any iterations is because of the fact that it can directly conclude that the model is infeasible. For example, if you have a simple model with two constraints:
  • x >= 10
  • x <= 5
a solver can directly conclude that the model is infeasible and it will not have to do any iterations for this.

The only possibility you then have is to take a look at the IIS of the problem. Please note that if you have a MIP problem, you could also try to change the problem type to RMIP (=Relaxed MIP) once. This will instruct the solver to discard any of the integrality constraints. If you solve the RMIP and the problem is still infeasible, it means that the infeasibility is not caused by the integrality constraints, but that even the relaxed model is already infeasible.

If the size of your problem is not too large, you could also choose to print the constraint listing (see the earlier mentioned KB article for instructions). You can then check this constraint listing in the listing file (File > Open > Listing file) for any possible mistakes in the mathematical program that was generated.

Guido Diepen
AIMMS Specialist

Guido Diepen
AIMMS Specialist

Guido Diepen

unread,
Mar 2, 2012, 3:11:26 AM3/2/12
to ai...@googlegroups.com
Hi Rahul,

For an example on how to use the Violation Penalties, please see the Goal Programming example. You can find this by opening up the Index of all examples on the start page of AIMMS, then go the tab page "Functional Examples" and there double click on the Goal Programming example.

Guido Diepen
AIMMS Specialist

sΔmΔn

unread,
Mar 4, 2012, 4:20:42 PM3/4/12
to ai...@googlegroups.com
Thanks for your concern, but none of the methods mentioned here worked in my case.

However i managed to solve the problem i.e. now the program is running without any hassle, but the results are not promising !

First, lets explain what i did to make the program run without any errors:

In my "variables" there is a variable called "F31" which is equal to:
F19+96*x311+89*x312+83*x313+77*x314+72*x315

There is also a constraint defined as:
F31>=F25+96*x311+89*x312+83*x313+77*x314+72*x315

what i did was to change F19's place with F25, i mean:

Variable F31 is now defined as:
F25+96*x311+89*x312+83*x313+77*x314+72*x315

And the constraint revised as:
F31>=F19+96*x311+89*x312+83*x313+77*x314+72*x315

bingo! the program is running, but the results are not same as the ones stated in a specific paper!

There is something odd that i observe in AIMMS, when i further do the same revision on other variables (for example when i change F52 and F53's place within definition and constraint of F56) the results change, each time i do this revision, i get new numbers!!

Could you please explain the reason? i see no logical reason for such kind of behavior...

Thanks in advance...

Guido Diepen

unread,
Mar 6, 2012, 6:33:25 AM3/6/12
to ai...@googlegroups.com
Hi,

when you are changing the definition of the variables, you can indeed get different numbers (you are changing the model).

If by some other constraints, F19 must get smaller values than F25, the equality constraint (automatically created by the fact that the variable has a definition) could be violated, while the >= constraint will still hold.

I have not checked the cause for your second problem. I would advise you to have AIMMS write the constraint listing. In this constraint listing, you can see the actual model that is generated (including the automatic equality constraints that are generated for variables with a definition). Based on this constraint listing, you can check if there are constraints that should not be there or have the wrong definition.

Guido Diepen
AIMMS Specialist
Reply all
Reply to author
Forward
0 new messages