Package com.niacin.metaheuristic.hillclimbing

Source Code of com.niacin.metaheuristic.hillclimbing.NeighbourhoodGenerator

package com.niacin.metaheuristic.hillclimbing;

import java.util.ArrayList;

import com.niacin.input.Solution;
import com.niacin.input.Variable;

public class NeighbourhoodGenerator
{
  private enum Direction
  {
    increase, decrease
  };

  public static ArrayList<Solution> generateNeighbours(Solution s)
  {
    ArrayList<Solution> neighbours = new ArrayList<Solution>();
    for (int i = 0; i < s.size(); i++)
    {
      Solution si = makeMove(s, Direction.increase, i);
      if (si != null)
        neighbours.add(si);
      Solution sd = makeMove(s, Direction.decrease, i);
      if (si != null)
        neighbours.add(sd);
    }
    return neighbours;
  }

  private static Solution makeMove(Solution original, Direction dir, int varNum)
  {
    Solution sol = (Solution) original.clone();
    sol.setEvaluated(false);
    Variable<?> v = sol.get(varNum);
    Variable<?> changed = null;
    switch (dir)
    {
      case increase :
        changed = v.increase();
        break;
      case decrease :
        changed = v.decrease();
        break;
    }
    if (changed != null)
    {
      sol.set(varNum, v.increase());
      return sol;
    }
    else
      return null;
  }
}
TOP

Related Classes of com.niacin.metaheuristic.hillclimbing.NeighbourhoodGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.