Lingo:軟件簡介與優(yōu)化問題【數(shù)學(xué)建模工具】

->點(diǎn)擊訪問個人博客,相互交流學(xué)習(xí)<-

Lingo主菜單命令

LINDO 軟件的菜單條上有 6 個主菜單:

  • File(文件)
  • Edit(編輯)
  • Solve(求解)
  • Reports(報告)
  • Window(窗口)
  • Help(幫助)

File(文件)菜單包括了 LINDO 通過文件與外部設(shè)備(如磁盤)交換信息的命令;
Edit(編輯)菜單包括了在當(dāng)前窗口下編輯文本的命令;Solve(求解)菜單包括了求解模型的命令;
Reports(報告)菜單包括了生成解答結(jié)果報告的命令;Window(窗口)菜單包括了窗口切換的命令;
Help(幫助)菜單包括了訪問在線幫助文檔的命令。
對于幾乎所有的菜單命令,LINDO 都提供了快捷鍵(快捷鍵的提示位于每個菜單命令的右側(cè));對于常用的菜單命令,LINDO 在工具欄提供了相應(yīng)的圖形按鈕。工具欄是浮動式的,可以用鼠標(biāo)拖到屏幕上任何地方。這些用法都是和 WINDOWS 下其它應(yīng)用程序的標(biāo)準(zhǔn)用法類似的,所以我們不準(zhǔn)備對所有的菜單命令進(jìn)行完整和詳細(xì)的介紹,而是只對前4 個主菜單中有一定 LINDO 特色的主要命令進(jìn)行簡要介紹。


image.png

