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
Другие вопросы по тегам