实现不完全规划的方法有(实现不完全规划的方法是)
本文主要介绍实现不完全计划的方法有(实现不完全计划的方法是),下面一起看看实现不完全计划的方法有(实现不完全计划的方法是)相关资讯。
在各种常见的规划场景中,我们经常会遇到规划不完整的情况。即正常情况下,完成一次规划操作后(即使在ch阶段的操作中),optaplanner 的规划实体(规划实体)必须非空,即必须给它一个在规划变量值范围内的值。即使违反了更多的约束,也必须实现赋值。
比如在cloudbalance的例子中,如果一个数据集中有足够多的进程(cloudprocess对象),那么通过启用所有计算机的内存来加载所有的进程是不可能的。此时,引擎仍然会将一些进程强制放入一些内存不足的计算机中,从而打破内存约束(硬约束)。但是在我们的实际场景中,面对这种情况,我们不 我不想输出违反硬约束的结果;因为在这样的业务场景下,违反硬约束的结果已经是典型的不可行解。我们希望引擎能够更加机智灵活地识别这个实际场景中无意义的方案,从而找到一个不会过度分配资源的方案。
这种方案在optaplanner中称为过约束规划,对这种资源过度利用的处理可以归结为资源的过度分配。以下用户手册章节对两种方法进行了描述: www . opta planner . org/docs/opta planner/latest/repeated-planning/repeated-planning . html # over constrained planning。
从文章中可以看出,optaplanner没有现成的方法或函数来实现这个功能。但是通过其中的一些特性,我们还是可以通过简单的方法巧妙地实现。目前,避免资源过度利用的方法主要有两种,即 允许计划变量为空和 为规划变量的范围提供一些虚拟值。
允许计划变量为空是正常的。对于一个规划问题,可能的解决方案是所有规划实体(以下简称规划实体)的所有规划变量都已完成赋值。在规划的ch阶段,实现了各规划变量的赋值。通过将可空属性添加到已定义的规划变量并设置其属性值设置为true以允许规划变量在规则过程中保留空值。以下代码:
@ planning variable(nullable = true)public getcloudcomputer { return cloud computer;}通过该属性设置,在规划过程中,规划变量不仅会从规划变异的范围内得到可能的值生成方案,而且值的范围内还会出现空值。在这种情况下,没有必要在范围列表中添加空值,程序会自动考虑空值。
细心的同学一定会想,如果规划变量可以为空,那么得到的方案中所有的规划变量都为空。毕竟空值也是规划变量的范围,符合约束条件。但是在实际的业务场景中,空值通常对我们没有业务意义;只是让方案不过度分配资源(在资源分配的规划场景中),不是我们的最终目的。一般来说,我们最终的规划目标是在保证资源最大利用率的同时,找出不超过最大可用资源的方案。从输入方案来看,我们只是想找出所有的规划变量都尽可能的有值,如果分配的规划变量超出了可用范围,就用null值代替。因此,我们会想到添加一个与业务无关的约束来实现上述意图。这个约束通常是一个中间约束(如果一个 硬-中-软 使用约束结构)。当然,只要使用一层以上的约束,就可以人为地设计一个介于硬约束和软约束之间的约束来达到 尽可能少的计划变量被赋予空值。
提供一个 环球 规划变量的虚拟值为了防止资源被过度使用,除了上述将规划变量设置为空的方法外,还可以为规划变量的取值范围设置一个无穷大的虚拟值。在资源规划场景中,可以理解为建立一个虚拟资源,该虚拟资源具有无限的资源量。用于承担超过正常资源可用数量的分配。或者以cloudbalancing(本文仅以本例的内存限制作为唯一分配条件)为例,我们可以在可用计算机列表中添加一台内存无限大的计算机。目的是当可用的计算机 的记忆可以 如果不能放在所有的进程中,多余的进程可以放在这个具有无限内存的虚拟计算机中。这种情况与上述计划变量设置为空的情况相同。如果不做额外的限制,有可能得到一个计算结果,所有的进程都被分配给这个虚拟计算机。所以需要增加一个额外的中间约束,目的是保证在启用这个虚拟计算机之前,尽可能多的使用所有的真实计算机。
以上是在日常与网友的交流中。经常有人提出,如果任务的资源需求大于可用资源,希望引擎能满足任务的需求,尽可能多的分配。所有资源,但希望避免完全超出资源能力的分配方案。事实上,这种情况在调度和vrp等场景中很常见。当你遇到这种场景时,可以考虑以上两种处理。
该系列文章在官方账号不定期连载。请关注官方账号(搜索 使aps成为可能 或者扫描下方二维码)及时领取。二维码:
如果你想了解更多关于optaplanner的应用,请发邮件给kentbill@gmail.com或在讨论组发表你的看法:#!.论坛/optaplanner-cn如有需要可以加我的(13631823503)或(12977379)进行实时交流,但由于常工作繁忙,可能无法通过、等工具进行深入交流。对于更复杂的问题,我建议通过邮件或讨论组提出。(讨论组属于google邮件列表,国内网络可能难以接入,需要自行解决。)
标签:
可变资源
了解更多实现不完全计划的方法有(实现不完全计划的方法是)相关内容请关注本站点。