馬書(shū)艷
(華北電力大學(xué),北京102206)
GAMS(General Algebraic Modeling System)是一款建模系統(tǒng),是20 世紀(jì)開(kāi)發(fā)出來(lái)旨在解決復(fù)雜模型、復(fù)雜數(shù)學(xué)規(guī)劃問(wèn)題的軟件。
GAMS 程序結(jié)構(gòu)主要由5 部分組成,包括集合、數(shù)據(jù)、模型、求解和報(bào)告[1]。其中集合主要作用是聲明變量,通俗的說(shuō)就是給變量起名字,表示相關(guān)量之間的邏輯關(guān)系,在使用中需要用到幾個(gè)變量就用set 引導(dǎo)進(jìn)行聲明,一般用i,j 表示,是最基本的部分。數(shù)據(jù)包含參數(shù)、變量、標(biāo)量和表格。未知的數(shù)用變量表示,已知的值用參數(shù)或者標(biāo)量表示,標(biāo)量一般指系數(shù)。接下來(lái)就是模型的建立,在GAMS 中,建立模型首先要聲明方程,然后對(duì)模型進(jìn)行聲明,包括是線(xiàn)性模型或非線(xiàn)性模型等。之后就是求解語(yǔ)句,求解語(yǔ)句應(yīng)solve 引導(dǎo),是對(duì)上述建立好的模型進(jìn)行結(jié)果的求解,用display 引導(dǎo)結(jié)果的輸出,即形成報(bào)告。以上就是GAMS一個(gè)完整的模型建立和求解的過(guò)程,為了更直觀的表示,如圖1。
圖1 GAMS 的模型構(gòu)成
常見(jiàn)模型類(lèi)型有:LP, NLP, QLP, DNLP, RMIP, MIP,RMINLP, RMIQCP, MIQCP, MINLP, MPEC, MCP, CNS[2],對(duì)應(yīng)的含義如圖2。
GAMS 有多種求解器可以調(diào)用,每種求解器的使用場(chǎng)景以及可使用的模型各有不同。下面介紹幾種常用的求解器。(1)Branch-And-Reduce Optimization Navigator(分枝減小最優(yōu)化導(dǎo)航,簡(jiǎn)稱(chēng)BARON),主要用于求解NLP 和MINLP 規(guī)劃模型。使用加強(qiáng)分枝定界類(lèi)型的算法,得到結(jié)果的最優(yōu)。(2)MINOS 求解器:主要用于求解NLP 模型以及與NLP 模型相關(guān)的模型,并且所求模型的非線(xiàn)性函數(shù)必須是光滑的,即具有一階導(dǎo)數(shù),并且MINOS 求解器在解決上述相關(guān)類(lèi)型函數(shù)時(shí)容易陷入局部最優(yōu),結(jié)果得到局部最優(yōu)解而非全局最優(yōu)解,這種情況下,選擇一個(gè)合適的初始點(diǎn),可以增加找到全局最優(yōu)解的機(jī)會(huì)。(3)Cplex 求解器:特點(diǎn)是會(huì)針對(duì)特定的問(wèn)題能夠自動(dòng)計(jì)算,為選項(xiàng)設(shè)置最優(yōu)值。主要應(yīng)用求解線(xiàn)性規(guī)劃、二次約束規(guī)劃和混合整數(shù)規(guī)劃。(4)CONOPT 求解器:多方法求解器,和其他求解器使用方法類(lèi)似[3]。
圖2 模型類(lèi)型標(biāo)識(shí)符及對(duì)應(yīng)的含義
首先利用MATLAB 軟件繪制測(cè)試函數(shù)圖形,圖形如圖3:
圖3 測(cè)試函數(shù)1 圖像
在GAMS 環(huán)境下對(duì)函數(shù)進(jìn)行尋優(yōu),求出最大值。程序如下:variables
s 變量1
t 變量2
f 函數(shù)值;
equation fangcheng1 測(cè)試方程;
fangcheng1..f=e=0.5- {(sin (sqrt (s**2+t**2))**2-0.5)/(1+0.001*(s**2+t**2))**2};
mode1 xunyou /all/;s.up=-4;s.10=4;t.up=-4;t.1o=4;s.l=0.1;t.l=0.1;
option nlp=baron; solve xunyou using nlp maxmizing f;display f.l;
仿真結(jié)果得出最大值為1。
圖4 測(cè)試函數(shù)2 圖像
函數(shù)圖像如圖4。在GAMS 環(huán)境下進(jìn)行最值的求解,程序如下:
variables
m 變量1
t 變量2
f min 最小值
fmax 最大值;
equation
fangcheng1 測(cè)試方程
fangcheng2;
fangcheng1..f_max=e=100*(t-m**2)**2+m**2;
fangcheng2..f_min=e=100*(t-m**2)**2+m**2;
mode1 xunyou1/fangcheng1/;
m.up=2.048;m.1o=-2.048;t.up=2.048;t.1o=-2.048;t.1=0.1;m.1=0.1;
option nlp=baron; solve xunyoul using nlp maxmizing f max;
mode1xunyou2/fangcheng2/;
m. up=2.048;m.1o=-2.048;t. up=2.048;t. lo=-2.048; t.1=0.1;m.1=0.1;
option nlp=baron; solve xunyou2 using nlp minmizing f min;
display f_min.1,f_max.1;
仿真結(jié)果得出最小值為0,最大值為3900.83。
假設(shè)這六個(gè)樣本點(diǎn)的曲線(xiàn)方程為:
Y=b1+b2*exp(b3*x)
求應(yīng)用最小二乘法估計(jì)參數(shù)b1、b2 和b3 的值,使得曲線(xiàn)擬合誤差最小。
?
GAMS 程序如下:
圖5 算例3 程序
輸 出 b1,b2,b3 和 Y 的 值 是:516.651,-149.352,-0.207,14085.14。
GAMS 語(yǔ)言更適合解決大規(guī)模的、比較復(fù)雜的數(shù)學(xué)規(guī)劃問(wèn)題,這是和其他語(yǔ)言的區(qū)別。GAMS 有很強(qiáng)的靈活性和通用性,通過(guò)以上幾個(gè)算例也發(fā)現(xiàn),GAMS 在運(yùn)行效率方面也優(yōu)先于其他軟件,節(jié)省了開(kāi)發(fā)者的時(shí)間,并且由算例(3)可知,GAMS 可對(duì)實(shí)際問(wèn)題進(jìn)行建模,并且能夠很好的解決復(fù)雜的實(shí)際問(wèn)題,做出合理的決策。GAMS 在編譯方面也有優(yōu)勢(shì),編譯結(jié)束會(huì)生成詳細(xì)的報(bào)告,適用范圍較廣,可以在各個(gè)行業(yè)發(fā)揮很大的作用。