当前位置:首页 » 操作系统 » 时间窗算法

时间窗算法

发布时间: 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 19:04:38 浏览:234
28岁学编程 发布:2024-10-04 18:56:24 浏览:187
c语言定义函数结构体 发布:2024-10-04 18:46:19 浏览:404
安卓抖音表情在哪里下载 发布:2024-10-04 18:37:21 浏览:944
双色球算法必中 发布:2024-10-04 18:36:25 浏览:204
压缩机滤网 发布:2024-10-04 18:27:13 浏览:892
解压缩一帧图像 发布:2024-10-04 18:17:00 浏览:308
存储讲解p 发布:2024-10-04 18:12:41 浏览:743
普联监控管理系统的服务器地址 发布:2024-10-04 17:46:38 浏览:602
qq浏览器如何注册账户密码 发布:2024-10-04 17:44:00 浏览:153