Как решить эту квадратичную c задачу оптимизации в R? - PullRequest
0 голосов
/ 25 апреля 2020

В настоящее время я пытаюсь выполнить большее упражнение на симуляцию, но я застрял в этом. Цель состоит в том, чтобы найти вектор p * (2x1), который максимизирует эту функцию (p * = argmax of h): Уравнение Также даны Y и q, и все другие величины в функции определены с использованием их.

P_priority_i <- function(unknown, arg1, arg2, i){ 
mu = 2
delta = 0.00001
c <- c(pbar[i,] + rep(delta,m))
e <- rep(0,2)
s <- rep(0,2)
for (j in 1:m){ 
    e[j] <- x[i,j] + sum(A[[j]][i,]*min(pbar[i,j],arg1[i,j]))
}
if(y[i,'countries'] != 'IT'){ 
   s[1] <- min(pbar[i,1],(max(0,sum(arg2*e)))/arg2[1])
   s[2] <- min(pbar[i,2],(max(0,sum(arg2*e)-arg2[1]*s[1]))/arg2[2])
   value <- -0.5*t(c-unknown)%*%diag(arg2/(c-s))%*%(c-unknown)
return(value)
} else { 
   s[2] <- min(pbar[i,2],(max(0,sum(arg2*e)))/arg2[2])
   s[1] <- min(pbar[i,1],(max(0,sum(arg2*e)-arg2[2]*s[2]))/arg2[1])
   value <- -0.5*t(c-unknown)%*%diag(arg2/(c-s))%*%(c-unknown)
   return(value)
   }}

Я проверил формулировку функции, вывод которой является скалярной, и она правильная.

У меня также есть 3 ограничения на p *:

Ограничения , где \ bar {p} и x - заданные величины.

Я нашел пакет quadprog, но я не знаю, как решить эту конкретную проблему, используя функцию execute.QP (), которая предполагает целевую функцию в виде (- d ^ T b + 0.5 b ^ TD b). Проблема в том, что аргумент моей максимизации должен быть p, а не (c -p) (также ограничения сформулированы относительно p).

Как я могу настроить это в R?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...