資源描述:
《既全面又精煉的lingo教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、LINGO教程?LINGO是用來(lái)求解線性和非線性優(yōu)化問(wèn)題的簡(jiǎn)易工具。LINGO內(nèi)置了一種建立最優(yōu)化模型的語(yǔ)言,可以簡(jiǎn)便地表達(dá)大規(guī)模問(wèn)題,利用LINGO高效的求解器可快速求解并分析結(jié)果。?§1LINGO快速入門?當(dāng)你在windows下開(kāi)始運(yùn)行LINGO系統(tǒng)時(shí),會(huì)得到類似下面的一個(gè)窗口:?????????????外層是主框架窗口,包含了所有菜單命令和工具條,其它所有的窗口將被包含在主窗口之下。在主窗口內(nèi)的標(biāo)題為L(zhǎng)INGOModel–LINGO1的窗口是LINGO的默認(rèn)模型窗口,建立的模型都都要在該窗口內(nèi)編碼實(shí)現(xiàn)。下面舉兩個(gè)例子。例1.1如何在LINGO中求解如下的LP問(wèn)題:在
2、模型窗口中輸入如下代碼:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后點(diǎn)擊工具條上的按鈕即可。?例1.2使用LINGO軟件計(jì)算6個(gè)發(fā)點(diǎn)8個(gè)收點(diǎn)的最小費(fèi)用運(yùn)輸問(wèn)題。產(chǎn)銷單位運(yùn)價(jià)如下表。單位銷地運(yùn)價(jià)產(chǎn)地B1B2B3B4B5B6B7B8產(chǎn)量A16267425960A2495385825555共55頁(yè)LINGO教程A35219743351A47673927143A52395726541A65522814352銷量3537223241324338?使用LINGO軟件,編制程序如下:model:!6發(fā)點(diǎn)8收點(diǎn)運(yùn)輸問(wèn)題;sets:war
3、ehouses/wh1..wh6/:capacity;vendors/v1..v8/:demand;links(warehouses,vendors):cost,volume;endsets!目標(biāo)函數(shù);min=@sum(links:cost*volume);!需求約束;@for(vendors(J):@sum(warehouses(I):volume(I,J))=demand(J));!產(chǎn)量約束;@for(warehouses(I):@sum(vendors(J):volume(I,J))<=capacity(I));?!這里是數(shù)據(jù);data:capacity=60555
4、1434152;demand=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddataend然后點(diǎn)擊工具條上的按鈕即可。為了能夠使用LINGO的強(qiáng)大功能,接著第二節(jié)的學(xué)習(xí)吧?!?LINGO中的集對(duì)實(shí)際問(wèn)題建模的時(shí)候,總會(huì)遇到一群或多群相聯(lián)系的對(duì)象,比如工廠、消費(fèi)者群體、交通工具和雇工等等。LINGO允許把這些相聯(lián)系的對(duì)象聚合成集(sets)。一旦把對(duì)象聚合成集,就可以利用集來(lái)最大限度的發(fā)揮LINGO建模語(yǔ)言的優(yōu)勢(shì)。現(xiàn)在我們將深入介紹如何創(chuàng)建集,并用數(shù)據(jù)初始化集的屬性。學(xué)完本
5、節(jié)后,你對(duì)基于建模技術(shù)的集如何引入模型會(huì)有一個(gè)基本的理解。?2.1為什么使用集集是55共55頁(yè)LINGO教程LINGO建模語(yǔ)言的基礎(chǔ),是程序設(shè)計(jì)最強(qiáng)有力的基本構(gòu)件。借助于集,能夠用一個(gè)單一的、長(zhǎng)的、簡(jiǎn)明的復(fù)合公式表示一系列相似的約束,從而可以快速方便地表達(dá)規(guī)模較大的模型。?2.2什么是集集是一群相聯(lián)系的對(duì)象,這些對(duì)象也稱為集的成員。一個(gè)集可能是一系列產(chǎn)品、卡車或雇員。每個(gè)集成員可能有一個(gè)或多個(gè)與之有關(guān)聯(lián)的特征,我們把這些特征稱為屬性。屬性值可以預(yù)先給定,也可以是未知的,有待于LINGO求解。例如,產(chǎn)品集中的每個(gè)產(chǎn)品可以有一個(gè)價(jià)格屬性;卡車集中的每輛卡車可以有一個(gè)牽引力屬性
6、;雇員集中的每位雇員可以有一個(gè)薪水屬性,也可以有一個(gè)生日屬性等等。LINGO有兩種類型的集:原始集(primitive set)和派生集(derivedset)。一個(gè)原始集是由一些最基本的對(duì)象組成的。一個(gè)派生集是用一個(gè)或多個(gè)其它集來(lái)定義的,也就是說(shuō),它的成員來(lái)自于其它已存在的集。?2.3模型的集部分集部分是LINGO模型的一個(gè)可選部分。在LINGO模型中使用集之前,必須在集部分事先定義。集部分以關(guān)鍵字“sets:”開(kāi)始,以“endsets”結(jié)束。一個(gè)模型可以沒(méi)有集部分,或有一個(gè)簡(jiǎn)單的集部分,或有多個(gè)集部分。一個(gè)集部分可以放置于模型的任何地方,但是一個(gè)集及其屬性在模型約束中
7、被引用之前必須定義了它們。2.3.1定義原始集為了定義一個(gè)原始集,必須詳細(xì)聲明:·集的名字·可選,集的成員·可選,集成員的屬性定義一個(gè)原始集,用下面的語(yǔ)法:setname[/member_list/][:attribute_list];注意:用“[]”表示該部分內(nèi)容可選。下同,不再贅述。Setname是你選擇的來(lái)標(biāo)記集的名字,最好具有較強(qiáng)的可讀性。集名字必須嚴(yán)格符合標(biāo)準(zhǔn)命名規(guī)則:以拉丁字母或下劃線(_)為首字符,其后由拉丁字母(A—Z)、下劃線、阿拉伯?dāng)?shù)字(0,1,…,9)組成的總長(zhǎng)度不超過(guò)32個(gè)字符的字符串,且不區(qū)分大小寫。