首先回答妳第壹個問題:怎麽加入變量的約束條件?
打開遺傳算法工具箱的窗體中會有下圖所示的選項,即是約束條件的編輯
至於添加的方式,這裏要重點的提壹下,首先將問題抽象成規劃問題的標準形式(如果妳不懂什麽是標準形式的話,建議妳去翻閱運籌學那本書,上告訴妳什麽是標準形式),然後用矩陣語言寫出來,最後將矩陣的系數填寫到線性不等約束和線性相等約束中,同時定義所求變量x的上界和下界(記住有多少個變量就有多少列,如果妳發現有些條件中沒有出現某些變量,那麽就應該用0補足,這個是matlab解決規劃問題與lingo想比較麻煩的壹個地方,)。
然後回答妳第二個問題:可否在M文件中添加約束條件?
當然可以,界面的東西是為了方便不熟悉matlab編程的人而設計出來的,但是其底層的算法和接口肯定是有的。
碰到不懂的函數,請記得:help?函數名
help?ga?之後會得到壹下壹些函數
ga
Find?minimum?of?function?using?genetic?algorithm? //這個是定義
? 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嘛? 我也木有用過,其實妳也可以不用管的。
懂了木有呢,親?