数学建模十大算法03—线性规划、整数规划、非线性规划、多目标规划

一、线性规划(Linear Programming,LP)

1.1 引例

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。 此类问题构成了运筹学的一个重要分支一数学规划,而线性规划(Linear Programming, LP) 则是数学规划的一个重要分支。

简而言之,线性规划就是在有限的条件下,获得最大的收益。

【例】 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元与3000元。生产甲机床需用A、B机器加工,加工时间分别为每台2h和1h;生产乙机床需用A、B、C三种机器加工,加工时间为每台各1h。若每天可用于加工的机器时数分别为A机器10h、B机器8h和C机器7h,问该厂应生产甲、乙机床各几台,才能使总利润最大?

上述问题的数学模型为:(其中, x 1 x_1 x1 x 2 x_2 x2决策变量
在这里插入图片描述
总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。 “线性”意味着所有变量都是一次方。
在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,往往也是很困难的一步,模型建立得是否恰当,直接影响到求解。而选择适当的决策变量,是建立有效模型的关键之一。

1.2 线性规划问题的解

一般线性规划问题的(数学)标准型为:
在这里插入图片描述

1.3 Matlab标准形式

线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是
小于等号也可以是大于等号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为:
在这里插入图片描述
Matlab中求解线性规划的命令为:

[x, fval] = linprog(f, A, b)  % A和b对应线性不等式约束
[x, fval] = linprog(f, A, b, Aeq, beq)  % Aeq和beq对应线性等式约束
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub)  % lb和ub分别对应决策变量的下界向量和上界向量

其中, x x x 返回决策向量的取值; f v a l fval fval 返回目标函数的最优值。

如果线性规划问题的解为max形式,可以通过以下转换,再应用Matlab提供的方法:
在这里插入图片描述
【例】 求解下列线性规划问题。
在这里插入图片描述
将其转换为Matlab标准形式:
在这里插入图片描述
Matlab代码实现为:

f = [-40;-30]  % 目标函数中变量的系数矩阵
a = [1,1;-1,0;0,-1;240,120]  % 小于等于的约束条件中变量系数矩阵
b = [6;-1;-1;1200]  % 小于等于的约束条件中常数项矩阵

[x,y] = linprog(f, a, b)  % 从等式约束开始后都没有,可以都不写
y = -y  % 注意要还原成求最大值!!!!

求解结果为:
在这里插入图片描述
【例】 求解下列线性规划问题。
在这里插入图片描述
代码如下:

clc;clear
c=[2;3;1];
a=[1,4,2;3,2,0];
b=[8;6];
[x,y]=linprog(c,-a,-b,[],[],zeros(3,1))  %这里没有等式约束,对应的矩阵为空矩阵

求解结果为:
在这里插入图片描述

1.4 投资的收益和风险(模型建立与分析)

在这里插入图片描述

1.4.1 符号规定和基本假设

符号规定:
在这里插入图片描述
基本假设:
在这里插入图片描述
注意,这里将M假设为1,可以方便后面的计算。(建模比赛中可以适当进行假设)

1.4.2 模型的分析与建立

(1)总体风险用所投资的 s i s_i si 中最大的一个风险来衡量,即
在这里插入图片描述

(2)购买 s i ( i = 1 , 2 , . . . , n ) s_i(i=1,2,...,n) sii=1,2,...,n) 所付交易费是一个分段函数,即
在这里插入图片描述
而题目中所给的定值 u i u_i ui (单位:元)相对总投资 M M M 很少, p i u i p_iu_i piui 更小,这样购买 s i s_i si 的净收益可以简化 ( r i − p i ) x i (r_i-p_i)x_i (ripi)xi

(3)要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型

目标函数为:
在这里插入图片描述

约束条件为:
在这里插入图片描述

(4)模型简化。

模型一: 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限 a,使最大的一个风险率为a,即 q i x i / M ≤ a ( i = 1 , 2 , … , n ) q_ix_i/M ≤ a (i=1,2,…,n) qixi/Ma(i=1,2,,n),可找到相应的投资方案。这样以来就可以把多目标规划变成一个目标的线性规划。

即固定风险水平,优化收益:
在这里插入图片描述
通俗理解,就是把原来多目标优化中第二个 m i n min min 目标函数转变为约束条件,只要风险小于 a a a 都是投资者可接受的风险范围。

模型二: 若投资者希望总盈利至少达到水平 k k k 以上,在风险最小的情况下寻求相应的投资组合。

即固定盈利水平,极小化风险:
在这里插入图片描述
在这里插入图片描述
和模型一类似,这里将 m a x max max 目标函数转换为了只要总收益大于 k k k ,投资者都可以接受。

模型三: 投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险收益分别赋予权重 s s s ( 1 − s ) (1-s) (1s) s s s 称为投资偏好系数。

在这里插入图片描述
这里可以简单理解成投资者是更注重哪一个目标,投资者倾向的那个权重设置的更大即可。

上述模型对应的两条思路也是在数学建模中经常会使用到的:①将多目标转换为单目标规划;②将多目标函数赋予相应的权重进行搜索

1.4.3 模型一的求解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值