Ràng buộc logic trong ILP
Tôi muốn viết ràng buộc sau:
Để cho $z$ là một biến số nguyên sao cho $0\le z\le M$, và $t$ là một biến nhị phân trong đó $M$biểu thị big-M. Ràng buộc logic như sau:
nếu $z \leq M$ và $z > 0$ sau đó $t=1$;
nếu $z=0$ sau đó $t=0$.
Có phải đây là $z≤Mt$đủ? Các$t$ và $z$ các biến không nằm trong hàm mục tiêu của tôi mà là biến $t$ được kết nối với một biến khác trong hàm mục tiêu?
Cảm ơn bạn rất nhiều, tôi đánh giá cao sự giúp đỡ của bạn.
Trả lời
Ràng buộc big-M $z \le M t$ thực thi $z > 0 \implies t = 1$, tương đương với nó $t = 0 \implies z = 0$, nhưng không phải là trò chuyện $$z = 0 \implies t = 0. \tag1$$ Ép buộc $(1)$, hãy xem xét nó liên tục $$t = 1 \implies z > 0 \tag2,$$ mà bạn có thể thực thi thông qua ràng buộc big-M $$\epsilon - z \le (\epsilon - 0)(1 - t),$$ tương đương, $$z \ge \epsilon t,$$ Ở đâu $\epsilon > 0$ là một dung sai đại diện cho giá trị nhỏ nhất của $z$ mà bạn sẽ coi là tích cực.