Lingo軟件簡單教程_第1頁
Lingo軟件簡單教程_第2頁
Lingo軟件簡單教程_第3頁
Lingo軟件簡單教程_第4頁
Lingo軟件簡單教程_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Lingo軟件入門(1)1.LINGO快速入門2.Lingo中的集3.模型的數(shù)據(jù)部分和初始部分4.Lingo函數(shù)5.LingoWindows命令

11LINGO快速入門

當(dāng)你在windows下開始運行LINGO系統(tǒng)時,會得到類似下面的一個窗口:外層是主框架窗口,包含了所有菜單命令和工具條,其它所有的窗口將被包含在主窗口之下。在主窗口內(nèi)的標(biāo)題為LINGOModel–LINGO1的窗口是LINGO的默認(rèn)模型窗口,建立的模型都都要在該窗口內(nèi)編碼實現(xiàn)。

2LINGO8.0有兩種命令模式:與LINDO相比,LINGO軟件主要具有兩大優(yōu)點:

Windows模式,通過下拉式菜單命令驅(qū)動LINGO運行命令行(Command-Line)模式,僅在命令窗口下操作1、除具有LINDO的全部功能外,還可用于求解非線性規(guī)劃問題,包括非線性整數(shù)規(guī)劃問題 2、LINGO包含了內(nèi)置的建模語言,允許以簡練、直觀的方式描述較大規(guī)模的優(yōu)化問題,模型中所需的數(shù)據(jù)可以以一定格式保存在獨立的文件中 3例1

在LINGO中求解如下的LP問題:在模型窗口中輸入如下代碼:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后點擊工具條上的按鈕即可。

4LP問題在lindo和lingo中不同的輸入形式:(1)將目標(biāo)函數(shù)的表示方式從“min”變成了“min=” (2)“ST”在LINGO模型中不再需要,所以被刪除了 (3)每個系數(shù)與變量間增加了運算符“*”(即乘號不能省略) (4)每行(目標(biāo)、約束和說明語句)后面均增加了一個分號“;” (5)模型結(jié)束標(biāo)志“END”也被刪除了(LINGO中只有當(dāng)模型以“MODEL:”開始時才能以“END”結(jié)束)。 Lingo:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;

這是LINGO模型的最基本特征 Lindo:min2x1+3x2stx1+y2>=250x1>=100end 56Lingo的不同保存類型 “LG4”表示LINGO格式的模型文件,是一種特殊的二進(jìn)制格式文件,保存了我們在模型窗口中所能夠看到的所有文本和其他對象及其格式信息,只有LINGO能讀出它,用其他系統(tǒng)打開這種文件時會出現(xiàn)亂碼 除“LG4”文件外,這里的另外幾種格式的文件其實都是普通的文本文件,可以用任何文本編輯器打開和編輯 “LDT”表示數(shù)據(jù)文件“LTF”表示命令腳本文件“LGR”表示報告文 7

2Lingo中的集

對實際問題建模的時候,總會遇到一群或多群相聯(lián)系的對象,比如工廠、消費者群體、交通工具和雇工等等。Lingo允許把這些相聯(lián)系的對象聚合成集(sets)。一旦把對象聚合成集,就可以利用集來最大限度的發(fā)揮Lingo建模語言的優(yōu)勢。2.1為什么使用集2.2模型的集部分82.1為什么使用集集是Lingo建模語言的基礎(chǔ),是程序設(shè)計最強有力的基本構(gòu)件。借助于集,能夠用一個單一的、長的、簡明的復(fù)合公式表示一系列相似的約束,從而可以快速方便地表達(dá)規(guī)模較大的模型。例如:對于100個貨棧的運輸問題,如果一個一個的寫出全部約束將是可怕的工作量。貨棧1的運量<=存量貨棧2的運量<=存量貨棧3的運量<=存量………………Lingo可以采用最為簡潔的表示方法:每個貨棧的運輸量<=存量92.2模型的集部分集部分是Lingo模型的一個可選部分。在Lingo模型中使用集之前,集部分必須事先定義。集部分以關(guān)鍵字“sets:”開始,以“endsets”結(jié)束。一個集部分可以放置于模型的任何地方,但是一個集及其屬性在模型約束中被引用之前必須定義了它們。集合的定義:sets:集的名字/集的成員/:集成員的屬性;endsets10例如:sets:

AP07102/zhangshan,lisi,wangwu/:name,sex,age;endsets集合的定義:sets:集的名字/集的成員/:集成員的屬性;endsetssets:set1/1..3/:x,y;endsets112.2.1定義原始集①當(dāng)顯式羅列成員時,必須為每個成員輸入一個不同的名字,中間用空格或逗號擱開,允許混合使用。例2.1可以定義一個名為students的原始集,它具有成員John、Jill、Rose和Mike,屬性有sex和age:sets:

