Настройка для задачи линейного программирования: lpSolve в R - PullRequest
0 голосов
/ 01 сентября 2018

Мне нужно решить проблему (пример воспроизводимой игрушки ниже):

Существует матрица p (N = 3 x M = 2):

p<-matrix(c(3,17,14,20,0,3), nrow=3, ncol=2, byrow=TRUE)

Я стремлюсь максимизировать поэлементную сумму, где, скажем, X равен (3x2) и являются двоичными переменными:

enter image description here

Сумма, которую мы максимизируем: enter image description here

У меня есть различные ограничения, сумма каждого столбца X равна> = a. Таким образом, это будет записано как ( РЕДАКТИРОВАТЬ: ДОЛЖНО БЫТЬ> = )

enter image description here

Другое: строки X должны быть <= 1. Это означает, что можно активировать не более одного X в строке (= 1): </p>

enter image description here

Назад к R :

Для целевой функции :

Вопрос № 1 : Нужно ли «растягивать» матрицу p в вектор:

obj<-c(3,17,14,20,0,3) 

Для ограничений :

Вопрос № 2 Нужно ли измерять матрицу ограничений (строки = количество ограничений, столбцы = количество х в X)?

Так что для этих ограничений это будет (5,6)?

Вопрос № 3

Будет ли матрица ограничений выглядеть следующим образом - при условии, что я правильно ответила на вопрос № 2?

enter image description here

Первая строка представляет x11 + x21 + x31 >= a1

Второй ряд представляет x12 + x22 + x32 >= a2

Третий ряд представляет x11 + x12 <=1

Четвертый ряд представляет x21 + x22 <=1

Пятая строка представляет x31 + x32 <=1

Затем, конечно, матрица направления и RHS-матрица устанавливаются соответственно.

...