@@ -268,25 +268,10 @@ void negativeLateAcceptanceSize() {
268268 assertThatIllegalArgumentException ().isThrownBy (() -> acceptor .phaseStarted (null ));
269269 }
270270
271- @ Test
272- void triggerRestart () {
273- var stuckCriterion = mock (StuckCriterion .class );
274- when (stuckCriterion .isSolverStuck (any ())).thenReturn (true );
275- var acceptor = new LateAcceptanceAcceptor <>(stuckCriterion );
276- acceptor .setLateAcceptanceSize (3 );
277- var solverScope = new SolverScope <>();
278- var phaseScope = new LocalSearchPhaseScope <>(solverScope , 0 );
279- var stepScope0 = new LocalSearchStepScope <>(phaseScope );
280- var moveScope0 = buildMoveScope (stepScope0 , -2000 );
281- assertThat (acceptor .isAccepted (moveScope0 )).isTrue ();
282- assertThat (phaseScope .isSolverStuck ()).isTrue ();
283- }
284-
285271 @ Test
286272 void delayRestart () {
287273 var stuckCriterion = mock (StuckCriterion .class );
288274 var acceptor = new LateAcceptanceAcceptor <>(stuckCriterion );
289- var restartStrategy = new AcceptorRestartStrategy (acceptor );
290275 acceptor .setLateAcceptanceSize (5 );
291276 var solverScope = new SolverScope <>();
292277 var phaseScope = new LocalSearchPhaseScope <>(solverScope , 0 );
@@ -295,65 +280,69 @@ void delayRestart() {
295280 var moveScope0 = buildMoveScope (stepScope0 , -3000 );
296281 phaseScope .setLastCompletedStepScope (stepScope0 );
297282 solverScope .setBestScore (SimpleScore .of (-1000 ));
283+ when (stuckCriterion .isSolverStuck (any ())).thenReturn (true );
284+
285+ // Init
298286 acceptor .solvingStarted (solverScope );
299287 acceptor .phaseStarted (phaseScope );
300288 acceptor .stepStarted (stepScope0 );
301289 assertThat (acceptor .isAccepted (moveScope0 )).isFalse ();
302290
303- // Delay because there aren't enough top scores in the queue
304- assertThat (acceptor .bestScoreQueue .size ()).isOne ();
305- restartStrategy .applyRestart (stepScope0 );
306- assertThat (acceptor .coefficient ).isZero ();
307-
308- // Delay because the diversity is still high on the first event
291+ // Delay because the diversity is still high
309292 acceptor .bestScoreQueue .addLast (SimpleScore .of (-999 ));
310293 acceptor .bestScoreQueue .addLast (SimpleScore .of (-998 ));
311294 acceptor .previousScores [0 ] = SimpleScore .of (-1002 );
312295 acceptor .previousScores [1 ] = SimpleScore .of (-1001 );
313296 acceptor .previousScores [2 ] = SimpleScore .of (-1000 );
314297 acceptor .previousScores [3 ] = SimpleScore .of (-999 );
315298 acceptor .previousScores [4 ] = SimpleScore .of (-998 );
316- restartStrategy .applyRestart (stepScope0 );
317- assertThat (acceptor .coefficient ).isZero ();
299+ // Check the restart event
300+ acceptor .stepEnded (stepScope0 );
301+ assertThat (phaseScope .isSolverStuck ()).isFalse ();
302+
303+ // Delay because the best score has no improvement
304+ acceptor .previousScores [0 ] = SimpleScore .of (-1001 );
305+ acceptor .previousScores [1 ] = SimpleScore .of (-1001 );
306+ acceptor .previousScores [2 ] = SimpleScore .of (-1001 );
307+ acceptor .previousScores [3 ] = SimpleScore .of (-1001 );
308+ acceptor .previousScores [4 ] = SimpleScore .of (-1001 );
309+ acceptor .bestScoreQueue .clear ();
310+ acceptor .bestScoreQueue .addLast (SimpleScore .of (-999 ));
311+ acceptor .stepEnded (stepScope0 );
312+ assertThat (phaseScope .isSolverStuck ()).isFalse ();
318313 }
319314
320315 @ Test
321- void delayOnlyFirstRestart () {
316+ void restart () {
322317 var stuckCriterion = mock (StuckCriterion .class );
323318 var acceptor = new LateAcceptanceAcceptor <>(stuckCriterion );
324- var restartStrategy = new AcceptorRestartStrategy (acceptor );
325319 acceptor .setLateAcceptanceSize (5 );
326320 var solverScope = new SolverScope <>();
327321 var phaseScope = new LocalSearchPhaseScope <>(solverScope , 0 );
328322 var stepScope0 = new LocalSearchStepScope <>(phaseScope );
329323 stepScope0 .setScore (SimpleScore .of (-1000 ));
330- var moveScope0 = buildMoveScope (stepScope0 , -3000 );
331324 phaseScope .setLastCompletedStepScope (stepScope0 );
332325 solverScope .setBestScore (SimpleScore .of (-1000 ));
326+ when (stuckCriterion .isSolverStuck (any ())).thenReturn (true );
327+
328+ // Init
333329 acceptor .solvingStarted (solverScope );
334330 acceptor .phaseStarted (phaseScope );
335331 acceptor .stepStarted (stepScope0 );
336- assertThat (acceptor .isAccepted (moveScope0 )).isFalse ();
337332
338- // Delay because the diversity is still high on the first event
339- acceptor .bestScoreQueue .addLast (SimpleScore .of (-999 ));
340- acceptor .bestScoreQueue .addLast (SimpleScore .of (-998 ));
341- acceptor .previousScores [0 ] = SimpleScore .of (-1002 );
333+ // Trigger the restart event as the diversity dropped
334+ // no diversity
335+ acceptor .previousScores [0 ] = SimpleScore .of (-1001 );
342336 acceptor .previousScores [1 ] = SimpleScore .of (-1001 );
343- acceptor .previousScores [2 ] = SimpleScore .of (-1000 );
344- acceptor .previousScores [3 ] = SimpleScore .of (-999 );
345- acceptor .previousScores [4 ] = SimpleScore .of (-998 );
346- restartStrategy .applyRestart (stepScope0 );
347- assertThat (acceptor .coefficient ).isZero ();
337+ acceptor .previousScores [2 ] = SimpleScore .of (-1001 );
338+ acceptor .previousScores [3 ] = SimpleScore .of (-1001 );
339+ acceptor .previousScores [4 ] = SimpleScore .of (-1001 );
340+ // more than one best score
341+ acceptor .bestScoreQueue .addLast (SimpleScore .of (-1001 ));
342+ acceptor .bestScoreQueue .addLast (SimpleScore .of (-1002 ));
348343
349- // Trigger the restart event as the diversity dropped
350- acceptor .previousScores [0 ] = SimpleScore .of (-1002 );
351- acceptor .previousScores [1 ] = SimpleScore .of (-1002 );
352- acceptor .previousScores [2 ] = SimpleScore .of (-1002 );
353- acceptor .previousScores [3 ] = SimpleScore .of (-1002 );
354- acceptor .previousScores [4 ] = SimpleScore .of (-1002 );
355- restartStrategy .applyRestart (stepScope0 );
356- assertThat (acceptor .coefficient ).isOne ();
344+ acceptor .stepEnded (stepScope0 );
345+ assertThat (phaseScope .isSolverStuck ()).isTrue ();
357346 }
358347
359348 @ Test
0 commit comments