目录

2024-12-06-数学建模优化模型线性规划典型案例分析及编程实现MATLAB

【数学建模】优化模型:线性规划典型案例分析及编程实现(MATLAB)

目录



1.1线性规划问题

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

自从1947年提出求解线性规划的单纯型方法以来,线性规划在理论上趋向成熟,在实际应用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题后,线性规划应用的领域更为广泛,已成为现代管理中经常采用的方法之一。

1.1.1线性规划的实例与定义

例题 1.1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4千元和3千元。生产甲机床需要A、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需要A、B、C三种机器加工,加工时间分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使利润最大?

可以设该厂生产 https://latex.csdn.net/eq?%24x_1%24 台甲机床和 https://latex.csdn.net/eq?%24x_2%24 台乙机床时总利润Z最大,则:

https://i-blog.csdnimg.cn/blog_migrate/d44fdaad86f4ff85da338340bbc6a59a.png

https://latex.csdn.net/eq?%24x_1%24https://latex.csdn.net/eq?%24x_2%24 称为决策变量。由于上面的目标函数及约束条件均为线性函数,故称为线性规划问题。

总之,线性规划问题是一组在约束条件的限制下,求一线性目标函数最大或最小的问题。

在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,往往也是很困难的一布,模型建立的是否恰当,直接影响到求解。而选择适当的决策变量,是建立有效模型的关键之一。

1.1.2线性规划问题的解的概念

一般线性规划问题的数学标准型为:

https://i-blog.csdnimg.cn/blog_migrate/4f7e2d0f4056805b4fc36f1df09c186d.png

式中: https://latex.csdn.net/eq?%24b_i%24

=0,i=1,2,···,m。

