Выражения для LPsolve - PullRequest
       50

Выражения для LPsolve

0 голосов
/ 17 октября 2018

Я работаю над проблемой, которая включает ограничения, содержащие выражения определенного типа, которые должны быть решены с использованием LPsolve.Я не могу понять, как сформулировать ограничения.

Например: - Я хотел бы переформулировать следующее ограничение:

+0.35 C1 +0.15 C2 +0.15 C3 +0.2 C4 +0.15 C5 +0.15 C6 +0.15 C7 +0.15 C8 +0.15 C9 +0.15 C10 <= 3750; 

как

+(0.35)*(1+C1) +0.15*(1+C2) +0.15*(1+C3)....+0.15*(1+C10)<= 3750;

Я пытался использовать set.constr.value(), но в качестве входных данных используется только фиксированная строка.

и затем решите для оптимального решения.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Ограничение в программе (предположим, C_i >= 0):

+(0.35)*(1+C1) +0.15*(1+C2) +0.15*(1+C3)....+0.15*(1+C10)<= 3750;

такое же, как:

+0.35*C1 +0.15*C2 + ... +0.15*C10 <= 3750 - (0.35 + 0.15 + ... + 0.15)

Не понимаю суть вопроса ... Пожалуйста, попробуйтезаписать программу в нормальной форме и сделать ваш вопрос более точным.

0 голосов
/ 17 октября 2018

Чтобы максимизировать сумму переменных Ci с учетом ограничения, заданного в вопросе и предполагающего, что они неотрицательны:

library(lpSolve)

cc <- c(0.35, 0.15, 0.15, 0.2, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15)
result <- lp(direction = "max", 
   objective = rep(1, length(cc)),
   const.mat = t(cc),
   const.dir = "<=",
   const.rhs = 3750 - sum(cc))

result
## Success: the objective function is 24988.33 

result$solution
##  [1]     0.00 24988.33     0.00     0.00     0.00     0.00     0.00     0.00
##  [9]     0.00     0.00
...