




已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
LINGO軟件 HanguangXiaoChongqingUniversityofTechnology 2020年2月9日 主要內容 LINGO軟件LINGO中建模語言 集合 運算符和函數(shù)等 LINGO編程實例露天礦生產的車輛安排 LINGO軟件 1 美國芝加哥 Chicago 大學的LinusSchrage 萊納斯 施拉蓋 教授于1980年前后開發(fā) 2 LINGO LinearInteractiveGeneralOptimizer 線性交互式通用優(yōu)化器 3 用來求解的優(yōu)化模型 連續(xù)優(yōu)化和整數(shù)規(guī)劃 IP 類型 線性規(guī)劃 LP 二次規(guī)劃 QP 非線性規(guī)劃 NLP LINDO LINGO軟件能求解的模型 優(yōu)化 線性規(guī)劃 非線性規(guī)劃 二次規(guī)劃 連續(xù)優(yōu)化 整數(shù)規(guī)劃 LINDO LINGO 學習LINGO需掌握的方面 LINGO LinearInteractiveGeneralOptimizer V12 0 求解數(shù)學規(guī)劃問題MinZ f x s tx D Rn 需要掌握 軟件操作基本語法結構掌握集合 SETS 的應用正確閱讀求解報告正確理解求解狀態(tài)窗口學會設置基本的求解選項 OPTIONS LINGO軟件界面 LINGO軟件菜單 FILE 1 新建 New 單擊 新建 按鈕或直接按F2鍵可以創(chuàng)建一個新的 Model 窗口 在這個新的 Model 窗口中能夠輸入所要求解的模型 2 打開 Open 單擊 打開 按鈕或直接按F3鍵可以打開一個已經存在的文本文件 這個文件可能是一個Model文件 3 保存 Save 單擊 保存 按鈕或直接按F4鍵用來保存當前活動窗口 最前臺的窗口 中的模型結果 命令序列等保存為文件 4 另存為 SaveAs 另存為 命令或按F5鍵可以將當前活動窗口中的內容保存為文本文件 其文件名為你在 另存為 對話框中輸入的文件名 利用這種方法你可以將任何窗口的內容如模型 求解結果或命令保存為文件 5 關閉 Close 在文件菜單中選用 關閉 Close 命令或按F6鍵將關閉當前活動窗口 如果這個窗口是新建窗口或已經改變了當前文件的內容 LINGO系統(tǒng)將會提示是否想要保存改變后的內容6 打印 Print 打印 Print 命令 單擊 打印 按鈕或直接按F7鍵可以將當前活動窗口中的內容發(fā)送到打印機7 打印設置 PrintSetup 打印設置 命令或直接按F8鍵可以將文件輸出到指定的打印機 8 打印預覽 PrintPreview 打印預覽 命令或直接按Shift F8鍵可以進行打印預覽 9 輸出到日志文件 LogOutput 從文件菜單中選用 LogOutput 命令或按F9鍵打開一個對話框 用于生成一個日志文件 它存儲接下來在 命令窗口 中輸入的所有命令 10 提交LINGO命令腳本文件 TakeCommands TakeCommands 命令或直接按F11鍵就可以將LINGO命令腳本 commandscript 文件提交給系統(tǒng)進程來運行 11 引入LINGO文件 ImportLingoFile 從文件菜單中選用 ImportLingoFile 命令或直接按F12鍵可以打開一個LINGO格式模型的文件 然后LINGO系統(tǒng)會盡可能把模型轉化為LINGO語法允許的程序 12 退出 Exit 從文件菜單中選用 Exit 命令或直接按F10鍵可以退出LINGO系統(tǒng) LINGO軟件菜單 eidt 1 恢復 Undo 從編輯菜單中選用 恢復 Undo 命令或按Ctrl Z組合鍵 將撤銷上次操作 恢復至其前的狀態(tài) 2 剪切 Cut 從編輯菜單中選用 剪切 Cut 命令或按Ctrl X組合鍵可以將當前選中的內容剪切至剪貼板中 3 復制 Copy 從編輯菜單中選用 復制 Copy 命令 單擊 復制 按鈕或按Ctrl C組合鍵可以將當前選中的內容復制到剪貼板中 4 粘貼 Paste 從編輯菜單中選用 粘貼 Paste 命令 單擊 粘貼 按鈕或按Ctrl V組合鍵可以將粘貼板中的當前內容復制到當前插入點的位置 5 粘貼特定 PasteSpecial 與上面的命令不同 它可以用于剪貼板中的內容不是文本的情形 6 全選 SelectAll 從編輯菜單中選用 SelectAll 命令或按Ctrl A組合鍵可選定當前窗口中的所有內容 7 匹配小括號 MatchParenthesis 從編輯菜單中選用 MatchParenthesis 命令 單擊 MatchParenthesis 按鈕或按Ctrl P組合鍵可以為當前選中的開括號查找匹配的閉括號 8 粘貼函數(shù) PasteFunction 從編輯菜單中選用 PasteFunction 命令可以將LINGO的內部函數(shù)粘貼到當前插入點 LINGO軟件菜單 LINGO 1 求解模型 Slove 從LINGO菜單中選用 求解 命令 單擊 Slove 按鈕或按Ctrl S組合鍵可以將當前模型送入內存求解 2 求解結果 Solution 從LINGO菜單中選用 Solution 命令 單擊 Solution 按鈕或直接按Ctrl O組合鍵可以打開求解結果的對話框 這里可以指定查看當前內存中求解結果的那些內容 3 靈敏性分析 Range Ctrl R 用該命令產生當前模型的靈敏性分析報告 研究當目標函數(shù)的費用系數(shù)和約束右端項在什么范圍 此時假定其它系數(shù)不變 時 最優(yōu)基保持不變 靈敏性分析是在求解模型時作出的 因此在求解模型時靈敏性分析是激活狀態(tài) 但是默認是不激活的 為了激活靈敏性分析 運行LINGO Options 選擇GeneralSolverTab 在DualComputations列表框中 選擇PricesandRanges選項 靈敏性分析耗費相當多的求解時間 因此當速度很關鍵時 就沒有必要激活它 4 選項 Options 從LINGO菜單中選用 Options 命令 單擊 Options 按鈕或直接按Ctrl I組合鍵可以改變一些影響LINGO模型求解時的參數(shù) 該命令將打開一個含有7個選項卡的窗口 你可以通過它修改LINGO系統(tǒng)的各種參數(shù)和選項 5 模型通常形式 Generate 從LINGO菜單中選用 Generate 命令或直接按Ctrl G組合鍵可以創(chuàng)建當前模型的代數(shù)形式 LINGO模型或MPS格式文本 6 圖片 Picture 7 調試 Debug 8 模型統(tǒng)計 ModelStatistics 6 查看 Look 從LINGO菜單中選用 Look 命令或直接按Ctrl L組合鍵可以查看全部的或選中的模型文本內容 LINGO軟件菜單 Window 1 命令行窗口 OpenCommandWindow 從窗口菜單中選用 OpenCommandWindow 命令或直接按Ctrl 1可以打開LINGO的命令行窗口 在命令行窗口中可以獲得命令行界面 在 提示符后可以輸入LINGO的命令行命令 2 狀態(tài)窗口 StatusWindow 從窗口菜單中選用 StatusWindow 命令或直接按Ctrl 2可以打開LINGO的求解狀態(tài)窗口 回到模型窗口 SentToBack Ctrl B關閉所有窗口 CloseAll Ctrl 3并行放置窗口 Tile Ctrl 4層疊放置窗口 Cascade Ctrl 5放置圖標 ArrangeIcons Ctrl 6 LINGO軟件菜單 HELP 1 幫助主題 HelpMenu 從幫助菜單中選用 HelpMenu 可以打開LINGO的幫助文件 注冊信息 Register 填寫注冊信息 自動更新 AutoUptate 自動升級 2 關于LINGO AboutLingo 關于當前LINGO的版本信息等 打開文件 F3 打印文件 F7 復制 Ctrl C 取消操作 Ctrl Z 查找 Ctrl F 顯示解答 Alt O 匹配括號 Ctrl P 選項設置 Ctrl I 關閉所有窗口 Alt X 在線幫助 F1 新建文件 F2 保存文件 F4 剪切 Ctrl X 粘貼 Ctrl V 恢復操作 Ctrl Y 定位某行 ctrl T 求解模型 Ctrl S 模型圖示 Ctrl K 窗口后置 Ctrl B 平鋪窗口 Alt T 上下文相關的幫助 LINGO軟件工具欄 LINGO軟件文件保存類型 Variables 變量數(shù)量 變量總數(shù) Total 非線性變量數(shù) Nonlinear 整數(shù)變量數(shù) Integer Constraints 約束數(shù)量 約束總數(shù) Total 非線性約束個數(shù) Nonlinear Nonzeros 非零系數(shù)數(shù)量 總數(shù) Total 非線性項系數(shù)個數(shù) Nonlinear GeneratorMemoryUsed K 內存使用量 ElapsedRuntime hh mm ss 求解花費的時間 LINGO軟件運行狀態(tài)窗口的參數(shù)解釋 LINGO軟件運行狀態(tài)窗口的參數(shù)解釋 求解器 求解程序 狀態(tài)框 當前模型的類型 LP QP ILP IQP PILP PIQP NLP INLP PINLP 以I開頭表示IP 以PI開頭表示PIP 當前解的狀態(tài) GlobalOptimum LocalOptimum Feasible Infeasible 不可行 Unbounded 無界 Interrupted 中斷 Undetermined 未確定 解的目標函數(shù)值 當前約束不滿足的總量 不是不滿足的約束的個數(shù) 實數(shù) 即使該值 0 當前解也可能不可行 因為這個量中沒有考慮用上下界命令形式給出的約束 目前為止的迭代次數(shù) 運行狀態(tài)窗口 擴展的求解器 求解程序 狀態(tài)框 使用的特殊求解程序 B and B 分枝定界算法 Global 全局最優(yōu)求解程序 Multistart 用多個初始點求解的程序 目前為止找到的可行解的最佳目標函數(shù)值 目標函數(shù)值的界 特殊求解程序當前運行步數(shù) 分枝數(shù) 對B and B程序 子問題數(shù) 對Global程序 初始點數(shù) 對Multistart程序 有效步數(shù) 主要內容 LINGO軟件簡介LINGO建模語言 集合 運算符和函數(shù)等 LINGO編程實例露天礦生產的車輛安排 一個簡單的LINGO程序 例直接用LINGO來解如下二次規(guī)劃問題 輸入窗口如下 目標函數(shù) 約束條件 變量取整 每個語句以 結束 順序無關 程序 eg1 lg4 輸出結果 運行菜單命令 LINGO Solve 最優(yōu)整數(shù)解X 35 65 最大利潤 11077 5 一個簡單的LINGO程序 例1SAILCO公司需要決定下四個季度的帆船生產量 下四個季度的帆船需求量分別是40條 60條 75條 25條 這些需求必須按時滿足 每個季度正常的生產能力是40條帆船 每條船的生產費用為400美元 如果加班生產 每條船的生產費用為450美元 每個季度末 每條船的庫存費用為20美元 假定生產提前期為0 初始庫存為10條船 如何安排生產可使總費用最小 集合及其屬性 quarters 1 2 3 4 dem rp op inv LINGO中定義集合及其屬性 以 MODEL 開始 以 END 結束 給出優(yōu)化目標和約束 程序 eg2 lg4 目標函數(shù)的定義方式 對語句中冒號 后面的表達式 按照 前面的集合指定的下標 元素 進行求和 本例中目標函數(shù)也可以等價地寫成 SUM QUARTERS i 400 RP i 450 OP i 20 INV i SUM 相當于求和符號 由于本例中目標函數(shù)對集合QUARTERS的所有元素 下標 都要求和 所以可以將下標i省去 SUM 集合 下標 關于集合的屬性的表達式 約束條件的定義方式 循環(huán)函數(shù) FOR 集合 下標 關于集合的屬性的約束關系式 對冒號 前面的集合的每個元素 下標 冒號 后面的約束關系式都要成立 本例中 每個季度正常的生產能力是40條帆船 這正是語句 FOR QUARTERS I RP I 40 的含義 這個語句可以簡化成 FOR QUARTERS RP 40 問題求解 運行菜單命令 LINGO Solve 最小成本 78450 LINGO模型最基本的組成要素 1 集合段 SETS 以 SETS 開始 ENDSETS 結束 定義必要的集合變量 SET 及其元素 MEMBER 含義類似于數(shù)組的下標 和屬性 ATTRIBUTE 含義類似于數(shù)組 2 目標與約束段 目標函數(shù) 約束條件等 沒有段的開始和結束標記 因此實際上就是除其它四個段 都有明確的段標記 外的LINGO模型 這里一般要用到LINGO的內部函數(shù) 尤其是與集合相關的求和函數(shù) SUM和循環(huán)函數(shù) FOR等 LINGO模型最基本的組成要素 3 數(shù)據(jù)段 DATA 以 DATA 開始 ENDDATA 結束 對集合的屬性 數(shù)組 輸入必要的常數(shù)數(shù)據(jù) 格式為 attribute 屬性 value list 常數(shù)列表 常數(shù)列表 value list 中數(shù)據(jù)之間可以用逗號 分開 也可以用空格分開 回車等價于一個空格 如上面對DEM的賦值也可以寫成 DEM 40607525 LINGO模型最基本的組成要素 4 初始段 INIT 以 INIT 開始 ENDINIT 結束 對集合的屬性 數(shù)組 定義初值 因為求解算法一般是迭代算法 所以 如果能給出一個比較好的迭代初值 對提高算法的計算效果是有益的 如果有一個接近最優(yōu)解的初值 對LINGO求解模型是有幫助的 定義初值的格式為 attribute 屬性 value list 常數(shù)列表 5 計算段 CALC 以 CALC 開始 ENDCALC 結束 對一些原始數(shù)據(jù)進行計算處理 基本集合與派生集合 例2建筑工地的位置 用平面坐標a b表示 距離單位 公里 及水泥日用量d 噸 下表給出 有兩個臨時料場位于P 5 1 Q 2 7 日儲量各有20噸 從A B兩料場分別向各工地運送多少噸水泥 使總的噸公里數(shù)最小 兩個新的料場應建在何處 節(jié)省的噸公里數(shù)有多大 基本集合與派生集合 建立模型 記工地的位置為 水泥日用量為 料場位置為 日儲量為 從料場向工地的運送量為 基本集合與派生集合 本例中集合的概念 利用集合的概念 可以定義需求點DEMAND和供應點SUPPLY兩個集合 分別有6個和2個元素 下標 集合的屬性相當于以集合的元素為下標的數(shù)組 這里的相當于二維數(shù)組 它的兩個下標分別來自集合DEMAND和SUPPLY 因此可以定義一個由二元對組成的新的集合 然后將定義成這個新集合的屬性 link demand supply c 基本集合與派生集合 定義了三個集合 其中LINK在前兩個集合DEMAND和SUPPLY的基礎上定義 表示集合LINK中的元素就是集合DEMAND和SUPPLY的元素組合成的有序二元組 從數(shù)學上看LINK是DEMAND和SUPPLY的笛卡兒積 也就是說LINK S T SDEMAND TSUPPLY 因此 其屬性C也就是一個6 2的矩陣 或者說是含有12個元素的二維數(shù)組 LINGO建模語言也稱為矩陣生成器 MATRIXGENERATOR 類似DEMAND和SUPPLY直接把元素列舉出來的集合 稱為基本集合 primaryset 而把LINK這種基于其它集合而派生出來的二維或多維集合稱為派生集合 derivedset 由于是DEMAND和SUPPLY生成了派生集合LINK 所以DEMAND和SUPPLY稱為LINK的父集合 程序 eg3 lg4 基本集合與派生集合 初始段 LINGO對數(shù)據(jù)是按列賦值的語句的實際賦值順序是X 5 2 Y 1 7 而不是X 5 1 Y 2 7 等價寫法 X 5 2 Y 1 7 同理 數(shù)據(jù)段中對常數(shù)數(shù)組A B的賦值語句也可以寫成A B 1 251 258 750 750 54 755 75536 57 257 75 基本集合與派生集合 基本集合與派生集合 解答 運行菜單命令 LINGO Solve 局部最優(yōu)解X 1 7 249997 X 2 5 695940 Y 1 7 749998 Y 2 4 928524 C 略 最小運量 89 8835 噸公里 問題 最小運量89 8835是不是全局最優(yōu) 使用 LINGO Options 菜單命令打開選項對話框 在 GlobalSolver 選項卡上選擇 UseGlobalSolver 激活全局最優(yōu)求解程序 基本集合與派生集合 問題 最小運量89 8835是不是全局最優(yōu) 為減少計算工作量 對X Y的取值再做一些限制 雖然理論上新建料場的位置可以是任意的 但顯然最佳的料場位置不應該離工地太遠 至少不應該超出現(xiàn)在6個工地所決定的坐標的最大 最小值決定的矩形之外 即 0 5 x 8 75 0 75 y 7 75 此時目標函數(shù)值的下界 ObjBound 85 2638 與目前得到的最好的可行解的目標函數(shù)值 BestObj 85 2661 相差已經非常小 可以認為已經得到了全局最優(yōu)解 基本集合與派生集合 計算結果 工地與料場示意圖 表示料場 表示工地 可以認為是模型的最后結果 如果要把料廠P 5 1 Q 2 7 的位置看成是已知并且固定的 這時是LP模型 只需要把初始段的 XY 5 1 2 7 語句移到數(shù)據(jù)段就可以了 此時 運行結果告訴我們得到全局最優(yōu)解 變量C的取值這里略去 最小運量136 2275 噸公里 稠密集合與稀疏集合 包含了兩個基本集合構成的所有二元有序對的派生集合稱為稠密集合 簡稱稠集 有時候 在實際問題中 一些屬性 數(shù)組 只在笛卡兒積的一個真子集合上定義 這種派生集合稱為稀疏集合 簡稱疏集 例3 最短路問題 在縱橫交錯的公路網中 貨車司機希望找到一條從一個城市到另一個城市的最短路 下圖表示的是公路網 節(jié)點表示貨車可以??康某鞘?弧上的權表示兩個城市之間的距離 百公里 那么 貨車從城市S出發(fā)到達城市T 如何選擇行駛路線 使所經過的路程最短 稠密集合與稀疏集合 分析 為得到從S到T的最優(yōu)行駛路線 只需要先求出從S到Ck k 1 2 的最優(yōu)行駛路線 就可以方便地得到從S到T的最優(yōu)行駛路線 同樣 為了求出從S到Ck k 1 2 的最優(yōu)行駛路線 只需要先求出從S到Bj j 1 2 的最優(yōu)行駛路線 為了求出從S到Bj j 1 2 的最優(yōu)行駛路線 只需要先求出從S到Ai i 1 2 3 的最優(yōu)行駛路線 而S到Ai i 1 2 3 的最優(yōu)行駛路線是很容易得到的 實際上 此例中S到Ai i 1 2 3 只有唯一的道路 稠密集合與稀疏集合 分析 可把從S到T的行駛過程分成4個階段 即S Ai i 1 2或3 Ai Bj j 1或2 Bj Ck k 1或2 Ck T 記d Y X 為城市Y與城市X之間的直接距離 若這兩個城市之間沒有道路直接相連 則可以認為直接距離為 用L X 表示城市S到城市X的最優(yōu)行駛路線的路長 稠密集合與稀疏集合 計算 所以 從S到T的最優(yōu)行駛路線的路長為20 進一步分析以上求解過程 可以得到從S到T的最優(yōu)行駛路線為S A3 B2 C1 T 這種計算方法在數(shù)學上稱為動態(tài)規(guī)劃 DynamicProgramming 本例的LINGO求解 CITIES 城市 一個基本集合 元素通過枚舉給出 L CITIES對應的屬性變量 我們要求的最短路長 ROADS 道路 由CITIES導出的一個派生集合 請?zhí)貏e注意其用法 由于只有一部分城市之間有道路相連 所以不應該把它定義成稠密集合 將其元素通過枚舉給出 這就是一個稀疏集合 D 稀疏集合ROADS對應的屬性變量 給定的距離 程序 eg4 lg4 稠密集合與稀疏集合 從模型中還可以看出 這個LINGO程序可以沒有目標函數(shù) 這在LINGO中 可以用來找可行解 解方程組和不等式組 在數(shù)據(jù)段對L進行賦值 只有L S 0已知 后面的值為空 但位置必須留出來 即逗號 一個也不能少 否則會出錯 如果這個語句直接寫成 L 0 語法上看也是對的 但其含義是L所有元素的取值全部為0 所以也會與題意不符 稠密集合與稀疏集合 雖然集合CITIES中的元素不是數(shù)字 但當它以CITIES I 的形式出現(xiàn)在循環(huán)中時 引用下標I卻實際上仍是正整數(shù) 也就是說I指的正是元素在集合中的位置 順序 一般稱為元素的索引 INDEX 在 for循環(huán)中的過濾條件里用了一個函數(shù) index 其作用是返回一個元素在集合中的索引值 這里 index S 1 即元素S在集合中的索引值為1 所以邏輯關系式 I GT index S 可以可以直接等價地寫成 I GT 1 這里 index S 實際上還是 index CITIES S 的簡寫 即返回S在集合CITIES中的索引值 稠密集合與稀疏集合 本例的LINGO求解結果 從S到T的最優(yōu)行駛路線的路長為20 進一步分析 可以得到最優(yōu)行駛路線為S A3 B2 C1 T 集合的類型 集合派生集合基本集合稀疏集合稠密集合元素列表法元素過濾法直接列舉法隱式列舉法 setname member list attribute list setname parent set list member list attribute list SETS CITIES A1 A2 A3 B1 B2 ROADS CITIES CITIES A1 B1A1 B2A2 B1A3 B2 D ENDSETS SETS STUDENTS S1 S8 PAIRS STUDENTS STUDENTS ENDSETS 集合使用小結 基本集合的定義語法 setname member list attribute list 其中setname為定義的集合名 member list為元素列表 attribute list為屬性列表 派生集合的定義語法 setname parent set list member list attribute list 與基本集合的定義相比較多了一個parent set list 父集合列表 父集合列表中的集合 如set1 set2 等 稱為派生集合setname的父集合 它們本身也可以是派生集合 算術運算符 LINGO中的算術運算符有以下5種 加法 減法或負號 乘法 除法 求冪 邏輯運算符 在LINGO中 邏輯運算 表達式 通常作為過濾條件使用 邏輯運算符有9種 可以分成兩類 AND 與 OR 或 NOT 非 邏輯值之間的運算 它們操作的對象本身已經是邏輯值或邏輯表達式 計算結果也是邏輯值 EQ 等于 NE 不等于 GT 大于 GE 大于等于 LT 小于 LE 小于等于 是 數(shù)與數(shù)之間 的比較 也就是它們操作的對象本身必須是兩個數(shù) 計算得到的結果是邏輯值 關系運算符 在LINGO中用來表示優(yōu)化模型的約束條件 LINGO中關系運算符有3種 即 大于等于 在優(yōu)化模型中約束一般沒有嚴格小于 嚴格大于關系 運算符的優(yōu)先級 基本的數(shù)學函數(shù) ABS X 絕對值函數(shù) 返回X的絕對值 COS X 余弦函數(shù) 返回X的余弦值 X的單位是弧度 EXP X 指數(shù)函數(shù) 返回 FLOOR X 取整函數(shù) 返回X的整數(shù)部分 向最靠近0的方向取整 LGM X 返回X的伽瑪 gamma 函數(shù)的自然對數(shù)值 當X為整數(shù)時LGM X LOG X 1 當X不為整數(shù)時 采用線性插值得到結果 LOG X 自然對數(shù)函數(shù) 返回X的自然對數(shù)值 的值 其中e 2 718281 MOD X Y 模函數(shù) 返回X對Y取模的結果 即X除以Y的余數(shù) 這里X和Y應該是整數(shù) POW X Y 指數(shù)函數(shù) 返回XY的值 基本的數(shù)學函數(shù) SIGN X 符號函數(shù) 返回X的符號值 X 0時返回 1 SIN X 正弦函數(shù) 返回X的正弦值 X的單位是弧度 SMAX list 最大值函數(shù) 返回一列數(shù) list 的最大值 SMIN list 最小值函數(shù) 返回一列數(shù) list 的最小值 SQR X 平方函數(shù) 返回X的平方 即X X 的值 SQRT X 開平方函數(shù) 返回X的正的平方根的值 TAN X 正切函數(shù) 返回X的正切值 X的單位是弧度 集合循環(huán)函數(shù) FOR 集合元素的循環(huán)函數(shù) 對集合setname的每個元素獨立地生成表達式 表達式由expression list描述 通常是優(yōu)化問題的約束 MAX 集合屬性的最大值函數(shù) 返回集合setname上的表達式的最大值 MIN 集合屬性的最小值函數(shù) 返回集合setname上的表達式的最小值 PROD 集合屬性的乘積函數(shù) 返回集合setname上的表達式的積 SUM 集合屬性的求和函數(shù) 返回集合setname上的表達式的和 集合操作函數(shù) INDEX set name primitive set element 給出元素primitive set element在集合set name中的索引值 即按定義集合時元素出現(xiàn)順序的位置編號 省略set name LINGO按模型中定義的集合順序找到第一個含有該元素的集合 并返回索引值 如果沒有找到該元素 則出錯 IN set name primitive index 1 primitive index 2 判斷一個集合中是否含有某個索引值 如果集合set name中包含由索引primitive index 1 primitive index 2 所對應元素 則返回1 邏輯值 真 否則返回0 邏輯值 假 WRAP I N 此函數(shù)對N 1無定義當I位于區(qū)間 1 N 內時直接返回I 一般地 返回J I K N 其中J位于區(qū)間 1 N K為整數(shù) SIZE set name 返回數(shù)據(jù)集set name中包含元素的個數(shù) 變量定界函數(shù) BND L X U 限制L X U 注意LINGO中沒有與LINDO命令SLB SUB類似的函數(shù) SLB和 SUB BIN X 限制X為0或1 注意LINDO中的命令是INT 但LINGO中這個函數(shù)的名字卻不是 INT X FREE X 取消對X的符號限制 即可取負數(shù) 0或正數(shù) GIN X 限制X為整數(shù) 文件輸入輸出函數(shù) FILE filename 當前模型引用其他ASCII碼文件中的數(shù)據(jù)或文本時可以采用該語句 但不允許嵌套使用 其中filename為存放數(shù)據(jù)的文件名 該文件中記錄之間用 分開 ODBC提供LINGO與ODBC OpenDataBaseConnection 開放式數(shù)據(jù)庫連接 的接口 OLE提供LINGO與OLE ObjectLinkingandEmbeding 接口 POINTER N 在Windows下使用LINGO的動態(tài)連接庫DLL 直接從共享的內存中傳送數(shù)據(jù) TEXT filename 用于數(shù)據(jù)段中將解答結果送到文本文件filename中 當省略filename時 結果送到標準的輸出設備 通常就是屏幕 filename中可以帶有文件路徑 沒有指定路徑時表示在當前目錄 如果這個文件已經存在 將會被覆蓋 其他函數(shù) IF logical condition true result false result 當邏輯表達式logical condition的結果為真時 返回true result 否則返回false result WARN text logical condition 如果邏輯表達式 logical condition 的結果為真 顯示 text 信息 USER user determined arguments 允許用戶自己編寫的函數(shù) DLL或OBJ文件 可能應當用C或FORTRAN等其他語言編寫并編譯 主要內容 LINGO軟件簡介LINGO建模語言 集合 運算符和函數(shù)等 LINGO編程實例露天礦生產的車輛安排 例1 某晝夜服務的公交路線每天各時間區(qū)段內需司機和乘務人員如下 設司機和乘務人員分別在各時間區(qū)段一開始上班 并連續(xù)工作八小時 問該公交線路至少配備多少名司機和乘務人員 從第一班開始排 試建立線性模型 解 按所需人數(shù)最少的要求 可得到線性模型如下 LINGO程序如下 MODEL min x1 x2 x3 x4 x5 x6 x1 x6 60 x1 x2 70 x2 x3 60 x3 x4 50 x4 x5 20 x5 x6 30 END 得到的解為 配備的司機和乘務人員最少為150人 x1 60 x2 10 x3 50 x4 0 x5 30 x6 0 例2 某地區(qū)有三個農場共用一條灌渠 每個農場的可灌溉地及分配到的最大用水量如下表 各農場均可種植甜菜 棉花和高粱三種作物 各種作物的用水量 凈收益及國家規(guī)定的該地區(qū)各種作物種植總面積最高限額如下表 三個農場達成協(xié)議 他們的播種面積與其可灌溉面積相等 而各農場種何種作物并無限制 問如何制定各農場種植計劃才能在上述限制條件下 使本地區(qū)的三個農場的總凈收益最大 解 設農場1種植的甜菜 棉花和高粱分別為 畝 農場2種植的甜菜 棉花和高粱分別為 設三個農場可耕地分別為 其最大用水量分別為 其甜菜 棉花和高粱的種植限額分別為 根據(jù)題目條件 可建立如下線性模型 其凈收益分別為 其耗水量分別為 LINGO編程如下 MODEL SETS place 1 3 a b kind 1 3 c d e plan place kind x ENDSETSDATA a 400 600 300 b 600 800 375 c 600 500 325 d 3 2 1 e 400 300 100 ENDDATAmax sum kind j e j sum place i x i j for kind j sum place i x i j c j for place i sum kind j x i j a i for place i sum kind j d j x i j b i END 得到結果如下 X 1 1 0 X 1 2 300 X 1 3 0X 2 1 258 3333 X 2 2 12 5 X 2 3 0X 3 1 0 X 3 2 187 5 X 3 3 0 最大總凈收益為253333 3元 對本題來說 由于數(shù)據(jù)少 可以不采用數(shù)組形式 而直接采用變量表示 建立模型如下 畝 設農場1種植的甜菜 棉花和高粱分別為 畝 農場2種植的甜菜 棉花和高粱分別為 畝 農場3種植的甜菜 棉花和高粱分別為 根據(jù)題目條件 可建立如下線性模型 LINGO程序如下 MODEL max 400 x1 x2 x3 300 y1 y2 y3 100 z1 z2 z3 x1 x2 x3 600 y1 y2 y3 500 z1 z2 z3 325 x1 y1 z1 400 x2 y2 z2 600 x3 y3 z3 300 3 x1 2 y1 z1 600 3 x2 2 y2 z2 800 3 x3 2 y3 z3 375 END 得到的解如下 X1 200 Y1 0 Z1 0 X2 58 33333 Y2 312 5 Z2 0 X3 0 Y3 187 5 Z3 0 最大總凈收益為253333 3元 例3 公司在各地有4項業(yè)務 選定了4位業(yè)務員去處理 由于業(yè)務能力 經驗和其它情況不同 4業(yè)務員去處理4項業(yè)務的費用 單位 元 各不相同 見下表 應當怎樣分派任務 才能使總的費用最小 則可以建立如下模型 LINGO程序如下 MODEL SETS person 1 4 task 1 4 assign person task a x ENDSETSDATA a 1100 800 1000 700 600 500 300 800 400 800 1000 900 1100 1000 500 700 ENDDATAmin sum assign a x for person i sum task j x i j 1 for task j sum person i x i j 1 for assign i j bin x i j END 得到的結果如下 最小費用為2100元 即第1個業(yè)余員做第4項業(yè)務 第2個業(yè)余員做第2 第3項業(yè)務 總費用達到最小 為2100元 x 1 1 0 x 1 2 0 x 1 3 0 x 1 4 1 x 2 1 0 x 2 2 1 x 2 3 0 x 2 4 0 x 3 1 1 x 3 2 0 x 3 3 0 x 3 4 0 x 4 1 0 x 4 2 0 x 4 3 1 x 4 4 0 MODEL DATA a file data txt ENDDATA END 同時在LINGO目錄下建立文本文件data txt 數(shù)據(jù)如下 LINGO程序中輸入的數(shù)據(jù)也可以從文本文件中讀入 特別是數(shù)據(jù)比較多時 將程序與數(shù)據(jù)分開 顯得更方便 如上面程序也可以這樣寫 1100 800 1000 700600 500 300 800400 800 1000 9001100 1000 500 700 例4 籃球隊選隊員問題籃球隊要選擇5名隊員上場組成出場陣容參加比賽 8名籃球隊員的身高及擅長位置如下表 出場陣容滿足如下條件 1 只能有一名中鋒上場 2 至少有一名后衛(wèi)上場 4 2號和8號至少有1個不出場 3 如1號和4號均上場 則6號不出場 問應當選擇哪5名隊員上場 才能使出場隊員平均身高最高 解 這是一個0 1整數(shù)規(guī)劃問題 則目標函數(shù)很容易給出 約束條件 所選隊員為5人 則 只能有一名中鋒上場 則 至少有一名后衛(wèi) 則 如1號和4號均上場 則6號不出場 則可用如下一個約束來表達 2號和8號至少有1個不出場 即2號和8號至多出場1個 約束表達 數(shù)學模型 LINGO編程如下 MODEL SETS team 1 8 a x ENDSETSDATA a 1 92 1 90 1 88 1 86 1 85 1 83 1 80 1 78 給出身高數(shù)據(jù) ENDDATAmax sum team i a i x i 5 0 SUM team i x i 5 所選隊員為5人 x 1 x 2 1 只能有一名中鋒上場 x 6 x 7 x 8 1 至少有一名后衛(wèi)上場 x 1 x 4 x 6 2 如果1號和4號上場 則6號不上場 x 2 x 8 1 2號和8號至少有一個不出場 即出場人數(shù)至多為1個 FOR team i bin x i 所有變量為0 1變量 END 解為 x 1 0 x 2 1 x 3 1 x 4 1 x 5 1 x 6 1 x 7 0 x 8 0 即第2 3 4 5 6名隊員被選上 最大平均身高為Z 1 864米 例5 有五項設計任務可供選擇 各項設計任務的預期完成時間分別為3 8 5 4 10 周 設計報酬分別為7 17 11 9 21 萬元 設計任務只能一項一項地進行 總的期限為20周 選擇任務時必須滿足下面要求 1 至少完成3項設計任務 2 若選擇任務1 必須同時選擇任務2 3 任務3和任務4不能同時選擇 應當選擇哪些任務 才能使總的設計報酬最大 解 這是一個0 1整數(shù)規(guī)劃問題 則容易得到目標函數(shù) 根據(jù)題目要求分別列出約束條件如下 數(shù)學模型 總期限為20周 則約束條件為 至少完成3項設計任務 則 若選擇任務1 必須同時選擇任務2 則 任務3和任務4不能同時選擇 則 MODEL SETS mat 1 5 m t x ENDSETSDATA m 7 17 11 9 21 定義報酬數(shù)組 t 3 8 5 4 10 定義完成時間 ENDDATAmax SUM mat i m i x i 定義目標函數(shù) SUM mat i t i x i 3 至少完成3項任務 x 2 x 1 若選擇任務1 必須同時選擇任務2 x 3 x 4 1 任務3和任務4不能同時選擇 FOR mat i BIN x i 使各變量為0 1變量 END 解為 x 1 1 x 2 1 x 3 1 x 4 0 x 5 0 選擇設計任務1 2 3 最大報酬為35萬元 LINGO程序如下 例6 固定費用 有四種資源A B C D被用于生產三種產品I II 單耗量及組織三種商品生產的固定費用見下表 現(xiàn)要 求制定一個生產計劃 使總收益最大 解 可引入用0 1變量來解決是否需要固定費用問題 第I種產品銷售一件可收入7 4 3元 第II種產品 銷售一件可收入10 6 4元 第III種產品銷售一件可 收入20 12 8元 則問題的整數(shù)規(guī)劃模型為 LINGO程序 MODEL DATA M 150 ENDDATAmax 3 x1 4 x2 8 x3 100 y1 150 y2 200 y3 目標函數(shù) 2 x1 4 x2 8 x3 500 2 x1 3 x2 4 x3 300 x1 2 x2 3 x3 100 3 x1 5 x2 7 x3 700 x1 M y1 x2 M y2 x3 M y3 GIN x1 GIN x2 GIN x3 指定產品件數(shù)為整數(shù) BIN y1 BIN y2 BIN y3 指定0 1變量 end 最大值為Z 200元 例7 某企業(yè)和用戶簽定了設備交貨合同 已知該 企業(yè)各季度的生產能力 每臺設備的生產成本和每 季度末的交貨量見下表 若生產出的設備當季度不 交貨 每臺設備每季度需要支付保管費0 1萬元 試 問在遵守合同的條件下 企業(yè)應如何安排生產計劃 才能使年消耗費用最低 解法1 LINGO程序如下 MODEL SETS QUART 1 4 x y p d c ENDSETSDATA 指定數(shù)據(jù) p 25 35 30 20 d 15 20 25 20 c 12 0 11 0 11 5 12 5 ENDDATAmin sum QUART i c i x i 0 1 y i 目標函數(shù) FOR QUART i x i p i 生產能力限制 FOR QUART i i GT 1 y i y i 1 x i d i y 1 x 1 d 1 end 得到的結果如下 x1 15 x2 35 x3 30 x4 0 y1 0 y2 15 y3 20 y4 0 年消耗最小費用為913 5萬元 解法2 下面條件 根據(jù)交貨量的規(guī)定 應滿足如下條件 其值如下表 則該模型表示如下 LINGO程序如下 MODEL SETS QUART 1 4 p d LINK QUART QUART End 得到的結果如下 年消耗最小費用為913 5萬元 為0臺 與前面方法得到的結果一樣 其最小費用也 可以看出 第1季度生產量為15臺 第2季度生產 量為35臺 第3季度生產量為30臺 第4季度生產量 一樣 例8 旅行售貨商問題 TSP問題 設有一個售貨員從10個城市中的某一個城市出發(fā) 去其它9個城市推銷產品 10個城市相互距離如下表 要求每個城市到達一次僅一次后 回到原出發(fā)城市 回到原出發(fā)城市 問他應如何選擇旅行路線 使總路 程最短 用來表示經過的各城市之間的路線 設 則該TSP問題轉化為如下線性模型 LINGO程序如下 TSPquesion MODEL SETS city 1 10 link city city ENDDATA MIN SUM link d s SUM city j j GT 1 S j 1 2 與第1個城市相連的有兩個城市 與第i個城市相連有兩個城市 FOR city i i GT 1 SUM city j j GT i s j i SUM city k k LT i s i k 2 FOR link BIN s 其最短路線為1 4 3 3 7 5 6 8 10 9 1 最短距離為77公里 得到的結果如下 優(yōu)缺點分析 該方法將TSP問題求解化為線性規(guī)劃 采用 LINGO軟件求解 優(yōu)點是求解速度極快 缺點是可 能會形成一些子圈 無法真正得到最優(yōu)解 解法二 各城市之間的路線 設 考慮每個城市后只有一個城市 則 考慮每個城市前只有一個城市 則 但僅以上約束條件不能避免在一次遍歷中產生多于 一個互不連通回路 充分約束條件 于是我們可以得到如下的模型 LINGO程序 TSPque
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學影像數(shù)據(jù)的共享與隱私保護的平衡點探索
- 區(qū)塊鏈助力教育管理實現(xiàn)數(shù)字化升級
- 買方回復銷售合同范例
- 醫(yī)療設備維護與風險降低方案
- 醫(yī)療大數(shù)據(jù)助力精準疾病預測與防控
- bot水務合同范例
- 視網膜震蕩與挫傷的臨床護理
- 江蘇省徐州市銅山區(qū)2024-2025學年高一下學期4月期中考試 化學 PDF版含答案
- 臨時雇傭飯店合同范例
- 2024年天然氣液化模塊項目投資申請報告代可行性研究報告
- Product Monitoring產品監(jiān)視與測量程序(中英文)
- 壓力管道安全檢查表參考范本
- SB∕T 10170-2007 腐乳
- 外貿進出口流程圖
- 部編人教版小學五年級下冊語文文言文閱讀理解課后專項練習
- 皮膚管理--ppt課件
- 雙向氣動插板門使用說明書
- 無生老母救世血書寶卷
- (完整版)2019年高考數(shù)學浙江卷(附答案)
- 信用社大額貸款會審制度
- 門式起重機檢驗報告
評論
0/150
提交評論