如何保证建设阶段初始化所有实体的规划变量?

有时,如果我将构建阶段的“已用秒数”和“未改进的已用秒数”终止设置设置的时间太短,我最终会得到一些未初始化所有计划变量的计划实体。这导致我的搜索阶段抛出有关未初始化的计划变量 ( 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);

有人能指出我正确的方向吗?是否有“正确”的方法来保证所有规划实体的所有规划变量将在构建阶段结束时初始化?


湖上湖
浏览 128回答 1
1回答

噜噜哒

如果您想运行 LS,在 CH 完成之前终止 CH 是没有意义的。让它完成并在<localSearch>而不是<solver>(API 也支持这一点,当然)上放置一个终止,以避免它过早完成。有很多方法可以使 CH 运行得更快,请参阅文档。另外,每个终端结合有AND一个的<bestScoreFeasible>true</>终止(=只能当一个可行的办法是找到终止),还可以做你想做什么,我相信,即使是作为一个全球性<solver>的终止。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java