常用来解目标规划问题
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题
此类问题构成了运筹学的一个重要分支——数学规划,而**线性规划(Linear Programming,简记LP)**则是数学规划的一个重要分支
自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入
特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一
- 目标函数及约束条件均为线性函数,故称为线性规划问题
- 线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题
某机床厂生产甲、乙两种机床,每台销售后的利润分别为4千元与3千元
生产甲机床需用A、B机器加工,加工时间分别为每台2小时和1小时
生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时
若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器7小时
问该厂应生产甲、乙机床各儿台,才能使总利润最大?
设该厂生产x1台甲机床和x2乙机床时总利润z最大,则x1,x2应该满足
maxz=4x1+3x2 (1.1) ⎩⎨⎧2x1+x2x1+x2x2x1,x2≤10≤8≤7≥0 (1.2)
- 变量x1,x2称之为决策变量
- (1.1)式被称为问题的目标函数
- (1.2)中的几个不等式是问题的约束条件,记为
s.t.
(即 subject to)(subject除了科目,遭受,还有在......条件下的意思)
maxz=j=1∑ncjxj s.t.⎩⎨⎧j=1∑naijxjxj=bi,≥0,i=1,2,⋯,mj=1,2,⋯,n
xmin=cTx s.t.⎩⎨⎧Ax≤bAeq⋅x=beqlb≤x≤ub(线性不等式约束)(线性等式约束)(决策向量取值范围) 其中c和x为n维列向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量规范:c、x、b、beq、lb、ub为列向量;f称为价值向量;b称为资源向量;A、Aeq为矩阵
命令
[x,fval] = linprog(c,A,b)
[x,fval] = linprog(c,A,b,Aeq,beq)
[x,fval] = linprog(c,A,b,Aeq,beq,lb,ub)
其中
x | 返回:决策向量的取值 | 列矩阵 |
---|
fval | 返回:目标函数的最优值 | 值 |
c(/f) | 对应:为价值向量 | 列矩阵 |
A、b | 对应:线性不等式约束 | 矩阵、列矩阵 |
Aeq,beq | 对应:线性等式约束 | 矩阵、列矩阵 |
lb、ub | 对应:决策向量的下界向量和上界向量 | 列矩阵、列矩阵 |
题目
maxz=2x1+3x2−5x3 s.t.⎩⎨⎧x1+x2+x32x1−5x2+x3x1+3x2+x3x1,x2,x3=7≥10≤12≥0
Matlab程序
f=[-2;-3;5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1]; beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
x,y=-y
x =
6.4286
0.5714
0.0000
y =
14.5714
[暂略],好像会比Matlab简单很多
将非线性规划问题转换为线性规划问题
司守奎书上例子,好像是运筹学知识,挺妙的而且容易理解容易用
(下面的u,v应该是大于等于0,写错了)
市场上有n种资产Si(i=1,2,⋯,n)可以选择,现用数额为M的相当大的资金作一个时期的投资
这n种资产在这一时期内购买Si的平均收益率为ri,风险损失率为qi,
投资越分散,总的风险越少,总体风险可用投资的Si中最大的一个风险来度量
购买Si时要付交易费,费率为Pi,当购买额不超过给定值ui时,交易费按购买ui计算
另外,假定同期银行存款利率是r0,既无交易费又无风险(r0=5)
已知n=4时相关数据如表1.1
图表,投资的相关数据
si | ri(%) 收益率 | qi(%) 风险损失率 | pi(%) 购买费率 | ui(%) 最小购买额 |
---|
s1 | 28 | 2.5 | 1 | 103 |
s2 | 21 | 1.5 | 2 | 198 |
s3 | 23 | 5.5 | 4.5 | 52 |
s4 | 25 | 2.6 | 6.5 | 40 |
si表示第i种投资项目,如股票,债券等,i=0,1,⋯,n。其中s0指存入银行
ri、pi、qi分别表示si的平均收益率(非净),交易费率,风险损失率(i=0,1,⋯,n)。其中p0=0,q0=0
ui表示si的交易定额,i=1,⋯,n
xi表示投资项目si的资金,i=0,1,⋯,n
a表示投资风险度
Q表示总体收益
- 投资数额M相当大,为了便于计算,假设M=1
- 投资越分散,总的风险越小
- 总体风险用投资项目si中最大的一个风险来度量(这里的表述有点问题,应该叫 “风险额”)
- n+1种资产si之间是相互独立的
- 在投资的这一时期内ri、pi、qi为定值,不受意外因素影响
- 净收益和总体风险只受ri、pi、qi影响,不受其它因素干扰
- 总体风险用所投资的si中最大的一个风险来衡量,即max{qixi ∣ i=1,2,⋯,n}
- 购买si(i=1,⋯,n)所付交易费是一个分段函数,即交易费={pixi,piui,xi>uixi≤ui
- 要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型
目标函数⎩⎨⎧maxi=0∑n(ri−pi)ximinmax{qixi} s.t.⎩⎨⎧i=0∑n(1+pi)xi=Mxi≥0 i=0,1,⋯,n
- 模型一:固定风险水平,优化收益
要点:简化规划,转多目标规划模型为线性规划
在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个风险Mqixi≤a
可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划
maxi=0∑n(ri−pi)xi s.t.⎩⎨⎧Mqixi≤ai=0∑n(1+pi)xi=Mxi≥0 i=0,1,⋯,n
模型二:固定盈利水平,极小化风险
同理
模型三:投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合
因此对风险、收益分别赋予权重s(0<s≤1)和(1−s),s称为投资偏好系数
mins{max{qixi}}−(1−s)i=0∑n(ri−pi)xis.t. i=0∑n(1+pi)xi=M, xi≥0,i=0,1,⋯,n