如何在Optaplanner中应用多线程功能

时间:2019-06-24 10:43:28

标签: optaplanner

我想在optaplaner中使用多线程功能。

我编辑了cloudBalancingSolverConfig.xml 并设置多线程计数4

但是我认为它不起作用。 所有线程名称都相同。

19:37:12.980 [l-4-thread-1]调试通道步骤(1533),花费的时间(5839),得分(-3266init / 0hard / -909220soft),选定的移动次数(1276),选择的移动(CloudProcess-1262 {null-> CloudComputer-1112})。 19:37:12.982 [l-4-thread-1]调试通道步骤(1534),花费的时间(5841),得分(-3265init / 0hard / -909710soft),选定的移动计数(1600),选择的移动(CloudProcess- 1053 {null-> CloudComputer-908}。 19:37:12.984 [l-4-thread-1]调试通道步骤(1535),花费的时间(5843),得分(-3264init / 0hard / -909710soft),选择的移动计数(1277),选择的移动(CloudProcess- 1049 {null-> CloudComputer-1138}。 19:37:12.987 [l-4-thread-1]调试通道步骤(1536),花费的时间(5846),得分(-3263init / 0hard / -912110soft),选定的移动计数(1600),选择的移动(CloudProcess- 1003 {null-> CloudComputer-1231})。 19:37:12.990 [l-4-thread-1]调试通道步骤(1537),花费的时间(5849),得分(-3262init / 0hard / -912110soft),选定的移动计数(1278),选择的移动(CloudProcess- 941 {null-> CloudComputer-1231})。 19:37:12.992 [l-4-thread-1]调试通道步骤(1538),花费的时间(5851),得分(-3261init / 0hard / -912110soft),选定的移动计数(1278),选择的移动(CloudProcess- 893 {null-> CloudComputer-1231})。 19:37:12.994 [l-4-thread-1]调试通道步骤(1539),花费的时间(5853),得分(-3260init / 0hard / -914510soft),选定的移动计数(1600),选择的移动(CloudProcess- 840 {null-> CloudComputer-1286})。 19:37:12.996 [l-4-thread-1]调试通道步骤(1540),花费的时间(5855),得分(-3259init / 0hard / -916910soft),选定的移动计数(1600),选择的移动(CloudProcess- 820 {null-> CloudComputer-1311})。 19:37:12.998 [l-4-thread-1]调试通道步骤(1541),花费的时间(5857),得分(-3258init / 0hard / -916910soft),选定的移动计数(1278),选择的移动(CloudProcess- 779 {null-> CloudComputer-1231})。 19:37:13.000 [l-4-thread-1]调试通道步骤(1542),花费的时间(5859),得分(-3257init / 0hard / -916910soft),选定的移动计数(1279),选择的移动(CloudProcess- 768 {null-> CloudComputer-1286})。 19:37:13.003 [l-4-thread-1]调试通道步骤(1543),花费的时间(5862),得分(-3256init / 0hard / -917470soft),选定的移动计数(1600),选择的移动(CloudProcess- 739 {null-> CloudComputer-750})。 19:37:13.005 [l-4-thread-1]调试通道步骤(1544),花费的时间(5864),得分(-3255init / 0hard / -917470soft),选择的移动计数(1278),选择的移动(CloudProcess- 728 {null-> CloudComputer-1231})。 19:37:13.007 [l-4-thread-1]调试通道步骤(1545),花费的时间(5866),得分(-3254init / 0hard / -917470soft),选定的移动计数(1278),选择的移动(CloudProcess- 671 {null-> CloudComputer-1231})。 19:37:13.009 [l-4-thread-1]调试通道步骤(1546),花费的时间(5868),得分(-3253init / 0hard / -917470soft),选定的移动计数(1279),选择的移动(CloudProcess- 615 {null-> CloudComputer-1286})。

我检查了cloudChangeMove,canvasSwapMove中的重新实现。 已经像下面这样实现了。

@Override
public CloudComputerChangeMove rebase(ScoreDirector<CloudBalance> destinationScoreDirector) {
    return new CloudComputerChangeMove(destinationScoreDirector.lookUpWorkingObject(cloudProcess),
            destinationScoreDirector.lookUpWorkingObject(toCloudComputer));
}

我忘记了什么吗? optaplaner的版本是7.23。

但与以前的版本(7.22)相同

请让我知道我的问题。

1 个答案:

答案 0 :(得分:0)

打开TRACE日志记录。这些步骤由求解器线程完成,移动评估(仅在跟踪日志记录中可见)由移动线程完成。