2016-08-17 7 views
0

Я использую nloptr для моделирования проблемы нелинейной оптимизации с использованием R.Net. Я передаю начальные значения параметров в Rscript, где я определяю lb и ub переменным.Ошибка верхней границы в nloptr

lb для всех переменных 0, тогда как ub является «1» для некоторых & «Inf» для некоторых переменных.

Когда я бегу модель, я постоянно получаю сообщение об ошибке, как

Additional information: Error in is.nloptr(ret) : at least one element in x0 > ub 

Интересно, если я обеспечиваю одинаковые начальные входные данные из EXCEL в «R.Script», он прекрасно работает, и я никогда не получаю ошибку около x0>ub. Любые идеи относительно того, как отлаживать это или знать, что может быть неправильным? Я не могу понять, почему он будет работать с Excel, но не с C#.

Некоторые подробности приведены ниже: Пример: Параметры в виде матрицы, как показано ниже (называемых my.data.var)

enter image description here

Ограничения таковы, что сумма второго и третьего седловине col должно быть < = 1 соответственно. т.е. enter image description here

ЛБ для всех параметров 0 и я определить его как:

lb = vector("numeric",length= length(my.data.var)) 

иь как:

ub.matrix <- matrix(,nrow = 2, ncol=4) 
ub.matrix 
for(rownum in 1:2) 
{ 
    ub.matrix[rownum,1] = Inf      
    ub.matrix[rownum,4] = Inf  
    for(colnum in 2:3) 
    { 
    ub.matrix[rownum,colnum] = 1    
    } 
} 

Ограничение функ определяется как:

constraint.func <- function(my.data.var) 
{ 
    column = 1 

    constr <- vector("numeric",length = 2) 
    my.data.var.mat <- matrix(my.data.var,nrow = 2,ncol = 4,byrow = TRUE) 


    for(index in 2:3) 
    { 
    sum.constraint = 0 
    for(prodwells in 1:2) 
    { 
     sum.constraint <- sum.constraint + my.data.var.mat[prodwells,index] 

    } 
    constr[column] <- sum.constraint - 1 
    column = column+1 
    } 
    return(constr) 

} 

result <- nloptr(my.data.var,eval_f = Error.func, lb=lb, 
       ub = ub,eval_g_ineq=constraint.func, 
       opts = opts) 

Когда я запускаю сценарий, я заметил, что «сумма» первого col> 1 и он nce ошибка!

+3

Вы можете сделать это воспроизводимым? – shayaa

+2

Вы в основном публикуете _only_ сообщение об ошибке и спрашиваете нас, что пошло не так. –

+0

Интересная проблема! Я с удовольствием посмотрю на него, как только смогу воспроизвести его: D –

ответ

0

В настоящее время ограничение «Inf» решает мою проблему.

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

  • Нет связанных вопросов^_^