




免費(fèi)預(yù)覽已結(jié)束,剩余133頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LPQPNLPIP全局優(yōu)化(選)ILPIQPINLP,LINGO軟件的求解過(guò)程,LINGO預(yù)處理程序,線性優(yōu)化求解程序,非線性優(yōu)化求解程序,分枝定界管理程序,1.確定常數(shù)2.識(shí)別類型,1.單純形算法2.內(nèi)點(diǎn)算法(選),1、順序線性規(guī)劃法(SLP)2、廣義既約梯度法(GRG)(選)3、多點(diǎn)搜索(Multistart)(選),三、LINGO軟件的基本使用方法,1、Lingo入門2、在Lingo中使用集合3、運(yùn)算符和函數(shù)4、Lingo的主要菜單命令,1、Lingo入門,LINGO的界面,LINGO軟件的主窗口(用戶界面),所有其他窗口都在這個(gè)窗口之內(nèi)。,模型窗口(ModelWindow),用于輸入LINGO優(yōu)化模型(即LINGO程序)。,狀態(tài)行(最左邊顯示“Ready”,表示“準(zhǔn)備就緒”),當(dāng)前時(shí)間,當(dāng)前光標(biāo)的位置,簡(jiǎn)單程序舉例:,Lindo程序:max2x+3yst4x+3y103x+5y12end,Lingo程序:MODEL:max=2*x+3*y;4*x+3*y10;3*x+5*y12;end,請(qǐng)大家仔細(xì)區(qū)分它們的不同。,求z=2x+3y在約束條件4x+3y=10,3x+5y=12下的最大值,這是lingo程序最基本的格式之一,在lingo模型窗口中輸入右框中的程序,并保存為L(zhǎng)G4格式文件,這是LINGO格式的模型文件,保存了模型窗口中所能夠看到的所有文本和其他對(duì)象及其格式信息;,在LINGO中使用LINDO模型,運(yùn)行程序:點(diǎn)“LINGO菜單Solve命令”或按ctrl+s運(yùn)行或用鼠標(biāo)點(diǎn),在LINGO中使用LINDO模型,運(yùn)行狀態(tài)窗口,求解器(求解程序)狀態(tài)框,當(dāng)前解的狀態(tài):GlobalOptimum,LocalOptimum,Feasible,Infeasible“(不可行),Unbounded“(無(wú)界),Interrupted“(中斷),Undetermined“(未確定),解的目標(biāo)函數(shù)值,運(yùn)行程序的LINGO報(bào)告窗口(如下圖),在LINGO中使用LINDO模型,注:LINGO不詢問(wèn)是否進(jìn)行敏感性分析,敏感性分析需要將來(lái)通過(guò)修改系統(tǒng)選項(xiàng)啟動(dòng)敏感性分析后,再調(diào)用“REPORT|RANGE”菜單命令來(lái)實(shí)現(xiàn)?,F(xiàn)在同樣可以把模型和結(jié)果報(bào)告保存在文件中。,一個(gè)簡(jiǎn)單的LINGO程序,例直接用LINGO來(lái)解如下二次規(guī)劃問(wèn)題:,輸入窗口如下:,程序語(yǔ)句輸入的備注:,max=98*x1+277*x2-x12-0.3*x1*x2-2*x22;LINGO總是根據(jù)“MAX=”或“MIN=”尋找目標(biāo)函數(shù)。gin(x1);gin(x2);限定變量取整數(shù)值的語(yǔ)句為“GIN(X1)”和“GIN(X2)”LINGO中函數(shù)一律需要以“”開頭。BIN(x)限定變量x為0/1變量函數(shù)FREE(x)設(shè)定變量x的取值范圍為實(shí)數(shù)。注意:如果0/1變量的個(gè)數(shù)很多,還可以采用循環(huán)語(yǔ)句設(shè)定。,選擇全局求解的方法:點(diǎn)Lindo菜單optionsGlobalSolver,在useGlobalSolver前打鉤。點(diǎn)save,應(yīng)用,ok.然后運(yùn)行這個(gè)程序,輸出結(jié)果:,最優(yōu)整數(shù)解X=(35,65),最大利潤(rùn)=11077.5,一個(gè)簡(jiǎn)單的LINGO程序,LINGO的基本用法的幾點(diǎn)注意事項(xiàng),LINGO中不區(qū)分大小寫字母;變量和行名可以超過(guò)8個(gè)字符,但不能超過(guò)32個(gè)字符,且必須以字母開頭。用LINGO解優(yōu)化模型時(shí)已假定所有變量非負(fù)(除非用限定變量取值范圍的函數(shù)free或sub或slb另行說(shuō)明)。變量可以放在約束條件的右端(同時(shí)數(shù)字也可放在約束條件的左端)。但為了提高LINGO求解時(shí)的效率,應(yīng)盡可能采用線性表達(dá)式定義目標(biāo)和約束(如果可能的話)。語(yǔ)句是組成LINGO模型的基本單位,每個(gè)語(yǔ)句都以分號(hào)結(jié)尾,編寫程序時(shí)應(yīng)注意模型的可讀性。例如:一行只寫一個(gè)語(yǔ)句,按照語(yǔ)句之間的嵌套關(guān)系對(duì)語(yǔ)句安排適當(dāng)?shù)目s進(jìn),增強(qiáng)層次感。以感嘆號(hào)開始的是說(shuō)明語(yǔ)句(說(shuō)明語(yǔ)句也需要以分號(hào)結(jié)束))。,課堂練習(xí):求解下列模型,二、集合的基本用法和LINGO模型的基本要素,理解LINGO建模語(yǔ)言最重要的是理解集合(Set)及其屬性(Attribute)的概念。,例SAILCO公司需要決定下四個(gè)季度的帆船生產(chǎn)量。下四個(gè)季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時(shí)滿足。每個(gè)季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)費(fèi)用為450美元。每個(gè)季度末,每條船的庫(kù)存費(fèi)用為20美元。假定生產(chǎn)提前期為0,初始庫(kù)存為10條船。如何安排生產(chǎn)可使總費(fèi)用最小?,DEM,RP,OP,INV對(duì)每個(gè)季度都應(yīng)該有一個(gè)對(duì)應(yīng)的值,也就說(shuō)他們都應(yīng)該是一個(gè)由4個(gè)元素組成的數(shù)組,其中DEM是已知的,而RP,OP,INV是未知數(shù)。,第一季度第二季度第三季度第四季度DEM:需求量(為已知)40607525RP:正常生產(chǎn)的產(chǎn)量OP:加班生產(chǎn)的產(chǎn)量INV:庫(kù)存量,總費(fèi)用:四個(gè)季度的(生產(chǎn)費(fèi)用+加班費(fèi)用+庫(kù)存費(fèi)用),設(shè),問(wèn)題的模型(可以看出是LP模型),目標(biāo)函數(shù)是所有費(fèi)用的和,約束條件主要有兩個(gè):,1)能力限制:,2)產(chǎn)品數(shù)量的平衡方程:,加上變量的非負(fù)約束,正常生產(chǎn)的產(chǎn)量,加班產(chǎn)量,庫(kù)存量,注:LINDO中沒(méi)有數(shù)組,只能對(duì)每個(gè)季度分別定義變量,如正常產(chǎn)量就要有RP1,RP2,RP3,RP44個(gè)變量等。寫起來(lái)就比較麻煩,尤其是更多(如1000個(gè)季度)的時(shí)候。記四個(gè)季度組成的集合QUARTERS=1,2,3,4,它們就是上面數(shù)組的下標(biāo)集合,而數(shù)組DEM,RP,OP,INV對(duì)集合QUARTERS中的每個(gè)元素1,2,3,4分別對(duì)應(yīng)于一個(gè)值。LINGO正是充分利用了這種數(shù)組及其下標(biāo)的關(guān)系,引入了“集合”及其“屬性”的概念,把QUARTERS=1,2,3,4稱為集合,把DEM,RP,OP,INV稱為該集合的屬性(即定義在該集合上的屬性)。,集合及其屬性,集合元素及集合的屬性確定的所有變量,LINGO中定義集合及其屬性,LP模型在LINGO中的一個(gè)典型輸入方式,以“MODEL:”開始,以“END”結(jié)束,給出優(yōu)化目標(biāo)和約束,目標(biāo)函數(shù)的定義方式,對(duì)語(yǔ)句中冒號(hào)“:”后面的表達(dá)式,按照“:”前面的集合指定的下標(biāo)(元素)進(jìn)行求和。,本例中目標(biāo)函數(shù)也可以等價(jià)地寫成SUM(QUARTERS(i):400*RP(i)+450*OP(i)+20*INV(i),“SUM”相當(dāng)于求和符號(hào)“”,由于本例中目標(biāo)函數(shù)對(duì)集合QUARTERS的所有元素(下標(biāo))都要求和,所以可以將下標(biāo)i省去。,min=sum(Quarters:400*RP+450*OP+20*INV);,SUM(集合(下標(biāo)):關(guān)于集合的屬性的表達(dá)式),約束的定義方式,循環(huán)函數(shù)FOR(集合(下標(biāo)):關(guān)于集合的屬性的約束關(guān)系式),對(duì)冒號(hào)“:”前面的集合的每個(gè)元素(下標(biāo)),冒號(hào)“:”后面的約束關(guān)系式都要成立,本例中,每個(gè)季度正常的生產(chǎn)能力是40條帆船,這正是語(yǔ)句“FOR(QUARTERS(I):RP(I)40);”的含義。這個(gè)語(yǔ)句可以簡(jiǎn)化成“FOR(QUARTERS:RP40);”。,for(quarters(I):RP(I)1;“#GT#”是邏輯運(yùn)算符號(hào),意思是“大于(GreaterThan的字首字母縮寫)”。,約束的定義方式,問(wèn)題的求解:運(yùn)行菜單命令“LINGO|Solve”,最小成本=78450,Lingo模型的基本結(jié)構(gòu),(1)集合段(SETS):sets:Quarters/1,2,3,4/:DEM,RP,OP,INV,I;endsets或者sets:Quarters/1.4/:DEM,RP,OP,INV,I;endsets(2)目標(biāo)與約束段:min=sum(Quarters:400*RP+450*OP+20*INV);For(quarters(I):RP(I)40);For(Quarters(I)|I#GT#1:INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););INV(1)=10+RP(1)+OP(1)-DEM(1);,(3)數(shù)據(jù)段(DATA):,DATA:DEM=40,60,75,25;(或?qū)懗蒁EM=40607525;)Enddata,(4)初始段(INIT):以“INIT:”開始,“ENDINIT”結(jié)束,對(duì)集合的屬性(數(shù)組)定義初值(因?yàn)榍蠼馑惴ㄒ话闶堑惴ǎ杂脩羧绻芙o出一個(gè)比較好的迭代初值,對(duì)提高算法的計(jì)算效果是有益的)。如果有一個(gè)接近最優(yōu)解的初值,對(duì)LINGO求解模型是有幫助的。定義初值的格式為:“attribute(屬性)=value_list(常數(shù)列表);”這與數(shù)據(jù)段中的用法是類似的。上例中沒(méi)有初始化部分,我們將在下一個(gè)例子中舉例說(shuō)明。,(5)計(jì)算段(CALC):以“CALC:”開始,“ENDCALC”結(jié)束,對(duì)一些原始數(shù)據(jù)進(jìn)行計(jì)算處理。在實(shí)際問(wèn)題中,輸入的數(shù)據(jù)通常是原始數(shù)據(jù),不一定能在模型中直接使用,可以在這個(gè)段對(duì)這些原始數(shù)據(jù)進(jìn)行一定的“預(yù)處理”,得到模型中真正需要的數(shù)據(jù)。,例如上例,如果希望得到全年的總需求和季度平均需求,可以增加這個(gè)段:CALC:T_DEM=SUM(quarters:DEM);!總需求;A_DEM=T_DEM/size(quarters);!平均需求;ENDCALC在計(jì)算段中也可以使用集合函數(shù)(其中函數(shù)size(quarters)表示集合quarters的元素個(gè)數(shù),這里也就是4)。這時(shí),變量T_DEM的值就是總需求,A_DEM的值就是平均需求(如果需要的話,這兩個(gè)變量就可以在程序的其它地方作為常數(shù)使用了)。注:上面的兩個(gè)語(yǔ)句不能交換順序,因?yàn)橛?jì)算A_DEM必須要用到T_DEM的值。此外,在計(jì)算段中只能直接使用賦值語(yǔ)句,而不能包含需要經(jīng)過(guò)解方程或經(jīng)過(guò)求解優(yōu)化問(wèn)題以后才能決定的變量。,基本集合與派生集合,例3.4建筑工地的位置(用平面坐標(biāo)a,b表示,距離單位:公里)及水泥日用量d(噸)下表給出。有兩個(gè)臨時(shí)料場(chǎng)位于P(5,1),Q(2,7),日儲(chǔ)量各有20噸。從A,B兩料場(chǎng)分別向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小。兩個(gè)新的料場(chǎng)應(yīng)建在何處,節(jié)省的噸公里數(shù)有多大?,建立模型,記工地的位置為,水泥日用量為;料場(chǎng)位置為,日儲(chǔ)量為;從料場(chǎng)向工地的運(yùn)送量為。,使用現(xiàn)有臨時(shí)料場(chǎng)時(shí),決策變量只有(非負(fù)),所以這是LP模型;當(dāng)為新建料場(chǎng)選址時(shí)決策變量為和,由于目標(biāo)函數(shù)對(duì)是非線性的,所以在新建料場(chǎng)時(shí)是NLP模型。先解NLP模型,而把現(xiàn)有臨時(shí)料場(chǎng)的位置作為初始解告訴LINGO。,輸入程序,定義了三個(gè)集合,其中LINK在前兩個(gè)集合DEMAND和SUPPLY的基礎(chǔ)上定義,表示集合LINK中的元素就是集合DEMAND和SUPPLY的元素組合成的有序二元組,從數(shù)學(xué)上看LINK是DEMAND和SUPPLY的笛卡兒積,也就是說(shuō)LINK=(S,T)|SDEMAND,TSUPPLY因此,其屬性C也就是一個(gè)6*2的矩陣(或者說(shuō)是含有12個(gè)元素的二維數(shù)組)。,LINGO建模語(yǔ)言也稱為矩陣生成器(MATRIXGENERATOR)。類似DEMAND和SUPPLY直接把元素列舉出來(lái)的集合,稱為基本集合(primaryset),而把LINK這種基于其它集合而派生出來(lái)的二維或多維集合稱為派生集合(derivedset)。由于是DEMAND和SUPPLY生成了派生集合LINK,所以DEMAND和SUPPLY稱為L(zhǎng)INK的父集合。,輸入程序,初始段,INGO對(duì)數(shù)據(jù)是按列賦值的語(yǔ)句的實(shí)際賦值順序是X=(5,2),Y=(1,7),而不是X=(5,1),Y=(2,7)等價(jià)寫法:“X=5,2;Y=1,7;”,同理,數(shù)據(jù)段中對(duì)常數(shù)數(shù)組A,B的賦值語(yǔ)句也可以寫成A,B=1.251.258.750.750.54.755.75536.57.257.75;,輸入程序,解答:運(yùn)行菜單命令“LINGO|Solve”,局部最優(yōu)解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,C(略),最小運(yùn)量=89.8835(噸公里)。,問(wèn)題:最小運(yùn)量89.8835是不是全局最優(yōu),是用“LINGO|Options”菜單命令打開選項(xiàng)對(duì)話框,在“GlobalSolver”選項(xiàng)卡上選擇“UseGlobalSolver”,激活全局最優(yōu)求解程序。,稠密集合與稀疏集合,包含了兩個(gè)基本集合構(gòu)成的所有二元有序?qū)Φ呐缮戏Q為稠密集合(簡(jiǎn)稱稠集)。有時(shí)候,在實(shí)際問(wèn)題中,一些屬性(數(shù)組)只在笛卡兒積的一個(gè)真子集合上定義,這種派生集合稱為稀疏集合(簡(jiǎn)稱疏集)。,例(最短路問(wèn)題)在縱橫交錯(cuò)的公路網(wǎng)中,貨車司機(jī)希望找到一條從一個(gè)城市到另一個(gè)城市的最短路.下圖表示的是公路網(wǎng),節(jié)點(diǎn)表示貨車可以??康某鞘?弧上的權(quán)表示兩個(gè)城市之間的距離(百公里).那么,貨車從城市S出發(fā)到達(dá)城市T,如何選擇行駛路線,使所經(jīng)過(guò)的路程最短?,分析,假設(shè)從S到T的最優(yōu)行駛路線P經(jīng)過(guò)城市C1,則P中從S到C1的子路也一定是從S到C1的最優(yōu)行駛路線;假設(shè)P經(jīng)過(guò)城市C2,則P中從S到C2的子路也一定是從S到C2的最優(yōu)行駛路線.因此,為得到從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)行駛路線是很容易得到的(實(shí)際上,此例中S到Ai(i=1,2,3)只有唯一的道路),分析,此例中可把從S到T的行駛過(guò)程分成4個(gè)階段,即SAi(i=1,2或3),AiBj(j=1或2),BjCk(k=1或2),CkT.記d(Y,X)為城市Y與城市X之間的直接距離(若這兩個(gè)城市之間沒(méi)有道路直接相連,則可以認(rèn)為直接距離為),用L(X)表示城市S到城市X的最優(yōu)行駛路線的路長(zhǎng):,本例的計(jì)算,所以,從S到T的最優(yōu)行駛路線的路長(zhǎng)為20.進(jìn)一步分析以上求解過(guò)程,可以得到從S到T的最優(yōu)行駛路線為SA3B2C1T.,這種計(jì)算方法在數(shù)學(xué)上稱為動(dòng)態(tài)規(guī)劃(DynamicProgramming),本例的LINGO求解,“CITIES”(城市):一個(gè)基本集合(元素通過(guò)枚舉給出),L:CITIES對(duì)應(yīng)的屬性變量(我們要求的最短路長(zhǎng)),“ROADS”(道路):由CITIES導(dǎo)出的一個(gè)派生集合(請(qǐng)?zhí)貏e注意其用法),由于只有一部分城市之間有道路相連,所以不應(yīng)該把它定義成稠密集合,將其元素通過(guò)枚舉給出,這就是一個(gè)稀疏集合。,D:稀疏集合ROADS對(duì)應(yīng)的屬性變量(給定的距離),本例的LINGO求解,從模型中還可以看出:這個(gè)LINGO程序可以沒(méi)有目標(biāo)函數(shù),這在LINGO中,可以用來(lái)找可行解(解方程組和不等式組)。,在數(shù)據(jù)段對(duì)L進(jìn)行賦值,只有L(S)=0已知,后面的值為空(但位置必須留出來(lái),即逗號(hào)“,”一個(gè)也不能少,否則會(huì)出錯(cuò))。如果這個(gè)語(yǔ)句直接寫成“L=0;”,語(yǔ)法上看也是對(duì)的,但其含義是L所有元素的取值全部為0,所以也會(huì)與題意不符。,本例的LINGO求解,雖然集合CITIES中的元素不是數(shù)字,但當(dāng)它以CITIES(I)的形式出現(xiàn)在循環(huán)中時(shí),引用下標(biāo)I卻實(shí)際上仍是正整數(shù),也就是說(shuō)I指的正是元素在集合中的位置(順序),一般稱為元素的索引(INDEX)。,在for循環(huán)中的過(guò)濾條件里用了一個(gè)函數(shù)“index”,其作用是返回一個(gè)元素在集合中的索引值,這里index(S)=1(即元素S在集合中的索引值為1),所以邏輯關(guān)系式“I#GT#index(S)”可以可以直接等價(jià)地寫成“I#GT#1”。這里index(S)實(shí)際上還是index(CITIES,S)的簡(jiǎn)寫,即返回S在集合CITIES中的索引值。,本例的LINGO求解結(jié)果,從S到T的最優(yōu)行駛路線的路長(zhǎng)為20(進(jìn)一步分析,可以得到最優(yōu)行駛路線為SA3B2C1T)。,本例中定義稀疏集合ROADS的方法是將其元素通過(guò)枚舉給出,有時(shí)如果元素比較多,用起來(lái)不方便。另一種定義稀疏集合的方法是“元素過(guò)濾”法,能夠從笛卡兒積中系統(tǒng)地過(guò)濾下來(lái)一些真正的元素。,例某班8名同學(xué)準(zhǔn)備分成4個(gè)調(diào)查隊(duì)(每隊(duì)兩人)前往4個(gè)地區(qū)進(jìn)行社會(huì)調(diào)查。這8名同學(xué)兩兩之間組隊(duì)的效率如下表所示(由于對(duì)稱性,只列出了嚴(yán)格上三角部分),問(wèn)如何組隊(duì)可以使總效率最高?,分析,這是一個(gè)匹配(MATCHING)問(wèn)題。把上表的效率矩陣記為BENEFIT(由于對(duì)稱性,這個(gè)矩陣只有嚴(yán)格上三角部分共28個(gè)數(shù)取非零值)。用MATCH(Si,Sj)=1表示同學(xué)Si,Sj組成一隊(duì),而MATCH(Si,Sj)=0表示Si,Sj不組隊(duì)。由于對(duì)稱性,只需考慮i=,大于等于)(在優(yōu)化模型中約束一般沒(méi)有嚴(yán)格小于、嚴(yán)格大于關(guān)系),運(yùn)算符的優(yōu)先級(jí),基本的數(shù)學(xué)函數(shù),在LINGO中建立優(yōu)化模型時(shí)可以引用大量的內(nèi)部函數(shù),這些函數(shù)以”打頭。LINGO中包括相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法非常簡(jiǎn)單,下面一一列出。,ABS(X):絕對(duì)值函數(shù),返回X的絕對(duì)值。COS(X):余弦函數(shù),返回X的余弦值(X的單位是弧度)。EXP(X):指數(shù)函數(shù),返回,FLOOR(X):取整函數(shù),返回X的整數(shù)部分(向最靠近0的方向取整)。LGM(X):返回X的伽瑪(gamma)函數(shù)的自然對(duì)數(shù)值(當(dāng)X為整數(shù)時(shí)LGM(X)=LOG(X-1)?。划?dāng)X不為整數(shù)時(shí),采用線性插值得到結(jié)果)。LOG(X):自然對(duì)數(shù)函數(shù),返回X的自然對(duì)數(shù)值。,的值(其中e=2.718281.)。,基本的數(shù)學(xué)函數(shù),MOD(X,Y):模函數(shù),返回X對(duì)Y取模的結(jié)果,即X除以Y的余數(shù),這里X和Y應(yīng)該是整數(shù)。POW(X,Y):指數(shù)函數(shù),返回XY的值。SIGN(X):符號(hào)函數(shù),返回X的符號(hào)值(X=0時(shí)返回+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ù),集合上的元素(下標(biāo))進(jìn)行循環(huán)操作的函數(shù),一般用法如下:function(setname(set_index_list)|condition:expression_list);其中:,function集合函數(shù)名,FOR、MAX、MIN、PROD、SUM之一;Setname集合名;set_index_list集合索引列表(不需使用索引時(shí)可以省略);Condition用邏輯表達(dá)式描述的過(guò)濾條件(通常含有索引,無(wú)條件時(shí)可以省略);expression_list一個(gè)表達(dá)式(對(duì)FOR函數(shù),可以是一組表達(dá)式。,集合循環(huán)函數(shù),五個(gè)集合函數(shù)名的含義:FOR(集合元素的循環(huán)函數(shù)):對(duì)集合setname的每個(gè)元素獨(dú)立地生成表達(dá)式,表達(dá)式由expression_list描述(通常是優(yōu)化問(wèn)題的約束)。MAX(集合屬性的最大值函數(shù)):返回集合setname上的表達(dá)式的最大值。MIN(集合屬性的最小值函數(shù)):返回集合setname上的表達(dá)式的最小值。PROD(集合屬性的乘積函數(shù)):返回集合setname上的表達(dá)式的積。SUM(集合屬性的求和函數(shù)):返回集合setname上的表達(dá)式的和。,集合操作函數(shù),INDEX(set_name,primitive_set_element)給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時(shí)元素出現(xiàn)順序的位置編號(hào))。省略set_name,LINGO按模型中定義的集合順序找到第一個(gè)含有該元素的集合,并返回索引值。如果沒(méi)有找到該元素,則出錯(cuò)。注:Set_name的索引值是正整數(shù)且只能位于1和元素個(gè)數(shù)之間。例:定義一個(gè)女孩姓名集合(GIRLS)和男孩姓名集合(BOYS):SETS:GIRLS/DEBBIE,SUE,ALICE/;BOYS/BOB,JOE,SUE,FRED/;ENDSETS都有SUE,GIRLS在BOYS前定義,調(diào)用INDEX(SUE)將返2,相當(dāng)于INDEX(GIRLS,SUE)。要找男孩中名為SUE的小孩的索引,應(yīng)該使用INDEX(BOYS,SUE),返3。,集合操作函數(shù),IN(set_name,primitive_index_1,primitive_index_2.)判斷一個(gè)集合中是否含有某個(gè)索引值。如果集合set_name中包含由索引primitive_index_1,primitive_index_2.所對(duì)應(yīng)元素,則返回1(邏輯值“真”),否則返回0(邏輯值“假”)。索引用“ENDSETS,如果集合C是由集合A,B派生的,例如:SETS:A/1.3/:;B/XYZ/:;C(A,B)/1,X1,Z2,Y3,X/:;ENDSETS判斷C中是否包含元素(2,Y),則可以利用以下語(yǔ)句:X=IN(C,INDEX(A,2),INDEX(B,Y);對(duì)本例,結(jié)果是X=1(真)。注:X既是集合B的元素,又對(duì)X賦值1,在LINGO中這種表達(dá)是允許的,因?yàn)榍罢呤羌系脑兀笳呤亲兞?,邏輯上沒(méi)有關(guān)系(除了同名外),所以不會(huì)出現(xiàn)混淆。,集合操作函數(shù),IN(set_name,primitive_index_1,primitive_index_2.),WRAP(I,N)此函數(shù)對(duì)N1無(wú)定義當(dāng)I位于區(qū)間1,N內(nèi)時(shí)直接返回I;一般地,返回J=I-K*N,其中J位于區(qū)間1,N,K為整數(shù)。即WRAP(I,N)=MOD(I,N)。但當(dāng)MOD(I,N)=0時(shí)WRAP(I,N)=N.此函數(shù)可以用來(lái)防止集合的索引值越界。用戶在編寫LINGO程序時(shí),應(yīng)注意避免LINGO模型求解時(shí)出現(xiàn)集合的索引值越界的錯(cuò)誤。,集合操作函數(shù),SIZE(set_name)返回?cái)?shù)據(jù)集set_name中包含元素的個(gè)數(shù)。,變量定界函數(shù),對(duì)變量的取值范圍附加限制,共有以下四種:BND(L,X,U):限制L=X1的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆浙江省溫州九校高二物理第二學(xué)期期末聯(lián)考模擬試題含解析
- 2025屆廣西玉林市福綿高級(jí)中學(xué)物理高一下期末統(tǒng)考模擬試題含解析
- 2025屆安徽省淮南市第一中學(xué)創(chuàng)新班物理高二第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 鑄造車間創(chuàng)新管理辦法
- 銀行預(yù)留簽章管理辦法
- 物業(yè)服務(wù)企業(yè)管理辦法
- 2025屆金陵中學(xué)物理高二下期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 銀行授權(quán)崗位管理辦法
- 工程管理費(fèi)使用管理辦法
- 河北省正定縣第七中學(xué)2025屆高一物理第二學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 2025年濟(jì)南綜??毓杉瘓F(tuán)有限公司公開招聘(22名)筆試備考試題含答案詳解
- 溺水安全知識(shí)課件
- 教育政策學(xué)全套課件
- 2025至2030年中國(guó)高速公路廣告行業(yè)市場(chǎng)行情監(jiān)測(cè)及投資前景展望報(bào)告
- 識(shí)別心內(nèi)科護(hù)理高風(fēng)險(xiǎn)
- 2025年 嘉峪關(guān)市招聘編制外聘用制教師筆試試卷附答案
- 貨代公司風(fēng)險(xiǎn)管理制度
- 食品公司衛(wèi)生間管理制度
- 2025年數(shù)據(jù)挖掘和分析考試試卷及答案
- 2025河南省豫地科技集團(tuán)社會(huì)招聘169人筆試參考題庫(kù)附帶答案詳解析集合
- JG/T 518-2017基樁動(dòng)測(cè)儀
評(píng)論
0/150
提交評(píng)論