Как определить ограничение индикатора в API docplex python? - PullRequest
0 голосов
/ 27 января 2020

Я хочу смоделировать пример целочисленного программирования с docplex в python. для ограничения индикатора у меня есть это уравнение (X является двоичной переменной):

equation

Я написал этот код:

for i1,i2,i3 in P:
    mdl.add_indicator_constraints(x[(i,j,k)] for i,j,k in ijk if i==i1 and j==i2 and k==i3)==0

Я не знаю, использую ли я правильную команду для определения этого индикатора. когда я запускаю программу, я получаю эту ошибку:

    cpx_indvars.append(logct.binary_var.safe_index)

AttributeError: 'Var' object has no attribute 'binary_var'

1 Ответ

1 голос
/ 27 января 2020

Ваше ограничение не похоже на ограничение индикатора. Ограничение индикатора выглядит как «if x = 1 then ...» или «if x = 0 then ...», где x - двоичная переменная. Кажется, в вашем ограничении нет части «then».

Если вы просто хотите зафиксировать переменную в 0, вам не нужно использовать ограничение индикатора. Просто добавьте обычное ограничение:

mld.add_linear_constraints(x[(i,j,k)] == 0 for i,j,k in ijk if i==i1 and j==i2 and k==i3)
...