簡體   English   中英

nloptr的上限誤差

[英]Upper Bound Error in nloptr

我用nloptr用來模擬一個非線性優化問題R.Net 我將參數的初始值傳遞給Rscript,然后將lbub定義為變量。

所有變量的lb為0,而某些變量的ub為“ 1”,某些變量的ub為“ Inf”。

當我運行模型時,不斷出現錯誤,因為

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

有趣的是,如果我從EXCEL向“ R.Script”提供相同的初始輸入數據,則它運行良好,並且我永遠不會收到有關x0>ub錯誤。 是否有關於如何調試此功能的任何見解或可能出什么問題的見解? 我無法理解為什么它可以與excel一起使用,但不適用於C#。

下面是一些詳細信息:示例:參數采用Matrix形式,如下所示(稱為my.data.var)

在此處輸入圖片說明

約束使得第二個col和第三個col的總和分別應<= 1 在此處輸入圖片說明

所有參數的lb為0,我將其定義為:

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

ub as:

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,因此出現錯誤!

目前,“ Inf”限制解決了我眼前的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM