Рассмотрим следующую проблему минимизации:
declarations
A,B,C: range
Objective:linctr
ct1: array(a,b,c) of linctr
ct2: linctr
z: array (a,b,c) of real
x: array (a,b,c) of mpvar
end-declarations
initializations
...
end-initializations
forall(a in A, b in B, c in C) create(x(a,b,c))
Objective := sum(a in A, b in B, c in C) z(a,b,c) * x(a,b,c)
forall(a in A, b in B, c in C) ct1(a,b,c):= (a,b,c) is_binary
forall(a in A) ct2:= sum(b in B, c in C) x(a,b,c) = 1
minimize(Objective)
Трехмерный массив переменных решения должен быть ограничен таким образом, чтобы для каждого индекса в первом измерении A ограничение ct2
утверждало, что только один x(1,b,c)
, только один x(2,b,c)
и т. Д. Равняется 1
.
Однако Xpress возвращает оптимальное решение, при котором нарушается ct2
, так что x(1,2,3) = 1
и x(1,4,6) = 1
.
Кто-то видит, почему это ограничение нарушается?