原文链接:http://tecdat.cn/?p=3432
原文出处:拓端数据部落公众号
线性规划简介
优化是一种为所有可能的解决方案找到给定问题的最佳解决方案的技术。优化应用严格的数学模型来找出给定问题的最无效解决方案。
要从优化问题开始,首先确定指标十分重要。指标是绩效的量化掂量。例如:最大化利润,最小化工夫,最小化老本,最大化销售。
优化问题可分为两组
- 线性规划(LP):它也被称为线性优化,在这个问题中,指标是在数学模型中获得最佳后果,其中指标和所有束缚是决策变量的线性函数。
- 二次布局(QP):在二次布局中,指标是决策变量和束缚的二次函数,它们是变量的线性函数。二次函数也是一种非线性布局。
对于这篇文章,解释了线性规划问题。
R中的线性优化:
个别优化问题的内置函数示例:
- 程序的个别参数构造是:
optimizer(objective, constraints, bounds=NULL, types=NULL, maximum=FALSE)
例:
- 定义指标函数
f <- function(x) 2 * (x\[1\]-1)^2 + 5 * (x\[2\]-3)^2 + 10
- 优化
r < - optim(c(1,1),f)
- 查看优化是否收敛到最小
r $ convergence == 0 ##如果收敛到最小值,则返回TRUE## \[1\]TRUE
- 最优输出参数
R $par## \[1\] 1.000168 3.000232
- 指标函数的值
R $value## \[1\] 10
线性规划(LP)
线性编程示意为:
min c T x = min(c 1 x 1 + ... + c n x n)
束缚:
A x> = B,x \> = 0
线性规划示例:
- 一家公司心愿最大化两种产品A和B的利润,别离以25元和20元的价格发售。每天有1800个单位资源,产品A须要20个单位,而B须要12个单位。这两种产品都须要4分钟的生产工夫,并且可用的总工作工夫为每天8小时。每种产品的生产数量应该是多少能力使利润最大化。
上述问题的指标函数是:
max(销售额)=max(25 x1 + 20 x2)
其中,
x1是产品A的生产数量
x2是产品B的生产数量
x 1和x 2也称为决策变量
问题中的束缚(资源和工夫):
20x1 + 12 x2 <= 1800(资源束缚)
4x1 + 4x2 <= 8 * 60(工夫束缚)
解决R中的上述问题:
因为这是一个线性规划问题,咱们将应用_lp() _函数来找到最优解。_lp() _函数的语法 是:
lp(direction =“min”,objective.in,const.mat,const.dir,const.rhs)
- _方向_是最小化或最大化
- 指标函数_objective.in_
- 束缚_A_作为矩阵_const.mat给出_,方向为_const.dir_
- 束缚b作为向量_const.rhs_插入
##设置决策变量的系数objective.in < - c(25,20)##创立束缚martixconst.mat < - martix(c(20,12,4,4) )## 定义束缚time_constraint < - (8 * 60) ##找到最佳解决方案最佳< - lp(direction ="max",objective.in,const.mat,const.dir,const.rhs)
##显示x1和x2的最佳值 ## \[1\] 45 75##在最佳点查看指标函数的值 ## \[1\] 2625
从下面的输入中,咱们能够看到该公司应该生产45个产品A和75个产品B,以取得2625元的销售额。
在建设指标函数和束缚之后,咱们能够扩大雷同的办法来解决R中的其余LP问题。
还有问题吗?请在上面留言!