如何保证构建阶段初始化所有实体的规划变量?
How to Guarantee that Construction Phase Initializes All Entities' Planning Variables?
有时,如果我将构建阶段的 "Seconds Spent" 和 "Unimproved Seconds Spent" 终止设置设置的时间太短,我最终会得到一些规划实体,它们没有全部计划变量已初始化。这导致我的搜索阶段抛出有关未初始化的计划变量的异常 (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);
谁能指出我正确的方向?有没有一种"correct"方法来保证所有规划实体的所有规划变量都将在构建阶段结束时初始化?
如果您想 运行 LS,则在完成之前终止 CH 是没有意义的。
让它完成并在 <localSearch>
而不是 <solver>
上放置一个终止(当然 API 也支持这一点),以避免它过早完成。
虽然有很多方法可以使 CH 运行得更快,请参阅文档。
或者,将每个终止与 <bestScoreFeasible>true</>
终止的 AND
结合(=它只能在找到可行的解决方案时终止)我相信也可以做你想做的事,即使作为全局 <solver>
终止。
有时,如果我将构建阶段的 "Seconds Spent" 和 "Unimproved Seconds Spent" 终止设置设置的时间太短,我最终会得到一些规划实体,它们没有全部计划变量已初始化。这导致我的搜索阶段抛出有关未初始化的计划变量的异常 (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);
谁能指出我正确的方向?有没有一种"correct"方法来保证所有规划实体的所有规划变量都将在构建阶段结束时初始化?
如果您想 运行 LS,则在完成之前终止 CH 是没有意义的。
让它完成并在 <localSearch>
而不是 <solver>
上放置一个终止(当然 API 也支持这一点),以避免它过早完成。
虽然有很多方法可以使 CH 运行得更快,请参阅文档。
或者,将每个终止与 <bestScoreFeasible>true</>
终止的 AND
结合(=它只能在找到可行的解决方案时终止)我相信也可以做你想做的事,即使作为全局 <solver>
终止。