Как реализовать ограничения коробки в QuadProg
Мне было интересно, если в пакете R 'Quadprog' есть возможность включить ограничения коробки следующего вида: -L*1 <= v <= L*1
Где 1 - вектор 1, а L - константа. Переменная для оптимизации - это v. В основном все отдельные элементы v должны быть ограничены между –lambda и lambda.
Если нет, есть ли другие пакеты, чтобы обойти эту проблему?
Большое спасибо за вашу помощь
1 ответ
Да, ты можешь.
Учитывая функцию:
solve.QP(Dmat=Dmat,dvec=dvec,Amat=Amat,bvec=bvec,meq=0)
Amat
а также bvec
средства Amat * v >= bvec
,
Итак, установка таким образом:
Amat <- cbind(diag(length(v)), -diag(length(v)))
bvec <- c(rep(-L, length(v)), rep(-L, length(v)))
средства v > -L
а также -v > -L
(это то же самое, что v < L
) для каждого отдельного элемента v
,
Заметка meq
означает "количество равенств", и, поскольку в вашем случае все являются неравенствами, необходимо 0
,
Если вам нужно поместить ограничения равенства, поместите его в "левую" часть Amat
а также bvec
и количество равенств в meq
,