董如意,劉亞男
(吉林化工學(xué)院 信息與控制工程學(xué)院,吉林 吉林 132022)
遺傳算法[1-2](Genetic Algorithm,GA)是目前應(yīng)用范圍最廣的元啟發(fā)式算法之一,通過模擬生物“優(yōu)勝劣汰、適者生存”的自然法則,采用并行的概率搜索機制,尋找適應(yīng)度函數(shù)值的最優(yōu)化結(jié)果,對目標函數(shù)沒有過多限制,具有良好的全局搜索能力[3].但標準遺傳算法中交叉算子和變異算子使用的是固定數(shù)值,導(dǎo)致尋優(yōu)過程中種群多樣性下降,過早收斂于局部最優(yōu)解,嚴重影響了最優(yōu)解的質(zhì)量和搜索速度.在眾多對遺傳算法的研究中,使用數(shù)學(xué)計算方法來克服傳統(tǒng)算法對初始信息極其敏感的缺點,取得了較大的成功[4],然而大多改進方法目前僅集中在理論研究方面,對于實際工程問題的求解還需要進一步完善.因此,結(jié)合數(shù)學(xué)方法,針對傳統(tǒng)遺傳算法本身存在的缺點,設(shè)計了一種自適應(yīng)調(diào)整交叉和變異的遺傳算法,同時將改進的遺傳算法應(yīng)用于倒立擺控制器的設(shè)計中,實驗表明,相比于傳統(tǒng)遺傳算法,改進的遺傳算法對倒立擺系統(tǒng)關(guān)鍵參數(shù)的尋優(yōu)效果更好,倒立擺達到穩(wěn)定的次數(shù)更多.
遺傳算法是1975年由Holland提出的一種隨機的并行搜索算法,主要模擬生物群體在自然選擇中的作用機理和繁衍過程,包括生物增殖、雜交和基因突變等遺傳現(xiàn)象.與其他數(shù)值優(yōu)化算法相比,遺傳算法具有很好的全局收斂性和普適性,廣泛應(yīng)用于人工智能、工業(yè)優(yōu)化、數(shù)學(xué)求解以及相關(guān)工程實踐中.
標準遺傳算法是基于非確定性的概率搜索機制,將問題的可行解進行二進制編碼,模擬生物的染色體特征,通過計算適應(yīng)度值的來保留最佳的可行解,然后按照一定的概率完成染色體的交叉和變異,再以精英選擇的方式保留最優(yōu)個體的特征,以此不斷迭代,直到找到全局適應(yīng)度值最優(yōu)的可行解.標準遺傳算法的優(yōu)化流程圖如圖1所示.
圖1 標準遺傳算法流程圖
盡管遺傳算法具有操作簡單、實用性強的特點,同時也存在明顯的不足,例如局部搜索能力差、容易早熟、后期收斂速度慢、收斂精度低等.特別是標準遺傳算法的交叉率和變異率為固定的數(shù)值,會導(dǎo)致在算法優(yōu)化的后期使種群失去多樣性的優(yōu)勢,面對較復(fù)雜的目標函數(shù)時,嚴重影響算法的性能.因此,針對標準遺傳算法的缺點,結(jié)合數(shù)學(xué)理論,提出了一種改進的遺傳算法.
中改進的遺傳算法主要解決以下幾個問題:
1.在最初迭代中,交叉率、變異率均不能降為零,又要提高對最優(yōu)解的搜索速度.
2.當(dāng)平均適應(yīng)度值與最大適應(yīng)度值的差值較大時,迭代過程不會出現(xiàn)線性變化,有效避免種群進化遲緩或停滯.
3.算法后期,為了保留優(yōu)良個體,在滿足精度的情況下,緩慢減小交叉率和變異率.
基于上述問題,對交叉率、變異率等特征進行了一系列非線性的、可自適應(yīng)性的優(yōu)化調(diào)整,以此來提升算法的優(yōu)化能力.首先,利用sigmoid函數(shù)對交叉率進行改進,該函數(shù)的數(shù)學(xué)模型為S形曲線,增長趨勢會隨參數(shù)的變化而逐漸平緩,簡化方程如式(1)所示.
(1)
sigmoid函數(shù)的仿真曲線圖2所示.
x圖2 sigmoid函數(shù)曲線圖
通過基于sigmoid函數(shù)的自適應(yīng)調(diào)節(jié),遺傳算法的交叉率在前期迭代過程中保持最大值,增加個體的多樣性,提高尋優(yōu)過程的全局搜索能力,經(jīng)過一定次數(shù)的迭代后,交叉率會逐漸降低至最小值,從而完成全局搜索向局部搜索的平穩(wěn)過渡,由改進的式(2)可知,Pc中favg和fmax隨sigmoid函數(shù)進行非線性調(diào)整.
(2)
其中,f是個體適應(yīng)度;favg是適應(yīng)度值的平均值;fmax是適應(yīng)度值的最大值;fmin是適應(yīng)度值的最小值;f′代表在交叉?zhèn)€體中擇優(yōu)選取;k1是曲線平滑參數(shù);Pc max,Pc min是交叉率的最大值和最小值.
為了進一步提高遺傳算法的局部搜索能力,采用一種新的變異方式,即十進制變異法.Pm按照個體適應(yīng)度值從小到大排序,較優(yōu)秀的個體排在后邊,把選擇的優(yōu)秀個體轉(zhuǎn)成十進制,然后以循環(huán)方式加上遞增的十進制數(shù),該十進制數(shù)由當(dāng)前變異率的最大值和最小值確定,最后選擇一個最優(yōu)個體進行變異.十進制變異法可以在一定程度上增加變異的隨機性,擴展變異的范圍和概率,讓尋優(yōu)結(jié)果可以更好地跳出局部最優(yōu)解,保證收斂速度的同時提升算法的精確度.變異過程的調(diào)節(jié)如式(3)所示.
(3)
其中,T為最大迭代次數(shù);t為當(dāng)前迭代次數(shù);Pm max,Pm min為變異率的最大值和最小值.
倒立擺系統(tǒng)是一種十分經(jīng)典的工程欠驅(qū)動體系[5],是控制、數(shù)學(xué)、力學(xué)等理論的有機結(jié)合和綜合應(yīng)用.由于倒立擺系統(tǒng)具有高階非線性、自然不穩(wěn)定等在復(fù)雜工程中也十分普遍的特性[6],其相關(guān)控制算法的研究在機器人、智能控制[7]以及其他諸多領(lǐng)域均有所應(yīng)用.因此,將倒立擺控制作為研究的控制對象,具有很好的數(shù)學(xué)理論實踐意義和技術(shù)工程分析指導(dǎo)研究意義[8-9].
由于直線一級倒立擺自身具有非線性及不穩(wěn)定性,可以適當(dāng)忽略個別次要因素,例如角度細小偏差、系統(tǒng)摩擦力等,從而簡化該運動系統(tǒng).倒立擺控制系統(tǒng)的數(shù)學(xué)模型如圖3所示.
圖3 直線一級倒立擺的結(jié)構(gòu)示意圖
圖4 倒立擺控制模型
遺傳算法優(yōu)化倒立擺系統(tǒng)的流程如下:
1.隨機產(chǎn)生初始種群.
2.按照指定策略判斷參數(shù)的適應(yīng)度是否達到優(yōu)化準則或終止條件,若可行,輸出最優(yōu)解,判斷結(jié)束;否則,進行下一步.
3.依據(jù)適應(yīng)度值選擇父代種群,選擇適應(yīng)度較高的參數(shù),適應(yīng)度較低的參數(shù)被淘汰.
4.按照一定的方法對父代的染色體進行交叉操作,生成子代.
5.對子代染色體進行變異操作.
6.交叉和變異產(chǎn)生新一代種群,隨即重復(fù)執(zhí)行步驟2,直到產(chǎn)生最優(yōu)可行解.
使用固高公司開發(fā)的倒立擺系統(tǒng)模型,模型具體參數(shù)如表1所示.
表1 實際模型參數(shù)
在改進遺傳算法優(yōu)化倒立擺系統(tǒng)的問題上,種群大小、迭代次數(shù)、交叉、遺傳算子對倒立擺系統(tǒng)的優(yōu)化效果都有著一定的影響,而重點研究基于sigmoid函數(shù)的自適應(yīng)調(diào)整的交叉率和基于十進制的變異率對倒立擺穩(wěn)定性的影響.因此采用控制變量法,設(shè)置種群大小為20,迭代次數(shù)為200次,在Python3.8上進行仿真實驗,比較標準遺傳算法和改進遺傳算法的優(yōu)化能力.
表2對比分析了標準遺傳算法下恒定的交叉率和變異率與改進遺傳算法的自適應(yīng)調(diào)整交叉率和變異率的區(qū)別,從表中可以清楚地體現(xiàn)出,改進后的遺傳算法對倒立擺的穩(wěn)定效果更好.
表2 標準遺傳算法與改進遺傳算法對比
表3為表2的進一步解釋說明,是在不同迭代次數(shù)下的參數(shù)值,隨著迭代次數(shù)的增加,優(yōu)化后的參數(shù)值效果更好,倒立擺的穩(wěn)定效果更好.
表3 優(yōu)化后的參數(shù)值
圖5為兩種算法在不同迭代次數(shù)下的倒立擺堅持次數(shù)的折線圖,從中可清晰看出,標準遺傳算法對倒立擺穩(wěn)定控制參數(shù)的優(yōu)化效果并不理想,結(jié)果有大提升空間.改進遺傳算法下倒立擺堅持的次數(shù)明顯提高,隨著迭代次數(shù)的不斷增大,倒立擺的穩(wěn)定效果更好.
迭代次數(shù)圖5 倒立擺堅持次數(shù)折線圖
該實驗的仿真結(jié)果表明,改進的遺傳算法在實際測試上展現(xiàn)了良好的可行性,能夠更好、更快地找到優(yōu)質(zhì)可行解.經(jīng)過多輪200次迭代測試下,改進的遺傳算法相比標準遺傳算法對倒立擺的穩(wěn)定控制效果更好,即該倒立擺已經(jīng)實現(xiàn)穩(wěn)定控制.
通過分析標準遺傳算法中交叉算子和變異算子的特點,分別對二者進行了自適應(yīng)調(diào)整,利用sigmoid函數(shù)實現(xiàn)了前期全局搜索向后期局部搜索的平穩(wěn)過渡,彌補了標準遺傳算法種群多樣性降低和搜索速度遲緩等不足.十進制變異方法在保留了最優(yōu)個體的同時,增大了個體跳出局部最優(yōu)的能力,避免了算法早熟,提升了最優(yōu)解的品質(zhì).以直線一級倒立擺智能控制系統(tǒng)作為主要研究對象,基于改進的遺傳算法對倒立擺智能控制系統(tǒng)進行參數(shù)優(yōu)化,并通過仿真實驗得出,相較于原始遺傳算法,改進的遺傳算法在倒立擺穩(wěn)定控制上的優(yōu)化效果更好.