有时,如果我将构建阶段的“已用秒数”和“未改进的已用秒数”终止设置设置的时间太短,我最终会得到一些未初始化所有计划变量的计划实体。这导致我的搜索阶段抛出有关未初始化的计划变量 ( Local Search phase (1) needs to start from an initialized solution...) 的异常。这似乎(部分)违背了构建阶段的目的。我觉得我在某处遗漏了一个警告?也许我过度配置了我的构建阶段?这是我的构建阶段的配置代码。我使用 Java 来配置我的求解器而不是 XML。TerminationConfig terminationConfig = new TerminationConfig();ConstructionHeuristicPhaseConfig phaseConfig = new ConstructionHeuristicPhaseConfig();terminationConfig.setSecondsSpentLimit(60L);terminationConfig.setUnimprovedSecondsSpentLimit(30L);terminationConfig.setBestScoreLimit("0hard/0medium/0soft");phaseConfig.setConstructionHeuristicType(ConstructionHeuristicType.FIRST_FIT);phaseConfig.setTerminationConfig(terminationConfig);phaseConfigs.add(phaseConfig);有人能指出我正确的方向吗?是否有“正确”的方法来保证所有规划实体的所有规划变量将在构建阶段结束时初始化?
1 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
如果您想运行 LS,在 CH 完成之前终止 CH 是没有意义的。让它完成并在<localSearch>
而不是<solver>
(API 也支持这一点,当然)上放置一个终止,以避免它过早完成。
有很多方法可以使 CH 运行得更快,请参阅文档。
另外,每个终端结合有AND
一个的<bestScoreFeasible>true</>
终止(=只能当一个可行的办法是找到终止),还可以做你想做什么,我相信,即使是作为一个全球性<solver>
的终止。
添加回答
举报
0/150
提交
取消