Это представляется возможным при условии наличия константы M>=0
, которая является общей верхней границей для переменных объема V1
и V2
(например, если есть ограничение V1+V2 <=M
).При условии, что существует такой M
, давайте введем две двоичные переменные b_1
и b_2
, которые указывают (то есть имеют значение 1), если V1>= 300
и V2>=500
соответственно:
300 * b_1 <= V1 <= 300 * (1 - b_1) + M* b_1
500 * b_2 <= V2 <= 500 * (1 - b_2) + M* b_2
Теперь мы вводим неотрицательные переменные a_1, h_1
, которые будут разлагать V1
на части, меньшие 300 (обозначены a_1
), и на части, содержащие части, превышающие (обозначенные переменными h_1
):
V1= a_1 + h_1
h_1 <= M b_1
300 b_1 <= a_1 <= 300
Последние два ограничения с двоичной переменной приводят к тому, что h1
будет только положительным, если V1 >= 300
и a_1
всегда будут 300, если V1 >= 300
.Давайте сделаем то же самое для V2
соответственно
V2= a_2 + h_2
h_2 <= M b_2
500 b_2 <= a_2 <= 500
Тогда функция стоимости будет
$1 * a_1 + $2 * h_1 + $3 * a_2 + $1.5 * h_2
`
Позвольте мне заметить, что это решение может быть неверным на границах, например, когда V1=300
, потому что тогда двоичная переменная b_1
может принять значение 0 и, следовательно, a_1=0, h_1>0
.Однако эту проблему можно решить, если бы тома V1
и V2
всегда были целочисленными значениями, например, см. здесь
* Добавление к комментарию Дж. Доу :
если V1
является целым числом, тогда краевая задача будет рассматриваться как 301 b_1 <=V_1 <=301 (1-b_1)+ M b_1
вместо определяющего условия для b_1
выше.
Нет, h_1 < = M b_1 - a_1
недопустимопотому что это будет означать V1 = a_1 + h_1 <= M b_1
, что будет означать V1 = 0
, если V1 >=300
- что не соответствует действительности.
Да, h_1
- это избыточный объем над первой скобкой справа.
Если у нас более одной ценовой скобки, нам понадобятся еще две переменные: одна представляет сумму, представляющую объемДоля V1
между текущей ценовой категорией и следующей ценовой скобкой.Вторая переменная должна быть двоичной индикаторной переменной, которая равна 1
, если объем V1
находится между текущей ценовой скобкой и следующей ценовой скобкой.