Buggy code:
public class UniversityTimeTabling { public static void main ( String [ ] args ) throws Exception { } public boolean enableBenchmarking = false ; public CSVWriter writer = null ; public void startWithParameters ( String [ ] args ) throws Exception { if ( ( args == null ) || ( ( args . length ) < 7 ) ) { UniversityTimeTabling . print ( "Too<seq2seq4repair_space>few<seq2seq4repair_space>arguments<seq2seq4repair_space>--<seq2seq4repair_space>expecting<seq2seq4repair_space>basic.utt<seq2seq4repair_space>courses.utt<seq2seq4repair_space>lecturers.utt<seq2seq4repair_space>rooms.utt<seq2seq4repair_space>curricula.utt<seq2seq4repair_space>relation.utt<seq2seq4repair_space>unavailability.utt<seq2seq4repair_space>300" ) ; System . exit ( 1 ) ; } int timeout = 300 ; if ( ( args . length ) >= 8 ) try { timeout = Integer . parseInt ( args [ 7 ] , 10 ) ; } catch ( NumberFormatException nEx ) { } String basicFile = args [ 0 ] ; String coursesFile = args [ 1 ] ; String lecturersFile = args [ 2 ] ; String roomsFile = args [ 3 ] ; String curriculaFile = args [ 4 ] ; String relationFile = args [ 5 ] ; String unavailabilityFile = args [ 6 ] ; <START_BUG> Heuristic heuristic = new SimulatedAnnealing ( 90.0 , 0.95 ) ; <END_BUG> heuristic . setTimeout ( timeout ) ; UniversityTimeTabling . print ( ( "Using<seq2seq4repair_space>heuristic<seq2seq4repair_space>" + ( heuristic . getClass ( ) . getSimpleName ( ) ) ) ) ; UniversityTimeTabling . print ( ( ( "Running<seq2seq4repair_space>for<seq2seq4repair_space>" + timeout ) + "<seq2seq4repair_space>seconds" ) ) ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>basic<seq2seq4repair_space>info..." ) ; BasicInfo basicInfo = new BasicInfo ( ) ; basicInfo . loadFromFile ( basicFile ) ; heuristic . basicInfo = basicInfo ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>curricula..." ) ; heuristic . curriculum = new Curriculum ( ) ; heuristic . curriculum . loadFromFile ( curriculaFile , relationFile , basicInfo . courses ) ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>lecturers..." ) ; heuristic . lecturers = new Lecturers ( ) ; heuristic . lecturers . loadFromFile ( lecturersFile ) ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>courses..." ) ; heuristic . courses = new Courses ( ) ; heuristic . courses . loadFromFile ( coursesFile , basicInfo . courses ) ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>unavailability..." ) ; heuristic . unavailability = new Unavailability ( ) ; heuristic . unavailability . loadFromFile ( unavailabilityFile , basicInfo . days , basicInfo . periodsPerDay , basicInfo . courses ) ; UniversityTimeTabling . debug ( "Loading<seq2seq4repair_space>rooms..." ) ; heuristic . rooms = new Rooms ( ) ; heuristic . rooms . loadFromFile ( roomsFile , basicInfo . rooms ) ; UniversityTimeTabling . debug ( "Done<seq2seq4repair_space>loading<seq2seq4repair_space>problem<seq2seq4repair_space>definition" ) ; UniversityTimeTabling . debug ( "Generating<seq2seq4repair_space>initial<seq2seq4repair_space>solution..." ) ; Schedule initialSchedule = heuristic . getRandomInitialSolution ( ) ; UniversityTimeTabling . debug ( "Starting<seq2seq4repair_space>search..." ) ; heuristic . deltaState . initialize ( initialSchedule ) ; Schedule solution = heuristic . search ( initialSchedule ) ; int objectiveValue ; UniversityTimeTabling . debug ( "Calculating<seq2seq4repair_space>objective<seq2seq4repair_space>value" ) ; objectiveValue = heuristic . evaluationFunction ( initialSchedule ) ; UniversityTimeTabling . print ( ( ( "Found<seq2seq4repair_space>a<seq2seq4repair_space>solution<seq2seq4repair_space>in<seq2seq4repair_space>" + ( heuristic . iterationCount ) ) + "<seq2seq4repair_space>iterations" ) ) ; UniversityTimeTabling . print ( ( "The<seq2seq4repair_space>value<seq2seq4repair_space>is<seq2seq4repair_space>" + objectiveValue ) ) ; if ( ! ( enableBenchmarking ) ) { UniversityTimeTabling . print ( solution . toString ( ) ) ; } if ( ( enableBenchmarking ) && ( ( writer ) != null ) ) { String [ ] result = new String [ ] { "" + objectiveValue , heuristic . getClass ( ) . getSimpleName ( ) , ( heuristic . iterationCount ) + "" } ; writer . writeNext ( result ) ; } } public static boolean enableDebugOutput = false ; private static void debug ( String message ) { } private static void print ( String message ) { } }

Fix:
Heuristic heuristic = new StochasticTABU ( 10 ) ;