//Logo Image
最近更新:徐業良(2005-09-19)﹔推薦:徐業良(2001-06-21)
附註:本文為元智大學機械所最佳化設計課程教材。

最佳化電腦數值分析軟體GAMS使用簡介

最佳化的電腦數值分析商業軟體相當普遍,如LINDODOT等,以矩陣運算見長的MATLAB電腦軟體亦有發展optimization tool box”,可以解各種非線性最佳化問題的數值解。這裡要介紹的最佳化的電腦數值分析商業軟體GAMS,則是以簡單清楚的使用者介面和強健穩定的數值分析能力見長。

GAMS其網頁(http://www.gams.com/)上有試用版本供下載,點選網頁上的“Download Current GAMS System”的功能,並填寫相關資訊即可下載。試用版本有些使用上的限制,如在最佳化模型上設計變數限制為300個,限制條件限制為300個,以及離散變數50個等,但在一般工程最佳化設計問題已經十分夠用。此外本實驗室網站(http://designer.mech.yzu.edu.tw)亦建立一GAMS遠端應用網頁“WebOpt”,由網頁中“e-Advisor”網頁可連結至WebOpt遠端應用網頁。

這裡介紹GAMS商業軟體的使用,目的在使讀者對使用一般最佳化數值軟體的方式有一個基本認識,了解GAMS的使用的基本程序,如何建立其輸入檔,如何閱讀其輸出檔之後,對讀者學習使用一般最佳化數值分析軟體,如何建立模型、輸入、執行最佳化分析、讀取最佳化後的結果,應該也有極大幫助。此外本文僅為簡介性質,並不能取代原版英文使用者手冊,讀者如學習使用GAMS軟體,在研讀本文之後,仍應以原版英文使用者手冊為主。

1.     GAMS的發展背景

GAMSGeneral Algebraic Modeling System”(一般性代數模擬系統)的縮寫,最早是由美國的世界銀行(World Bank)MeerausBrooke [Brooke, Kendrickm and Meeraus, 1992]所發展。GAMS”事實上並不代表任何最佳化數值演算法,而只是一個高階語言的使用者介面,利用GAMS可以很容易建立、修改、除錯你的最佳化模型輸入檔,而輸入檔經過編譯後,成為較低階的最佳化數值演算法程式所能接受的格式,再加以執行並寫出輸出檔。

數值演算法方面,對線性與非線性規劃問題,GAMS使用由新南威爾斯大學的Murtagh、及史丹福大學的GillMarraySaundersWright等人所發展的MINOS [Murtagh and Saunders, 1983]演算法。MINOS“Modular In-core Non-linear Optimization System”的縮寫,這個演算法綜合了縮減梯度法和準牛頓法,是專門為大型、複雜的線性與非線性問題設計的演算法。對混合整數規劃問題,則採用亞歷桑那大學的Marsten及巴爾第摩大學的Singhal[1987]共同發展的ZOOM(Zero/One Optimization Method)演算法。

2.     GAMS使用範例說明

如前所述,GAMS本身有非常完整的英文版使用者手冊,GAMS的電腦軟體中也附帶了許多學習範例的檔案。這裡所作的GAMS使用範例說明,目的絕非在取代原版的使用者手冊,而是要配合本課程說明的形式,重新編寫使用範例輸入檔,使讀者能很快的進入情況,了解其使用程序。

GAMS的操作大抵可分為三個步驟:建立GAMS輸入檔,執行GAMS程式,檢視GAMS輸出檔內容。以下便再以先前討論的車輛起重器輕量化設計為範例,詳細說明這三個步驟。

步驟一 建立GAMS輸入檔

車輛起重器輕量化設計的GAMS輸入檔如下所示:

1. 車輛起重器之GAMS輸入檔

 

* ===========================================================================

*                          VEHICULAR JACK EXAMPLE

* ===========================================================================

*

* ---------------------------------------------------------------------------

* I. DEFINE CONSTANTS AND PARAMETERS

* ---------------------------------------------------------------------------

parameters

  Pi        circumferential ratio

  C         column constant in Euler's equation

  K1        height of the chassis

  K2        minimum height it will lift

  Hmin      minimum width for assembly

  Wmax      maximum weight the jack can lift

  E         modulus of elasticity of the material of the bars

  ThetaMin  minimum angle between the center screw and the links

  ThetaMax  maximum angle between the center screw and the links;

*

  Pi = 3.14159265;

  C = 1.4;

  K1 = 300;

  K2 = 800;

  Hmin = 10;

  Wmax = 2000*9.81;

  E = 207000;

  ThetaMin = (15/180)*Pi;

  ThetaMax = (75/180)*Pi;

*

* ---------------------------------------------------------------------------

* II. DEFINE VARIABLES

* ---------------------------------------------------------------------------

variables

  v     total volume

  l     length of bars

  b     width of bar

  h     thickness of the bars

  fmax  maximum compression force in each bar

  pcr   critical buckling load

  i     moment of inertia;

positive variable b, h, fmax, pcr, l, i;

*

* ---------------------------------------------------------------------------

* III. DEFINE OBJECTIVE FUNCTION AND CONSTRAINTS

* ---------------------------------------------------------------------------

equations

  f   objective function on total volume of the bars

  g1  constraint on thickness of the bar

  g2  constraint on maximum compression force in a bar

  h3  Euler's buckling equation

  h4  moment of inertia of the cross section of the bars

  g5  maximum weight of the vehicle the jack can lift

  g6  constraint on maximum height of the jack

  g7  constraint on minimum height of the jack;

* 

  f  .. v =E= 8*l*b*h;

  g1 .. h - Hmin =L= 0;

  g2 .. fmax - pcr =L= 0;

  h3 .. pcr =E= C*Pi**2*E*i/l**2;

  h4 .. i =E= b*h**3/12;

  g5 .. 4*fmax*sin(ThetaMin) - Wmax =G= 0;

  g6 .. 2*l*sin(ThetaMin) - K1 =L= 0;

  g7 .. 2*l*sin(ThetaMax) - K2 =G= 0;

*

* ---------------------------------------------------------------------------

* IV. DEFINE STARTING POINT

* ---------------------------------------------------------------------------

b.L = 10;

h.L = 10;

fmax.L = 10000;

pcr.L = 10000;

l.L = 500;

i.L = 1000;

*

* ---------------------------------------------------------------------------

* V. MODEL AND SOLVE STATEMENT

* ---------------------------------------------------------------------------

model Jack /all/;

solve Jack using NLP minimizing v;

 

整個輸入檔分成五個部分,與本課程介紹最佳化模型建立的形式非常相似。首先是定義常數與參數,定義標準格式以識別字parameters”開始,接著是參數名稱和每一參數的敘述,所有參數敘述完畢後,以一個分號作為結束,再接下來則是參數數值的給定,給定參數數值時,則每一行末有一個分號。輸入檔中以星號為啟始的行為說明行,GAMS在編譯輸入檔時會自動忽略這些說明行。

第二部份則在定義設計變數,定義標準格式同樣以一個識別字”variables”為啟始,接著是變數名稱和每一變數的敘述,所有變數敘述完畢後,以一個分號作為結束。表1中這個部分的最後一行positive variable b, h, fmax, pcr, l, i;”是宣告這些變數為正整數,但通常代表目標值的變數(如此例中的體積變數v)不可在此處宣告,否則會得到一個“目標值非自由變數”的錯誤訊息。

第三個部分是定義目標函數及限制條件。定義的標準格式是以識別字equations”為啟始,接著是目標函數及限制式的名稱,和每一個式子的文字敘述,所有式子敘述完畢後,以一個分號作為結束。再接下來則是目標函數及限制式的定義,這些式子的定義是以類似Fortran程式語言的格式,所不同的是GAMS=L=“=E=“=G=“三個符號來代表小於等於、等於、大於等於。定義目標函數及限制式時,每一行末有一個分號。

參數、常數、變數、目標函數、限制條件都定義完畢後,你的最佳化模型也大抵建立完成,第四部份則是要定義解這個模型的數值起始點。起始點定義的標準形式如b.L=10”LLevel之意,表示這個變數目前的數值。每一個變數最好都要定義一個合理的起始點,對於沒有定義起始點的設計變數,GAMS的內定值為零,有時會造成程式執行時因分母為零而錯誤中止的狀況。另外如果你的最佳化模型中有範圍限制條件(及設計變數的上界和下界),也可以在此部分定義,標準形式如b.lo=1”b.up=20”

輸入檔最後一個部分,則在為你的最佳化模型命名,及選擇解題的演算法等。如表1model Jack/all/”,意為命名此模型為”jack”,且使用其中所有限制條件。如果你在此次解題只要使用部分限制條件,也可改成如”model jack/f, g1, g2, h3, h4/”的形式。表1中最後一行solve Jack using NLP minimizing v;”,則定義了要求最小值的目標變數為v,模型性質為NLP(非線性規劃)。其他可能的模型性質還包括LP(線性規劃)、MIP(混合整數規劃)等。

在建立GAMS輸入檔時,建議你從現有輸入檔案編輯修改而不要重新建立新檔案,以免因格式上微小錯誤浪費時間。

步驟二 執行GAMS程式

GAMS執行檔的目錄設定在你的PC啟動自動執行檔(autoexec.bat)中的路徑內,你便可以在你輸入檔所在的目錄中以GAMS JACK”的指令執行GAMS來解JACK.GMS檔。

GAMS執行包括兩個程序,首先GAMS先編譯你的輸入檔,如果輸入檔有錯誤,GAMS將停止執行,而在輸出檔JACK.LST中以****”註明錯誤所在及錯誤號碼,方便使用者除錯。如果輸入檔完全沒有錯誤,GAMS則會呼叫演算法程式來解你的最佳化模型,而在電腦螢幕上則會出現許多執行過程報告,執行完畢後,執行結果仍然寫在輸出檔JACK.LST之中。

步驟三 檢視GAMS輸出檔內容

GAMS輸出檔是一個很大的檔案,內容包括編譯輸出、變數及等式列印、模型統計與總結等等,這些內容都有助於了解數值分析程序的問題,幫助使用者除錯。

這裡要提出來討論的,則是最重要的最佳化數值解列印部分,如表2所示。在這個部分中每個式子、變數都顯示了四個數據,其中LOWER”UPPER”為該式子或變數的上下界,LEVEL”則為其現值,即經過GAMS最佳化演算法運算後求得之最佳值。另外.”代表數值為零,”EPS”則代表非常接近零的微小數。除了各設計變數的最佳值之外,檢查這些數據也可了解哪些限制條件是有效的,哪些限制條件是無效的。

2. GAMS輸出檔中數值解列印部分

 

                       LOWER     LEVEL     UPPER    MARGINAL 

 

---- EQU F               .         .         .        1.000     

---- EQU G1             -INF     10.000    10.000 -9.034E+4     

---- EQU G2             -INF       .         .      -23.835     

---- EQU H3              .         .         .      -23.835     

---- EQU H4              .         .         .     -397.546     

---- EQU G5         19620.000 19620.000   +INF    23.023     

---- EQU G6             -INF    214.359   300.000      .        

---- EQU G7           800.000   800.000     +INF   1693.931     

 

 

  F           objective function on total volume of the bars

  G1          constraint on thickness of the bar

  G2          constraint on maximum compression force in a bar

  H3          Euler's buckling equation

  H4          moment of inertia of the cross section of the bars

  G5          maximum weight of the vehicle the jack can lift

  G6          constraint on maximum height of the jack

  G7          constraint on minimum height of the jack

 

                       LOWER     LEVEL     UPPER    MARGINAL 

 

---- VAR V              -INF  4.5172E+5     +INF       .        

---- VAR B               .       13.635     +INF       .        

---- VAR H               .       10.000     +INF       .        

---- VAR FMAX            .    18951.465     +INF       .        

---- VAR PCR             .    18951.465     +INF       .        

---- VAR L               .      414.110     +INF       .        

---- VAR I               .     1136.258     +INF       .        

 

  V           total volume

  L           length of bars

  B           width of bar

  H           thickness of the bars

  FMAX        maximum compression force in each bar

  PCR         critical buckling load

  I           moment of inertia