文章目录
一、线性规划(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) si(i=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 (ri−pi)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/M≤a(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) (1−s) , s s s 称为投资偏好系数。
这里可以简单理解成投资者是更注重哪一个目标,投资者倾向的那个权重设置的更大即可。
上述模型对应的两条思路也是在数学建模中经常会使用到的:①将多目标转换为单目标规划;②将多目标函数赋予相应的权重进行搜索。