students/JohnJill,RoseMike/:sex,age;endsets122.2.1定義原始集②當(dāng)隱式羅列成員時,不必羅列出每個集成員??刹捎萌缦抡Z法:集的名字/集的成員1..集的成員N/[:集成員的屬性];隱式成員列表格式示例所產(chǎn)生集成員1..n1..51,2,3,4,5StringM..StringNCar2..car14Car2,Car3,Car4,…,Car14DayM..DayNMon..FriMon,Tue,Wed,Thu,FriMonthM..MonthNOct..JanOct,Nov,Dec,JanMonthYearM..MonthYearNOct2001..Jan2002Oct2001,Nov2001,Dec2001,Jan200213sets:set1/1..3/:x,y;endsetsdata:x=123;y=456;enddataSet1集合定義了兩個屬性x和y。x取1、2、3三個值,而y取4、5、6三個值。sets:set1/1..3/:x,y;endsetsdata:xy=142536;enddataSet1集合定義了兩個屬性x和y。x取1、2、3三個值,而y取4、5、6三個值。142.2.1定義原始集!集部分;sets:students:sex,age;endsets!數(shù)據(jù)部分;data:students,sex,age=John116Jill014 Rose017 Mike113;enddata注意:開頭用感嘆號(!),末尾用分號(;)表示注釋,可跨多行。

③集成員不放在集定義中,而在隨后的數(shù)據(jù)部分來定義。152.2.2定義派生集定義派生集的語法集的名字(父集名稱列表)[/集的成員/][:集成員的屬性];注意:用“[]”表示該部分內(nèi)容可選。

父集名稱列表是已定義的集的列表,多個時必須用逗號隔開。如果沒有指定成員列表,那么Lingo會自動創(chuàng)建父集成員的所有組合作為派生集的成員(參見下頁的例子)。派生集的父集既可以是原始集,也可以是其它的派生集。16編號成員編號成員1(A,M,1)2(A,M,2)3(A,N,1)4(A,N,2)5(B,M,1)6(B,M,2)7

(B,N,1)8(B,N,2)定義派生集的例子sets:product/AB/;machine/MN/;week/1..2/;allowed(product,machine,week):x;endsets

Lingo生成了三個父集的所有組合共八組作為allowed集的成員:集的名字(父集名稱列表)[/集的成員/][:集成員的屬性];17成員列表被忽略時,派生集成員由父集成員所有的組合構(gòu)成,這樣的派生集成為稠密集。如果限制派生集的成員,使它成為父集成員所有組合構(gòu)成的集合的一個子集,這樣的派生集成為稀疏集。①顯式羅列。例子:allowed(product,machine,week)/AM1,AN2,BN1/;②設(shè)置成員資格過濾器。稠密集的定義稀疏集的定義派生集成員列表方式18設(shè)置成員資格過濾器sets:!學(xué)生集:性別屬性sex,1表示男性,0表示女性;年齡屬性age;students/John,Jill,Rose,Mike/:sex,age;

!男學(xué)生和女學(xué)生的聯(lián)系集:友好程度屬性friend,[0,1]之間的數(shù)。;linkmf(students,students)|sex(&1)#eq#1#and#sex(&2)#eq#0:friend;!男學(xué)生和女學(xué)生的友好程度大于0.5的集;linkmf2(linkmf)|friend(&1,&2)#ge#0.5:x;endsetsdata:sex,age=116014017013;friend=0.30.50.6;enddata19設(shè)置成員資格過濾器(續(xù))用豎線(|)來標(biāo)記一個成員資格過濾器的開始。#eq#是邏輯運算符,用來判斷是否“相等”,

&1可看作派生集的第1個原始父集的索引,它取遍該原始父集的所有成員;&2可看作派生集的第2個原始父集的索引,它取遍該原始父集的所有成員;&3,&4,……,以此類推。注意:如果派生集B的父集是另外的派生集A,那么上面所說的原始父集是集A向前回溯到最終的原始集,其順序保持不變,并且派生集A的過濾器對派生集B仍然有效。因此,派生集的索引個數(shù)是最終原始父集的個數(shù),索引的取值是從原始父集到當(dāng)前派生集所作限制的總和。20例

使用LINGO軟件計算6個發(fā)點8個收點的最小費用運輸問題。產(chǎn)銷單位運價如下表。運價產(chǎn)地B1B2B3B4B5B6B7B8產(chǎn)量A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352銷量3537223241324338

銷地21使用LINGO軟件,編制程序如下:model:!6發(fā)點8收點運輸問題;sets:chandi/A1..A6/:capacity;xiaodi/B1..B8/:need;links(chandi,xiaodi):cost,x;endsets!目標(biāo)函數(shù);min=@sum(links:cost*x);!需求約束;@for(xiaodi(J):@sum(chandi(I):x(I,J))=need(J));!產(chǎn)量約束;@for(chandi(I):@sum(xiaodi(J):x(I,J))<=capacity(I));!這里是數(shù)據(jù);data:capacity=605551434152;need=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddata然后點擊工具條上的按鈕即可。22

2Lingo中的集

2.4小結(jié)Lingo可識別的集只有兩種:原始集和派生集原始集是基本的對象,不能再被拆分成更小的組分。原始集可以由顯式羅列和隱式羅列兩種方式來定義。當(dāng)用顯式羅列方式時,需在集成員列表中逐個輸入每個成員。當(dāng)用隱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論