Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
R中的线性目标规划无法找到解_R_Loops_Mathematical Optimization_Linear Programming - Fatal编程技术网

R中的线性目标规划无法找到解

R中的线性目标规划无法找到解,r,loops,mathematical-optimization,linear-programming,R,Loops,Mathematical Optimization,Linear Programming,我有一个线性目标规划问题,我正试图用R解决这个问题: 我尝试使用R以以下矩阵格式进行公式化: 以下是可复制的示例: library("lpSolve") a <- matrix(c(1,2,5, 1/2,1,3, 1/5,1/3,1),nrow=3,byrow=T) f.obj <- c(rep(1,6),rep(0,3)) f.cons <- matrix(c(c(1,-1,0,0,0,0,1,-1,0,

我有一个线性目标规划问题,我正试图用
R
解决这个问题:

我尝试使用
R
以以下矩阵格式进行公式化:

以下是可复制的示例:

library("lpSolve")
a <- matrix(c(1,2,5,
              1/2,1,3,
              1/5,1/3,1),nrow=3,byrow=T)

f.obj <- c(rep(1,6),rep(0,3))

f.cons <- matrix(c(c(1,-1,0,0,0,0,1,-1,0,
                     0,0,1,-1,0,0,1,0,-1,
                     0,0,0,0,1,-1,0,1,-1,
                     1,0,0,0,0,0,0,0,0,
                     0,1,0,0,0,0,0,0,0,
                     0,0,1,0,0,0,0,0,0,
                     0,0,0,1,0,0,0,0,0,
                     0,0,0,0,1,0,0,0,0,
                     0,0,0,0,0,1,0,0,0,
                     0,0,0,0,0,0,1,0,0,
                     0,0,0,0,0,0,0,1,0,
                     0,0,0,0,0,0,0,0,1)
),nrow=12,byrow=T)

f.dir <- c(rep("=",3),rep(">",9))

f.rhs <- c(c(log(a[1,2]),log(a[1,3]),log(a[2,3])),rep(0,9))

g <- lp ("min", f.obj, f.cons, f.dir, f.rhs)
g$solution

> g$solution
[1] 0.1823216 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.6094379 1.0986123 0.0000000
库(“lpSolve”)

a这里有一个使用
lpSolveAPI
包的解决方案。对于n=3,它给出了相同的结果。代码也适用于较大的n(和矩阵A):

库(lpSolveAPI)

n是否有
wi
的定义?
library(lpSolveAPI)
n <- 3
a <- matrix(c(1,2,5,1/2,1,3,1/5,1/3,1),nrow=n,byrow=T)
num_entries <- n*(n-1)/2

# set up lp    
lprec <- make.lp(0, ncol=2*num_entries+n) 
set.objfn(lprec, obj=c(rep(1,2*num_entries), rep(0,n)))

# add constraints
dim2idx <- function(xy, i, j, n=3) ifelse(xy=="x", 0, n*(n-1)/2) + n*(n-1)/2 - (n-i)*(n+1-i)/2 + (j-i)    
for (i in seq(1,n-1))
    for (j in seq(i+1,n)) 
        add.constraint(lprec, xt=c(1,-1,1,-1), indices=c(dim2idx("x", i,j), dim2idx("y", i,j), 2*num_entries+c(i,j)), type="=", rhs=log(a[i,j]))

# solve
solve(lprec)
exp(get.variables(lprec)) # solved for log x, so exp here