Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 带R的约束优化_Optimization_Minimization - Fatal编程技术网

Optimization 带R的约束优化

Optimization 带R的约束优化,optimization,minimization,Optimization,Minimization,我想用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]和b[I]),它们必须是正(!)值。我已经尝试了solnp函数。我的编码: cf <- function(...) { i = c(1:8) j =

我想用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]和b[I])
,它们必须是正(!)值。我已经尝试了
solnp
函数。我的编码:

   cf <- function(...) 
   {
   i = c(1:8)
   j = c(1:8)
   I = matrix(c(1, 59, 31, 4, 1, 5, 5, 24,
   36, 1, 10, 22, 3, 4, 17, 56,
   56, 25, 1, 2, 1, 1, 1, 25,
   2, 1, 3, 1, 34, 12, 3, 17,
   1, 1, 1, 14, 1, 1, 1, 2,
   10, 1, 1, 58, 2, 1, 1, 7,
   3, 17, 1, 7, 1, 1, 1, 95,
   5, 34, 6, 6, 1, 1, 104, 1), nrow = 8, ncol = 8, byrow = TRUE)
   E = matrix(c(1, 17, 31, 2, 1, 5, 1, 3,
   16, 1, 22, 1, 1, 1, 3, 28,
   173, 45, 1, 1, 1, 2, 2, 21,
   5, 15, 1, 1, 11, 27, 2, 10,
   1, 1, 1, 5, 1, 3, 1, 1,
   1, 1, 1, 7, 1, 1, 1, 1,
   4, 13, 1, 2, 1, 1, 1, 93,
   14, 36, 3, 5, 1, 2, 99, 1), nrow = 8, ncol = 8, byrow = TRUE)
   flow = sum((I[i, j]*a[j] - E[i, j]*b[i])^2/(I[i, j] + E[i, j]))
   }
   
   kf <- function(...)
   {
   i = c(1:8)
   j = c(1:8)
   I = matrix(c(1, 59, 31, 4, 1, 5, 5, 24,
   36, 1, 10, 22, 3, 4, 17, 56,
   56, 25, 1, 2, 1, 1, 1, 25,
   2, 1, 3, 1, 34, 12, 3, 17,
   1, 1, 1, 14, 1, 1, 1, 2,
   10, 1, 1, 58, 2, 1, 1, 7,
   3, 17, 1, 7, 1, 1, 1, 95,
   5, 34, 6, 6, 1, 1, 104, 1), nrow = 8, ncol = 8, byrow = TRUE)
   E = matrix(c(1, 17, 31, 2, 1, 5, 1, 3,
   16, 1, 22, 1, 1, 1, 3, 28,
   173, 45, 1, 1, 1, 2, 2, 21,
   5, 15, 1, 1, 11, 27, 2, 10,
   1, 1, 1, 5, 1, 3, 1, 1,
   1, 1, 1, 7, 1, 1, 1, 1,
   4, 13, 1, 2, 1, 1, 1, 93,
   14, 36, 3, 5, 1, 2, 99, 1), nrow = 8, ncol = 8, byrow = TRUE)
   M = matrix(c(1, 59, 31, 4, 1, 5, 5, 24,
   36, 1, 22, 22, 3, 4, 17, 56,
   173, 45, 1, 2, 1, 2, 2, 25,
   5, 15, 3, 1, 34, 27, 3, 17,
   1, 1, 1, 14, 1, 3, 1, 2,
   10, 1, 1, 58, 2, 1, 1, 7,
   4, 17, 1, 7, 1, 1, 1, 95,
   14, 36, 6, 6, 1, 2, 104, 1), nrow = 8, ncol = 8, byrow = TRUE)
   constraint = sum((I[i, j]*a[j] + E[i, j]*b[i])/2 - M[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)
   
cf