File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require 'alns/stop/base'
4+
5+ module ALNS
6+ module Stop
7+ class NoImprovement < Base
8+ def initialize ( max_iterations )
9+ super ( )
10+ @max_iterations = max_iterations
11+ @target = nil
12+ @counter = 0
13+ end
14+
15+ def done? ( _rnd , best , _current )
16+ if @target . nil? || best . objective < @target
17+ @target = best . objective
18+ @counter = 0
19+ else
20+ @counter += 1
21+ end
22+ @counter >= @max_iterations
23+ end
24+ end
25+ end
26+ end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require_relative '../test_helper'
4+ require_relative '../models'
5+ require 'minitest/autorun'
6+ require 'alns/stop/no_improvement'
7+
8+ class NoImprovementTest < Minitest ::Test
9+ def test_done?
10+ stop = ALNS ::Stop ::NoImprovement . new ( 2 )
11+
12+ assert !stop . done? ( nil , FakeState . new ( 2 ) , nil )
13+ assert !stop . done? ( nil , FakeState . new ( 2 ) , nil )
14+ assert !stop . done? ( nil , FakeState . new ( 1 ) , nil )
15+ assert !stop . done? ( nil , FakeState . new ( 1 ) , nil )
16+ assert stop . done? ( nil , FakeState . new ( 1 ) , nil )
17+ end
18+ end
You can’t perform that action at this time.
0 commit comments