We then create a goal to scan the neighborhood. Information on the neighbor being scanned is stored in nid.
  IloNeighborIdentifier nid(env);
  IloGoal scan = IloScanNHood(env, nh, nid, soln);
  | 
The simulated annealing metaheuristic, like others supplied with Solver, operates by filtering the possible allowable neighbors generated by a goal that explores a neighborhood. For instance, the simulated annealing metaheuristic filters all neighbors for which 
, where r is a random number in [0..1) and d is the degradation in cost of the proposed neighbor (both minimization and maximization are supported). A function, IloApplyMetaHeuristic, takes a neighborhood exploration goal and applies the filtering. We write:
  IloGoal scanSA = IloApplyMetaHeuristic(env, soln, simAnn, scan);
  |