文件主菜單

  • File|New、File|Open、File|View 的區(qū)別
    File|New 用于新建一個模型文件;File|Open 用于打開一個已有文件,此后可以對這個文件進(jìn)行編輯、求解、保存等;而 File|View 只用于打開已有文件供瀏覽(也可以求解)使用,不能編輯。由于 LINDO 編輯器對文件的大小是有限制的,因此用 File|New 和 File|Open打開的文件不能太大(通常不一定是由 LINDO 本身的編輯器產(chǎn)生的)是有用的。

  • File|Log Output
    該命令將打開一個對話框,要求你指定一個文件名(該文件成為“Log(日志)文件”)。此后,LINDO 軟件的所有輸出都被送到這個日志文件中保存下來,供你以后查看。
    注意,正常情況下,在菜單驅(qū)動模式下,LINDO 的輸出應(yīng)當(dāng)是被送到報告窗口;在“CommandWindow(命令窗口)”模式下,LINDO 的輸出應(yīng)當(dāng)是被送到命令窗口。在的對話框中有兩個檢驗盒:
    (1)如果選擇“Echo to screen(屏幕顯示)”檢驗盒,屏幕上也會同時顯示輸出結(jié)果,否則屏幕上就不再顯示了;
    (2)如果選擇“Append output(追加輸出)”檢驗盒,則以后所有 LINDO 的輸出被追加到這個日志文件的結(jié)尾,否則系統(tǒng)將首先清空這個文件,然后開始追加內(nèi)容。

  • File|Take Commands
    File|Take Commands(提取命令)用于打開和執(zhí)行一個LINDO 命令腳本文件(命令腳本文件中包含一系列 LINDO 命令組成的命令序列。

  • File|Basis Read 和 File|Basis Save
    File|Basis Save(保存基)命令打開一個標(biāo)準(zhǔn)的文件保存對話框,可以將單純形算法的當(dāng)前的基(解)以你指定的文件名和文件格式保存下來;將來可以用 File|Basis Read(讀取基)命令讀出這個基(解),并可以從這個基(解)開始繼續(xù)運(yùn)行單純形算法。保存時可以有三種文件格式可供選擇:*.pun(以 MPS(數(shù)學(xué)規(guī)劃系統(tǒng))的“punch”格式保存); *.fbs(以 LINDO 格式保存); *.sdbc(以數(shù)據(jù)庫格式按列(變量)保存)。

  • File|Title
    顯示當(dāng)前模型的名稱(如果該模型被命名過,即模型的程序中出現(xiàn)過 Title 語句)。

  • File|Date
    顯示當(dāng)前日期和時間。

  • File|Elapsed Time
    顯示本次啟動 LINDO 以來已經(jīng)運(yùn)行了多長時間。

  • File|Licence
    輸入、驗證 LINDO 的許可證密碼.

編輯主菜單

  • Edit|Options
    該命令打開一個對話框(見圖 2-29),用于設(shè)置 LINDO 系統(tǒng)運(yùn)行的內(nèi)部參數(shù),這對于比較專業(yè)的用戶是有幫助的。從圖中可以看出,可修改的參數(shù)分成兩大類:左邊一類是關(guān)于優(yōu)化程序的(Optimizer 這里是指優(yōu)化程序,也就是 LINDO 求解器,而不是最優(yōu)解的意思),右邊一類是關(guān)于輸出格式的(Output)。

  • Edit|Paste Symbol
    該命令打開一個對話框,用于在模型中當(dāng)前光標(biāo)處插入符號。

  • Edit|Choose New Font
    該命令用于指定顯示的字體、字行和文字的大小。

求解主菜單

  • Solve|Compile Model
    Solve|Compile Model(編譯模型)命令對當(dāng)前模型進(jìn)行編譯(使用 Solve|Solve 命令時自然也要先使用該命令)。如果當(dāng)前模型有輸入語法錯誤,編譯時將報告錯誤。
  • Solve|Pivot
    Solve|Pivo(旋轉(zhuǎn))命令從當(dāng)前解出發(fā)進(jìn)行一次單純形旋轉(zhuǎn)(即一次迭代)。用這個命令可以跟蹤整個單純形法的運(yùn)行。
  • Solve|Debug
    Solve|Debu(調(diào)試)命令分析 LP 無解或無界的原因建議如何修改。它僅對 LP 有效,對 IP 或 QP 無意意。對線性規(guī)劃的高手而言,這個功能可能是有用的。
  • Solve|Premptive Goal
    Solve|Premptive Goal(多目標(biāo))命令依次按照多個目標(biāo)求解模型。

報告主菜單

  • Report|Solution
    Report|Solution(解答)命令顯示當(dāng)前的解(你必須在此之前求解過當(dāng)前模型)。
  • Report|Range
    Report|Range(敏感性分析)命令顯示當(dāng)前解的敏感性分析結(jié)果(你必須在此之前求解過當(dāng)前模型)。
  • Report|Parametrics
    Report|Parametrics(參數(shù)分析)命令對約束的右端項(RHS)進(jìn)行參數(shù)分析,也就是研究某個約束的右端相發(fā)生變化時,最優(yōu)值如何變化。
  • Report︱Statistics
    Report︱Statistics(統(tǒng)計)命令顯示當(dāng)前模型的統(tǒng)計信息.
  • Report︱Peruse
    Report︱Peruse(用戶請求)命令按照你的要求顯示大拿跟前解答的各種信息.
  • Report Format(報告參數(shù)):設(shè)置用戶希望的顯示格式.
    該命令的具體用法這里不詳細(xì)介紹了,大家試試就清楚了.
  • Report︱Picture 和 Report︱Basis Picture
    Report︱Picture按照圖形或文本方式顯示模型中的非零系數(shù)而 Report︱Basis Picture(基圖示)只顯示當(dāng)前基(Basis )的非零系數(shù)。
  • Report︱Tableau
    Report︱Tableau(單純形表)顯示當(dāng)前單純形表.
  • Report︱Formulation
    Report︱Formulation(模型)顯示當(dāng)前模型(或其指定的部分)。
  • Report︱Show Column
    Report︱Show Column(顯示列)顯示模型中你選定的列的信息.
  • Report︱Positive Definite
    Report︱Positive Definite(正定)判斷二次規(guī)劃的目標(biāo)函數(shù)中的二次是否正定(只對 QP 問題有效,也就是說只有當(dāng)前內(nèi)存中的模型是一個二次規(guī)劃模型時,這個命令才有意義).

LINDO 命令窗口

你隨時可以通過菜單命令“Window︱Open Command Window(Alt+C)”打開命令窗口,在命令窗口下操作

image.png

INFORMATION(信息類命令)

  • HELP 命令
    輸入“HELP”會顯示出 LINDO 的一般幫助信息.通過輸入"HELP name",LINDO 可幫助你了解某個具體的命令,其中"name"是命令名.
  • COMMAND(COM)命令
    給出按類型分類的 LINDO 命令目錄,參見圖 2-35.
  • LOCAL(LOC)命令
    給出該程序的版本信息.
  • CATEGORY(CAY)命令
    列出 LINDO 命令類型,并可按提示有選擇地給出某類型下的所有命令.
  • TIME 命令
    顯示本次啟動 LINDO 后累計的運(yùn)行時間.
  • DATE 命令
    顯示當(dāng)前命令的日期和時間.
    INPUT (輸入類命令)
  • MAX/MIN 命令
    用于輸入一個包含目標(biāo)函數(shù),約束條件在內(nèi)的 LP 模型.輸入過程如下:在提示符" :"下輸入"MAX"(或"MIN"),繼之以自然格式的目標(biāo)函數(shù)作為第一行;再輸入"SUBJECT TO"或"SUCH THAT"(可簡寫為"ST"或"S.T."),后面跟約束條件行.每次回車后將顯示"?"提示符.最后,輸入"END"回到命令狀態(tài)模式.可以看出,這和 Windows 環(huán)境下在 LINDO 模式窗口中輸入一個程序是類似的.其中,變量名可以由1~8個字母或數(shù)字型的字符構(gòu)成,且第一個字符必須是字母.變量系數(shù)不能為指數(shù)型,列如:.258E+29 形成的系數(shù)是不允許的,任一系數(shù)的整數(shù)位數(shù)最多為 9 位,小數(shù)位數(shù)最多位五位.關(guān)鍵詞("MAX","ST","END"…)及各行之間必須用一個或多個空格分隔開.空格可以出現(xiàn)在一行之間,但不能出現(xiàn)在變量名中.一個回車符等價一個空格.
  • RETRIEVE(RETR)命令
    執(zhí)行該命令可直接從硬盤上的文件中獲得一個 LINDO 格式的模型。LINDO 會為你提示可供選擇的具體的文件名。能被 RETRIEVE 的模型文件必須是以前經(jīng)“SAVE”行命令存入的模型(后綴通常的“l(fā)pk”,即 LINDO 壓縮格式文件),而不能是LINDO 文本格式文件(后綴通常是“l(fā)tx”)。
  • RMPS 命令
    讀取一個 MPS 格式文件,并轉(zhuǎn)化成 LINDI 格式的模型LINDO 會為你提示可供選:
    • N
      !顯示解答
    • SOLU
      !在屏幕上顯示一段提示信息
    • PAUS 第一模型求解成功,按 R 鍵或 Resume 按鈕繼續(xù)!
      !關(guān)閉文件“RESULT0201.txt”
    • RVRT
      !回到執(zhí)行本命令腳本前的會話模式
    • BAT
      !結(jié)束,退出本命令腳本文件

Lingo文件類型

  • 后綴“l(fā)g4表示 LINGO 格式的模型文件,是一種特殊的二進(jìn)制格式文件,保存了我們在模型窗口中所能夠看到的所有文本和其他對象及其格式信息,只有 LILNGO 能讀出它,用其他系統(tǒng)打開這種文件是出現(xiàn)亂碼;
  • 后綴“l(fā)ng”表示文本格式的模型文件,并且以這個格式保存模型時 LINGO 將給出警告,因為模型中的格式信息(如字體、顏色、嵌入對象等)將會丟失;


    image.png

Lingo報告窗口

image.png
  • Variables(變量數(shù)量):其中包括變量總數(shù)(Total)、非線性變量數(shù)(Nonlinear)、整數(shù)變量數(shù)(Integer).
  • Constraints(約束數(shù)量):包括約束總數(shù)(Total)、非線性束個數(shù)(Nonlinear).
  • Nonzeros(非零系數(shù)數(shù)量):包括總數(shù)(Total)、非線性項的系數(shù)個數(shù)(Nonlinear).
  • Generator Memory Used(K)(內(nèi)存使用量):單位為千字節(jié)(K).
  • Elapsed Runtime(hh:mm:ss)(求解花費(fèi)的時間):顯示格式是“時:分:秒”.


    image.png

運(yùn)算符和函數(shù)

  • 運(yùn)算符及其優(yōu)先級
  1. 算術(shù)運(yùn)算符實際上就是加、減、乘方等數(shù)學(xué)運(yùn)算(即數(shù)與數(shù)之間的運(yùn)算,運(yùn)算結(jié)果也是數(shù))。LINGO 中的算術(shù)運(yùn)算符有以下 5 種:
    +(加法), -(減法或負(fù)號),*(乘法),/(除法),^(求冪).
  2. 邏輯運(yùn)算符就是結(jié)果只有"真(TRUE)"和"假(FALSE)”兩個值(稱為"邏輯值")的運(yùn)算,LINGO 中用數(shù)學(xué) 1 代表 TRUE,其它值(典型的值是 0)都是 FALSE.Z 在 LINGO 中,邏輯運(yùn)算(表達(dá)式)通常作為過濾條件使用(回顧一下,在例3.3中定義約束時\例3.6中定義稀疏集合約束時,都多次使用了邏輯表達(dá)式作為過濾條件使用)LINGO 中的輯運(yùn)符有 9 種,可以分為兩類:
    (1)#AND#(與),#NOD#(非):這3個運(yùn)算是邏輯值之間的運(yùn)算,也就是它們操作的對象本身必須已經(jīng)是邏輯值或邏輯表達(dá)式..計算結(jié)果也是邏輯值,
    (2)#EQ#(等于).#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于).#LE#(小于等于):
    這 6 個操作實際上是"數(shù)與數(shù)之間"的比較,也就是它們操作的對象本身必須是兩個數(shù).
    而邏輯表達(dá)式計算得到的結(jié)果是邏輯值
  3. 關(guān)系運(yùn)算符表示的是"數(shù)與數(shù)之間"的大小關(guān)系.因此在 LINGO 中用來表示優(yōu)化模型的約束條件,所以可以認(rèn)為不是真正的操作運(yùn)算符.LINGO 中關(guān)系運(yùn)算符有三種:
    <(即<=,小于等于).=(等于),>(即>=,大于等于)
    請注意在優(yōu)化模型中約束一般,,沒有嚴(yán)格小于,嚴(yán)格大于關(guān)系.此外,請注意區(qū)分運(yùn)算符與"數(shù)與數(shù)之間"進(jìn)行比較的 6 個邏輯運(yùn)算符的不同之處
  • 基本的數(shù)學(xué)函數(shù)
    在 LINGO 中建立優(yōu)化模型時引用大量的內(nèi)部函數(shù)這些函數(shù)以"@"負(fù)號打頭.
    LINGO 中包括相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法非常簡單,我們直接在下一一列出


    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容