R中的线性目标规划无法找到解决方案 [英] linear goal programming in R unable to find solutions
本文介绍了R中的线性目标规划无法找到解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要使用R
解决以下线性目标编程问题:
I have the following linear goal programming problem that I'm trying to solve using R
:
我尝试使用R
以以下矩阵格式进行配方:
I tried formulating using R
in the following matrix format:
下面是可重现的示例:
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
以下是我的问题:
- 解决方法不正确?我制定的任何内容都不正确吗?
- The solution is incorrect ? Is there anything that I formulated is incorrect ?
- 如何为上述目标编程使用
R
来表示nxn
矩阵.
- How can I formulate for an
nxn
matrix usingR
for the above goal programming.
推荐答案
以下是使用lpSolveAPI
包的解决方案.对于n = 3,它给出相同的结果.该代码也应适用于较大的n(以及矩阵A):
Here is a solution which uses the lpSolveAPI
package. It gives the same result for n=3. The code should work for larger n (and matrix A) as well:
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
这篇关于R中的线性目标规划无法找到解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文