首页 > 解决方案 > 对这个(简单的)Optaplanner 用例进行建模的更好方法是什么?

问题描述

我正在建模一个简单的用例,但对于我(仍然)是初学者来说,我最初的想法显然并不容易实现。我的用例...

我想为几项学校活动分配教师(持续时间不同)。教师有不同的工作制度(全职、兼职、每周 1 天……)。每个(模型的)学校活动都必须分配给 1 位老师 - 我将需要 2 位老师的“现实生活”学校活动建模为 2 项学校活动,每个活动需要 1 位老师。考虑到这一点,出于绩效分数计算的原因,我想保留一张教师地图,其中每位教师有一个持续时间(以分钟为单位),其中包含分配给教师的所有活动的总和。但是,我对必须在哪里保留该地图感到困惑:我没有成功更新任何“跨类”阴影变量。该文档并不建议(我称之为)“跨类”

所以我想知道如何建模(或实现,如果要使用影子变量)?我是否最好不要保留这样的地图,而在每次新分数计算时只计算教师分配的所有学校活动持续时间的总和?如果可以在分配另一位老师进行活动时以更简单的(加法/减法)方式计算,这似乎是一种性能浪费。

(如果有必要,我可以添加类的声明)

标签: modeloptaplanner

解决方案


作为 Optaplanner 初学者,我犯了一个错误,我认为其他 Optaplanner 初学者也可以从中学习。我发现了为什么我的影子变量没有更新......

代码本身中的注释本身并不是不正确的。正确的是,该类的缺失元素演变为包含影子变量<entityClass>最初,该类不是a PlanningEntity(并且未包含在求解器配置的<entityClass>- 元素列表中)。因此,它必须包含ShadowVariable.

因此,在我的求解器配置中,我必须将第二个类添加为额外<entityClass>元素!

希望其他新手可以从中学习:-)


推荐阅读