• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

R包Lpsolve概述

使用

lp(方向='最小',目标输入,常数材料,常数方向,常数相对位置,

transpose.constraints=TRUE,int.vec,presolve=0,compute.sens=0,

binary.vec,all.int=FALSE,all.bin=FALSE,scale=196,dense.const,

num.bin.solns=1,use.rw=FALSE)

争论

方向

给出优化方向的字符串:分钟(缺省)或马克斯

目标

目标函数系数的数值向量

常量垫子

数值约束系数矩阵,每个约束一行,每个变量一列(除非transpose.constraints=FALSE见下文)。

常量目录

给出约束方向的字符串向量:每个值应该是',' '=,' '=,' '=,' ',' '或'='中的一个。(在每一对中,这两个值是相同的。)

常量英国皇家园艺协会

约束右侧数值的向量。

转置。约束

默认情况下,每个约束占用常量mat的一行,在传递给优化代码之前,该矩阵需要进行转置。对于非常大的约束矩阵,在矩阵中逐列构造约束可能更明智。在这种情况下,将转置.约束设置为错误.

内部向量误差修正

给出要求为整数的变量索引的数值向量。因此,这个向量的长度就是整数变量的个数。

预溶解

编号:预解?默认为0(否);任何非零值都表示"是"。目前忽略。

计算机。传感器

编号:计算灵敏度?默认为0(否);任何非零值都表示"是"。

二进制

数值向量,如int.vec,给出需要二进制的变量的索引。

all.int

逻辑:所有变量都应该是整数吗?默认:假。

all.bin

逻辑:所有变量都应该是二进制的吗?默认:假。

规模

lpSolve缩放的整数:值。可以在lpSolve文档中找到详细信息。设置为0表示不缩放。默认: 196

密集常数

三列密集约束数组。如果提供了const.mat这将被忽略。否则,这些列是约束编号、列编号、a

nd value; there should be one row for each non-zero entry in the constraint matrix.

num.bin.solns
Integer: if all.bin=TRUE, the user can request up to num.bin.solns optimal solutions to be returned.

use.rw
Logical: if TRUE and num.bin.solns > 1, write the lp out to a file and read it back in for each solution after the first. This is just to defeat a bug somewhere. Although the default is FALSE, we recommend you set this to TRUE if you need num.bin.solns > 1, until the bug is found.

线性规划

线性规划示例1:一家公司希望最大化两种产品A和B的利润,分别以25美元和20美元的价格出售。每天有1800个资源单位,产品A需要20个单位,而B需要12个单位。这两种产品都需要4分钟的生产时间,并且可用的总工作时间为每天8小时。每种产品的生产数量应该是什么才能使利润最大化。

上述问题的目标函数是:

max(销售额)=max(25 x 1 + 20 x 2)

其中,

x 1是产品A的单位产生的

x 2是产品B的单位产生的

x 1和x 2也称为决策变量

问题中的约束(资源和时间):

20x 1 + 12 x 2 <= 1800(资源约束)
4x 1 + 4x 2 <= 8 * 60(时间约束)

设生产A,B,C分别为\(x_1\),\(x_2\),\(x_3\)个单位,数学模型为(LP):
\begin{array}{l} \max z = 12{x_1} + 18{x_2} + 5{x_3}\\ s.t.\left\{ {\begin{array}{*{20}{c}} {6{x_1} + 9{x_2} + 5{x_3} \le 200}\\ {12{x_1} + 16{x_2} + 17{x_3} \le 360}\\ {25{x_1} + 20{x_2} + 12{x_3} \le 780}\\ {{x_1} \ge 0,{x_2} \ge 0,{x_3} \ge 0} \end{array}} \right. \end{array}

Set up problem: maximize

x1 + 9 x2 + x3 subject to

x1 + 2 x2 + 3 x3 <= 9

3 x1 + 2 x2 + 2 x3 <= 15

f.obj <- c(1, 9, 1)
f.con <- matrix (c(1, 2, 3, 3, 2, 2), nrow=2, byrow=TRUE)
f.dir <- c("<=", "<=")
f.rhs <- c(9, 15)

Now run.

lp ("max", f.obj, f.con, f.dir, f.rhs)

Not run: Success: the objective function is 40.5

lp ("max", f.obj, f.con, f.dir, f.rhs)$solution

Not run: [1] 0.0 4.5 0.0

The same problem using the dense constraint approach:

f.con.d <- matrix (c(rep (1:2,each=3), rep (1:3, 2), t(f.con)), ncol=3)
lp ("max", f.obj, , f.dir, f.rhs, dense.const=f.con.d)

Not run: Success: the objective function is 40.5

整数规划

lpSolve

原理同Excel的solve规划求解

案例: 使用lpSolve规划求解最大值

约束1: [公式]

约束2: [公式]

约束3: [公式]

求解 [公式] 的最大值

library(lpSolve)
f.obj <- c(5,7)
f.con <- matrix(c(1,2,
                  2,3,
                  1,1), nrow=3)
f.dir <- c('<=',
           '<=',
           '<=')
f.rhs <- c(16,9,8)
lp('max', f.obj, f.con,f.dir,f.rhs)
lp('max', f.obj, f.con,f.dir,f.rhs)$solution

求解结果如下

> lp('max', f.obj, f.con,f.dir,f.rhs)
Success: the objective function is 41.6 
> lp('max', f.obj, f.con,f.dir,f.rhs)$solution
[1] 1.6 4.8

参考文献

()[]

Link to comment
Share on other sites