⑴ 使用matlab遺傳演算法工具箱如何加入目標函數中變數的約束條件啊,可否在M文件中加
首先回答你第一個問題:怎麼加入變數的約束條件?
打開遺傳演算法工具箱的窗體中會有下圖所示的選項,即是約束條件的編輯
至於添加的方式,這里要重點的提一下,首先將問題抽象成規劃問題的標准形式(如果你不懂什麼是標准形式的話,建議你去翻閱運籌學那本書,上告訴你什麼是標准形式),然後用矩陣語言寫出來,最後將矩陣的系數填寫到線性不等約束和線性相等約束中,同時定義所求變數x的上界和下界(記住有多少個變數就有多少列,如果你發現有些條件中沒有出現某些變數,那麼就應該用0補足,這個是matlab解決規劃問題與lingo想比較麻煩的一個地方,)。
然後回答你第二個問題:可否在M文件中添加約束條件?
當然可以,界面的東西是為了方便不熟悉matlab編程的人而設計出來的,但是其底層的演算法和介面肯定是有的。
碰到不懂的函數,請記得:help函數名
helpga之後會得到一下一些函數
ga
//這個是定義
Syntax //這個是語法也即是調用的規則
x=ga(fitnessfcn,nvars)
x=ga(fitnessfcn,nvars,A,b)
x=ga(fitnessfcn,nvars,A,b,Aeq,beq)
x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)
x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)
x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)
x=ga(problem)
[x,fval]=ga(...)
[x,fval,exitflag]=ga(...)直接給你將最長的那個吧
x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)
X是返回所求的解
fitnessfcn是適應度函數
nvars是適應度函數中所含變數的維數
A是不等式約束中變數的系數矩陣,b是不等式約束中不含變數的值矩陣
Aeq是等式約束中變數的系數矩陣,beq是等式約束中不含變數的值矩陣
LB是下界,UB是上界
nonlcon是非線性約束條件
至於options嘛 我也木有用過,其實你也可以不用管的。
懂了木有呢,親?
⑵ 怎麼調用matlab遺傳演算法工具箱啊
工具箱要安裝到指定的路徑,好久沒有用了,具體我也記不住了,你可以
網路搜索專
一下。屬路徑安裝不對就會出問題。如果安裝對了,你用help命令顯示一下函數.
函數的m文件不用運行,直接調用就可以。eval=-eval;
以後eval變為負的了,而ga函數要求參數必須是正的。
⑶ Matlab自帶遺傳演算法工具箱簡介
Matlab提供遺傳演算法工具箱(Matlab2010版本之後),方便解決簡單的優化問題,官方提示後續可能取消該功能。個人不建議使用工具箱求解數學規劃問題,參數設置零散復雜,容易錯漏,但可學習作為Demo問題的演示工具。
按從上到下,從左到右的順序對Matlab自帶的遺傳演算法工具箱GUI界面進行介紹和使用注意事項說明。
對應於非線性約束求解器
指定另外一個最小值函數,在遺傳演算法結束之後計算,在整數值限制的時候不可用。
⑷ 求解:怎樣使用MATLAB中的遺傳演算法計算器Optimization Tool中的GA——Genetic Algorithm,如圖,重謝
比如通過MATLAB遺傳演算法的思想求解f(x)=x*sin(10pi*x)+2.0,-1<=x<=2的最大值問題,結果精確版到3位小數。
首先在matlab命令權窗口輸入f=@(x)-(x*sin(10*pi*x)+2) 輸出結果為
>> f=@(x)-(x*sin(10*pi*x)+2)
f =
@(x)-(x*sin(10*pi*x)+2)
接著輸入gatool會打開遺傳演算法工具箱
顯示51代之後演算法終止,最小結果為-3.85027334719567,對應的x為1.851,由於自定義函數加了負號,所以原式的最大值為3.85027334719567,對應的x為1.851。
不過這是遺傳演算法得到的結果,每次運行的結果可能會有所不同,而且不一定是確切的最大值。
遺傳演算法適合應用在一些求最優解比較復雜的問題(常規的演算法運算時間過長,甚至無法解決)。
⑸ 用遺傳演算法工具箱求解一個多目標優化問題,現在需要一個matlab程序,求高人指點
用遺傳演算法工具箱求解一個多目標優化問題的步驟:
1、根據題意,建立自定專義目標函數,ga_fun1(x)
2、在命令窗屬口中,輸入
>> optimtool %調用遺傳演算法工具箱
3、在遺傳演算法工具箱界面中,分別對Fitnessfunction框內輸入@ga_fun1();A框內輸入[1,1,1];b框內輸入16;Aeq框內輸入[];beq框內輸入[];Lower框內輸入[0,0,0];Upper框內輸入[];
4、單擊Start。得到x=4.508 y=2.513 z=1.912值。
⑹ 請教怎麼在matlab上安裝遺傳演算法工具箱啊,為什麼我安不上啊
直接在命令窗口裡邊輸入gatool就行了,用遺傳演算法還可以使用ga函數,具體使用格式可以在help系統里看ga,你還可以按照如下步驟打開遺傳演算法工具箱:1,打開matlab,2點擊左下方的start按鈕
3,點toolboxes,打開後選擇genetic
algorithm
and
direct
search
然後就可以進入gatool了,然後就會彈出ga工具箱(註:我的版本是7.7的,不同版本可能不同)