《零基础数学建模》——多目标规划+灵敏性分析

  • Post author:
  • Post category:其他




​ 前言

本文大部分是对于数学建模清风老师的课程学习总结归纳而来,我的理解可能有错误,大家发现错误可以在评论区批评指正,课程地址:

《数学建模清风》


前置文章请了解:




一、多目标规划模型概念

若一个规划问题中有多个目标,例如企业在保证利润最大时也要保证生产时产生的污染最少,这种情况下我们可以对多目标函数进行加权组合,使问题变为单目标规划,然后再利用之前学的知识进行求解。


注意:

  1. 要先将多个目标函数统一为最大化或最小化问题后,才可以进行加权组合;
  2. 如果目标函数的量纲不相同,则需要对其进行标准化后再进行加权,标准化的方法一般使用目标函数除以某一个常量,该常量是这个目标函数的某个取值,具体取何值可根据经验确定;
  3. 对多目标函数进行加权求和时,权重需要由该问题领域的专家给定,在实际建模比赛中,若无特殊说明,我们可令权重相同。



二、例题讲解



实现代码:

%%  多目标规划问题
w1 = 0.4;  w2 = 0.6;  % 两个目标函数的权重  x1 = 5  x2 = 2
w1 = 0.5;  w2 = 0.5;  % 两个目标函数的权重  x1 = 5  x2 = 2
w1 = 0.3;  w2 = 0.7;  % 两个目标函数的权重  x1 = 1  x2 = 6
c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]'; ub = [5 6]'; % 上下界
[x,fval] = linprog(c,A,b,[],[],lb,ub)
f1 = 2*x(1)+5*x(2)
f2 = 0.4*x(1) + 0.3*x(2)



三、灵敏度分析

下面我们对例题的结果进行灵敏度分析,

灵敏度分析

是指从定量分析的角度研究有关因素发生某种变化对某一个或某一组关键指标影响程度的一种不确定分析技术。其实质是

通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。


接下来我们改变



f

1

f_1







f










1

























f

2

f_2







f










2





















的权重,来观察对结果的影响。(由于两个权重和为1,因此我们只需要改变



f

1

f_1







f










1





















的权重即可),下面是图形:



%% 敏感性分析
clear;clc
W1 = 0.1:0.001:0.5;  W2 = 1- W1;  
n =length(W1);
F1 = zeros(n,1);  F2 = zeros(n,1);   X1 = zeros(n,1);  X2 = zeros(n,1);   FVAL = zeros(n,1);
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]; ub = [5 6]; % 上下界
for i = 1:n
    w1 = W1(i);  w2 = W2(i);
    c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数
    [x,fval] = linprog(c,A,b,[],[],lb,ub);
    F1(i) = 2*x(1)+5*x(2);
    F2(i) = 0.4*x(1) + 0.3*x(2);
    X1(i) = x(1);
    X2(i) = x(2);
    FVAL(i) = fval;
end

% 「Matlab」“LaTex字符汇总”讲解:https://blog.csdn.net/Robot_Starscream/article/details/89386748
% 在图上可以加上数据游标,按住Alt加鼠标左键可以设置多个数据游标出来。
figure(1)
subplot(1,2,1);
plot(W1,F1,W1,F2)
xlabel('f_{1}的权重') 
ylabel('f_{1}和f_{2}的取值')
legend('f_{1}','f_{2}')
subplot(1,2,2);
plot(W1,X1,W1,X2)
xlabel('f_{1}的权重') 
ylabel('x_{1}和x_{2}的取值')
legend('x_{1}','x_{2}')

figure(2)
plot(W1,FVAL)  % 看起来是两个直线组合起来的下半部分
xlabel('f_{1}的权重') 
ylabel('综合指标的值')

可以看出,



f

1

f_1







f










1





















的权重的转折点在



0.333

0.334

0.333-0.334






0.333













0.334





之间,当



f

1

f_1







f










1





















的权重小于这个转折点时,



x

1

=

1

,

x

2

=

6

x_1=1,x_2=6







x










1




















=








1


,





x










2




















=








6





,大于这个转折点时,



x

1

=

5

,

x

2

=

2

x_1=5,x_2=2







x










1




















=








5


,





x










2




















=








2





。其主要全因是:当



f

1

f_1







f










1





















的权重越小时,厂家对环境污染的权重就越大,那么厂家就更加倾向于生产污染较少的产品



B

B






B





,尽管



B

B






B





的生产费用要远高于产品



A

A






A







版权声明:本文为qq_60918851原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。