2017-01-12 92 views
0

Скажем, у меня n линейные уравнения вида:R Оптимизация линейных уравнений коэффициенты с ограничениями

ax1 + bx2 + cx3 = y1 -ax1 + bx2 + cx3 = y2 -ax1 -bx2 + cx3 = y3

Здесь n=3 и a,b,c известны и фиксированные.

Я ищу оптимальные значения для x1,x2,x3 таким образом, что их диапазоны находятся в пределах [-r,r] для некоторого положительного r и сумма sum(y1,y2,y3) максимальна.

Есть ли пакет для R, который может справиться с такими проблемами оптимизации?

+0

Самый простой вариант - использовать библиотеку (gurobi) ' – MFR

+0

@MFR: есть ли бесплатная версия? – juxeii

ответ

2

Вы можете использовать optim в функции R для этой цели.

Если вы пытаетесь увеличить sum(y1,y2,y3), это действительно упрощает задачу максимизации (ax1 + bx2 + 3*cx3) таким образом, что x1,x2,x3 ∈ [-r,r]

Вы можете использовать ниже код, чтобы найти оптимальные значения. Обратите внимание, что функция optim минимизирует значение по умолчанию, поэтому я возвращаю отрицательное значение суммы в функции.

max_sum <- function(x){ 
    a <- 2; b<- -3; c<-2; 
    y <- a*x[1]+b*x[2]+3*c*x[3] 
    return(-1*y) } 

r <- 5 
optim(par=c(0,0,0), max_sum,lower= (-1*r),upper = r) 

$par 
[1] 5 -5 5 
+0

Спасибо, что мне нужно. – juxeii