Как реализовать ограничения коробки в 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,

Другие вопросы по тегам