问题描述
我想使用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 (将#修改为@)