升级TimeFold至1.10.0后,guiScoreDirector.getIndictmentMap()返回null求助
升级TimeFold后guiScoreDirector.getIndictmentMap()返回null的解决方法
原因:TimeFold 1.x版本中,ScoreDirector默认不再自动生成IndictmentMap,而OptaPlanner 8.x默认启用该功能,这是导致返回null的核心原因。
解决步骤:
- 配置ScoreDirectorFactory启用IndictmentMap
- 若使用XML配置文件,在
<scoreDirectorFactory>节点下添加启用配置:<scoreDirectorFactory> <!-- 其他原有配置 --> <indictmentMapEnabled>true</indictmentMapEnabled> </scoreDirectorFactory> - 若使用Java代码配置,构建ScoreDirectorFactory时显式开启该功能:
ScoreDirectorFactory<Solution_> scoreDirectorFactory = ScoreDirectorFactory.createFromSolverConfig(solverConfig) .withIndictmentMapEnabled(true) .build();
- 若使用XML配置文件,在
- 确保计算分数后获取IndictmentMap
你的现有代码已调用guiScoreDirector.calculateScore(),启用IndictmentMap后,该方法会同步生成Indictment数据,此时调用getIndictmentMap()即可获取非null的结果。
- 配置ScoreDirectorFactory启用IndictmentMap
内容的提问来源于stack exchange,提问作者I. Ahmed
相关产品推荐
相关产品推荐

