2013-05-04 1 views
2

Я создаю систему ограничений MILP. Ниже приводится ограничение, которое мне нужно создать.Линейное ограничение с функцией пола в Gurobi

floor(a-b) <= 2c - 1 

Здесь a и b являются вещественными. c - целочисленная переменная. Мне нужна функция пола, чтобы иметь возможность присваивать переменные переменные. Как добавить это ограничение в Gurobi? Любая помощь оценивается.

+0

Возможно, мне что-то не хватает, но этого было бы недостаточно что 'a - b <= 2c'? –

+0

Нет, проблема в том, что '' '' '' '' ', если' a> = b'. В противном случае назначается '0' – user592748

ответ

2

Предположим, что a ограничено константой MaxA и аналогично допускает b < = MaxB. Затем, используя неравенства

(1): а < B + C * MAXA

(2): б < = а + (1-с) * MaxB.

Пусть a> = b, поэтому (1) влечет c = 1, а (2) тривиально выполняется независимо от c. В противном случае предположим, что a меньше b, теперь (2) влечет c = 0 и (1) становится тривиальным. (Вы должны пропустить (2), если вы просто хотите убедиться, что a> = b означает c = 1, и в противном случае это не заботит c.)

 Смежные вопросы

  • Нет связанных вопросов^_^