多目標規劃模型(靈敏度分析)
阿新 • • 發佈: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('綜合指標的值')