多目标规划模型(灵敏度分析)

时间:2021-09-04
本文章向大家介绍多目标规划模型(灵敏度分析),主要包括多目标规划模型(灵敏度分析)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

  • 将多目标规划转化为单目标规划问题,即对上面的两个目标函数进行加权。

  • 如果两个目标函数的单位不同,我们需要首先对目标函数进行标准化来消除量纲的影响,然后再进行加权。(利用每个函数的参考值相除来相除量纲)

遇到要用到权重的规划问题需考虑到用灵敏度分析

敏感性分析:指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。

操作方法

通过改变f1和f2的权重,来观察对结果的影响

%%  多目标规划问题
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)


%% 敏感性分析
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

% 在图上可以加上数据游标,按住Alt加鼠标左键可以设置多个数据游标出来。
figure(1) 
plot(W1,F1,W1,F2)
xlabel('f_{1}的权重') 
ylabel('f_{1}和f_{2}的取值')
legend('f_{1}','f_{2}')

figure(2)
plot(W1,X1,W1,X2)
xlabel('f_{1}的权重') 
ylabel('x_{1}和x_{2}的取值')
legend('x_{1}','x_{2}')

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

在图上可以加上数据游标,按住Alt加鼠标左键可以设置多个数据游标出来。

 相当于:两条函数直线,取两个函数的最小值

原文地址:https://www.cnblogs.com/keep--fighting/p/15227618.html