[英]Upper Bound Error in nloptr
我用nloptr
用來模擬一個非線性優化問題R.Net
。 我將參數的初始值傳遞給Rscript,然后將lb
和ub
定義為變量。
所有變量的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.