R约束优化

问题描述

我想使用R'Rsolnp'软件包解决最小化问题。我的目标功能是:

sum((I[i,j]*a[j] - E[i,j]*b[i])^2/(I[i,j] + E[i,j]))

和约束:

sum((I[i,j]*a[j] + E[i,j]*b[i])/2 - M[i,j],

等于0。

我有8个参数(a[j] and b[i]),这些参数必须为正(!)值。我已经尝试过solnp函数。我的编码:

   cf <- function(...) 
   {
   i = c(1:8)
   j = c(1:8)
   I = matrix(c(1,59,31,4,1,5,24,36,10,22,3,17,56,25,2,34,12,14,58,7,95,6,104,1),nrow = 8,ncol = 8,byrow = TRUE)
   E = matrix(c(1,16,28,173,45,21,15,11,27,13,93,99,byrow = TRUE)
   flow = sum((I[i,j]))
   }
   
   kf <- function(...)
   {
   i = c(1:8)
   j = c(1:8)
   I = matrix(c(1,byrow = TRUE)
   M = matrix(c(1,byrow = TRUE)
   constraint = sum((I[i,j])
   }
   
   n = 8
   
   LB = rep(0,2*n)
   
   kfB = rep(0,n)
   
   a = rep(0.1,n)
   
   b = rep(0.1,n)
   
   x0 <- c(a,b)
   
   solnp(pars = x0,fun = cf,eqfun = kf,eqB = kfB,LB = LB)
   

警告消息是:

在p0 * vscale [(neq + 2):( nc + np +1)]中: 较长的物体长度不是较短的物体长度的倍数

并且参数等于初始值(因此我没有获得最佳值)。

代码有什么问题? 谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)