matlab fgoalattain,MATLAB多目标优化
11.1.3 ?多目標優化
前面介紹的最優化方法只有一個目標函數,是單目標最優化方法。但是,在許多實際工程問題中,往往希望多個指標都達到最優值,所以就有多個目標函數,這種問題稱為多目標最優化問題。
多目標規劃有許多解法,下面列出常用的幾種。
(1)化多為少法:將多目標問題化成只有1個或2個目標的問題,然后用簡單的決策方法求解。最常用的是線性加權和法。
(2)分層序列法:將所有的目標按其重要程度依次排序,先求出第1個(最重要的)目標的最優解,然后在保證前一個目標最優解的前提下依次求下一個目標的最優解,一直求到最后一個目標為止。
(3)直接求非劣解法:先求出一組非劣解,然后按事先確定好的評價標準從中找出一個滿意的解。
(4)目標規劃法:當所有的目標函數和約束條件都是線性時,可以采用目標規劃法,它是20世紀60年代初由查納斯和庫珀提出來的。此方法對每一個目標函數都事前給定一個期望值,然后在滿足約束條件集合的情況下,找出使目標函數離期望值最近的解。
(5)多屬性效用法(MAUM):各個目標分別用各自的效用函數表示,然后構成多目標綜合效用函數,以此來評價各個可行方案的優劣。
(6)層次分析法:由T.沙基于1980年提出來。這種方法是通過對目標、約束條件、方案等的主觀判斷,對各種方案加以綜合權衡比較,然后評定優劣。
(7)重排次序法:把原來不好比較的非劣解,通過其他辦法排出優劣次序。此外,還有多目標群決策和多目標模糊決策等方法。
針對多目標優化問題,MATLAB提供了fgoalattain和fminimax 函數用來進行求解。篇幅有限,這里僅舉例說明fgoalattain函數的用法,fminimax函數的用法讀者可自行查閱幫助文檔。
【例11-7】??某工廠因生產需要欲采購一種原材料,市場上這種原材料有兩個等級,甲級單價2元/千克,乙級單價1元/千克。要求所花總費用不超過200元,購得原材料總量不少于100千克,其中甲級原材料不少于50千克,問如何確定最好的采購方案。
設x1、x2分別為采購甲級和乙級原材料的數量(千克),要求總采購費用盡量少,總采購重量盡量多,采購甲級原材料盡量多。
首先需要編寫目標函數的M文件myfun4.m,返回目標計算值。具體代碼如下:
function f=myfun4(x)
f(1)=2*x(1)+ x(2);
f(2)=-x(1)- x(2);
f(3)=-x(1);
給定目標,權重按目標比例確定,給出初始值。具體代碼如下:
>> goal=[200 -100 -50]; ??????% ?要達到的目標
>> weight=[2040 -100 -50]; ??% ?各個目標的權重
>> x0=[55 55]; ?????????????????% ?搜索的初始值
% ?約束條件
>> A=[2 1;-1 -1;-1 0];
>> b=[200 -100 -50];
>> lb=zeros(2,1);
% ?調用fgoalattain函數進行多目標優化
>> [x,fval,attainfactor,exitflag] =...
fgoalattain(@myfun4,x0,goal,weight,A,b,[],[],lb,[])
經過計算,MATLAB輸出計算結果為:
50 ???50
150 ?-100 ??-50
attainfactor =
3.4101e-010
所以,對于給定的權重比例,最好的采購方案是采購甲級原材料和乙級原材料各50千克。此時采購總費用為150元,總重量為100千克,甲級原材料總重量為50千克。
總結
以上是生活随笔為你收集整理的matlab fgoalattain,MATLAB多目标优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业银行网银签名控件官方版
- 下一篇: 计算机管理无法输入密码,光大网银控件已安