I have a binary program and one of my variables, x_it is defined on two sets, being I: Set of objects and T: Set of the weeks of the year, thus x_it is a binary variable standing for whether object i is assigned to something on week t. The constraint I failed to implement in AMPL/GNU Mathprog is that if x_it equals to 1 then x_i(t+1) and x_i(t+2) also should take value of 1. Is there a way to implement this constraint in a simple mathematical programming language?
Implementing a constraint based on previous variable's value in GNU Mathprog/AMPL
256 views Asked by oakenshield1 At
1
The implication you want to implement is:
AMPL supports implications (with the ==> operator), so we can write this directly. MathProg does not.
A simple way to implement the implication as straightforward linear inequalities is:
This can easily be expressed in AMPL, MathProg, or any modeling tool.
This is the pure, naive translation of the question. This means however that once a single
x(i,t)=1all followingx(i,t+1),x(i,t+2),x(i,t+3)..=1. That could have been accomplished by just the constraintx(i,t+1) >= x(i,t).A better interpretation would be: we don't want very short run lengths. I.e. patterns: 010 and 0110 are not allowed. This is sometimes called a minimum up-time in machine scheduling and can be modeled in different ways.
Forbid the patterns 010 and 0110:
The pattern 01 implies 0111:
Both these approaches will prevent patterns 010 and 0110 to occur.