首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    设计Optaplanner下实时规划服务的失败经历

    另外一个要求是实时性,如果按常规的规划步骤,对于实时性有要求,或响应速度较高的场景,例如:车间作业的实时调度系统,可能每隔离10分钟就需要刷新一次计划,此时实时规则的作用就反映出来了。...OptaPlanner号称经过大量单元测试,压力测试,有良好的稳定性,不可能就这样被我把错误试出来的。但切切实实地抛出了这个异常,而我却没有任何办法。...然后我就把这个问题的重现步骤在OptaPlanner项目的JIRA中提交了一个issue,不知道这算不算我给OptaPlanner作出的一点点贡献呢,期待处理结果呀。   ...其实在这两天时间时,我并不仅仅是检查我自己的代码是否出现资源竞争问题,我还Debug进了OptaPlanner的源代码里(7.8.0.Final版),并找到了异常的具体来源。...现在办法有两个,一个是等OptaPlanner团队在JIRA上对我提交的issue进行处理,看是不是真的在OptaPlanner中存在这么一个Bug.

    1.2K00

    Java17,有史以来最快 JDK

    这一点从Snyk发布的2021 Java 社区报告中也可以得到证实,虽然有 61.5% 的人在生产中使用 Java 11,但仍有一半的 Java 11 用户(目前使用最多的版本)在他们的生产堆栈中使用...Java 17 到底有多快? 看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?...为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。...这是否意味着 Java 17 比 Java 15 慢?...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。

    1.9K20

    JDK 17新特性,已发布!程序员:不想追了... ...

    这一点从Snyk发布的2021 Java社区报告中也可以得到证实,虽然有61.5%的人在生产中使用Java 11,但仍有一半的Java 11用户(目前使用最多的版本)在他们的生产堆栈中使用Java 8。...Java 17 到底有多快? 看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?...为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。...这是否意味着 Java 17 比 Java 15 慢?...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。

    1.6K20

    OptaPlanner规划引擎的工作原理及简单示例(1)

    例如一个计划是否可行,例如会不会同一个机台同一个时间分配了两个不同的任务(假设每个机台同时只能做同一个任务)。一个员工所排班次是否正确(例如一个员工是否被安排了三个连续的班次)。...例如:一个计划的成本是否足够低;一个排班表到底有多大程度上的合理性,例如一个人正常情况下是需要5天工作制的,但如果遇到特殊情况,也可以连续工作6天,但这种情况是特殊的,需要额外付加班费(成本上升)最好不要出现这种情况...但是在众多的不可行方案里,其实还要区分哪个是更不可行,哪些其实只是违反了一点点,还是“稍为可行的”。...OptaPlanner其利用途径有以下两点 1. 用分数来确定,一个方案是否可行,是优是劣; 2....这一篇我们先讲解一下原理,打一下基础,下一篇将用一个任务与机台的例子来说明一下这些原理在OptaPlanner中是如何体现的。 -- END -- 版权声明:本文为博主原创文章,转载请附上博文链接!

    1.9K00

    Java17,有史以来最快 JDK!

    这一点从Snyk发布的2021 Java社区报告中也可以得到证实,虽然有61.5%的人在生产中使用Java 11,但仍有一半的Java 11用户(目前使用最多的版本)在他们的生产堆栈中使用Java 8。...Java 17 到底有多快? 看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?...为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。...这是否意味着 Java 17 比 Java 15 慢?...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。

    1.1K30

    OptaPlanner逐步学习(0) :基本概念 - 规划问题,约束与方案

    例如规则班次计划的时间,其中的班次是在开始规则之前已经确定的,所以“班次”这个业务实体只会在规划过程中,提供每个班次具体的时间等信息,而不会改变的。那么“班次”这个业务实体,就是一个问题事实。...例如,如果上述所有实体,规划的变量和所有因素,展开后的数量是M,而一个解是对其中的N个变量进行规划,那么有多少个解呢?...可行解是可验证的,只要根据目前所有的硬约束,对解中的每一个规划实体中的每个规划变量,逐一核对,看是否符合所有硬约束,如果符合,那就表示这个解是可行解。...当问题规模不算大的时候,以目前的CPU速度还是能实现的。但如果问题稍复杂一点,规划实体和规划变量稍多一点,那么可能解的数量就是一个天文数字了,这种情况下是没办法完全遍历的。...原创不易,如果觉得文章对你有帮助,欢迎点赞、评论。文章有疏漏之处,欢迎批评指正。

    1.6K00

    OptaPlanner 基本概念 - 规划问题, 约束,方案

    例如规则班次计划的时间,其中的班次是在开始规则之前已经确定的,所以“班次”这个业务实体只会在规划过程中,提供每个班次具体的时间等信息,而不会改变的。那么“班次”这个业务实体,就是一个问题事实。...例如,如果上述所有实体,规划的变量和所有因素,展开后的数量是M,而一个解是对其中的N个变量进行规划,那么有多少个解呢?...可行解是可验证的,只要根据目前所有的硬约束,对解中的每一个规划实体中的每个规划变量,逐一核对,看是否符合所有硬约束,如果符合,那就表示这个解是可行解。...当问题规模不算大的时候,以目前的CPU速度还是能实现的。但如果问题稍复杂一点,规划实体和规划变量稍多一点,那么可能解的数量就是一个天文数字了,这种情况下是没办法完全遍历的。...原创不易,如果觉得文章对你有帮助,欢迎点赞、评论。文章有疏漏之处,欢迎批评指正。

    2.3K01

    Java17,有史以来最快 JDK

    这一点从Snyk发布的2021 Java社区报告中也可以得到证实,虽然有61.5%的人在生产中使用Java 11,但仍有一半的Java 11用户(目前使用最多的版本)在他们的生产堆栈中使用Java 8。...Java 17 到底有多快? ---- 看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?...为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。...这是否意味着 Java 17 比 Java 15 慢?...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。

    57250

    多工序、多机台(产线)环境下的排程要点

    机台任务链:多个任务被分配在一个机台上时,同一时间只能处理一个产品,即同一时间只能进行一个任务,这些同在一机台上形成的任务序列,称为机台任务链接....任务死循环的检测经验 因为生产计划的复杂性,造成工序任务链与机台任务链之间存在异常复杂的制约,需要对Optaplanner产生的可能方案进行合法性判断,识别任务的开始时间推导过程中,是否存在死循环的可能...因为当一个可能方案中任务的时空关系一旦确定之后,所有的任务即构成了一个有向图(directed graph),那么我检查这个有向图是否存在环即可。...我尝试过使用队列结构对这个图进行广度优先遍历,并识别环是否存在。...最终我的解决办法是:对Optaplanner在规划过程中产生的每个可能方案,都进行模型上的抽象与简化,去除一些不影响死循环判断的因素,把它归约成一个正正式式的有向图,并通过一些成熟的有向图环检测的算法对其进行判断

    2.4K92

    Java17,有史以来最快 JDK

    这一点从Snyk发布的2021 Java社区报告中也可以得到证实,虽然有61.5%的人在生产中使用Java 11,但仍有一半的Java 11用户(目前使用最多的版本)在他们的生产堆栈中使用Java 8。...Java 17 到底有多快? 看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?...为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。 运行次数:每个JDK 和每个垃圾收集器组合按顺序运行 3 次。...这是否意味着 Java 17 比 Java 15 慢?...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。

    73360

    OptaPlanner实用技术 - 批量规划和实时规划(1)

    因此,只能对具体使用OptaPlanner的开发人员有一定帮助,对于相关的业务分析和决策人员关注的适用场景,该文并未作深入描述;因而,未能从业务场景到工程实践的角度和过程,来描述批量规划与实时规划的实用意义...// 将数据集提交到SolverManager之后,是否被即时执行规划运算,要视当前设置的并行线程数,及当前规划空间中正在运行的数据集数量有关。...image.png 实时规划 实时规划则与具体的规划业务关系更强。根据业务具体要求来决定是否需要实时规划。...之前本专栏有一篇关于两个相邻计划之间衔接的文章,提出了一些方案可参考:相邻两个生产计划之间的衔接问题 实时规划需求的来源 常言道 - “计划永远不如变化快”,要实现前后两个周期性计划的接续...Cplex, Gorubi, OR-Tools等求解器是否支持实时规划,本人并未深入研究过,暂不好下定论。而OptaPlanner已提供了完整的内置功能,专门用于实时规划情况。

    1.5K30

    OptaPlanner - 从探究示例中的hello world 初步认识规划引擎的运行步骤

    如果Optaplanner引擎有版本更新了,你又想使用的话,那只能重新下载、配置。所以,现在Optaplanner官网通常都是推荐通过Maven的方式来建议项目。...,并自动匹配版本了,当有Optaplanner有版本更新的时候,你所使用的包也可以更新为最新版本,而无需人工下载。...这就是典型的资源规则问题了,大家可以扩展到供应链各个环节中的场景,例如APS(Advanced Planning and Scheduling, 高级计划与排程)中,如何将任务按一定的要求分配到指定的车间...即恢复原来的包信息. ? eclipse会自动根据pom.xml中的依赖项更新依赖包,若没有自动更新,点一下文件菜单中的刷新菜单项 ?...5.试运行   我们先试一下,看看我们的导入的源代码是否都已经正确,所需的依赖包是否都已经完成下载并更新。找到整个示例的入口类 - OptaPlannerExamplesApp.java.

    1.6K30

    探究Optaplanner示例,初步认识规划引擎的运行步骤

    如果Optaplanner引擎有版本更新了,你又想使用的话,那只能重新下载、配置。所以,现在Optaplanner官网通常都是推荐通过Maven的方式来建议项目。...,并自动匹配版本了,当有Optaplanner有版本更新的时候,你所使用的包也可以更新为最新版本,而无需人工下载。...这就是典型的资源规则问题了,大家可以扩展到供应链各个环节中的场景,例如APS(Advanced Planning and Scheduling, 高级计划与排程)中,如何将任务按一定的要求分配到指定的车间...eclipse会自动根据pom.xml中的依赖项更新依赖包,若没有自动更新,点一下文件菜单中的刷新菜单项 依赖项更新完成后,示例代码的原始包信息都会被应用,自动创建好包结构。...----   5.试运行 我们先试一下,看看我们的导入的源代码是否都已经正确,所需的依赖包是否都已经完成下载并更新。

    2.3K30

    OptaPlanner终于支持多线程并行运行 - Multithreaded solving

    OptaPlanner 7.9.0.Final之前,启动引擎开始对一个Problem进行规划的时候,只能单线程进行的。...也就是说,当引擎对每一个possible solution进行分数计算的过程中,细化到每个步骤(Caculation),都只能排队在同一个线程中依次计算,不管你的问题是否存在并行计算的可能。...很显然这种运算方式应用于一些可并行计划的场景下,是相当不利的。...关于并行计算功能的更新信息如下: New and noteworthy: Engine 7.9.0.Final Multithreaded incremental solving OptaPlanner... 对于OptaPlanner有任何疑问,可以通过邮件将问题发到我邮件,我将及时处理。通过即时通讯工具,我确实没办法即时处理,导致无意忽略了不少信息。

    1.2K30

    OptaPlanner规划引擎的工作原理及简单示例(2)

    本文将会假设我们需要对一个车间,需要制定生产计划.我们为生产计划员们设计一套智能的、自动的计划系统;并通过OptaPlanner把这个自动计划系统开发出来。...因此,这次我们只用一个简单的小程序即可以演绎一个自动计划系统,来呈现规划引擎OptaPlanner在自动计划上的魅力。...“合理地” - 表示非确定性的条件,也就是定量的,可以是非常合理,60%的合理,或完全合理,也就是说是否合理,还是有议论空间的,并没有一个完全固定的标准。 下面将对上述两项进行更深入的讨论。...其实我们还是缺了一块,那就是OptaPlanner的配置,因为需要创建OptaPlanner的引擎对象进行规划的时候,是有一大堆参数需要指定给引擎的。...另一方面将会类似于本文,将撰写数篇相对深入的应用文章,分享给对OptaPlanner有一定认识的同学。

    3.9K11

    OptaPlanner - 把example运行起来

    示例程序是基于Swing做的,理论上通过里面的批处理文件就可以运行起来,其实里面就是一些运行jar包的命令,只不过它会有更多的功能,例如检查当前系统的JRE等等。...不过中间有点小插曲,我使用7.6.0的示例运行的时候,它报了一个slf4j找不到的异常,应该是一个日志组件缺少了,我要看看它这个版本的更新记录,看是否有相关的提示,否则我得联系一下他们项目组的人才行。...但其实在他们的Github中提供了更多的示例,有兴趣的同学可以关注一下Github上optaplanner项目的leader Geoffrey De Smit,他现在是Optaplanner项目的头儿,...这个示例的目标是:给出一些Process和一些Computer,Optaplanner规划引擎在对这些实体进行对比运算,将所有Process分配到指定的一台Computer, 这个分配方案有两个要求:...Optaplanner规划引擎需要找找出一个方案,在满足了第1点的硬性要求的前提下,令到这所有被占用的Computer的成本加起来尽量小(为什么不能说最小呢?

    1.6K50

    普通企业的规划类项目中,OptaPlanner更适合作为APS的规划优化引擎

    但事实上这些问题都可以视作数学规划问题,可使用运筹学中的对应方法来处理。例如生产计划的排程,车辆路线规划与实时调度,工单的划分和开料问题等,都可以通过数学规划并优化。...建模过程其实是把业务场景中的参数、变量、规则和优化目标等要素,转化成可被规划引擎识别,并运算的优化模型。...那么从业务上识别出哪些是硬性约束,哪些是优化目标后,应该如何通过约束实现不同的规则与优化目标,则需要对OptaPlanner中的评分体系有一定的理解,否则会较容易超出OptaPlanner的一些设计限制...毕竟使用OptaPlanner我们面对的都是一些软件设计的问题,这对于有丰富经验的软件开发人员,并不是不可逾越的鸿沟。...因此,我认为有规划方面项目的普通公司,还是优先使用OptaPlanner作为规划引擎更可行。

    2.6K00

    OptaPlanner的新约束表达方式 Constraint Streams

    有好些时间没有写过关于OptaPlanner的东西了,其实近半年来,OptaPlanner还是推出了不少有用、好用的新特性。包括本文讲到的以Stream接口实现评分编程。.../index.html#constraintStreams 最近几个版本推出的新功能、特性中,有不少功能还处于初始探索阶段,甚至有些功能还未成体系,包括我在上一篇文件中推出的SolverManger...对OptaPlanner有初步认识都清楚,我们使用OptaPlanner规划建模时,需要在模型中表达一系列约束,以描述各个业务实体的约束和规划的优化目标。...requiredCpuPower) -> requiredCpuPower - computer.getCpuPower()); } 该代码是CloudBalance中用于,计算限制一台计划机被分配超出其...由此可能,OptaPlanner提供的Constraint Stream可以进行更复杂的条件判断,至于这种方法是否更好用,就取决于大家对Stream(类似C#中的Linq)的熟悉程度。

    1.3K30
    领券