2016-08-17 5 views
0

R.Netを使用して非線型最適化問題をモデル化するためにnloptrを使用します。変数の初期値をRscriptに渡します。ここでは変数にlbubを定義しています。nloptrの上境界エラー

lbは0ですが、一部の変数では&の場合、ubは "1"です。

私がモデルを実行すると、私は「R.Script」にEXCELから同じ初期入力データを提供する場合、私は継続的に興味深いことに

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

としてエラーを取得していますが、それがうまく動作し、私はエラーを取得することはありません約x0>ub。 これをデバッグする方法や何が間違っているかも知っているかについての洞察はありますか?私はそれがExcelでうまくいくが、C#ではうまくいかないことを知ることはできない。

いくつかの詳細は以下の通りである: 例:パラメータ制約が第COLおよび第三のように和である

enter image description here

(my.data.var呼ばれる)は、以下のように行列の形態でありますcolはそれぞれ< = 1である必要があります。すなわち、すべてのパラメータの enter image description here

ポンドは0であると私はそれを定義:

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) 
:制約FUNCは次のように定義されて

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    
    } 
} 

:として

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

UB

スクリプトを実行すると、最初のcolの「合計」が1より大きく、エラーを否定してください!

+3

これを再現可能にすることはできますか? – shayaa

+2

基本的に_only_というエラーメッセージが表示され、何が問題になったのかを尋ねています。 –

+0

面白い問題!私はそれを再現できるとすぐにそれを見て喜んで:D –

答えて

0

現在、「Inf」の制限は私の問題を解決しています。