當前位置:首頁 » 操作系統 » 時間窗演算法

時間窗演算法

發布時間: 2022-04-29 01:33:12

① 時間窗口演算法

時間窗口這個概念可能很多人不知道,運用這項技術能精準預判出市場頂部和底部,時間窗口的演算法及運用規則,今天就在這里將這門技術的心得與大家分享,供大家參考。

在進行趨勢研判的時候,股價波動的周期也是必須要考慮的。因為從歷史走勢看,周期分析對於投資者判斷頂底的所在具有很好的指示作用。在進行周期研判時,神秘數字必不可少,歷史上大量走勢已經充分證明了它的有效性。

如果股價的波動達到了某個重要的神秘數字周期,投資者一定要留意這一天指數或股價的變化,在很多時候,反轉往往會在這一天形成。當指數運行到了34日這一天的時候,周期提示指數的反彈已經到了頭部,投資者如果按照周期的提示進行操作的話,便可以賣在反彈的最高位了。而到了55日這一天,指數出現了一根反彈大陽線,結合周期與股價前期下跌走勢綜合分析,投資者便可以把握住這跟大陽線帶來的盈利機會了。

莊家的操作時不是盲目的,周期的預算是相當重要的,必須要在適當的時間內發動行情以及進行相應的操作。正是因為這樣,才使得周期判斷如此重要。但是,投資者在使用周期分析的時候不能簡單單一使用,必須要結合盤面進行綜合研判,只有這樣做,得到的結論才會更貼切市場的真實波動。時間之窗是周期的一種應用方法,周期的使用,不同的學說和不同的技術分析工具都有不同的使用方法,波浪理論中應用的周期是以菲波納奇數列為基礎的,而江恩理論裡面,周期的劃分和應用又有他獨特的界定。我們常說的時間之窗實際是波浪理論裡面常用的菲波納奇數列,菲波納奇數列是一個最簡單的數字123為基本數列的,把這個簡單的數列的後兩位數字不斷相加, 1+2=3 2+3=5 3+5=8 5+8=13 8+13=21 13+21=34 21+34=55 34+55=89 55+89=144就可以得出菲波納奇數列3、5、8、13、21、34、55、89、144……以至無窮。

那這個數列有什麼用處呢?我們在分析價格走勢時,都希望能提早發現走勢的拐點,也就是頂底,而實戰中,一些重要的頂對頂的時間、底對底的時間、頂對底的時間,底對頂的時間大都出現在這個數例的數字上,比如我們常看到一個價格走勢的頂對應前面的一個高點經常是34天55天,或者13周21周等等,或者一個趨勢從最低點啟動,在13周、21周、34周或者55周的地方趨勢結束。所以在一個趨勢的運行過程中,我們就會密切注意那些可能出現拐點的時間,一般就把那些容易出現拐點的地方稱作時間之窗,時間之窗基本上就成了菲波納奇數列的代名詞。

時間之窗的基本理論不難理解,但它的實戰應用卻有一定的技巧。

首先,時間之窗的周期分析是從屬於波浪理論裡面的一種方法,波浪理論中的三要素形態、比例、周期其周期的分析要結合波浪形態來看,當價格走勢走到一個時間之窗附近,我們必須首先觀察走勢形態是否有頂底形態,如果波浪形態上有頂底的可能,那如果再有時間周期配合那出現頂底的概率就非常之大,但如果形態上沒有明顯的頂底形態特徵,光有個時間之窗出現,不能完全作為判斷頂底的標准,因為波浪理論中形態、比例、周期的重要性是依次遞減的。

第二,時間之窗的周期原理並沒有硬性規定適用在那個時間等級的趨勢裡面,那就是說,大到月線,小到5分鍾圖,我們都可以應用菲波納奇數例來尋找頂底,那我們到底以哪個為准呢,一般來講,大小周期要配合使用,因為大周期中會套小周期,它們其實並不矛盾,比如21天的周期,那正好是三周的周期,只不過是第三周的最後一天上就是第21天上出現頂底的可能就更大一些罷了。所以在應用上,我們應該是先研究大的形態和大的時間周期,然後再用小周期找到價格趨勢可能出現反轉的具體時間。
比如,本月是距離前一個高點的13個月,現在價格在上漲,那這個月可能會出現一個頂部,如果價格在下跌,那出現底部的可能就比較大,比如我們從大形態和大周期上看到本月月線可能要出現一個頂部,那具體是那一周呢那我們就要用周線推算,可以從上個高點推算下來,如果推到某一周是55周那,這周出現高點的可能性就較大,或者從13個月之前那個高點後面出現的一個最低點推算,看到這個月的哪一周是個重要的時間周期,找到具體那周是兩個大周期的交匯點,同時再從日線上找,看這周中的那一天與前面的短期內的走勢的高低點是個對應的周期點,這樣就可以基本判斷出來在那一天可能出現轉折點。

第三,使用時間之窗,要注意不要提前,最好滯後,比如這周是個重要的時間之窗,而且價格形態上有可能出現拐點,但如果我們周一就入場去找頂或者找底,那如果頂底出現這個周的周五,那你想想,五天的時間,價格變化會有多麼大的變化,我們無法承受價格上的那麼大誤差,今年6月初英鎊對日元的那個高點,我們本來推算出來它是對應前面最高價的21周的時間,但我們在周初就做了空單,結果被它反復折騰幾天,而且我在周五的策略裡面還寫到了,再熬過今天英日的空單就沒事了,可恰恰是在周五晚上英日在消息刺激下瞬間打出205以上的高點,而且打掉我們止損就快速回落,結果那波行情我們錯過了一大段。

所以,用時間周期推算某個地方可能出現頂底,那最好等待走勢出現恐慌盤後就可以基本確認頂底出現了,但如果沒有出現恐慌盤,那就要小心,因為任何一次比較大的頂底都不會很溫柔的出現的,在沒有出現恐慌盤之前提前做單,極有可能在恐慌盤出現時,被掃掉止損。如果一個重要的時間之窗上出現頂底後再進場操作,那就不會再出現掃掉止損回頭的問題,同時還可以以已經出現的頂底做止損點,相對操作難度就降低了。

第四,菲波納奇數例也可以幫助我們判斷一個局部調整形態結束的時間(因為大型調整本身就可以形成趨勢了),比如局部價格走勢出現調整,那它到底要調整多長時間呢,在研判調整形態的同時,我們可以用分時圖的時間周期去數,如21個小時,34個四小時等等,如果一個調整形態的落點正好出現在分時圖的一個小的時間之窗上,我們也可以把這個形態和時間的匯合點作為入市點。另外,有時候價格的調整是以盤整來完成的,那盤整的形態要持續多長時間才能突破呢?這也可以用小的時間之窗來推算,比如日線級別的小型盤整帶經常是盤整5天、8天或13天.

② 軟時間窗節約里程法可以用什麼軟體

摘要 行程匹配的演算法python,節約里程演算法的python實現,還有兩種可以實現,但是我更喜歡Python。

③ 什麼是帶時間窗口的車輛路徑問題

車輛路線問題(VRP)最早是由Dantzig和Ramser於1959年首次提出,它是指一定數量的客戶 ,各自有不同數量的貨物需求,配送中心向客戶提供貨物,由一個車隊負責分送貨物,組織適當的行車路線,目標是使得客戶的需求得到滿足,並能在一定的約束下,達到諸如路程最短、成本最小、耗費時間最少等目的Paolo Toth,Daniele Vigo。THE VEHICLE ROUTING PROBLEM[M]。Society for Instrial and Applied Mathematics philadephia.2002。 在VRPTW中,車輛除了要滿足VRP問題的限制之外,還必須要滿足需求點的時窗限制,而需求點的時窗限制可以分為兩種,一種是硬時窗(Hard Time Window),硬時窗要求車輛必須要在時窗內到達,早到必須等待,而遲到則拒收;另一種是軟時窗(Soft Time Window),不一定要在時窗內到達,但是在時窗之外到達必須要處罰,以處罰替代等待與拒收是軟時窗與硬時窗最大的不同[2]。 Bodin[4]和Solomon[5]分別對VRP及其變形問題和VRPTW問題作了較詳細的綜述。生產實際中許多問題都可以歸結為VRPTW來處理, 如鋼鐵廠編制熱軋帶鋼軋制計劃問題實際上就是一個VRPTW問題。一些服務性行業中也普遍存在這樣的問題, 如郵政投遞,飛機、火車及公共汽車的調度等。自從Savelsbergh[6]證明了VRPTW是一個NP難問題之後, 對其演算法的研究就主要集中到各種啟發式演算法上。遺傳演算法、禁忌搜索法和模擬退火法等智能化啟發式演算法的出現為求解VRPTW問題提供了新的工具。Thangiah[7]和Joe[8]都曾應用遺傳演算法求解VRPTW問題, 前者的目標是使總的服務成本最小, 而後者的目標有兩個, 首先是使用最少的車輛, 其次是在使用最少車輛的前提下使總成本最小[3]。 時間窗車輛路徑問題的求解方法[2] 含時窗限制之車輛途程問題(VRPTW)相對於車輛途程問題(VRP),必須額外考慮到運送時間與時間窗口,其主要的原因來自顧客有服務時間的最後期限和最早開始服務時間的限制。故在此限制條件之下,原本VRP問題除了空間方面的路徑(Routing)考慮之外,還必須要加上時間上的排程(Scheling)考慮,同時由於場站也有時間窗的限制,也間接造成路徑長度的限制,由此可知VRPTW的總巡行成本不僅包含運送成本,還需要考慮時間成本,以及未在時間窗限制內送達的處罰成本。因此,若要得到一個好的解答,時間和空間(Temporal andSpatial)問題的探討是非常重要的。 由於VRPTW比VRP問題多考慮了一樣時窗的因素,因此在解法上較VRP問題更為復雜,而根據Taillard(1997)等人的分類,求解VRPTW的方法可以分為六種,分述如下。 1、以分枝界限法求算之精確解法(Exact Algorithm Based on Branch-and-BoundTechniques): Kolen(1987)利用這種方式可以求得精確解,但是只能解決六至十五個節點的問題,因此求解的范圍過小,僅適用於小型問題。 2、途程建構啟發式演算法(Route Construction Heuristics): 在一問題中,以某節點選擇原則或是路線安排原則,將需求點一一納入途程路線的解法。如Soloman(1987)的循序建構法(Sequential Insertion Heuristics)。 3、途程改善啟發式演算法(Route Improvement Heuristics): 先決定一個可行途程,也就是一個起始解,之後對這個起始解一直做改善,直到不能改善為止。而常見的是節線交換法(Edge Exchange Procere),如Lin(1965)所提出的K-Optimal,以及Potvin與Rousseau(1993)提出一考慮旅行方向的交換演算法。 4、合成啟發式演算法(Composite Heuristics): 此種解法混合了途程建構啟發式演算法與途程改善啟發式演算法,如Russell(1995)所提出的Hybrid Heuristics便是混合了Potvin與Rousseau(1993)所提出的平行插入法,並在之中加入路線改善法的合成啟發式演算法;Roberto(2000)也提出的屬於平行插入法與內部交換改善法的合成啟發式解法來求解VRPTW的問題。 5、依據最佳化之啟發式演算法(Optimization-Based Heuristics):如Koskosidis(1992)等人利用混合整數規劃模塊,再透過啟發式演算法,將原始問題分解成指派/分群的子問題的一系列的巡行以及排程問題。 6、通用啟發式演算法(Metaheuristics): 傳統區域搜尋方法的最佳解常因起始解的特性或搜尋方法的限制,而只能獲得局部最佳解,為了改善此一缺點,近年來在此領域有重大發展,是新一代的啟發式解法,包含禁忌法(Tabu Search)、模擬退火法(Simulated Annealing)、遺傳演算法(Genetic Algorithm)和門坎接受法(Threshold Accepting)等,可以有效解決局部最佳化的困擾。

④ 車輛路徑問題的車輛路徑問題的發展

