当前位置: 首页 > 网络应用技术

Optaplanner实用技术 - 批量计划和实际时间计划(1)

时间:2023-03-06 22:23:00 网络应用技术

  本文最初只计划直接翻译Optaplanner的官方网站,内容涉及由SolverManager计划的实时计划“实时计划会面索尔沃曼纳人”,但在翻译过程中,发现该文章仅描述了SolverManager和Solvermanager和它的相关接口可以实现它。Real-批处理计划期间的时间响应。因此,它只能帮助使用optaplanner详细使用的开发人员。本文没有描述与业务分析和制定人员相关的适用方案。因此,从业务场景到工程实践的视角和过程未能描述批处理规划和真实时间计划的实际意义。这篇文章将根据本官方的博客文章进一步扩展,从业务到整个业务,技术实施的体系结构,以及更全面地,深入到相应的应用程序方案中相关功能特征的实际步骤。到空间限制,本文分为两个版本。本文是第一部分,首先解释需求和业务真实时间计划和真实时间计划的方案以及Optaplanner中批处理计划的实施方法;下一篇文章将在新的optaplanner8.x之后介绍真实的时间计划实施,并同时介绍并同时介绍。如何在批处理平行计划方案中实现真实的时间计划。

  在日常计划申请中,无论是APS,VRP还是类场景,都有两个极为普遍的需求,它们是批处理计划和真实时间计划。LET讨论这两种情况。

  顾名思义,此功能是指计划程序的多个数据集,可以分批处理相同的计划模型,从而提高计划效率,包括计算资源(CPU,内存等)和时间(多个需要的数据长期操作。该收集在晚上安排)。此外,批量计划必须是异步操作。基于此功能,在某些情况下,可以通过多个计划单元来实现多个计划服务。例如,同一组中的多个工厂或研讨会需要部署与这些研讨会共享基础结构相同的计划服务集,从而提高APS项目的投资回报率。仅向计划服务提交您自己的计划数据集。服务程序完成计划和操作后,计划结果返回到相应的WebAPI,或编写相应的数据源。工厂和工厂之间的计划时间不需要排队。进行批处理规划的实施,当Optaplanner刚刚启动SolverManager以实现批处理规划时,我写了一篇文章,(稍后将搬到Nuggets社区):optaplanner 7.32.0。鸡蛋的最终版本 - 索尔弗曼纳格批处理解决方案

  输入8.X版本后,OptaPlanner对SolverManager的相关接口进行了一些修改,以改善一些接口,以提高合理性和易用性。

  如下所示,实施这些步骤以通过solvermanager实现批处理计划步骤。此代码片段将将数据集提交给要通过solvermanager对象的求解器方法计划的数据集,并且该线程将立即返回。返回值是一个求解对象。它用于识别问题当前引入的参考类型值。您可以使用UUID或长时间来识别不同的计划数据集。Solverjob实际上是SolverManager中多个数据集的批量并行计算过程中的处理。通过此句柄,您可以访问和控制相关的计划对象,包括下一篇文章中使用的真实时间计划。

  导入java.util.uuid;导入java.util.concurrent.executionException;导入javax.Indight.Indject;导入javax.ws.s.s.post;导入javax.ws.path;

  导入org.acme.schooltimetabling.down.timetable;导入org.optaplanner.core.api.solverjob;导入org.optaplanner.api.solververmanager;

  @path(“/timetable”)public class timetablereSource {

  }`

  通过SolverManager的操作机制,我们使用OptaPlanner的特征来实现批处理和并行操作计划服务,并且在计划请求上提供服务的响应过程如下。当然,没有求解器。我们还可以通过Java的并行计算函数实现批处理处理,但是我们需要处理与Java并行计算有关的相关问题。

  从上图可以看出,在将客户的计划请求发送到计划服务后,计划服务将为每个请求的数据集打开求解线程,并在完成计划和计算后返回结果。完成操作后将用于并行操作和返回。

  我们只需要将SolverManager及其相关功能应用于Optaplanner服务背景逻辑的服务背景逻辑,以实现构建的批处理和并行规划操作。这些功能的设计是后端服务,并作为基本计划呈现实际上,在Web API中的各种情况下,设施是J2EE的内容。您可以自己参考相关材料。

  通过批处理和并行计划,可以在同一时间进行计划和操作来实现同一模型的多个数据集。但是,有些学生应该认为,在不同工厂中,数据集的数据量可能会大不相同。或在不同的时间(在季节期间的季节期间),由于生产任务的数量不同,计划数据集的数据量也将有所不同。不同数据量的大小的差异可能非常惊人,导致所需的计划时间有很大的差异。因此,在批处理计划的过程中,我们可以为不同的数据集设置不同的计划时间吗?不幸的是,Optaplanner不支持此功能。这是一个非常真实的问题。我希望将来可以支持Optaplanner的版本。以下是Optaplanner团队对此问题的回答。

  实时计划与特定的计划业务有更牢固的关系。确定是否根据业务的特定要求需要实时计划。在大多数计划的应用程序方案中,该计划是可持续且连贯的工作,也就是说两个计划的周期的某些接受要求。上一个周期的执行结果通常是下一个周期计划内容的一部分。因此,两个相邻计划之间存在一定的复杂性,并且需要进行一定的设计以有效反映实际计划。在上一列中,有一篇关于两个相邻计划连接的邻近计划的文章,并提出了一些计划来参考(后来搬到掘金社区):两个相邻生产计划之间的连接问题将是

  俗话说:“计划永远不会像改变那样快。”为了在之前和之后实现两个周期性计划的延续,除了使用上面提到的一些技术手段(例如设置锁定区域),您还可以从一个角度考虑一下。因为周期性计划很难处理,我们可以直接取消此周期,并且不能区分计划的发电时间和执行时间。取而代之的是,它直接允许引擎在整个计划中待命?实施计划遵循?提供实现这一理论的实时计划技术。本文将介绍相关的适用场景,设计和实施方法的真实时间计划。实际上,从特定业务开始,无论是定期计划还是真实的计划计划,都需要锁定任务。原因是什么?您可以在评论区域中讨论。这是因为“计划执行喂养返回计划……”是一个连续且连贯的过程。因此,如果有一项技术可以无限接近这一需求,则可以在很大程度上解决上述过程之前和之后的过程。由计划之间的及时性差异引起的多种问题。

  在计划和计算的过程中,当计划的对象(包括计划的实体对象和问题事实对象)发生变化时,引擎可以实时将此更改纳入计划范围,并快速输出当前计划的更改results.new解决方案。optaplanner称为真实-Time计划。例如:在生产计划的情况下,在计划和计算过程中,需要立即处理紧急插入顺序。在将新插入的订单提交给计划服务后,计划计划将立即基于现有的计划结果,并将新订单新订购。考虑到考虑后,输出新的结果。删除相同的结果是正确的订单和机器。在VRP场景中的另一个示例中,当驾驶员根据计划的运输计划执行运输任务时,在中间遇到交通拥堵是无法预测的(当引擎正在计划和计算时,所有路线都将在理想的道路条件)您可以通过移动应用程序反映服务器的当前情况。VRP规划服务计划将立即更改当前路线的道路状况(例如修改不可用的路线或延长过分时间)。驾驶方案并更新驾驶员的手机。此过程必须是真实的 - 时间 -新运输计划的影响最小化。至少没有异常情况的其他驱动程序不受影响。以下示例使用VRP示例在不同阶段讨论新的访问节点,并应对Optaplanner的实际时间计划。

  在上面显示的示例中,原始数据集计划在07:55生成计划后生成3个新客户(即3个节点),并且增加时间为07:56、08:02和08:45 08:45当时一些节点增加了,车辆已经离开了仓库,也就是说,该计划已进入执行状态,例如新添加的新节点。在VRP方案中,计划服务将在车辆启动之前生成驾驶路径计划要执行运输操作。但是,该订单将不时添加。每次添加订单时,都意味着需要在运行图中添加访问点。生成运输计划后,添加了此节点。在传统的计划模式下,新的计划需要新的。节点包含在计划数据集中,分发了所有节点的车辆和车辆的驾驶路径,并重新制定VRP计划以生成新的运输计划。无论如何,通过实时计划技术,所有节点都需要重新组织。仅需要实时添加新节点。

  在特定的工程实践中,实际时间计划是一项非常实用的技术。对于解决方案设备,即使未打开函数,也支持此工作方法。在特定的应用程序方案中,有必要使用系统设计方法。要实现此场景。Clebi,Gorubi,Or-Tools,或者是否解决了实时计划的解决方案,我尚未研究深入研究,暂时的结论是不好的。optaplanner提供了一个完整的构建功能,特别是针对真实的时间计划。在先前发布的文章中的文章中详细描述(稍后到掘金社区):optaplanner 8.x之后的机械师的真实时间调度示例(i),有一个更合理且更容易 - 使用API。由于空间有限,将在下一部分中介绍。本文介绍了如何在计划服务中应用真实的时间计划。下面的图显示了真实的 - 时间计划服务的请求-Processing -Response Process

  在实时计划的开头,引擎将首先启动计划过程,这是保留记忆的防御过程,在开始处理待机状态后,当数据集传递时,数据集时计划和计算。在此过程中,计划结果是通过聆听畅销书面事件来获得的。当该过程符合最终条件时,引擎将停止操作并返回待机过程。无论是在计算机还是状态下,更改了数据集,通过QualiseFactCtchanged接口接收更改(旧版本,新版本将集成到新接口中),并触发引擎来处理此更改。上图可以清楚地反映在上面的过程中。

  本系列文章不时从公共帐户序列化,请注意公共帐户(搜索“使APS成为可能”)

  要了解有关OptaPlanner应用程序的更多信息,请发送电子邮件:ke@gmail.com,如有必要,您可以添加微信(13631823503)或QQ(12977379)实时交流,但是由于我的忙碌工作,,QQ等。该工具可能无法在 - 深度,更复杂的问题中进行通信。建议通过邮件或讨论组提出建议。(讨论组属于Google电子邮件列表。国内网络可能很难访问,并且需要自行解决)