首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在实现实时在线规划服务的过程中,我做过很多尝试。因为需要实时在线的服务,因此,需要设计多线程并发为外界请求提供响应,需要实现消息队列来管理并发请求的时序等问题。...另外一个要求是实时性,如果按常规的规划步骤,对于实时性有要求,或响应速度较高的场景,例如:车间作业的实时调度系统,可能每隔离10分钟就需要刷新一次计划,此时实时规则的作用就反映出来了。...,如果这些部署是需要通过规划来辅助实现的话,OptaPlanner是不是可以作为后台超级计算机上不停运算规划的控制中枢系统呢?...因此,我将引擎程序做成Springboot程序,部署到服务器端,并将程序设计成多线程并发的模式,主线程负责侦听Springboot接收到的WebAPI请求,当接收到请求后,就从线程池中启用一个线程对请求进行处理...然后我就把这个问题的重现步骤在OptaPlanner项目的JIRA中提交了一个issue,不知道这算不算我给OptaPlanner作出的一点点贡献呢,期待处理结果呀。

1.2K00

OptaPlanner的新约束表达方式 Constraint Streams

有好些时间没有写过关于OptaPlanner的东西了,其实近半年来,OptaPlanner还是推出了不少有用、好用的新特性。包括本文讲到的以Stream接口实现评分编程。...对OptaPlanner有初步认识都清楚,我们使用OptaPlanner规划建模时,需要在模型中表达一系列约束,以描述各个业务实体的约束和规划的优化目标。...因此,可以看到,factory除了过from操作获得所有Process对象,通过filter对Process进行过滤,通过penalize进行计分外。...我向Geoffrey查询过,他表示这些版本更多的情况是在实现一些引擎内部的优化和一些新的内部运算功能,但这些功能不一定反映到API上,因此对于我们使用者来说,并没有太大的变化。...上述功能希望可以帮大家理解并应用OptaPlanner的第四种评分方式。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【译】OptaPlanner开发手册本地化: (0) - 前言及概念

    在此之前,针对APS写了一些理论性的文章;而对于OptaPlanner也写了一些介绍性质,几少量入门级的帮助初学者走近OptaPlanner。...在文章中,为了降低对原文的理解难度,有些地方我不会直接按原文档的字面翻译,而是有可能加入一些我自己的理解,或添一些解释性的内容。...我认为应该在理解了作者原意的基础上,再进一步以中文方式的表达,才算是真的的本地化。...本文以OptaPlanner 7.10.0 Final版本的开发手册作为基础进行翻译。 ---- 1. OptaPlanner 介绍 1.1. 什么是OptaPlanner?   ...OptaPlanner支持多种优化算法,以有效地涉足大量可能解,根据不同使用场景的情况,一些优化算法的性能比其它算法更佳,但哪个更佳是无法预先告知的(译者:需要通过Benchmark等功能测定)。

    2K00

    人工智能包括约束求解器吗?

    因为英语及中文表达习惯的差异,以该博文发表示Optaplanner官网,其描述的问题及概念具有一定的上下文关联性;因此,为了对还不太熟悉Optaplanner的同学更容易理解,令文章更符合中文母语读者的阅读习惯...,我并没有完全按字面生硬直译。...为了获得资本青睐,一些研究项目也被重新塑造,贴上人工智能技术的名头。那么,约束求解器能否也使用人工智能的标签呢?...所有的算法都可以产生智能吗?   尽管计算1234乘以5678的结果并不容易,但我们并不认为这个计算方法是一种人工智能。同理,那些排序算法也不是人工智能,为什么呢?   ...从历史上看,约束求解器(如Optaplanner)明显是运筹学的一个分支领域,同时也不能排除它属于其它领域(译 者注:约束求解器不仅仅属于运筹学领域).我认为约束求解器也可以纳入人工智能领域,不仅仅是一些论文和书刊如是说

    1.2K30

    OptaPlanner 7.32.0.Final版本彩蛋 - SolverManager之批量求解

    上一篇介绍了OptaPlanner 7.32.0.Final版本中的SolverManager接口可以实现异步求解功能。本篇将继续介绍SolverManager的另一大特性 - 批量求解。...适用场景 在日常的规划系统中,求解一个问题,绝大多数情况下,容许运行的时间较有限,特别是在实时性较高的场景中,可让引擎运算时间不多。...至于原因,可以参考我前面关于OptaPlanner入门文章中关于NPC, NP-Hard问题规模的说明。 因此,在一些规模大、时间要求不高的场景下,我们可以让引擎在空余时间自动运算。...例如通过定时作业的方式,在非工作时间(例如晚间、节假日等)启动引擎对大多个规模的问题进行规划运算;第二天上班的时候,就可获得运算结果。...经历过单CPU多线程编程的朋友应该知道,多线程可以提高资源利用率,但有时候线程数量控制得不好,性能上却是起反效果的,最简单的是CPU的线程切换会消耗一定资源的。

    81140

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

    但在此之前,我需要先讲解一下OptaPlanner在进行规则运算的原理。所以,本文是讲述一些关于寻找最优解的过程中的原理性的内容,作为后续通过示例深入讲解的基础。...以便在接下来的一系列文章中,可以快速无障碍地理解我所讲解的更细化的OptaPlanner功能。   ...在进行记录排序时,前面的字段排列的优先级,是从性质上优先于后面的字段的,大家理解了Order By子句,也就理解了不同层级约束的问题了。接下来我们以最简单的软硬约束,来分析一下约束的作用。...但如果我们细心观察总结一下,会发现评分是可以通过两种方向来评价的;分别是正评分(奖励性评分)和负评分(惩罚性评分)。 正评分:通过获得分数的多少,来体现事物的优劣。...硬约束、硬分数不就是为了给方案定性而设立的吗?何必还要记录它的扣分量,多此一举呢?   如果这样想,就是一种不全面的想法了。

    1.9K00

    Java17,有史以来最快 JDK

    Applet API 403:强封装JDK的内部API 406:Switch模式匹配(预览) 407:删除 RMI 激活 409:密封类 410:删除实验性 AOT 和 JIT 编译器 411:弃用即将删除安全管理器...可以以说忽略 Machine Reassignment numbers 更好。但是为了避免挑选数据的问题,这些结果和平均值确实把它们包括进来了。...Java 17 上的 G1GC 与 ParallelGC 表 3.JDK 17 下不同 GC 每秒的计算得分 基准测试总结 平均而言,以 OptaPlanner 为例的基准测试结果表明: 对于 G1GC...答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。...作为3年后首次发布的LTS版本的Java 17给你带来了哪些惊喜?面对Go、Kotlion等JVM的强势发展,你觉得Java还能保持霸主地位吗?

    1.9K20

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

    商用场景则需要付费获得使用授权;因此,这类求解器很受运筹学领域的学术界欢迎。...因为,上述提到的OptaPlanner业务模型表达技术,都是一些与程序设计相关的技术,在以程序设计人才为主的普通企业中,这方面人才并不缺乏,掌握这方面的技术也不算非常困难。...而从最近的OptaPlanner数个版本发布的内容来看,将来会加大对Java8及以上版本的stream特性的支持。目前已经发布了一些基于stream的评分API,稍后有时候我将会写一篇这方面的文章。...本人在使用OptaPlanner过程中,总结了数种典型和异常情况,或约束表现正常,但并未能表达业务规则唯一性的情况;并分析了其中原因,以后有机会,我将会着重分享这些情况,详细论述各种异常,约束歧义和相应的规避原则...因此,我认为有规划方面项目的普通公司,还是优先使用OptaPlanner作为规划引擎更可行。

    2.6K00

    是什么让Redis“气急败坏”回击:13年来,总有人想替Redis换套新架构

    “我很高兴 Redis 发了这篇文章,因此我必须要去了解一下 Dragonfly,它看起来很棒。”...3)横向扩展才是最重要的 以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。下面来看具体原因: 更佳弹性 我们在集群中使用的节点越多,整个集群的健壮性就越强。...但必须承认,NUMA 跟多线程架构之间也有天然冲突。根据我们在其他多线程项目中的经验,NUMA 可能令内存数据存储的性能降低达 80%。...2)目标 验证 Dragonfly 公布的结果是否可重现,并确定检索结果的完整条件(鉴于 memtier_benchmark、操作系统版本等信息有所缺失)。...在两种解决方案中,我们调整了客户端配置以实现最佳结果。如下所示,我们成功重现了大部分 Dragonfly 基准数据,甚至在 30 通道条件下得出了比项目方更高的测试成绩。

    41010

    世界上最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升,杀疯了!

    “我很高兴 Redis 发了这篇文章,因此我必须要去了解一下 Dragonfly,它看起来很棒。”...3)横向扩展才是最重要的 以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。下面来看具体原因: 更佳弹性 我们在集群中使用的节点越多,整个集群的健壮性就越强。...但必须承认,NUMA 跟多线程架构之间也有天然冲突。根据我们在其他多线程项目中的经验,NUMA 可能令内存数据存储的性能降低达 80%。...2)目标 验证 Dragonfly 公布的结果是否可重现,并确定检索结果的完整条件(鉴于 memtier_benchmark、操作系统版本等信息有所缺失)。...在两种解决方案中,我们调整了客户端配置以实现最佳结果。如下所示,我们成功重现了大部分 Dragonfly 基准数据,甚至在 30 通道条件下得出了比项目方更高的测试成绩。

    1.4K10

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

    并且它所有的包都可以从Maven中央库中获得,即只需要建立一个Maven项目,简单配置好依赖项,就可以开始基于OptaPlanner的开发了。...所以,如果对于所有规则问题,都是使用这些暴力枚举的办法,以现有世界上的计算机的算力,很多问题是没办法找到最优解的。   ...本猿只是根据中文表达的习惯,在不同的场合以最顺口的方式,视情况确定到底应用用“解”,还是“方案”来表述。...在接下来的一系列文章中,我在讲解这些方案的过程中,会用到以下概念: 可能解:一个规划问题的任意一个解都称为可能解,也就是所有规则实体的所有规则变量,任意一个组合,都称作一个可能解。...那么在固定的时间内,OptaPlanner引擎帮我们找到的最优方案,就是称作相对最优解了。大家来思考一下,相对最优解必然是可行解吗?

    1.6K00

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

    没错,它就是结合Drools(一个开源规则引擎)一起应用的(也可以单独使用),Drools在这里的作用主要是用来作编写计分脚本,事实上完全可以抛开Drools,直接使用Optaplanner自己的API...Optaplanner是基于Apache Software License.协议的,你可以直接使用它作为商业用途。...并且它所有的包都可以从Maven中央库中获得,即只需要建立一个Maven项目,简单配置好依赖项,就可以开始基于Optaplanner的开发了。...在接下来的一系列文章中,我在讲解这些方案的过程中,会用到以下概念: 可能解:一个规划问题的任意一个解都称为可能解,也就是所有规则实体的所有规则变量,任意一个组合,都称作一个可能解。...那以在我们固定的时间内,Optaplanner引擎帮我们找到的最优方案,就是称作相对最优解了。大家来思考一下,相对最优解必然是可行解吗?

    2.3K01

    浅尝一个排程引擎Optaplanner - 前序

    好了,既然ERP这么简单,老农我也觉得这不是我的菜呀(其实是能力不足,没办法深入到ERP的业务里罢了).好在现在整个中国都在闹智能制造,我觉得也可以在制造业做点大家觉得有小许牛B的事了(原谅我做了点小梦...说到生产计划,可能大家遇到最多的都是MPS(主生产计划),它只是一个很高层次的计划,只能计划到车间(顶多是产线),时间上最多只能精确到天;更多的算是企业层面的计划,不太具有实操性。...每天都有天量的生产要求要处理,你当计划员、调度员们是神呀?所以篇到一个认为差不多可以了的生产方案就往上报呗,老板也如愿以偿地保住了客户亏了不少钱。...可是过两天老板会发现,其实有更好的方案可以更少地使用天价机台,甚至还有一个无需使用天价机台的方案,他会去把计划员、调度员们捉来杀掉拜旗吗?(只有码农才有这个待遇吗?)....可以看到,Optaplanner还只是KIE里面的其中一个项目,在我们这个小号里,我们还会介绍它的另外一个重要软件Drools - 一个开源成熟的规则引擎。

    1.6K01

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

    而关于一个产品存在一条完整且复杂的工序路线,从而产生多个生产任务的情况,我将在以后的文章中,关于OptaPlanner的更高级的应用中,将会有相关的详细讲解。...至此,可能有些同学在想,其实这并不难呀,根据给定的两个硬约束和一个软件约束,以两个硬约束作为限制条件,通过暴力穷举的方法,找出一个无限趋近于符合软约束,也可以找出一个令成本最低的任务分配方案出来呀。...TaskAssignment, 此类用来描述整个解决方案的固定类,它的结构描述了问题的各种信息,在OptaPlanner术语中,在执行规划前,它的对象被称作一个Problem, 完成规划并获得输出之后,...奇怪了上文不是提到,它只需被注解为@PlanningVariable的吗?...另外,关于Maven需要的依赖包,我将POM文件的内容也贴出来。大家照着上,应该可以运行起来了。

    3.9K11

    Redis 要被替代了?

    “我很高兴 Redis 发了这篇文章,因此我必须要去了解一下 Dragonfly,它看起来很棒。”...速度问题 Dragonfly 基准测试其实是将独立单进程 Redis 实例(只能使用单一核心)与多线程 Dragonfly 实例(可以使用虚拟机 / 服务器上的全部可用核心)进行比较。...横向扩展才是最重要的 以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。 下面来看具体原因: 更佳弹性——我们在集群中使用的节点越多,整个集群的健壮性就越强。...目标: 验证 Dragonfly 公布的结果是否可重现,并确定检索结果的完整条件(鉴于 memtier_benchmark、操作系统版本等信息有所缺失) 确定 AWS c6gn.16xlarge 实例上可实现的最佳...在两种解决方案中,我们调整了客户端配置以实现最佳结果。如下所示,我们成功重现了大部分 Dragonfly 基准数据,甚至在 30 通道条件下得出了比项目方更高的测试成绩。

    93410

    深度解析HashMap:探秘Java中的键值存储魔法

    四、 解析HashMap的put()方法4.1 put()方法的基本流程HashMap是Java中常用的数据结构之一,它实现了Map接口,提供了键值对的存储和检索。...简要内部实现解析: 计算哈希值: 首先,get() 方法会接收传入的键对象,并通过键对象的 hashCode() 方法计算出一个哈希值。这个哈希值是用来确定键值对在哈希表中的位置。...线程安全:在多线程环境下,ConcurrentHashMap 提供了更好的线程安全性,支持并发的读取操作,同时保证了写入操作的一致性和可见性。...合理使用并发集合:在多线程环境下,可以考虑使用ConcurrentHashMap或者Collections.synchronizedMap()来代替普通的HashMap,以提高并发性能。...注意选择合适的数据结构:在某些特定场景下,可能会有更适合的数据结构来代替HashMap,比如用TreeMap来取代HashMap以获得有序的键值对遍历。

    13310

    是什么让Redis“气急败坏”回击:13年来,总有人想替Redis换套新架构

    “我很高兴 Redis 发了这篇文章,因此我必须要去了解一下 Dragonfly,它看起来很棒。”...速度问题 Dragonfly 基准测试其实是将独立单进程 Redis 实例(只能使用单一核心)与多线程 Dragonfly 实例(可以使用虚拟机 / 服务器上的全部可用核心)进行比较。...横向扩展才是最重要的 以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。下面来看具体原因: 更佳弹性——我们在集群中使用的节点越多,整个集群的健壮性就越强。...目标: 验证 Dragonfly 公布的结果是否可重现,并确定检索结果的完整条件(鉴于 memtier_benchmark、操作系统版本等信息有所缺失) 确定 AWS c6gn.16xlarge 实例上可实现的最佳...在两种解决方案中,我们调整了客户端配置以实现最佳结果。如下所示,我们成功重现了大部分 Dragonfly 基准数据,甚至在 30 通道条件下得出了比项目方更高的测试成绩。

    44420

    世界上最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升,杀疯了!

    “我很高兴 Redis 发了这篇文章,因此我必须要去了解一下 Dragonfly,它看起来很棒。”...速度问题 Dragonfly 基准测试其实是将独立单进程 Redis 实例(只能使用单一核心)与多线程 Dragonfly 实例(可以使用虚拟机 / 服务器上的全部可用核心)进行比较。...横向扩展才是最重要的 以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。...目标: 验证 Dragonfly 公布的结果是否可重现,并确定检索结果的完整条件(鉴于 memtier_benchmark、操作系统版本等信息有所缺失) 确定 AWS c6gn.16xlarge 实例上可实现的最佳...在两种解决方案中,我们调整了客户端配置以实现最佳结果。如下所示,我们成功重现了大部分 Dragonfly 基准数据,甚至在 30 通道条件下得出了比项目方更高的测试成绩。

    1.4K10

    对幕布的几条改进建议

    我希望幕布可以变得更顺手,获得更多用户的青睐,也帮助更多人提升学习、工作和研究的效能。所以冒昧给开发团队提出以下几点改进建议,不够成熟,谨供参考。...可以看到,什么也搜不出来。 因为文件外部的搜索,只能检索到标题,不能深入到正文内容。 这样一来,散落在不同文件里面的信息,就成了孤岛。难以连接,并发生“化学反应”。...一旦所有内容一次性呈现,听众的注意力很容易就耗散掉了。 幕布虽然自带演示功能,但是也没有实现这种逐步呈现。 ?...的反馈看来,把思维导图快速转换成幻灯的功能,是许多读者的痒点。 ? 他们宁可一次次尝试环境配置,也非常希望能够在本地重现这一功能。...小结 总结一下,针对搜索和导出方向,我为幕布提供了4条参考建议。 期待早日获得开发团队的回复。 辛苦了!谢谢! 讨论 你平时使用大纲工具进行学习、工作和创作吗?

    1.2K20

    DeepMind一键三连,强推「地鼠」语言模型!只要2800亿参数就能刷SOTA

    用户:生活在肠道中的常见细菌种类是什么? Gopher:嗯,我认为是大肠杆菌。 用户:大肠杆菌总是危险的吗? Gopher:并不总是——但在某些情况下,它可能是致病的。这意味着它可以对身体造成伤害。...用户:哪些菌株是危险的? Gopher:最危险的是血清型0157:H7和血清型O111:H。 用户:你能给我一个链接,让我了解更多吗?...比如,「AI的本质是复读机」(内容重复的倾向),非常自信地输出不正确的信息,以及老生常谈的bias问题。 用户:你能自信地告诉我谁赢得了2021年的美国女子公开赛吗? Gopher:当然!...DeepMind提出的分类法可以作为专家和更广泛的公众讨论的基础,以建立一个关于语言模型的伦理和社会考虑的共同概述,做出负责任的决定,并交流处理已确定风险的方法。...众所周知,语言模型会重现有害的社会刻板印象,但对这个问题的研究仍处于早期阶段。

    50330
    领券