我正在尝试解决一个问题,即有一组对象需要在特定时间在各个点之间移动。
我已经能够在线性规划方面形式化大多数约束,即:
object1FirstDepartureTime > X
object1FirstArrivalTime < Y
object1FirstArrivalTime - object1FirstDepartureTime > Z
object1SecondDepartureTime - object1FirstArrivalTime > A
对于所有对象及其所有到达/离开,依此类推。目标函数将是在运输中花费最少或最多的时间。
我遇到的问题是一个额外的限制:某些物体在旅行期间需要由其他物体陪伴。例如,object1 可以伴随 object2、object3 或 object4。这些对象本身具有一定的到达或离开限制。我想让我的(也许是混合整数)线性程序负责拾取伴随的对象。但是在尝试将其形式化时,我无法找到一种保持线性的方法。我想到了混合整数约束,例如
object2GoWIthObject1 + object3GoWithObject1 + object4GoWithObject1 < 2
object2GoWIthObject1, object3GoWithObject1, object4GoWithObject1 are all less than 2
object2GoWIthObject1, object3GoWithObject1, object4GoWithObject1 are all integers
但我不知道如何表达诸如“如果对象 2 伴随对象 1,它将在时间 X 与对象 1 离开并在时间 Y 到达”之类的约束。这似乎是非线性的,因为我会将布尔变量(如果对象 2 伴随对象 1)乘以旅行时间。
当然,我可以为每个“if...then...”语句创建不同的线性问题,但是有 60 个伴随路径和 10 个伴随对象,这将导致 10^60 个线性程序要解决,这不是好的。
如果有人对如何形式化这个线性规划问题有任何直觉,以便做出“X 会伴随 Y”的决定吗?可以用问题本身来表达,我将不胜感激!