1959年Dantzig和Ramse首次對閉合式VRP進行了研究,描述的是將汽油送往各個加油站的實際問題,並首次提出了相應的數學規劃模型以及求解演算法。
1964年,Clark和Wright[4]一種對Dantzig-Ramse方法改進的有效的啟發式演算法Clark-Wright節約演算法。
正是由於以上兩篇開創性論文的發表,使得VRP成為運籌學以及組合優化領域的前沿和研究熱點課題。
1969年,Christofides和Eilon應用2-opt[5]和3-opt[6]處理車輛路徑問題。
1970年,提出了兩階段方法求解車輛路徑問題,包括先分組後定路線(clusterfirst-route second)和先定路線後分組(routefirst-cluster second)兩種啟發式策略。
1981年,Fisher和Jaikumar提出以數學規劃為主的最優化方法來處理包含大約50個顧客點的問題,同樣其運算效率是一個亟待解決的問題。同年,Gullen,Jarvis和Ratliff建立了人機互動的啟發式方法。
1981年,Bodin and Golden將眾多的VRP求解方法進行了歸納。分為以下七種:數學解析法(Exact Procere);人機互動法(Interactive Optimization);先分群再排路線(Cluster First–Route Second);先排路線再分群(Route First–Cluster Second);節省法或插入法(Saving or Insertion);改善或交換法(Improvement or Exchanges);數學規劃近似法(Mathematical programming)。
1990年以來,人工智慧方法在解決組合優化問題上顯示出強大功能,在各個領域得到充分應用,很多學者也將人工智慧引入車輛路線問題的求解中,並構造了大量的基於人工智慧的啟發式演算法。 禁忌搜索法(TS)基本上是屬於一種人工智慧型(AI)的局部搜尋方法,Willard首先將此演算法用來求解VRP 。袁慶達[7]等設計了考慮時間窗和不同車輛類型的禁忌演算法,這種演算法主要採用GA方法產生初始解,然後禁忌演算法對初始解優化。模擬退火方法具有收斂速度快,全局搜索的特點,Osman[8]對VRP的模擬退火演算法進行了研究。遺傳演算法具有求解組合優化問題的良好特性,Holland首先採用遺傳演算法(GA)編碼解決VRPTW 問題。現在多數學者採用混合策略,分別採用兩種人工智慧方法進行路線分組和路線優化。Ombuki[9]提出了用GA進行路線分組,然後用TS方法進行路線優化的混合演算法。Bent和Van Hentenryck[10]則首先用模擬退火演算法將車輛路線的數量最小化,然後用大鄰域搜索法(largneighborhood search)將運輸費用降到最低。
綜合過去有關VRP的求解方法,可以將其分為精確演算法(exact algorithm)與啟發式演算法(heuristics),其中精確演算法有分支界限法、分支切割法、集合涵蓋法等;啟發式演算法有節約法、模擬退火法、確定性退火法、禁忌搜尋法、基因演算法、神經網路、螞蟻殖民演算法等。

⑤ 求有時間窗的VRP問題的蟻群演算法程序,matlab的!

這代碼是c++嗎?很明顯是MATLAB代碼
我也一直在找這個問題的代碼,我想我對Matlab不是很熟,我一直找C++的,如果找到我可以發給你,如果你有了,

⑥ 帶時間窗的tsp問題遺傳演算法怎麼編碼

動態規劃演算法一般是n步疊代計算局部最優解,每一步疊代需要計算m個子項,那麼時間復雜度就是O(m*n)。 如果只保存一步疊代的結果,空間復雜度就是O(m);如果需要保存k步疊代結果,空間復雜度就是O(m*k)。

⑦ 有時間窗的路徑優化問題

估計沒人回答

⑧ 誰能幫我解釋下股票的周期性及周期的計算方法

認識你很高興,朋友,真是有心的炒股人,祝福你收益多多!

以周期理論為主要工具的分析者認為,市場運動的最終線索就在其運行周期上。不可否認,時間周期的研究成果,為我們的測市手段增加了時間維度。作為理論,經過不斷豐富和發展之後,變得繁復而深奧是可以理解的;作為手段,其存在和發展必定有其特殊理由,但任何一種技術都會因其自身利弊、得失而無法概全。在這里,筆者力求以簡練的語言和朋友們交流其核心內容的應用心得。

通常,周期分析者認為,波谷比波峰可靠,所以周期長度的度量都是從波谷到波谷進行的,原因大概是絕大多數周期的變異出現在波峰上,也就是說波峰的形成比較復雜,因而認為波谷更可靠些。從實際應用結果來看,在牛市中周期分析遠比在熊市中表現優異。原因何在,筆者認為,這與周期理論研究傾向於關注底部有關。同時筆者發現,在牛市中,波谷比波峰形成或駐留的時間相對較短,而波峰因常出現強勢整理的態勢,變得復雜起來,所以較難把握。在熊市中則相反,因為市態較弱,市場常以整理形態取代反彈,所以波峰比波谷形成時間要短,易於發現。在運用周期理論測市的時候,牛市中以波谷法度量較為准確,熊市中以波峰法度量勝算更高些。筆者之所以傾向於度量構築時間較短的形態,是因為這樣的形態比較容易判別,預測時間目標與實際發生時間的偏差較小,有興趣的朋友不妨一試。

在決定使用峰測法還是谷測法度量的時候,除了使用趨勢線來篩選之外,還有一種方法也可以給您很大的幫助,那就是先觀察上一層次周期中,波峰是向周期時間中線左移還是右移,即一個漲跌周期如是40天,波峰是向20天之前移還是向20天之後移,左移看跌,右移看漲。看跌時用峰測法,看漲時用谷測法。波峰左移和右移作為輔助工具之一,適用於任何趨勢和長度的周期。周期理論中四個重要的基本原理:疊加原理、諧波原理、同步原理、比例原理,以及兩個通則原理:變通原理、基準原理,本文中不再贅述了。

關於時間周期,則不能不提神奇的菲波納契數列1、1、2、3、5、 8、12、21、34、55、89、144……,這組數字之間的關系,有書籍專論,本文不詳細述及。由於它是波浪理論的基礎,波浪理論與周期理論也頗有淵源,在運用周期理論測市的時候,不論是從重要的市場頂部只是底部起向未來數算,得出菲波納契時間目標,這些日子都可能意味著成為市場重要的轉折點。在這些時間窗口,如何取得交易信號,還需輔以其他技術手段以驗證。對於神奇數字,筆者從江恩理論及其小說中體會到一種默契,江恩將「7」及其倍數的周期視作重要的轉折點。筆者發現,如果這個數字是菲波納契數×7,那這個數字更神奇。我們如何理解「7」這個數字呢,在江恩眼裡,上帝用7天創造了世界,因此「7」是一個完整的數字;在聖經中,人類最大的敵人-死亡的恐俱也是可以克服的,耶酥在死後的第3天站起來,第7天復活,這意昧著7天是一個周期,「3」是菲波納契數字,就是「4」也相當不平凡。地球自轉一周為360度,每4分鍾旋轉1度,因此,最短的循環可以是4 分鍾,地球啟轉一周需再24小時,也是4的倍數,所以4×7天的周期也是一個很重要的短期周期。而上述一系列數字構成了價格變化的時間窗,一旦市場進入了時間窗,我們還須依靠其他技術工具做過濾器,如擺動指標KDJ、W%、RSI等,過濾偽雜信息來判斷轉折點的出現,並得出交易信號。需要特別指出的是,在運用周期理論、波浪理論菲波納契數列的時候,要注意它們都是以群體心理為基礎的,也就是說市場規模越大,參與的人數越多,就越符合上述理論,比如股指遠比個股符合上述理論,況且波浪理論本意也是應用於股市平均指數的。此時,我們就會發現,前面述及的神奇數字就越發神奇。

⑨ 如何將硬時間窗約束加入演算法的代碼

時間之窗 在一些股市和匯市的評論中,我們常聽到時間之窗這個名詞,時間之窗可能很多朋友都了解其含義,但如何正確地應用時間之窗,並不是所有朋友都了解,今天和大家談談時間之窗的正確應用。 時間之窗是周期的一種應用方法,周期的使用,不同...

⑩ 帶時間窗的貨物配送問題

自從1959年Danting 和Rasmer[2]首次提出了車輛路徑問題(Routing Vehicle Problem, VRP)以來,該問題一直為眾多的研究者所關注。而帶時間窗的車輛路徑問題(Vehicle Routing Problems with Time Window , VRPTW)是一般車輛路徑問題的擴展,其簡單的描述如下:用於服務的若干車輛從站點出發,為處在不同地理位置、具有不同貨物需求和不同服務時間窗要求的所有顧客提供服務,然後返回站點,其中為每個顧客僅提供一次服務。其目標是在時間窗內為顧客提供服務時,使車輛的行駛時間和等待時間之和最短。
根據時間約束的嚴格與否,VRPTW分為兩類:軟時間窗VRP和硬時間窗VRP。軟時間窗VRP要求盡可能在時間窗內到達訪問,否則將給予一定的懲罰,即車輛在要求地最早到達時間之前到達時,必須在任務點處等待時損失的成本或是車輛在要求的最遲到達時間之後到達時被處以的罰值;硬時間窗VRP則要求必須在時間窗內到達訪問,否則服務被拒絕。本文討論的是硬時間窗車輛路徑問題。
2 數學模型及其檢驗
2.1、數學模型的建立
根據具體問題需要,本文作以下基本假設:
(1)只有一個站點;
(2)站點和客戶點的位置坐標已知;
(3)客戶點的需求量已知;
(4)車輛在配送過程中不得超過其額定載質量;
(5)必須滿足每個客戶的配送需求;
(6)車輛為同種車型,且容量已知;
(7)每個客戶必須且只能被訪問一次;
(8)每個客戶要求的時間窗已知。
數學模型的決策變數和參數定義如下:
I 表示站點和客戶的集合,即 ,0表示站點;
J 表示客戶集合,即 ;
K 表示車輛集合,即 ;
C 表示車輛的額定載質量;
表示從客戶i到客戶j的運輸成本;
表示客戶i的需求量;
為決策變數,車輛k從i到j時取1,否則取0;
為決策變數,車輛k為客戶j服務時取1,否則取0;
表示客戶i接受服務的最早時間,i=0時表示車輛從站點出發時間;
表示客戶i接受服務的最遲時間,i=n+1時表示車輛回到站點的最遲時間;
表示車輛k服務客戶i的開始時間,要求盡可能落在區間 內;
表示完成i點任務所需時間;
表示車輛從客戶i行駛到客戶j的行駛時間;
根據問題描述,建立帶時間窗車輛路線問題的數學模型如下:
Min (2-1)

