tourstatepicker.java

来自「用于求解TSP(Traveling salesman problem」· Java 代码 · 共 51 行

JAVA
51
字号
/**
 * Description: For two encoded states (A, B), updating A based on the B
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Apr 28, 2006    MAOS-TSP Beta 1.1.002
 *
 * @version 1.0
 */

package maosKernel.behavior.pick;

import Global.methods.*;
import maosKernel.represent.*;

public class TourStatePicker extends AbsStatePicker {
  private boolean isBetter = true;
  private int taoB = 1;
  private IEvaluateEngine evaluateEngine;

  public void init(IEvaluateEngine evaluateEngine, int taoB, boolean isBetter) {
    setTaoB(taoB);
    setDirection(isBetter);
    setEvaluateEngine(evaluateEngine);
  }

  public void setTaoB(int taoB){
    this.taoB = taoB;
  }

  public void setDirection(boolean isBetter){
    this.isBetter = isBetter;
  }

  public void setEvaluateEngine(IEvaluateEngine evaluateEngine){
    this.evaluateEngine = evaluateEngine;
  }

  public EncodedState pickBehavior(StateSet msState) {
    if (evaluateEngine==null) return msState.getRandomPoint();
    int[] indices = RandomGenerator.randomBlindSelection(msState.getLibSize(), taoB);
    if(indices.length==0) return msState.getRandomPoint();
    int currentIndex = indices[0];
    for (int i=1; i<indices.length; i++) {
      if (isBetter==evaluateEngine.evaluate(msState.getSelectedPoint(currentIndex), msState.getSelectedPoint(indices[i]))) {
        currentIndex = indices[i];
      }
    }
    return msState.getSelectedPoint(currentIndex);
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?