Я совершенно не знаком с CPLEX и далеко не экспертом в MIP, но я пытаюсь решить проблему с этой технологией (CPLEX 12.4). Я решил создать MIP-модели в файле .lp и передать его CPLEx, чтобы у меня было много входов и тестирование различных решателей и т. Д. Но я считаю, что некоторые ограничения индикаторов немного проблематичны.CPLEX с использованием формата LP-файла: ограничения индикаторов с булевыми операторами
Я хочу что-то вроде:
c1: a AND NOT(b)-> i1 - 100 v1 = 0
c2: b AND NOT(a)-> i1 - 120 v1 = 0
c3: a AND b -> i1 - 80 v1 =0
Но нет такой вещи, ANS AND
или NOT
в формате LP (я даже не уверен, если я мог бы сделать это на интерфейс CPX, но я стараюсь чтобы избежать этого).
Единственный способ решения проблемы я нашел делает:
ca: a_not_b = 1 <-> a - b = 1
cb: b_not_a = 1 <-> a - b = -1
cab: a_and_b = 1 <-> a + b = 2
c1: a_not_b-> i1 - 100 v1 = 0
c2: b_not_a-> i1 - 120 v1 = 0
c3: a_and_b = 1-> i1 - 80 v1 =0
я бы хорошо с наличием этого, потому что я собираюсь порождающие эту пластинку с другой программой, но это замедлить CPLEX? Есть ли лучший способ сделать это?
Thanks