(2-2)
(2-3)
(2-4)
(2-5)
(2-6)

(2-7)
(2-8)
(2-9)
(2-10)
式(2-1)為目標函數,表示不考慮時間約束時經典配送費用(配送總路程)的最小值。式(2-2)表示一個客戶只能由一個車輛提供服務;(2-3)、(2-4)和(2-5)表示車輛從站點0出發,服務完所有客戶後,最後回到站點n+1;式(2-6)表示若車輛正在從客戶i到客戶j途中,它不能先於時間 到達客戶j ;式(2-7)保證滿足每輛車的額定載質量限制;式(2-8)(2-9)為0、1約束;(2-10)為時間窗約束。
2.2 數學模型的檢驗
本文應用Ling10.0軟體對以上數學模型進行檢驗。數據採用文獻【3】同類問題的測試數據,具體如表1和表2所示,其中車輛數為3,各車額定載質量均為8,運行速度為50,計算中假定各客戶點間運輸成本等於距離。
表1 各客戶點及站點之間距離
0 1 2 3 4 5 6 7 8
0 0 40 60 75 90 200 100 160 80
1 40 0 65 40 100 50 75 110 100
2 60 65 0 75 100 100 75 75 75
3 75 40 75 0 100 50 90 90 150
4 90 100 100 100 0 100 75 75 100
5 200 50 100 50 100 0 70 90 75
6 100 75 75 90 75 70 0 70 100
7 160 110 75 90 75 90 70 0 100
8 80 100 75 150 100 75 100 100 0表2 各客戶點需求量以及所需服務時間
任務i 1 2 3 4 5 6 7 8

2 1.5 4.5 3 1.5 4 2.5 3
[ ]
[1,4] [4,6] [1,2] [4,7] [3,5.5] [2,5] [5,8] [1.5,4]
Si 1 2 1 3 2 2.5 3 0.8
說明:di為各任務的貨運量,[ ]為每項任務開始執行的時間范圍,Si為服務時間。
用Lingo計算上述數學模型的結果為:
路線一:0、8、5、7、0;
路線二:0、6、4、0;
路線三:0、3、1、2、0;
目標函數總成本為910,與文獻[3]給出的結果一致,表明了本文中數學模型的正確性。
3、基於遺傳方法的VRP問題解法
3.1 遺傳演算法簡介[3]
遺傳演算法是由美國Michigan大學的John Holland教授於20世紀60年代末創建的。它來源於達爾文的進化論和孟德爾、摩根的遺傳學理論,通過模擬生物進化的機制來構造人工系統。 遺傳演算法主要藉助於生物進化中「適者生存」的規律,即最適合自然環境的群體往往產生更大的後代群體。以這個循環圈的群體為起點,經過競爭後,一步分群體被淘汰而無法再進入這個循環圈,而另一部分則成為種群。優勝劣汰再這個過程中起著非常重要的作用,因為自然天氣的惡劣和天敵的侵害,大自然中很多動物的成活率是非常低的。即使再成活群體中,還要通過競爭產生種群。種群則通過婚配的作用產生新的個體,綜合變異的作用,子群成長為新的群體而取代舊的群體,在新的一個循環過程中,新的群體將替代舊的群體而成為循環的開始。
3.2演算法描述
step 1: 初始化, 設置種群規模n ,用自然數法對染色體進行編碼;
step 2: GenN ∶= 0, 生成初始種群Pop (0) ;
step 3: 對種群中的每一個染色體, 計算適應值,並記錄當前最優適應度函數值;
step 4: 若滿足演算法終止條件, 則停止並輸出結果; 否則轉step5;
step 5: 據精英選擇及輪盤賭選擇法, 從Pop (GenN ) 中選擇Pop (GenN + 1) , 即復制下一代個體;
step 6: 進行最大保留交叉和交換變異操作, 重組Pop (GenN + 1) ;
step 7: GenN ∶= GenN + 1;轉步驟3。
演算法的具體描述過程如圖1.



