Ищу для R решателя, чтобы минимизировать функцию F (X) при ограничении Ax < = В и х> = 0минимизировать функцию при ограничениях
где А представляет собой матрица, а х и В являются векторами ,
Знаете ли вы, пожалуйста?
Спасибо!
Ищу для R решателя, чтобы минимизировать функцию F (X) при ограничении Ax < = В и х> = 0минимизировать функцию при ограничениях
где А представляет собой матрица, а х и В являются векторами ,
Знаете ли вы, пожалуйста?
Спасибо!
Поскольку ваша программа включена в квадратичную целевую функцию, но имеет линейные ограничения, она является выпуклой. Следовательно, вам не нужно прибегать к расширенным нелинейным библиотекам.
Посмотрите на пакет quadprog. Из документации, первый пример должен работать как хороший шаблон для
## First example from documentation of `quadprog`:
##
## Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b
## under the constraints: A^T b >= b0
## with b0 = (-8,2,0)^T
## and
##
##
## we can use solve.QP as follows:
##
Dmat <- matrix(0,3,3)
diag(Dmat) <- 1
dvec <- c(0,5,0)
Amat <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3)
bvec <- c(-8,2,0)
solve.QP(Dmat,dvec,Amat,bvec=bvec)
В этом случае комментарии описывают программу, где b
вектор содержит переменные решения. Ограничения находятся в форме Ax >= b
(A^Tb> = b0), тогда как у вас есть ограничения формы Ax <= b
; последнее легко трансформируется в первое с E = -A и f = -b, давая Ex >= f
. Обратите внимание, что в этом примере матрица коэффициентов Dmat
для квадратичного члена является единичной матрицей, тогда как в вашем случае вам нужно будет установить Dmat
(и dvec
) в соответствии с вашей целевой функцией.
Для уточнения (еще больше), из документации по программе quadprog
:
Эта процедура реализует двойной метод Гольдфарб и Idnani (1982, 1983) для решения задач квадратичного программирования вида мин (-dT b + 1/2bT Db) с ограничениями AT b> = b0.
Следовательно, выразить свою целевую функцию (здесь х, используя вместо Ь для принятия переменного вектора)
f(x) = -d^T x + 1/2 x^T D x
where, d: coefficient *vector* for linear part of obj. function
D: coefficient *matrix* for quadratic
x: decision variable *vector*
and where ^T denotes the vector transpose.
В приведенном выше примере, д и О обозначены dvec и DMAT, соответственно.
Я тоже видел эту функцию, но я не понимал. Означает ли это, что я должен выразить f (x) согласно Dmat и dvec таким образом, что f (x) = t (dvec) .Dmat.dvec? – Nik
(Я буду использовать x здесь как вектор переменной решения). Вы выражаете свою целевую функциональную комбинацию линейной формы и квадратичной формы (https://en.wikipedia.org/wiki/Quadratic_form), т. Е. F (x) = dvec * x + x^T * Dmat * x/2. I Изменим в ответ, чтобы уточнить. – dfri
Да, спасибо, B также является вектором, я исправил его – Nik
Посмотрите на 'constrOptim' –
является' f' линейной функцией? ;-) – jogo