本發(fā)明屬于路徑規(guī)劃領(lǐng)域,具體涉及一種基于改進(jìn)遺傳算法的旅游行程規(guī)劃方法。
背景技術(shù):
旅游業(yè)具有“無煙產(chǎn)業(yè)”和“永遠(yuǎn)的朝陽產(chǎn)業(yè)”的美譽(yù),作為一項(xiàng)具有勞動(dòng)力密集、無污染等特點(diǎn)的新興產(chǎn)業(yè),目前和石油業(yè)、汽車業(yè)并列為全球第三大產(chǎn)業(yè)。隨著社會(huì)科技的發(fā)展和人民生活水平的提高,旅游業(yè)發(fā)展勢頭迅猛。目前,市場上提供的旅游服務(wù),大多數(shù)是由旅行社等傳統(tǒng)旅游企業(yè)提供的旅游產(chǎn)品。此類產(chǎn)品的旅游路線和旅行時(shí)間一般都是由旅行社提前規(guī)劃好的,用戶沒有自主權(quán)。因此,目前市場上的絕大多數(shù)旅游服務(wù)不能完全滿足用戶的個(gè)性化需求。
國內(nèi)外眾多著名學(xué)者針對行程規(guī)劃問題已經(jīng)進(jìn)行了長達(dá)數(shù)十年的研究,求解該類問題與求解tsp(travellingsalesmanproblem,旅行推銷員問題)問題的方法類似,在數(shù)學(xué)模型上有所差異??紤]到種群的規(guī)模,即景點(diǎn)數(shù)目的多少,解決此類問題目前最具有代表性的求解方法有以下兩種:
(1)精確求解法
先列舉所有可能的路線,再計(jì)算目標(biāo)函數(shù),逐個(gè)進(jìn)行對比分析,最終選擇使得結(jié)果最優(yōu)的路線。此類解決方案只適用于小規(guī)模的求解,一旦規(guī)模變大,景點(diǎn)個(gè)數(shù)增多,解決問題所需要的計(jì)算量和時(shí)間是非常龐大的。
(2)智能優(yōu)化算法
隨著景點(diǎn)規(guī)模的增大,精確求解法的不足也逐漸顯現(xiàn)。后來,隨著人工智能的發(fā)展,智能優(yōu)化算法的出現(xiàn)為此類問題的求解提供了新的方法。與傳統(tǒng)算法不一樣,該類算法不是針對每一個(gè)個(gè)體的單獨(dú)優(yōu)化求解,而是針對一個(gè)群體。雖然,所求的解可能不是問題的最優(yōu)解,但一般都是非常接近的,求解速率遠(yuǎn)高于傳統(tǒng)的求解算法。目前,常用于求解行程規(guī)劃問題的智能方法有很多,如蟻群算法、粒子群算法、遺傳算法和模擬退火算法等,這些算法各有優(yōu)缺點(diǎn)。其中,蟻群算法具有較好的發(fā)現(xiàn)解的能力,然后由于本身過于復(fù)雜,一般需要較長的搜索時(shí)間且易于出現(xiàn)停滯現(xiàn)象;雖然粒子群算法早期收斂速度快,但也存在求解精度低,無法收斂到最優(yōu)解的缺陷;相比于前兩種算法,遺傳算法較為成熟且應(yīng)用范圍更廣,但容易陷入早熟;模擬退火算法雖然也是相對成熟的算法,但是其優(yōu)化過程較長,不利于現(xiàn)實(shí)問題的求解。
遺傳算法(geneticalgorithm)的首次提出是在1975年《自然界和人工系統(tǒng)的適應(yīng)性》一書中,該書由美國michigan大學(xué)的j.h.holland教授編寫。從1985年,在美國卡耐基·梅隆大學(xué)召開的第一屆國際遺傳算法會(huì)議,到1990年在美國印第安阿納大學(xué)召開的第一屆遺傳算法與分類系統(tǒng)研討會(huì),再到現(xiàn)在國際互聯(lián)網(wǎng)絡(luò)上多種相關(guān)的mailinglist,usenet上專門的新聞組comp.ai.genetic。經(jīng)過20余年的發(fā)展,遺傳算法已經(jīng)取得了豐碩的研究成果。尤其是近幾年人工智能研究的興起,使得遺傳算法受到國內(nèi)外學(xué)者的廣泛關(guān)注。
在遺傳算法的改進(jìn)方面,lizhuangtan等人提出改進(jìn)的聚類遺傳算法kga(geneticalgorithmbasedonk-meansclustering)、apga(geneticalgorithmbasedonaffinitypropagationclustering),于瑩瑩等提出自適應(yīng)遺傳參數(shù)求解tsp問題,孫文彬等借助去交叉、去小角操作優(yōu)化tsp解的路徑,能有效降低解的誤差率,radibouchaib針對選擇性tsp問題,尋找起始點(diǎn)相同控制點(diǎn)的路徑集合,以使得在規(guī)定約束條件內(nèi),收益最大化,此外還有不少學(xué)者將貪心策略與遺傳算法相結(jié)合,從而提高算法精確性、有效性和收斂速度。
但目前現(xiàn)有技術(shù)中尚沒有將遺傳算法運(yùn)用到旅游行程的規(guī)劃,以滿足用戶個(gè)性化需求的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于針對旅游行程規(guī)劃問題,提出了一種基于改進(jìn)遺傳算法的旅游行程規(guī)劃方法,該方法針對傳統(tǒng)遺傳算法存在的問題,提高了算法的收斂速度,防止算法陷入局部最優(yōu)解;針對用戶的旅游行程安排,建立行程規(guī)劃模型,滿足用戶個(gè)性化定制的需求。
本發(fā)明解決上述技術(shù)問題所采取的技術(shù)方案是一種基于改進(jìn)遺傳算法的旅游行程規(guī)劃方法,具體包括如下步驟:
步驟1:按照訪問城市的順序排列組成編碼;
步驟2:采用雙向貪心選擇策略初始化種群;
步驟3:計(jì)算種群中每個(gè)個(gè)體的適應(yīng)度值;
步驟4:采用輪盤賭選擇,從舊群體中選擇適應(yīng)度大的個(gè)體到新的群體中;
步驟5:按照自適應(yīng)的交叉概率pci進(jìn)行交叉操作,選擇若干父體進(jìn)行配對,生成新的個(gè)體;
步驟6:按照自適應(yīng)的變異概率pmi進(jìn)行變異操作,確定變異個(gè)體;
步驟7:判斷是否滿足預(yù)定的終止條件,如果滿足則遺傳終止,得到最優(yōu)解。否則返回步驟3。
進(jìn)一步的,本發(fā)明的步驟2包括以下步驟:
1)隨機(jī)生成一個(gè)城市編號sa,再選擇離城市sa最近的城市sb,構(gòu)成一條路徑sa-sb;
2)找出離通路兩端(設(shè)點(diǎn)為si、sj,i,j∈s),最近的兩個(gè)城市,假設(shè)分別為sc、sd(sc、sd未被選擇),若sisc<scsj,則選擇sc,構(gòu)成路徑sc-si-sj否則選擇sd,構(gòu)成路徑sd-sj-si;
3)重復(fù)2),直到所有的城市都在路徑中;
4)若所有城市都已經(jīng)在路徑中,仍未達(dá)到種群規(guī)模,則隨機(jī)選擇兩個(gè)城市構(gòu)成路徑,再重復(fù)step2,直到達(dá)到種群規(guī)模。
進(jìn)一步的,本發(fā)明步驟3的適應(yīng)度函數(shù)為目標(biāo)函數(shù)的倒數(shù):
進(jìn)一步的,本發(fā)明步驟5的自適應(yīng)的交叉概率pci為:
其中,pci為個(gè)體i發(fā)生交叉的概率,g為進(jìn)化過程的最大迭代數(shù),g為當(dāng)前迭代數(shù),
進(jìn)一步的,本發(fā)明步驟6的自適應(yīng)的變異概率pmi表示為:
其中pmi為個(gè)體i發(fā)生變異的概率,g為進(jìn)化過程的最大迭代數(shù),g為當(dāng)前迭代數(shù);pmmin的取值與進(jìn)化迭代數(shù)相關(guān);pmmax=0.05;fmax為當(dāng)前所有個(gè)體的最大適應(yīng)度值,
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
1、本發(fā)明基于旅游行程規(guī)劃模型,采用改進(jìn)的貪心自適應(yīng)遺傳算法,為用戶規(guī)劃旅游行程路線。該方法提高了行程規(guī)劃算法的速度,防止算法陷入局部最優(yōu)解。
2、本發(fā)明結(jié)合tsp問題建立行程規(guī)劃模型,滿足用戶定制個(gè)性化旅游行程的需求。
附圖說明
圖1為本發(fā)明實(shí)施例中的行程規(guī)劃流程圖。
圖2為本發(fā)明行程示意圖。
圖3為本發(fā)明的遺傳算法流程圖。
具體實(shí)施方式
下面結(jié)合說明書附圖對本發(fā)明創(chuàng)造作進(jìn)一步的詳細(xì)說明。
本發(fā)明按照路徑中景點(diǎn)的先后順序?qū)⑵浣M成行程路線,采用雙向貪心選擇策略初始化種群,使種群包含更多的最優(yōu)子路徑,提高種群適應(yīng)度;通過自適應(yīng)的交叉變異概率調(diào)節(jié),提高算法的收斂速度,防止算法陷入局部最優(yōu)解。將改進(jìn)的遺傳算法應(yīng)用到行程規(guī)劃模型中,滿足用戶定制個(gè)性化旅游行程的需求。
如圖1所示,本發(fā)明是針對行程規(guī)劃問題的解決方法,結(jié)合用戶輸入信息和數(shù)據(jù)庫存放的數(shù)據(jù)項(xiàng),通過改進(jìn)的遺傳算法,輸出景點(diǎn)游玩次序、游玩時(shí)間和游玩費(fèi)用。通過改進(jìn)的遺傳算法,為用戶推薦個(gè)性化的旅游行程路線。該方法通過雙向貪心策略初始化種群,提高算法的收斂速度;該方法通過自適應(yīng)的交叉概率和變異概率的調(diào)節(jié),提高算法速度,防止算法陷入早熟;該方法將改進(jìn)的遺傳算法應(yīng)用到旅游行程規(guī)劃模型中,滿足用戶個(gè)性化定制的需求。
本發(fā)明具體實(shí)現(xiàn)的過程,包括:行程規(guī)劃模型和改進(jìn)的遺傳算法。
1.行程規(guī)劃模型:
行程示意圖如圖2所示,用戶在出游前需要考慮諸多因素,本發(fā)明建立的模型,將根據(jù)景點(diǎn)的開放時(shí)間、關(guān)閉時(shí)間、用戶在景點(diǎn)的停留時(shí)間、旅行過程中產(chǎn)生的費(fèi)用和旅行過程中消耗的時(shí)間,為用戶設(shè)計(jì)合理、可行的旅游行程安排。
由于實(shí)際情況的多變,過多的不確定因素會(huì)使行程規(guī)劃問題變得復(fù)雜。為簡化問題,本發(fā)明在合理范圍內(nèi)進(jìn)行一些假設(shè):
(1)對于游客用戶選擇的景點(diǎn),每個(gè)景點(diǎn)僅游覽一次;
(2)游客到達(dá)目的地景點(diǎn)后無需等待;
(3)這里只做旅游前的行程規(guī)劃,不考慮可能出現(xiàn)的突發(fā)情況,如天氣突變、交通阻塞等狀況;
(4)在開放時(shí)間段內(nèi),景點(diǎn)沒有進(jìn)入人數(shù)限制。
本發(fā)明求解問題的核心是在完全圖上找出一個(gè)權(quán)值最小的哈密頓圈。本發(fā)明中行程規(guī)劃問題的完全圖由景點(diǎn)構(gòu)成的,景點(diǎn)圖g={s,e},其中s={si|i=1,2,3,…,m}是景點(diǎn)的集合,e={eij|i,j=1,2,3,…,m}是兩景點(diǎn)構(gòu)成的邊的集合。
每個(gè)頂點(diǎn)si有四個(gè)不同的屬性,針對某個(gè)景點(diǎn)i:
ti:游客的游玩時(shí)間;
toi:景點(diǎn)開放時(shí)間;
tci:景點(diǎn)關(guān)閉時(shí)間;
tsi:到達(dá)時(shí)間;
ci:游客游覽費(fèi)用。
每條邊eij有兩個(gè)不同的屬性,是有方向的,從景點(diǎn)i到景點(diǎn)j:
tij:行程所需時(shí)間;
cij:行程所需費(fèi)用。
針對本發(fā)明的行程規(guī)劃問題,問題建模用的符號和變量如下所示:
r:行程路線,r={s1,s2,……,sm};
t:線路的旅游時(shí)間;
c:線路的旅游費(fèi)用;
tmax:用戶可支配的最長旅游時(shí)間;
cmax:用戶可支配的最高費(fèi)用預(yù)算;
xi:景點(diǎn)i決策變量;
xij:景點(diǎn)i到景點(diǎn)j的決策變量;
首先,確定決策變量,xi,xij:
游客花費(fèi)的總費(fèi)用c由景點(diǎn)的游覽費(fèi)用ci和景點(diǎn)之間的交通費(fèi)用cij組成。游客總的旅游時(shí)間t由行程時(shí)間tij和景點(diǎn)游玩時(shí)間ti組成,c和t表示為:
行程規(guī)劃的目的是滿足用戶的出行需求的同時(shí)結(jié)合實(shí)際問題,針對不同的用戶有不同的的目標(biāo)函數(shù)
(1)經(jīng)濟(jì)型用戶:該類用戶更考慮金錢成本,對旅游時(shí)間沒有要求,愿意消耗更多的時(shí)間,換取價(jià)格上的優(yōu)惠。目標(biāo)函數(shù)為:
(2)舒適型用戶:該類用戶追求旅行的舒適度,不希望過多的時(shí)間消耗在旅行途中,目標(biāo)函數(shù)為:
(3)綜合型用戶:該類用戶因?yàn)闆]有特殊要求,希望能享受既經(jīng)濟(jì)又不會(huì)消耗太多時(shí)間的行程。目標(biāo)函數(shù)如下,其中w0是衡量時(shí)間(單位:小時(shí))和金錢(單位:元)關(guān)系的權(quán)重系數(shù),這個(gè)值與游客設(shè)定的tmax和cmax有關(guān):
基于實(shí)際情況考慮,設(shè)置如下的約束條件:
t≤tmax
c≤cmax
2.改進(jìn)的遺傳算法:
本發(fā)明采用改進(jìn)的遺傳算法解決行程規(guī)劃問題,算法流程如圖3所示。具體算法描述如下:
步驟1:采用自然編碼方式,用1,2,…,i,…m的自然數(shù)標(biāo)識景點(diǎn),按照路徑中景點(diǎn)的先后順序設(shè)定行程路線。
步驟2:采用雙向貪心選擇策略初始化種群。
步驟3:取目標(biāo)函數(shù)的倒數(shù)作為適應(yīng)度函數(shù),計(jì)算個(gè)體的適應(yīng)度值fi。
步驟4:使用比例選擇因子p從舊群體中選擇適應(yīng)度大的個(gè)體到新的群體,p=fi/∑fi,其中適應(yīng)度最高的個(gè)體一定會(huì)被選擇。
步驟5:計(jì)算個(gè)體的交叉概率pci,進(jìn)行交叉操作,選擇若干父體進(jìn)行配對,生成新的個(gè)體。
步驟6:計(jì)算個(gè)體的變異概率pmi,進(jìn)行變異操作,確定變異個(gè)體。
步驟7:判斷當(dāng)前迭代數(shù)g是否等于最大迭代數(shù)g,不相等則執(zhí)行步驟3;相等則繼續(xù)執(zhí)行。
步驟8:輸出最優(yōu)路徑。
本發(fā)明基于旅游行程規(guī)劃模型,采用改進(jìn)的貪心自適應(yīng)遺傳算法,為用戶規(guī)劃旅游行程路線,有效提高了行程規(guī)劃算法的速度,可以防止算法陷入局部最優(yōu)解,滿足了用戶定制個(gè)性化旅游行程的需求。
以上所述的僅是本發(fā)明的優(yōu)選實(shí)施方式。應(yīng)當(dāng)指出,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干變形和改進(jìn),這些也應(yīng)視為屬于本發(fā)明的保護(hù)范圍。