Java 构造启发式使2个变量未初始化

Java 构造启发式使2个变量未初始化,java,solver,optaplanner,heuristics,uninitialized-constant,Java,Solver,Optaplanner,Heuristics,Uninitialized Constant,我正在使用时间颗粒图案创建解算器。它类似于会议安排。它确实实现了不可移动的实体,以支持用户的固定计划。 开始求解时,构造启发式结束,初始分数为-2。终止标准为30秒。在此之后,解决方案在没有适当解决方案的情况下终止,如下面的日志所示 我哪里做错了 19:23:25.587[main]INFO o.o.core.impl.solver.DefaultSolver-开始求解:花费的时间(22)、最佳分数(-4init/0hard/0soft)、环境模式(可复制)、随机(种子为0的JDK)。 19:2

我正在使用时间颗粒图案创建解算器。它类似于会议安排。它确实实现了不可移动的实体,以支持用户的固定计划。
开始求解时,构造启发式结束,初始分数为-2。终止标准为30秒。在此之后,解决方案在没有适当解决方案的情况下终止,如下面的日志所示

我哪里做错了

19:23:25.587[main]INFO o.o.core.impl.solver.DefaultSolver-开始求解:花费的时间(22)、最佳分数(-4init/0hard/0soft)、环境模式(可复制)、随机(种子为0的JDK)。
19:23:25.613[main]调试o.o.c.i.c.DefaultConstructionHeuristicPhase-CH步骤(0),花费的时间(50),分数(-3init/15226532800Hard/12soft),选择的移动计数(96),选择的移动(com.atomiton.vopak.activities)。Activity@762ef0ea{null->TimeGrain-95[152418060000]}。
19:23:25.620[main]调试o.o.c.i.c.DefaultConstructionHeuristicPhase-CH步骤(1),花费的时间(57),分数(-2单位/304531309800Hard/24soft),选择的移动计数(96),选择的移动(com.atomiton.vopak.activities)。Activity@31f9b85e{null->TimeGrain-95[152418060000]}。
19:23:25.621[main]信息o.o.c.i.c.DefaultConstructionHeuristicPhase-构造启发阶段(0)结束:花费的时间(58),最佳分数(-2单位/304531309800Hard/24soft),分数计算速度(6655/秒),总步长(2)。
19:23:55.563[main]调试o.o.c.i.l.DefaultLocalSearchPhase-LS步骤(0),花费的时间(30000),分数(-2分/3045311298000hard/24soft),最佳分数(-2分/304531309800Hard/24soft),接受/选择的移动计数(0/6961207),选择的移动(com.atomiton.vopak.activities)。Activity@76ed1b7c{TimeGrain-95[152418060000]->TimeGrain-94[1524178800000]}).
19:23:55.563[主]信息o.o.c.i.l.DefaultLocalSearchPhase-本地搜索阶段(1)结束:花费的时间(30000),最佳分数(-2单位/304531309800Hard/24soft),分数计算速度(232497/秒),步骤总数(1)。
19:23:55.564[主]信息o.o.core.impl.solver.DefaultSolver-解决结束:花费的时间(30001),最佳分数(-2单位/304531309800Hard/24soft),分数计算速度(232038/秒),阶段总数(2),环境模式(可复制)。

两个步骤,因此只有两个实体是可移动的。其余的实体必须是不可移动的,包括导致
-2nit

注:硬分数有问题。要么溢出(使用长分数变体),要么约束符号错误

CH step (1), time spent (57), score (-2init/3045313098000hard/24soft),
    selected move count (96),
    picked move (...Activity@31f9b85e {null -> TimeGrain - 95 [1524180600000]})

选择的移动似乎是一个简单的
ChangeMove
,因此只有一个计划变量。

从日志输出中删除类名,这样缩进就可以了感谢Geoffery。我已经在使用长分数变量。将检查符号。但是为什么LS会等待30秒(我的终止标准)然后只移动两步并结束?延迟接受(默认算法)将陷入全局或局部最优。这只发生在非常小的数据集上。打开跟踪日志记录以查看实际情况。打开跟踪日志记录并在编程时遇到最常见的陷阱。比较毫秒和秒!Java DateTime API确实需要一些改进。感谢@Geo的帮助弗里。
CH step (1), time spent (57), score (-2init/3045313098000hard/24soft),
    selected move count (96),
    picked move (...Activity@31f9b85e {null -> TimeGrain - 95 [1524180600000]})