電子檔2007高教社杯全國生數(shù)學(xué)建模競賽_第1頁
電子檔2007高教社杯全國生數(shù)學(xué)建模競賽_第2頁
電子檔2007高教社杯全國生數(shù)學(xué)建模競賽_第3頁
電子檔2007高教社杯全國生數(shù)學(xué)建模競賽_第4頁
電子檔2007高教社杯全國生數(shù)學(xué)建模競賽_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2007高教社杯大學(xué)生數(shù)學(xué)建模競頁賽區(qū)評閱(由賽區(qū)評閱前進(jìn)行賽區(qū)評閱記錄(可供賽區(qū)評閱時使用(由賽區(qū)送交前評閱( 評閱前進(jìn)行乘,看奧奧運(yùn)會的舉行期鄰近屆時看奧運(yùn)的人們將會最佳包括公汽和地鐵)受上限。以及另外兩個主要因素:出行時間和花費(fèi)。采用VisualBasic編程,不加改動地直接導(dǎo)入原文附件中公汽線路信息的數(shù)據(jù)文檔,就得到3957個公汽站點(diǎn)的鄰接矩陣。接下來,導(dǎo)入鄰接矩陣,建立了以最少乘車次數(shù)為目標(biāo)的優(yōu)化模型,并通過VB以(見表1遠(yuǎn)近程度的基礎(chǔ)上,分別對模型各自的可行解集采用冒泡排序法,通過VB選取出排于(2-439站點(diǎn)與公汽線路網(wǎng)絡(luò)結(jié)合擴(kuò)充為一整個

為經(jīng)過此地鐵站點(diǎn)的線路延伸(

P10說明(P11-P125。:最佳線路站點(diǎn)集合換乘次數(shù)鄰接矩 冒泡排一、問題重第29屆奧運(yùn)會明年8月將在舉行,屆時有大量觀眾到現(xiàn)場奧運(yùn)比賽,其(1線路以及各種換乘方式的相關(guān)信息(2 (4)、 (5)、 2二、問題分乘車者來說首先想到的是要直達(dá),所以換乘次數(shù)最少作為最基本最優(yōu)先考慮的標(biāo)些路線包含的站點(diǎn)也以集合形式存入,以同樣方式又以該站點(diǎn)集找出與之關(guān)聯(lián)的路線以及換車次數(shù)是否增加,用這種思想可以來建模與編程。根據(jù),應(yīng)該當(dāng)換車次數(shù)最小時的乘車路線一般不唯一,綜合時間和費(fèi)用等因素尋找最佳路線。綜合來說,本文問題一將考慮三種查詢方式。少時,該問題作為問題一的擴(kuò)充:將兩條地鐵路線加入原來的交通網(wǎng)中,將39個行的問題,可以將此步行路線對應(yīng)的地鐵站視為延伸到站的情況來看然后再根據(jù)具,且為簡化問題,行到的站點(diǎn)集合,對于起點(diǎn)站與終點(diǎn)站的可步行到的兩個站點(diǎn)集合之中都任取一個站點(diǎn)分別作為新的起點(diǎn)站和終點(diǎn)站,用問題一的方法求最少換乘次數(shù)所對應(yīng)的乘車路線集,再三、模型假四、符號說si:從i=1到i=3957依次表示從S0001到S3957的公汽站點(diǎn)s0:出發(fā)站st五、模型的建立及求通過對附件中信息的分析不難得知整個公汽有520個,從L001到L520依次表示;所有站點(diǎn)共有3957個,從S0001到S3957依次表示?;镜那闆r。由此,兩兩站點(diǎn)之間是否能夠直達(dá)的信息存入一個3957階的鄰接Ssij)39573957sij表示站點(diǎn)si到站點(diǎn)sj是否有直達(dá)車次,有則sij1時為計算最少換乘多少次后任意兩站點(diǎn)間一定鄰接這一結(jié)果的方便記sij為1,而沒有直sij0。iulaic編程直接調(diào)用原題中文件名為“1.1S便于導(dǎo)入使用。這里不用對附件中數(shù)據(jù)做任何初始預(yù)處理是本程序的特色。乘客乘坐公汽的滿意度與該乘客所搭乘車輛的上車站點(diǎn)離始發(fā)站點(diǎn)的距離有關(guān)。X:由經(jīng)過站點(diǎn)s0的所有公汽路線構(gòu)成的集合。Y:由經(jīng)過站點(diǎn)st的所有公汽路線構(gòu)成的集合。XY:XY的交集。E:由XF:由YEF:E與FR:經(jīng)過EG:由RGF:G與FS:經(jīng)過GL:SLF:LFXY,EF,GF,LF1XY。否則,2EF。否則,3GF。否則,4LF

,x2

x3

x4可以描述乘車次數(shù)的多少1,XYx1=0,

x2,EF 0,0,3x0,3

x4,LF00,44

,x24

x3

x4中必有三個變量同時為零且必有一個為非零,此意思可用表達(dá)式xi1

xixj (i

令集合Esij|sij1,其中,i=1,2,…3957;j=1,2,…395744Minxi4 xi 1,XYx1=0, 2,EF x20, 3,GFx3 0,x0, 4x0,

xixj (i得到集是否交N得到集是否交N得到集得到集是否交YYYNYN是是否交NY無最佳公路結(jié)YVisualBasic實現(xiàn)以上算法。根據(jù)題目中要求計算的六對始末站點(diǎn),每對站點(diǎn)1S3359S1557S0971S0008S014812112125.1.2的結(jié)果表現(xiàn)形式是以站點(diǎn)表示出來這對使用查詢系統(tǒng)的客戶來說不是VB實現(xiàn)反查。2所示:站點(diǎn)

站點(diǎn) 站點(diǎn)車次 車次圖慮最小。根據(jù)乘客的選擇,就可以確定權(quán)重系數(shù)wj。被評價對象:從車次最優(yōu)的結(jié)果中得到的路線,記有n條路線,則有n個被評價的對象,先分別記為S1,S2,,Sn(n1)。其中路線的是:如果最優(yōu)的換車次數(shù)為12222 評價指標(biāo):由起點(diǎn)到終點(diǎn)的坐車時間和坐車的費(fèi)用,分別記為x1,x2,即評價指標(biāo)向x(x,x)T 權(quán)重系數(shù):根據(jù)乘客選擇來定,用wjxjj1222wj0(j12),且wj1jw11w20;w10w2w10.5w20.52x和權(quán)重系數(shù)wyf(wx。此處2ywjxjj運(yùn)用標(biāo)準(zhǔn)差方法,假設(shè)2個評價指標(biāo)為x1,x2n組選出的線路時間和費(fèi)用值x(i1 n;j12)xxijx

,n;j1,2)ss1 1 2

jxj

xij,sjnn

(xijxj)]2j12nnminminy=w'j

x=xij-x

sxx=1x

1n12sj

(xij-xj)]2nn根據(jù)上面的建模思路,運(yùn)用iulic編程,會得到不止一條最優(yōu)的路線上面的模型最后只取排三的路線仍然用B編程實現(xiàn)模型求解程序用冒泡排序法對結(jié)果排序,這樣,相對于比較排序法可以減少一半的計算量。w11w202:時間(分站點(diǎn)與經(jīng)過站點(diǎn)到達(dá)路S3359-3L436:下行S3359-S1784轉(zhuǎn)L167下行S1784-3L436:下行S3359-S1784轉(zhuǎn)L217S1784-3L436:下行S3359-S1241轉(zhuǎn)L167下行S1241-S1557-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L363:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S1402-S0971-3L013:下行S0971-S2184轉(zhuǎn)L417下行S21843L013:下行S0971-S0992轉(zhuǎn)L417下行S09923L013:下行S0971-S1770轉(zhuǎn)L417下行S1770S0008-2L159:下行S0008-S0291轉(zhuǎn)L058下行S0291-2L159:下行S0008-S0400轉(zhuǎn)L474上行S0400-2L159:下行S0008-S0491轉(zhuǎn)L058下行S0491-S0148-3轉(zhuǎn)L417:下S2210-3轉(zhuǎn)L417:下S3332-3轉(zhuǎn)L417:下S3351-2827時間(分發(fā)站經(jīng)時間(分發(fā)站經(jīng)過站點(diǎn)到達(dá)路S3359-3L436:下行S3359-S1784轉(zhuǎn)L167下行S1784-3L436:下行S3359-S1784轉(zhuǎn)L217S1784-3L436:下行S3359-S1241轉(zhuǎn)L167下行S1241-S1557-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L363:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S1402-S0971-3L013:下行S0971-S2184轉(zhuǎn)L417下行S21843L013:下行S0971-S0992轉(zhuǎn)L417下行S09923L013:下行S0971-S1770轉(zhuǎn)L417下行S1770S0008-2L159:下行S0008-S0291轉(zhuǎn)L058下行S0291-2L159:下行S0008-S0400轉(zhuǎn)L474上行S0400-2L159:下行S0008-S0491轉(zhuǎn)L058下行S0491-S0148-3轉(zhuǎn)L417:下S2210-3轉(zhuǎn)L417:下S3332-3轉(zhuǎn)L417:下S3351-2827時間(分發(fā)站經(jīng)過時間(分發(fā)站經(jīng)過站點(diǎn)到達(dá)路S3359-3L436:下行S3359-S1784轉(zhuǎn)L167下行S1784-3L436:下行S3359-S1784轉(zhuǎn)L217S1784-3L436:下行S3359-S1241轉(zhuǎn)L167下行S1241-S1557-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L363:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-3L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S1402-S0971-3L013:下行S0971-S2184轉(zhuǎn)L417下行S21843L013:下行S0971-S0992轉(zhuǎn)L417下行S09923L013:下行S0971-S1770轉(zhuǎn)L417下行S1770S0008-2L159:下行S0008-S0291轉(zhuǎn)L058下行S0291-2L159:下行S0008-S0400轉(zhuǎn)L474上行S0400-2L159:下行S0008-S0491轉(zhuǎn)L058下行S0491-S0148-3轉(zhuǎn)L417:下S2210-3轉(zhuǎn)L417:下S3332-3轉(zhuǎn)L417:下S3351-2827線性綜合法的特點(diǎn)③當(dāng)權(quán)重系數(shù)預(yù)先給定時,該方法使評價結(jié)果對于各備選方案之間的差異表現(xiàn)不敏感;VB.txt455條路線。,考慮結(jié)果中的時間和花費(fèi)的問 發(fā) 權(quán)重得出的結(jié)果與平均權(quán)重得出,1選擇的要素,單一票制1元則的在路程的后端出現(xiàn)。3939個站點(diǎn)每一個都可以到1至4個公汽站點(diǎn)進(jìn)行換乘這兩條地鐵路線以及它39個站點(diǎn)視作兩條完整的公汽路線擴(kuò)充到實際的公汽路線網(wǎng)絡(luò)圖中,每個地鐵基于上面的只是車的模型,這個模型就只用將地鐵路線加入的交通網(wǎng)中由題目的附錄資料可以了解到,要到達(dá)某些車可以通過步行到達(dá)最近的地鐵站點(diǎn)然后通過地鐵線路到達(dá)另一地鐵站,然后再步行到達(dá)可以步行到達(dá)地鐵站的車站點(diǎn)這樣可以近似的將這兩個站點(diǎn)看成可直達(dá)的即是將地鐵站點(diǎn)向可以步行到達(dá)的站點(diǎn)進(jìn)行延伸這樣就可以將車站和地鐵車站之間的關(guān)系更直接的表示出來,而且有利于對于換乘次數(shù)的計算。例如,從公汽站點(diǎn)S0537到S0607,可先從S0537步行到D24,乘地鐵到D26,再步行到S0607。將地鐵路線向兩邊延伸,覆蓋兩頭的步行路線,那么這條路線就可以視

圖同于模型一的思想,將地鐵的39個站點(diǎn)加入原來的3957個車站點(diǎn),記集T1{D1D2 D22D23}T2{D24D25 D39D12D18。3939集合,記為Di,i1, ,39,分別存放與第i個地鐵站點(diǎn)可以步行到達(dá)的車站點(diǎn)

由上面符號的建立,地鐵和的出行分為5種情況步行的情況stenDiistDien,鐵延伸的思想,可以認(rèn)為此時st到en可以為步行,此時的換車次數(shù)為0,然后再和要做從st到en的情況根據(jù)時間和費(fèi)用還有離始發(fā)站的遠(yuǎn)近來對不同線路進(jìn)行評比。例如下圖,從公汽站點(diǎn)S0087到S0086,按照圖中箭頭,可直接步行通過地鐵站D27到達(dá)。圖

公汽站地鐵站0次或者一次的情況:stDien

,i,j且ijsten都可以分別步行到達(dá)不同的地鐵站點(diǎn),這時再分為兩種情況:DiTlDjTmlmDiDjDiTlDjTmlm則優(yōu)先考DiTlDjTmlm0DiTlDjTmlm的情況,就需要再在中途時換另一個地鐵,此時的換車次1次。同樣的將得到的路線和沒有搭地鐵的路線進(jìn)行對比。情況①:例如下圖中,從公汽站點(diǎn)S0537到S0607,可先從S0537D24

圖上。那么換乘一次的情況為:從S0607步行到D26,從D26T2D18下T1D23D23步行到公汽站點(diǎn)S2521。

公汽站

地鐵站

圖stDii,enDj對j到的最近的公汽站,這樣也可以得到類似圖3——圖5的一條或幾條坐地鐵的路線,再stDi對ienDj,j335的一條或幾條坐地鐵的路線,stDjenDj對j34335的一種;如果兩23—5例如下圖中,出發(fā)站點(diǎn)與終到站點(diǎn)之間的路線選擇,實現(xiàn)以公汽路線

公汽站

地鐵站36對起始時間(鐘轉(zhuǎn)車次到達(dá)路S3359-31L436:下行S3359-S1784轉(zhuǎn)L167下行S1784-31L436:下行S3359-S1784轉(zhuǎn)L217S1784-S1557-32L084:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-32L363:下行S1557-S1919轉(zhuǎn)L189下行S1919轉(zhuǎn)L460來回S3186-S0971-31L013:下行S0971-S2184轉(zhuǎn)L417下行S218431L013:下行S0971-S0992轉(zhuǎn)L417下行S099221L159:下行S0008-S0291轉(zhuǎn)L058下行S0291-22L159:下行S0008-S0400轉(zhuǎn)D13-D39轉(zhuǎn)L474上S0291-S0148-32轉(zhuǎn)L417:下S2210-32轉(zhuǎn)L417:下S3332-21212條最佳路線,由于所有起始點(diǎn)和終點(diǎn)都不在地鐵所能包括的步行集合里面,所以這種情況屬于第5種情況,然后再找到在模型1得到的前3條路線中找到和地鐵又交集的站其中只有S0400S2535、S0291D13、D14、D39的路線,再根據(jù)找出來有乘坐地鐵的路線與直接得路線進(jìn)行比較,發(fā)現(xiàn)要在最優(yōu)的路線上再轉(zhuǎn)車的話轉(zhuǎn)車次數(shù)和費(fèi)用都會增加,而時間頁有可能增加,所以在模型2中得到的最佳路線還是以車這些站點(diǎn)的鄰近站點(diǎn)的判斷和分析,這樣才能更加符合人們出行時的實際路線選擇情之處在于:每一次判斷的集合,是在原集合基礎(chǔ)上,將鄰近站點(diǎn)擴(kuò)充進(jìn)去的集合。si到站點(diǎn)sj的步行時間為tij。當(dāng)兩站要對所有的tijT,因為題目給出的是所有站點(diǎn)之間的步行時間在此從時間的角度考慮數(shù)據(jù)的篩,sisjtij(這個時間可以通過問題二的解答得出。tij與tij進(jìn)行比較:存在一個整數(shù)比較值,

時tij作為有效值存入集合T,其下標(biāo)以的形式存入下標(biāo)集合I。否則tij值的確定需要根據(jù)對乘客的步行限度信息的統(tǒng)計得到,一般2站點(diǎn)

站點(diǎn)步行時間步行時間圖tijsiSisj|(i,j)Sisi的鄰近站點(diǎn)。Xs0和站點(diǎn)集合S0E:包含X中所有站點(diǎn)及它們的鄰近站點(diǎn)的集合。F:包含Y中所有站點(diǎn)及它們的鄰近站點(diǎn)的集合。EF:E與F的交集。R:經(jīng)過EG:包含RGF:G與FS:經(jīng)過GL:包含SLF:LF44Minxi4 xi 1,XYx1=0, 2,EF x20, 3,GFx3 0,x0, 4x0,

xixj (i六、模型由于本文的問題是為開發(fā)計算機(jī)系統(tǒng)提供模型和算法。模型的求解采用VisualBasic編程實現(xiàn),其程序能夠獨(dú)立生成文件,在客戶端獨(dú)立運(yùn)行,不用借助于第軟1起終線路換乘站線起終線路換乘站線路圖法是:如果最優(yōu)的換車次數(shù)為0,則選取換車次數(shù)為0和1的所有路線;如果最優(yōu)的換車為2的次數(shù)已經(jīng)很多了,所以只要選取換車次數(shù)為2的所有路線出來比較。這樣就可3次的就很了,計算機(jī)不容易實現(xiàn)。但是,如果某兩個站點(diǎn)要坐車到達(dá)需要換車3次以上的話,繼續(xù)采取該模型的算法就不太適用了,所以此時可以采用), 把3957個站點(diǎn)平均分布在圓形的區(qū)域上,利用圖論得出兩站點(diǎn)不同方案經(jīng)過站點(diǎn)的極),七、參考文[1]扈震,城市換乘數(shù)據(jù)模型研究及算法實現(xiàn),電信網(wǎng)技術(shù)71-74,2007[2],基于換乘次數(shù)最少的城市網(wǎng)絡(luò)最優(yōu)路徑算法,經(jīng)濟(jì)地理673-676,2005[3]城市查詢系統(tǒng)的設(shè)計與實現(xiàn)測繪信息與工程40-42,2006

八、附Dimadjoin(1To3957,1To3957)AsBooleanDimdAsString'數(shù)據(jù)DimlAsIntegerDims()AsInteger'數(shù)據(jù)處理變量DimsqAsInteger'數(shù)據(jù)序號DimpAsBooleansDimbnAsInteger'車次DimhnAsInteger'行數(shù)DimhcDimstrpathDimTimepowerDimDimoldres()AsPrivateSubOpenSysPath&"1.1.txt"ForInputAs1DimhnnAsIntegerhnn=DoWhileNotLineInput#1,dl=Len(d)p=Falsesq=1Ifl>0Fori1TolSelectCaseMid(d,i,1)CaseIs=bn=Mid(d,i+1,3)i=i+3CaseIs=ReDimPreserves(1Tohn,UBound(s,2)+1)p=Trues(hnn,sq)=Mid(d,i+1,4)i=i+4CaseIs="-"sq=sq+1EndSelectIfpTrueThenFori=1TosqForj=i+1Toa=s(hnn,b=s(hnn,Ifa<>bThenadjoin(a,b)=TrueEndIfIfMid(d,1,1)="S"Thenadjoin(b,a)=TrueEndIfEndIfEndhnn=hnn+1Close#1EndSubPrivateSubCommand2_Click()Dimst()AsInteger'起點(diǎn)站Dimen()AsInteger'終點(diǎn)站DimpAsBoolean'判斷DimsqjAsIntegerText7=""Text6=Text7Text5=Text6Text3=Text4Text4=Text5sqj=1Ifadjoin(Text1,Text2)TrueThenText3=""&Format(sqj,"000")&":"&"S"&Format(Text1,"0000")&"->"&"S"&Format(Text2,"0000")p=ElseIfadjoin(Text1,Text2)=FalseThenp=FalseText3EndIfIfpFalseThenReDimst(1)ReDimen(1)st(0)=1en(0)=Fori=1To3957Ifadjoin(Text1,i)=TrueThenst(st(0))=ist(0)=st(0)+ReDimPreservest(UBound(st)+1)EndIfIfadjoin(i,Text2)=TrueThenen(en(0))=ien(0)=en(0)+ReDimPreserveen(UBound(en)+1)EndIf'判斷Fori=1ToUBound(st)-Forj=1ToUBound(en)-1Ifst(i)=en(j)Then&"S"&Format(st(i),"0000")&"->"&"S"&Format(Text2,"0000")+Chr(13)+Chr(10)p=Truesqj=sqj+1EndIfIfpFalseThenText4="否"EndIfEndIfIfp=FalseThen'轉(zhuǎn)車兩次Dimmi1()AsIntegersqj=1Fori=1ToUBound(st)-1ReDimmi1(1)mi1(0)=Fork=1To3957Ifadjoin(st(i),k)=TrueThenmi1(mi1(0))=kmi1(0)=mi1(0)+ReDimPreservemi1(UBound(mi1)+1)EndIf'判斷Form=1ToUBound(mi1)-1Forn=1ToUBound(en)-Ifmi1(m)=en(n)Text5=Text5&""&Format(sqj,"000")&":"&"S"&Format(Text1,"0000")&"->"&"S"&Format(st(i),"0000")&"->"&"S"&Format(mi1(m),"0000")&"->"&"S"&Format(Text2,"0000")+Chr(13)+Chr(10)p=sqj=sqj+1EndIfIfpFalseThenText5="否"EndIfEndIfIfp=FalseeMsgBoxvbOKCancel,EndIfIfe=1Thenp=FalseElseIfe=2Thenp=TrueEndIfe=0Ifp=FalseThen'轉(zhuǎn)車三次Dimmi2()AsIntegersqj=1Fori=1ToUBound(st)-1ReDimmi1(1)mi1(0)=Fork=1ToIfadjoin(st(i),k)=TrueThenmi1(mi1(0))=kmi1(0)=mi1(0)+ReDimPreservemi1(UBound(mi1)+1)EndIfForm=1ToUBound(mi1)-1ReDimmi2(1)mi2(0)=Forn=1ToIfadjoin(mi1(m),n)=TrueThenmi2(mi2(0))=nmi2(0)=mi2(0)+ReDimPreservemi2(UBound(mi2)+1)EndIf'判斷Fore=1ToUBound(mi2)-1Forr=1ToUBound(en)-Ifmi2(e)=en(r)Text6=Text6&""&Format(sqj,"000")&":"&"S"&Format(Text1,"0000")&"->"&"S"&Format(st(i),"0000")&"->"&"S"&Format(mi1(m),"0000")&"->"&"S"Format(mi2(e),"0000")&"->"&"S"&Format(Text2,"0000")+Chr(13)+Chr(10)p=Truesqj=sqj+1EndIfIfpFalseThenText6="否"EndIfEndIfEndPrivateSubOpenSysPath&.txt"ForOutputAs2Fori=1ToUBound(adjoin,1)a="Forj=1ToUBound(adjoin,Ifadjoin(i,j)=TrueThena=a&""&1ElseIfadjoin(i,j)=FalseThena=a&""&0EndIfWrite#2,Close#2EndSubPrivateSubOpenSysPath&.txt"ForInputAs1DimiAsIntegeri=DoWhileNotLineInput#1,dk=1Forj=2ToIfMid(d,j,1)=1Thenadjoin(i,k)=Truek=k+ElseIfMid(d,j,1)=0Thenadjoin(i,k)=Falsek=k+1EndIfi=i+1Close#1EndSubPrivateSubCommand5_Click()Dimstat()AsIntegerDimsqu1()AsStringDimsqu2()AsStringDimsqu3()AsStringDimsqu4()AsStringDimtextsAsStringDimallowAsBooleanDimtr(1To4)AsBooleanDimpwnlAsIntegerDimpw2(1To5)AsOpenSysPath&.txt"ForAppendAsIfMid(Text3,2,1)="0"hc=ll=Len(Text3)texts=Text3ElseIfMid(Text4,2,1)="0"hc=ll=Len(Text4)texts=Text4ElseIfMid(Text5,2,1)="0"hc=ll=Len(Text5)texts=Text5ElseIfMid(Text6,2,1)="0"hc=ll=Len(Text6)texts=Text6EndIfReDimsqu1(1To1)ReDimsqu2(1To1)ReDimsqu3(1To1)ReDimsqu4(1To1)ReDimoldres(1To1)Ifhc=0Write#1,&Text1&&Text2&ElseIfhc>0ThenWrite#1,"這是"&Text1&"到"&Text2&"之間的可行路線"& "&"最少換乘"&hc&EndIfReDimstat(1To(hc+num=xh=Fori=1ToIfMid(texts,i,1)=":"ReDimsqu1(1To1)ReDimsqu2(1To1)ReDimsqu3(1To1)ReDimsqu4(1To1)num=num+1Ifhc+2=2Then'關(guān)鍵站stat(1)=Text1stat(2)=ElseIfhc+2>2Thenstat(1)=Text1stat(hc+2)=Text2Ifhc+2=3stat(2)=Mid(texts,14+26*(num-1),ElseIfhc+2=4stat(2)=Mid(texts,14+33*(num-1),stat(3)=Mid(texts,21+33*(num-1),ElseIfhc+2=5stat(2)=Mid(texts,14+38*(num-1),stat(3)=Mid(texts,21+38*(num-1),stat(4)=Mid(texts,28+38*(num-1),4)EndIfEndForasd=1ToOpenSysPath&"1.1.txt"ForInputAs2DoWhileNotEOF(2)LineInput#2,dl=Len(d)IfMid(d,1,1)="L"Thenln=Mid(d,2,3)pw=zt=""pwn=allow=FalseEndIfIfMid(d,11)Thenpw1pwn=1ElseIfMid(d,1,1)Thenpw="分段計價"pwn=2EndIfIfMid(d,11)S"Thenzt="來回"allow=ElseIfMid(d,1,1)Thenzt="上行"allow=ElseIfMid(d,1,1)Thenzt="下行"allow=ElseIfMid(d,1,1)Thenzt="環(huán)線"allow=TrueEndIfIfallow=TrueThenp1=0p2=sfz=k=j=Forj=1ToIfMid(d,j,1)="S"sfz=jFork=jTol-IfMid(d,k+1,4)=stat(1)Thenp1=kEndIfMid(d,k+1,4)=stat(2)Thenp2=kEndIf(p1<>"0"Andp2<>"0"Andp2>p1)Or(Mid(d,1,1)="S"Andp1<>Andp2<>"0")tr(1)=ReDimPreservesqu1(1ToUBound(squ1)+Ifpwn=1squ1(UBound(squ1)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&"1"&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)ElseIfpwn=2ThenSelectCase(p2-p1)/6CaseIs<=20pwnl=1CaseIs<=40pwnl=2CaseIs>40pwnl=3Endsqu1(UBound(squ1)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&pwnl&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)EndIfEndIfEndIfIfhc>0p1=p2=sfz=k=j=Forj=1ToIfMid(d,j,1)="S"sfz=jFork=jTol-IfMid(d,k+1,4)=stat(2)Thenp1=kEndIfMid(d,k+1,4)=stat(3)Thenp2=kEndIfIf(p1<>"0"Andp2<>"0"Andp2>p1)Or(Mid(d,1,1)="S"Andp1<>Andp2<>"0")tr(2)=ReDimPreservesqu2(1ToUBound(squ2)+Ifpwn=1squ2(UBound(squ2)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&"1"&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)ElseIfpwn=2ThenSelectCase(p2-p1)/6CaseIs<=20pwnl=1CaseIs<=40pwnl=2CaseIs>40pwnl=3Endsqu2(UBound(squ2)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&pwnl&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)EndIfEndIfEndIfEndIfhc>1p1=p2=sfz=k=j=Forj=1ToIfMid(d,j,1)="S"sfz=jFork=jTol-IfMid(d,k+1,4)=stat(3)Thenp1=kEndIfMid(d,k+1,4)=stat(4)Thenp2=kEndIfIf(p1<>"0"Andp2<>"0"Andp2>p1)Or(Mid(d,1,1)="S"Andp1<>Andp2<>"0")tr(3)=ReDimPreservesqu3(1ToUBound(squ3)+Ifpwn=1squ3(UBound(squ3)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&"1"&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)ElseIfpwn=2ThenSelectCase(p2-p1)/6CaseIs<=20pwnl=1CaseIs<=40pwnl=2CaseIs>40pwnl=3Endsqu3(UBound(squ3)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&pwnl&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)EndIfEndIfEndIfEndIfhc>2p1=p2=sfz=Forj=1ToIfMid(d,j,1)="S"sfz=jFork=jTol-IfMid(d,k+1,4)=stat(4)Thenp1=kEndIfMid(d,k+1,4)=stat(5)Thenp2=kEndIfIf(p1<>"0"Andp2<>"0"Andp2>p1)Or(Mid(d,1,1)="S"Andp1<>Andp2<>"0")tr(4)=ReDimPreservesqu4(1ToUBound(squ4)+Ifpwn=1squ4(UBound(squ4)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&"1"&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)ElseIfpwn=2ThenSelectCase(p2-p1)/6CaseIs<=20pwnl=1CaseIs<=40pwnl=2CaseIs>40pwnl=3Endsqu4(UBound(squ4)-1)="L"&Format(ln,"000")&Format(pw,"@@@@@@@")&Format(zt,"@@@")&""&Format(Abs(Int((p2-p1)/6)),"000")&""&pwnl&""Format(Abs((p1-sfz)/6),"000")&""&Mid(d,IIf(p1>p2,p2,p1),Abs(p2-p1)+5)EndIfEndIfEndIfEndEndClose#2Ifln0ThenSelectCasehc+2CaseIs=2Forf=1ToUBound(squ1)-price=Val(Mid(squ1(f),20,tim=Val(Mid(squ1(f),16,dis=Val(Mid(squ1(f),22,oldres(xh)=Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&f&""&squ1(f)Write#1,Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&Format(f,"00")&""&squ1(f)xh=xh+ReDimPreserveoldres(1Totr(1)=FalseCaseIs=3Forf=1ToUBound(squ1)-1Forg=1ToUBound(squ2)-1price=Val(Mid(squ1(f),20,1))+Val(Mid(squ2(g),20,tim=Val(Mid(squ1(f),16,3))+Val(Mid(squ2(g),16,dis=Val(Mid(squ1(f),22,3))+Val(Mid(squ2(g),22,oldres(xh)=Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&g+f-1&""&squ1(f)&""&squ2(g)Write#1,Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&Format(g+f-1,"00")&""&squ1(f)&""&squ2(g)xh=xh+ReDimPreserveoldres(1Totr(1)=Falsetr(2)=CaseIs=Forf=1ToUBound(squ1)-1Forg=1ToUBound(squ2)-1Forh=1ToUBound(squ3)-price=Val(Mid(squ1(f),20,1))+Val(Mid(squ2(g),20,1))=Val(Mid(squ1(f),16,++=Val(Mid(squ1(f),22,++oldres(xh)=Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&g+f+h-2&""&squ1(f)&""&squ2(g)&""&Write#1,Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&Format(g+f+h-2,"00")&""&squ1(f)&""&squ2(g)&""&squ3(h)xh=xh+ReDimPreserveoldres(1Toxh)tr(1)=Falsetr(2)=Falsetr(3)=FalseCaseIs=Forf=1ToUBound(squ1)-1Forg=1ToUBound(squ2)-1Forh=1ToUBound(squ3)-For=1ToUBound(squ4)-price=Val(Mid(squ1(f),20,1))++20,1))+Val(Mid(squ4(u),20,tim=Val(Mid(squ1(f),16,3))++16,3))+Val(Mid(squ4(u),16,dis=Val(Mid(squ1(f),22,3))++22,3))+Val(Mid(squ4(u),22,oldres(xh)=Format(xh,"000")&"p"&price&"t"&Format(tim,"000")&"d"&Format(dis,"000")&""&g+f+h+u-1&""&squ1(f)&""&squ2(g)&""&squ3(h)&""&squ4(u)Write#1,Format(xh,"000")&"p"&price&"t"&Format(tim,

溫馨提示

  • 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

提交評論