R lpSolve程序包找不到最佳解决方案

编程入门 行业动态 更新时间:2024-10-26 10:33:00
本文介绍了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程序包找不到最佳解决方案

本文发布于:2023-07-15 10:32:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1110682.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:找不到   解决方案   程序包   lpSolve

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!