本文介绍了R lpSolve程序包找不到最佳解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用R lpSolve软件包解决以下优化问题:
I'm trying to solve the following optimization problem with R lpSolve package:
1.007825*x1 +12.000000*x2 +15.99492*x3 +14.00307*x4 +31.97207*x5 +30.97376*x6 >= 10 1.007825*x1 +12.000000*x2 +15.99492*x3 +14.00307*x4 +31.97207*x5 +30.97376*x6 <= 15 1*x1 - 2*x2 + 0*x3 -1*x4 +0*x5 -3*x6 <= 2 xi >= 0, where i = [1,2,3,4,5,6]我的目标函数是:
1.007825*x1 +12.000000*x2 +15.99492*x3 +14.00307*x4 +31.97207*x5 +30.97376*x6我以标准形式(A)创建约束矩阵:
I create the matrix of constraints in the standard form (A):
[,1] [,2] [,3] [,4] [,5] [,6] [1,] -1.007825 -12 -15.99492 -14.00307 -31.97207 -30.97376 [2,] 1.007825 12 15.99492 14.00307 31.97207 30.97376 [3,] 1.000000 -2 0.00000 -1.00000 0.00000 -3.00000 [4,] -1.000000 0 0.00000 0.00000 0.00000 0.00000 [5,] 0.000000 -1 0.00000 0.00000 0.00000 0.00000 [6,] 0.000000 0 -1.00000 0.00000 0.00000 0.00000 [7,] 0.000000 0 0.00000 -1.00000 0.00000 0.00000 [8,] 0.000000 0 0.00000 0.00000 -1.00000 0.00000 [9,] 0.000000 0 0.00000 0.00000 0.00000 -1.00000我创建边界矩阵(b):
I create the matrix of borders (b):
[,1] [1,] -10 [2,] 15 [3,] 2 [4,] 0 [5,] 0 [6,] 0 [7,] 0 [8,] 0 [9,] 0和目标函数(f):
f = c(1.007825, 12.000000, 15.99492, 14.00307, 31.97207, 30.97376)当我将其放入代码中时:
When I put it into the code:
out = lp("min",f,A,rep("<=",9),b,all.int=TRUE),我得到解c(0,0,0,1,0,0),尽管我知道解为c(0,1,0,0,0,0).如果我更改右边框(而不是15,我改为13),则一切正常.可能是什么问题?
I get the solution c(0,0,0,1,0,0), although I know that the solution is c(0,1,0,0,0,0). If I change the right border (instead of 15 I make 13), everything works. What could be the problem?
推荐答案使用 lpSolveAPI ,该问题可以很好地解决:
With lpSolveAPI, the problem solves fine:
library(lpSolveAPI) lprec <- make.lp(0, ncol=6) set.type(lprec, columns=seq(1,6), type="integer") set.objfn(lprec, obj=c(1.007825, 12, 15.99492, 14.00307, 31.97207, 30.97376)) add.constraint(lprec, xt=c(1.007825, 12, 15.99492, 14.0030, 31.97207, 30.97376), type=">=", rhs=10) add.constraint(lprec, xt=c(1.007825, 12, 15.99492, 14.0030, 31.97207, 30.97376), type="<=", rhs=15) add.constraint(lprec, xt=c(1, -2, 0, -1, 0, -3), type="<=", rhs=2) solve(lprec) get.variables(lprec)返回
[1] 0 1 0 0 0 0更多推荐
R lpSolve程序包找不到最佳解决方案
发布评论