2014-11-25 1 views
0

Может ли кто-нибудь помочь мне с настройкой функции `optim() 'для двух переменных с разными граничными условиями?Функция Optim() для нескольких переменных с различными граничными условиями в R

x = rnorm(1:100) 
    y = rnorm(1:100)*50+2 
    #ndays is a vector of two values 

    test=function(ndays, x, y){ sum(x*ndays[1] - (x^2)*ndays[2] + y^2) } 

    optim(par = c(2,10),test, x=x, y=y, lower=c(1,10),upper=c(20,30), method="L-BFGS-B") 
    $par 
    [1] 20 30 

Очевидно, что эта оптимизация не работает, как Ndays [2] должно быть 10.

Если optim() не хорошая функция для применения здесь, вы бы рекомендовать некоторые другие функции?

ответ

1

optim минимизирует функцию test, которая уменьшается при увеличении ndays[2].

Таким образом, получение 30 является правильным. Также ndays[1] будет равен 20, если mean(x) < 0 и равен 1, если mean(x) > 0

+0

Спасибо, Вы правы, я смутился, когда пытался составить пример, чтобы продемонстрировать мою проблему. Итак, давайте предположим, что эта функция более сложна, и моделируемые значения всегда лежат на границе, как я могу с ней справиться? У вас есть какие-то советы, которые я могу взять взаймы? –

Смежные вопросы