квадратичное программирование в виде матрицы R - PullRequest
0 голосов
/ 07 сентября 2018

Я использую R программное обеспечение quadprog. enter image description here

решить следующую оптимизацию:

Dmat <- matrix(c(1,1.5,1.5,5),nrow=2,ncol=2)
dvec <- c(0.5,0)
Amat <- -matrix(c(3,15,2,-3),nrow=2,ncol=2)
bvec <- matrix(c(-2,1),nrow=2,ncol=1)

solve.QP(Dmat,dvec,Amat,bvec)

решение, которое я получаю от решения вышеуказанной проблемы:

$`solution`
[1] -0.2307692  0.1794872

$value
[1] 0.1604208

Правильное решение

$`par`
[1] -0.8064516  0.2096774

$value
[1] -0.04032258

Что я делаю не так?

1 Ответ

0 голосов
/ 08 сентября 2018

Вы должны:

  • двойной Dmat
  • отрицание dvec
  • транспонировать Amat
  • отрицание bvec

То есть:

Dmat <- matrix(c(2,3,3,10),nrow=2,ncol=2)
dvec <- c(-0.5,0)
Amat <- -matrix(c(3,15,2,-3),nrow=2,ncol=2,byrow=TRUE)
bvec <- -matrix(c(-2,1),nrow=2,ncol=1)

> solve.QP(Dmat,dvec,Amat,bvec)
$solution
[1] -0.8064516  0.2096774

$value
[1] -0.04032258
...