R Оптимизировать коэффициенты линейных уравнений с ограничениями
Скажи у меня n
линейные уравнения вида:
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, который может решить такие проблемы оптимизации?
1 ответ
Вы можете использовать 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