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