王 瑋, 何 松, 楊青斌
(1.石河子國能能源投資有限公司西工業(yè)區(qū)分公司, 新疆 石河子 832000;2.石河子國能能源投資有限公司南熱電, 新疆 石河子 832000;3.新能源研究所中國電力科學(xué)研究院, 江蘇 南京 210003)
現(xiàn)實(shí)生活中,單目標(biāo)、多約束優(yōu)化模型的求解較為普遍。例如,在機(jī)械螺母加工過程中,為使螺母符合技術(shù)要求,需要使螺母需滿足尺寸、棱角、厚度,甚至鑄件重量等多個(gè)方面的要求。多于這類問題的優(yōu)化或模型求解,約束優(yōu)化條件的合理處理尤為關(guān)鍵。傳統(tǒng)的單目標(biāo)無約束或者目標(biāo)與約束均唯一的模型求解方法難以直接適用該類問題或模型求解。因此,設(shè)計(jì)一種單目標(biāo)、多約束的優(yōu)化模型求解算法尤為重要與緊迫。
MATALB平臺(tái)具有較強(qiáng)的數(shù)字處理與計(jì)算能力,以及良好的交互式語言編寫能力,分別論述。
MATALB平臺(tái)具備優(yōu)良的算法開發(fā)、數(shù)據(jù)可視化處理與分析、交互式處理與分析的特性。其中,simulink是MATALB平臺(tái)中一個(gè)可對(duì)現(xiàn)約束、多目標(biāo)實(shí)動(dòng)態(tài)系統(tǒng)多域建模、多時(shí)間尺度分析子平臺(tái),對(duì)于許多問題可視化處理、分析以及仿真具有重要意義。
MATALB平臺(tái)的數(shù)字處理與計(jì)算能力主要體現(xiàn)于以下幾個(gè)方面:
1)數(shù)據(jù)分析與處理能力。
2)符號(hào)數(shù)學(xué)的計(jì)算能力。
3)概率統(tǒng)計(jì)與分析能力。
4)偏微分仿真的設(shè)計(jì)與處理能力。
以符號(hào)數(shù)學(xué)的計(jì)算能力為例,論述MATALB平臺(tái)強(qiáng)大的數(shù)字處理與計(jì)算能力。在模型構(gòu)建或者求解過程中,為突出待求解問題的物理意義與客觀規(guī)律,需將求解問題進(jìn)行一般化的數(shù)學(xué)處理,例如計(jì)算某一地區(qū)重力加速度時(shí),一般都是加速度抽象地設(shè)置為符號(hào)g,通過多次重力加速度的計(jì)算,最終獲取該地區(qū)的重力加速度。此時(shí),原本的僅可處理數(shù)字符號(hào)的語言或平臺(tái)就難以處理該類問題。而MATALB平臺(tái)簡單的幾條語句就可處理該類問題,如下所示:
上述語句中,syms、*、/分別為 MATALB 平臺(tái)中符號(hào)變量的創(chuàng)建語句、乘法表示方法、除法表示方法。在此基礎(chǔ)上,可進(jìn)行有關(guān)重力加速度g的處理與計(jì)算。
MATALB平臺(tái)可與C/C++a語言、JAVA語言等多種語言建立良好的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)多種語言的互聯(lián)互通,優(yōu)勢(shì)互補(bǔ)。例如,通過與JAVA語言的交互,可以極為方便的獲取互聯(lián)網(wǎng)或其他數(shù)據(jù)庫的數(shù)據(jù)。如下為在MATALB平臺(tái)測試的JAVA虛擬機(jī)信息:命令窗口輸入:version-java
命令窗口現(xiàn)實(shí)信息:Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM)64-Bit Server VM mixed mode
可根據(jù)命令窗口中顯示的信息,選擇合適版本的JAVA語言,實(shí)現(xiàn)MATALB平臺(tái)與JAVA語言良好的交互。
基于前述分析,MATALB平臺(tái)具有較強(qiáng)的數(shù)字處理與計(jì)算以及良好的交互式語言編寫能力。為此,論文將基于MATALB平臺(tái)編寫單目標(biāo)、多約束優(yōu)化模型的PSO求解算法。
PSO算法求解過程的實(shí)質(zhì)是其粒子朝著規(guī)定的目標(biāo)不斷前進(jìn)、漸序?qū)?yōu)的過程。為此,應(yīng)首先設(shè)計(jì)PSO算法的初始粒子種群,如下所示。
式中,F(xiàn)unction為MATALB平臺(tái)中函數(shù)設(shè)計(jì)語句;Dimension、Size、Xmax、Xmin、Vmax 與 Vmin 分別表示初始粒子種群的維度、數(shù)目、最大值、最小值、最大速度與最小速度。
如前所述,PSO算法求解過程的實(shí)質(zhì)是其粒子朝著規(guī)定的目標(biāo)不斷前進(jìn)、漸序?qū)?yōu)的過程。為此,PSO算法設(shè)計(jì)過程中粒子種群的不斷更新也是較為重要的一環(huán)。程序如下。
式中,Weight為PSO算法的慣性常數(shù),一般取值為1;c1與c2均為權(quán)重系數(shù),一般均取值為2;Pos(:,i)與Vel(:,i)分別表示第i個(gè)粒子的當(dāng)前位置與速度;Pbest_pos(:,i)表示第i個(gè)粒子當(dāng)前的最優(yōu)位置;Gbest_pos表示當(dāng)前全局最優(yōu)位置。另外,粒子在更新過程中,還需滿足如下2方面要求。
2.2.1 更新的速度要求
2.2.2 更新的位置要求
PSO算法求解過程中,粒子群朝著規(guī)定的目標(biāo)不斷前進(jìn)、漸序?qū)?yōu)的過程直接表現(xiàn)為目標(biāo)函數(shù)的漸變過程中,即朝著最大值或最小值漸變的過程。為此,在目標(biāo)函數(shù)設(shè)計(jì)中加入多約束條件,使目標(biāo)函數(shù)朝著規(guī)定的方向變化,也即可實(shí)現(xiàn)尋優(yōu)。如下為程序?qū)崿F(xiàn)。
式中:Pan_duan1、Pan_duan2、Pan_duan3 分別為約束是否滿足的判斷結(jié)果,1表示約束滿足要求,0表示約束不滿足要求;sum為依據(jù)當(dāng)前粒子的目標(biāo)函數(shù)計(jì)算結(jié)果;“330”為不滿足約束條件時(shí)目標(biāo)函數(shù)的取值,此時(shí)算法的尋優(yōu)是使目標(biāo)函數(shù)逐漸減小,當(dāng)然該取值也可以取值為其他較大值,例如“500”、“1 000”或者其他情況;當(dāng)算法尋優(yōu)使目標(biāo)函數(shù)逐漸增大時(shí),該值應(yīng)該取一較小值。
為驗(yàn)證本文設(shè)計(jì)的適用于單目標(biāo)、多約束優(yōu)化模型的PSO算法的正確性,設(shè)計(jì)了如下4變量待優(yōu)化模型,如下:
式中:目標(biāo)函數(shù)取最小值時(shí)最優(yōu),各變量的取值范圍為[-1~1]。另外,初始粒子種群個(gè)數(shù)選擇為40,最大循環(huán)次數(shù)取值為50。經(jīng)本文設(shè)計(jì)的優(yōu)化算法,獲得最終求解結(jié)果如下:
因此,本文設(shè)計(jì)的適用于單目標(biāo)、多約束優(yōu)化模型的PSO算法是正確、可行的。