我正在林业行业进行优化,其中一组公司 C 可能会从收获区域集 I 中的某个分类集 A 中扣除一些木材。参数 x[I,J,V,T,C,A ] 变量表示从采伐区 I 到锯木厂 J 的流量,使用车辆 V 在时间 T 用于公司 C 和分类 A。
我遇到的麻烦是每个锯木厂都必须满足最低需求,d_minus。这是在:
# The total flow into a node at time period t must exceed the minimum demand.
subject to Constraint2 {j in J, t in T, p in T, c in C, a in A: p <> t}:
sum{v in V, i in I} x[i,j,v,p,c,a] >= d_minus[j,t,c,a];
问题是车辆 V 具有特定容量,模型如下:
# The flow must not exceed the total capacity for each vehicle and time period
subject to Constraint6 {v in V, t in T}:
sum{i in I, j in J, c in C, a in A} x[i,j,v,t,c,a] <= capacity[v];
然而,这会导致编译器抱怨约束 2 的不可能边界。例如
presolve: constraint Constraint2[1,1,6,1,3] cannot hold:
body >= 1000 cannot be <= 273; difference = 727
我使用 4 辆车,每辆车的容量为 40(我也尝试使用 400 和 1000,但错误仍然存在)。d_minus 参数介于 500 和 1000 之间。
我认为参数不应该太窄。使用 1000 人的容量,他们应该满足我认为 3 人的车队的需要。我倾向于“所有人”的约束是限制解决方案的原因,从而导致错误。我已经尝试对 Constraint2 使用“for all t in T, j in J”,但是它找不到 d_minus 的那些下标。有人有任何线索吗?
问候