model - 对这个(简单的)Optaplanner 用例进行建模的更好方法是什么?
问题描述
我正在建模一个简单的用例,但对于我(仍然)是初学者来说,我最初的想法显然并不容易实现。我的用例...
我想为几项学校活动分配教师(持续时间不同)。教师有不同的工作制度(全职、兼职、每周 1 天……)。每个(模型的)学校活动都必须分配给 1 位老师 - 我将需要 2 位老师的“现实生活”学校活动建模为 2 项学校活动,每个活动需要 1 位老师。考虑到这一点,出于绩效分数计算的原因,我想保留一张教师地图,其中每位教师有一个持续时间(以分钟为单位),其中包含分配给教师的所有活动的总和。但是,我对必须在哪里保留该地图感到困惑:我没有成功更新任何“跨类”阴影变量。该文档并不建议(我称之为)“跨类”
所以我想知道如何建模(或实现,如果要使用影子变量)?我是否最好不要保留这样的地图,而在每次新分数计算时只计算教师分配的所有学校活动持续时间的总和?如果可以在分配另一位老师进行活动时以更简单的(加法/减法)方式计算,这似乎是一种性能浪费。
(如果有必要,我可以添加类的声明)
解决方案
作为 Optaplanner 初学者,我犯了一个错误,我认为其他 Optaplanner 初学者也可以从中学习。我发现了为什么我的影子变量没有更新......
代码本身中的注释本身并不是不正确的。不正确的是,该类的缺失元素演变为包含影子变量<entityClass>
。最初,该类不是a PlanningEntity
(并且未包含在求解器配置的<entityClass>
- 元素列表中)。因此,当它必须包含ShadowVariable
.
因此,在我的求解器配置中,我必须将第二个类添加为额外<entityClass>
元素!
希望其他新手可以从中学习:-)
推荐阅读
- dynamics-crm - 处理更新“修改者”字段的 Dynamics CRM 自定义工作流——需要帮助调试
- html - 为什么下拉列表会从右侧的窗口中消失?
- javascript - 搜索引擎 AND OR NOT () 查询解析器
- nativescript - Nativescript Android 不断崩溃
- c++ - 在我的程序中加载纹理的 Opengl 3.3 问题
- php - 如何使用下拉列表从数据库中获取数据并显示到 php mysql 的输入字段中?
- java - 如何修复:错误:不是封闭类:上下文
- c# - 如何在 TransactionScope 中返回 SqlFileStream 并使用或需要替代解决方案,c#
- python - 为什么我在调用随机整数时会出现值错误?
- javascript - 我可以在不丢失 LI 内容的情况下刷新此页面吗?