可行解 满足约束条件的解x=[ https://latex.csdn.net/eq?%24x_1%24 , https://latex.csdn.net/eq?%24x_2%24 ,···, https://latex.csdn.net/eq?%24x_n%24 ]的转置,称为线性规划问题的可行解,而使目标函数达到最大值的可行解称为最优解。

可行域 所有可行解构成的集合称为问题的可行域,记为R。

1.1.3线性规划的MATLAB标准形式及软件求解

线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于等号也可以是大于等号。为了避免这种形式多样性带来的不便,MATLAB中规定线性规划的标准形式为:

https://i-blog.csdnimg.cn/blog_migrate/ca464f28346b54d3927ab7719176d1ab.png

式中:f,x,beq,lb,ub为列向量,其中f称为价值向量,被称为资源向量,Aeq,A为矩阵。MATLAB中求解线性规划的命令为

[x,fval]=linprog(f,A,b)

[x,fval]=linprog(f,A,b,Aeq,beq)

[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

式中:x返回决策向量的取值;fval返回目标函数的最优值;f为价值向量;A和b对应线性不等式约束;Aeq和beq对应线性等式约束;lb和ub分别对应决策向量的下界向量和上界向量。

例题 1.2 求解下列线性规划问题

https://i-blog.csdnimg.cn/blog_migrate/286f4c4662a8af8d6e7cf390bd1f1e53.png

 f=[-2;-3;5];
 A=[-2,5,1;1,3,1];
 b=[-10;12];
 Aeq=[1,1,1];
 beq=7;
 lb=[0;0;0];
 [x,fval]=linprog(f,A,b,Aeq,beq,lb);
x,fval=-fval

x =

6.4286

0.5714

0

fval =

14.5714

1.1.4可以转化为线性规划的问题

很多看起来不是线性规划的问题,也可以通过变换为线性规划的问题来解决。

例题 1.3 数学规划问题:

https://i-blog.csdnimg.cn/blog_migrate/b5df2f3cfbd75b343c49df3876165c76.png

要把上面的问题变换成线性规划的问题,只要注意到事实:对任意的 https://latex.csdn.net/eq?%24x_1%24 ,存在 https://latex.csdn.net/eq?%24u_i%24https://latex.csdn.net/eq?%24v_i%24

=0,满足:

https://i-blog.csdnimg.cn/blog_migrate/1459f2e1fc9381f7e53f90af20751c4e.png

例题 1.4 求解下列数学规划问题:

https://i-blog.csdnimg.cn/blog_migrate/8fa86f6b6f4de697992d3f3503f8d59f.png

解:做变量代换,把模型重新变为线性规划模型,式中:

https://i-blog.csdnimg.cn/blog_migrate/cfd71565e462cab53a55cf9e822b8eb2.png

计算的MATLAB程序如下:

f=[1,2,3,4,1,2,3,4];
a=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];
a=[a,-a];
b=[-2;-1;-0.5];
[y,fval]=linprog(f,a,b,[],[],zeros(8,1));
x=y(1:4)-y(5:end)%便换回原来的问题的解,x=u-v
fval

得到最优解 https://latex.csdn.net/eq?%24x_1%24 =-2; https://latex.csdn.net/eq?%24x_2%24

https://latex.csdn.net/eq?%24x_3%24

https://latex.csdn.net/eq?%24x_4%24 =0;最优值z=2

1.2投资的收益和风险

1.2.1问题提出

市场上有n种资产 https://latex.csdn.net/eq?%24s_i%24 (i=1,2,···,n)可以选择,现用数额为M的相当大的资金做一个时期的投资。这n种资产在这一时期内购买 https://latex.csdn.net/eq?%24s_i%24 的平均收益率为 https://latex.csdn.net/eq?%24r_i%24 ,风险损失率为 https://latex.csdn.net/eq?%24q_i%24 ,投资越分散,总的风险越少,总体风险可用投资的 https://latex.csdn.net/eq?%24s_i%24 中最大的风险来度量。

购买 https://latex.csdn.net/eq?%24s_i%24 时要付交易费,费率为 https://latex.csdn.net/eq?%24p_i%24 ,当购买额不超过给定值 https://latex.csdn.net/eq?%24u_i%24 时,交易费按购买 https://latex.csdn.net/eq?%24u_i%24 计算。另外,假定同期银行存款利率是 https://latex.csdn.net/eq?%24r_0%24 ,既无交易费又无风险( https://latex.csdn.net/eq?%24r_0%24 =5%)。已知n=4时相关数据如下表所示:

$s_i$$r_i$ /%$q_i$ /%$p_i$ /%$u_i$ /%
$s_1$282.51103
$s_2$211.52198
$s_3$235.54.552
$s_4$252.66.540

试给该公司设计一种投资组合方案,即用给定资金M,有选择地购买若干种资产或银行生息,使净收益尽可能大,总体风险尽可能小。

1.2.2符号规定和假设

1、符号规定

(1) https://latex.csdn.net/eq?%24s_i%24 表示第i种投资项目,如股票债券等,i=0,1,···,n,其中 https://latex.csdn.net/eq?%24s_0%24 指的是存入银行。

(2) https://latex.csdn.net/eq?%24r_i%24https://latex.csdn.net/eq?%24q_i%24https://latex.csdn.net/eq?%24p_i%24 分别表示 https://latex.csdn.net/eq?%24s_i%24 的平均收益率、风险损失率,交易费率,i=0,1,···,n,其中 https://latex.csdn.net/eq?%24p_0%24

https://latex.csdn.net/eq?%24q_0%24 =0

(3) https://latex.csdn.net/eq?%24u_i%24 表示 https://latex.csdn.net/eq?%24s_i%24 的交易定额,i=1,2,···,n

(4) https://latex.csdn.net/eq?%24x_i%24 表示投资项目 https://latex.csdn.net/eq?%24s_i%24 的资金,i=0,1,···,n

(5)a表示投资风险度

(6)Q表示总体收益

2、基本假设

(1)投资数额M相当大,为了便于计算,假设M=1

(2)投资越分散,总的风险越小

(3)总体风险用投资项目 https://latex.csdn.net/eq?%24s_i%24 中最大的一的风险来度量

(4)n+1种资产 https://latex.csdn.net/eq?%24s_i%24 之间是相互独立的

(5)在投资的这段时期内, https://latex.csdn.net/eq?%24r_i%24https://latex.csdn.net/eq?%24q_i%24https://latex.csdn.net/eq?%24p_i%24 为定值且不受外界因素的影响

(6)净收益和总体收益只受 https://latex.csdn.net/eq?%24r_i%24https://latex.csdn.net/eq?%24q_i%24https://latex.csdn.net/eq?%24p_i%24 影响,不受其他因素干扰

1.2.3模型的建立与分析

(1)总体风险用所投资的 https://latex.csdn.net/eq?%24s_i%24 中最大的一个风险来衡量,即

max { https://latex.csdn.net/eq?%24q_i%24 · https://latex.csdn.net/eq?%24x_i%24 | i=1,2,···,n }。

(2)购买 https://latex.csdn.net/eq?%24s_i%24 (i=1,2,···,n)所付交易费是一个分段函数,即

https://i-blog.csdnimg.cn/blog_migrate/69e738353d4c500af6822821d471e005.png

而题目所给定的定值 https://latex.csdn.net/eq?%24u_i%24 (单位:元)相对总投资M很小, https://latex.csdn.net/eq?%24p_i%24 https://latex.csdn.net/eq?%24u_i%24 更小,这样购买 https://latex.csdn.net/eq?%24s_i%24 的净收益可以简化为( https://latex.csdn.net/eq?%24r_i%24

https://latex.csdn.net/eq?%24p_i%24 ) https://latex.csdn.net/eq?%24x_i%24

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

目标函数为:

https://i-blog.csdnimg.cn/blog_migrate/14eae6fe24e7d4608d126de01d8a9e5b.png

约束条件为:

https://i-blog.csdnimg.cn/blog_migrate/4f3eca7ed1c24bb5209dc3d2c4f435ed.png (4)模型简化

在实际投资中,投资者承担的风险程度不一样,若给定风险一个界限a,使最大的一个风险为a,即 https://latex.csdn.net/eq?%24q_i%24 https://latex.csdn.net/eq?%24x_i%24 /M https://latex.csdn.net/eq?%5Cleq a(i=1,2,···,n),可找到相应的投资方案。这样把多目标规划变成一个,目标的线性规划。

模型一 固定风险水平,优化收益

https://i-blog.csdnimg.cn/blog_migrate/c63d0d89cda2fa96dc33845123e1b746.png

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

模型二 固定盈利水平,极小化风险

https://i-blog.csdnimg.cn/blog_migrate/65eb826ae517bc7eb63fbe4061ef7b8d.png

投资者在权衡资产风险和预测收益两方面,希望选择一个令自己满意的投资组合。因此对风险、收益分别赋予权重s(0<s https://latex.csdn.net/eq?%5Cleqslant 1)和1-s,s称为投资偏好系数

模型三

https://i-blog.csdnimg.cn/blog_migrate/71cb32f9d88675ceaf62f86e1bbadf05.png

1.2.4模型求解

以模型一为例:

https://i-blog.csdnimg.cn/blog_migrate/f07fb86faa585bca477c4c1e05f738c5.png

基于MATLAB求解方法如下:

clc,clear
a=0;
hold on
while a < 0.05
    c = [-0.05,-0.27,-0.19,-0.185,-0.185];
    A = [zero(4,1),diag([0.025,0.015,0.055,0.026])];
    b = a * ones(4,1);
    Aeq = [1,1.01,1.02,1.045,1.065];
    beq = 1;
    LB = [5,1];
    [x,Q] = linprog(c,A,b,Aeq,beg,LB);
    a=a+0.001;
end
xlabel('a'),ylabel('Q')

1.2.5结果分析

https://i-blog.csdnimg.cn/blog_migrate/a6a675923b4b5b8c756865cc550f3125.jpeg

可以看出

(1) 风险大,收益也大

(2)当投资越分散时,投资者承担的风险越小,这与题意一致。冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资

(3)在a= 0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长很快。在这一点右边,风险增加很大时,利润增长很缓慢,所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的转折点作为最优投资组合,大约是a= 0.6%,Q=20%,所对应投资方案为风险度a= 0.006,收益Q= 0.2019 ,x,= 0,x= 0.24,x,=0.4, X3= 0.1091, x4 = 0.2212.

68747470733a2f2f626c6f:672e6373646e2e6e65742f323430315f38333238333531342f:61727469636c652f64657461696c732f313338393736383532