圖1 遺傳演算法流程
3.3 構造染色體、產生初始種群[4]
本文採用客戶直接排列的編碼方式。用1~N間的自然數表示客戶,這些自然數的任意排列就是一個解,按照問題的約束條件,依次將解的每個數(客戶)納入車輛的配送路徑中。如12346789,首先,將客戶1納入第一條配送路徑中,判斷是否滿足問題的約束條件,如能夠滿足,則構成配送路徑0-1-0,再將客戶2納入這條配送路徑中,再計算是否滿足問題的約束條件,如仍能滿足,則構成配送路徑0-1-2-0,接著再將客戶3納入到這條配送路徑中,再計算是否滿足約束條件,如不能滿足,說明客戶3不能由第一條配送路徑配送,則重新開始一條新的配送路徑0-3-0;一直重復這個過程,直到把每個客戶都納入到配送路徑中。
這種編碼方式雖然沒有表示各條路線分界點的基因位,但這有利於將來的交叉操作,不僅排除了不可行解存在的可能性,而且所佔用的計算機存儲量也較小。
關於初始種群的選取,一些學者提出了採用啟發式演算法選擇較好的染色體作為初始種群的方法,然而其種子的選取有一定的偏見和缺乏代表性,可能產生早熟而無法求出最優解,為了避免這種缺陷,本文採用隨機產生初始解的方法,只有這樣才能達到所有狀態的遍歷,因而最優解在遺傳演算法的進化中得以生成。
3.4 適應度函數
本文選取適應度函數為fitness( )=M-( ),其中M為一個很大的值,M後為目標函數值, 為一條染色體,其中i=1,……,m.
3.5 選擇運算元的確定
將每代種群n 個染色體按適應度函數值排序,將適應度函數值最大的染色體復制一個直接進入下一代。下一代種群中剩下的n - 1 個染色體用輪盤賭選擇法產生。這樣,首先可以保證最優個體可以生存到下一代,既給了適應度較大的個體較大的機會進入下一代,又避免了個體間因適應值不同而被選入下一代的機會懸殊。
3.6 交叉概率、變異概率的確定[5]
在遺傳演算法中, 對其收斂性起決定作用的是交叉和變異運算元。在現有的求解VRP 的遺傳演算法中, 對交叉和變異概率通常的處理辦法是: 交叉概率 隨機地選擇一個較大的值, 通常取0. 5~ 1. 0; 而變異概率 取一個較小的值, 一般為0. 001~ 0. 05。為了避免發散或陷入局部最優點, 並保持種群中「好」的個體, 以及加快優化進程, 本文引入自適應機制, 動態地調整 和 , 即通過對高適應值的解降低 和 的值, 而對低適應值的解提高 和 來實現。具體為

其中, = 0. 5, = 0. 05, = 1, = 0. 1; 為種群中的最大適應值, f ′表示交叉的兩個個體中較大的適應值, 為種群的平均適應值, f 是變異個體的適應值。交叉概率隨著適應值趨向於而 減少, 當適應值等於 時, 即對具有最大適應值的解, 其 和 為零, 這樣, 種群中最好的解就直接復制到下一代(即精英選擇)。
3.7 交叉運算元、變異運算元的確定
本文選用順序交叉法[3](Order Crossover,OX),其具體交叉方法如下:
step1:從第一雙親中隨機選一個子串;
step2:將子串復制到一個空子串的相應位子,產生一個原始後代;
step3:刪去第二雙親中子串已有的客戶,得到原始後代需要的其他客戶的順序;
step4:按照這個客戶順序,從左到右將這些客戶定位到後代的空缺位置上。
過程說明見圖2,同樣步驟可用同一對雙親得到另一個後代[7 9 3 4 5 6 1 2 8]. 5 7 4 9 1 3 6 2 8
雙親1
*
*
4 9 1 3
*
*
* 原始後代
1 2 3 4 5 6 7 8 9

雙親2

2 5 4 9 1 3 6 7 8
後代

圖2 交叉過程
本文選擇基於易位變異[3]中的2-交換變異方法,即:
隨機選取個體編碼串中的兩個基因,然後交換它們的位置,如:
12345678 12375648
3.8 終止規則
事先確定演算法的迭代次數能有效控制演算法的運行時間和演算法的求解精度,因此本文採用事先確定迭代次數的終止規則,即判斷迭代的代數是否為要求代數N ,若是,停止進化,選性能最好的染色體所對應的路徑集合,作為原VRPTW 問題的優化解輸出;若不是,繼續執行循環迭代。
4、算例分析
Solomon[6]中給出的56個數據集R1、R2、C1、C2、RC1和RC2是VRPTW問題數值實驗的經典數據集。每個數據集的客戶數有25、50和100,客戶間的距離為歐式距離,並且滿足三角不等式。R1和R2的客戶位置是隨機分布的,C1和C2的客戶呈聚集狀態,RC1和RC2呈半聚集狀態。R1、C1和RC1類數據集具有較短時間窗,因而在每條路線上,允許服務的客戶數較小;R2、C2和RC2則具有較長時間窗,每條路線上允許服務的客戶數較多。而在實際問題中,客戶的分布在多數情況下更接近於R類、RC類數據集所反映的隨機和半聚集狀態。為了更接近實際情況,本文選用較短時間窗的數據R101中25個客戶集的數據來對本文提出的遺傳演算法進行編程驗證,並與文獻[1]中的結果進行比較。
表3 算例結果對比
演算法 文獻[6]的演算法 本文的演算法 本文的演算法
使用的車輛數 8 8 10
運行總距離 617.1 580.352 563.292
表中採用10輛車時最優解的運行路線為:0—7—6—2—0;0—18—15—9—4—1—0;0—14—22—21—0;0—12—23—0;0—3—8—0、0—11—0;0—5—10—0、0—16—0;0—13—0、0—17—0、0—19—0;0—25—0;0—24—0;0—20—0。運行時間為0.482秒。
採用8輛車時最優解的運行路線為:07—11—21—0;0—8—4—1—0;0—17—10—9—2—0;0—13—14—22—0;0—24—19—16—6—0;0—20—18—15—23—0;0—3—12—0;0—5—25—0。運行時間為0.437秒。
經過反復驗證,當種群數小於100時,運行結果總是趨向於局部最優的;而當種群數取為150時,便可以跳出局部最優,從而得到全局性的最優解。當迭代代數取為50時,解的平均值為670.4,平均運行時間為0.246秒;當迭代代數取為100時,解的平均值為643.7,平均運行時間為0.532秒;當迭代代數取為200時,解的平均值為636.8,平均運行時間為1.021秒。這說明迭代代數大於100後對於解的優化影響不是很大,但運行時間卻大大增加,所以本文迭代代數取為100。經過驗證,當種群數為150、迭代代數為100時,相應的選取交叉概率為0.5、變異概率0.02時,可以得到如表3所示的優化解(AMD Athlon(tm)64)。
5、結論
本文試驗中隨機運行了30次,其中最優解出現的概率為40%,優於文獻[1]中的最優解8.7%,而且求解時間較短,這說明本文採用的遺傳演算法對帶硬時間窗車輛路線問題的適應性,這對於該問題的進一步研究具有重要的參考價值。

熱點內容
如何把復制存儲刪了 發布:2024-10-04 21:07:59 瀏覽:202
我的解壓神器 發布:2024-10-04 21:06:06 瀏覽:110
西門子編程100例 發布:2024-10-04 21:05:28 瀏覽:326
樂高機器人ev3編程 發布:2024-10-04 20:56:10 瀏覽:990
演算法左神 發布:2024-10-04 20:23:55 瀏覽:910
lol手游如何配置技能 發布:2024-10-04 20:17:11 瀏覽:861
伺服器兩根心跳線ip一樣嗎 發布:2024-10-04 20:17:03 瀏覽:554
java無狀態 發布:2024-10-04 20:15:40 瀏覽:729
電信為什麼限制上傳速度 發布:2024-10-04 20:11:28 瀏覽:816
編程哪個培訓機構好 發布:2024-10-04 19:55:14 瀏覽:60