aiproblemiohandler.java

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

JAVA
60
字号
/**
* Description: provide IOHandler for writing/reading solution in
 *  integer array
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Apr 6, 2005     xiaofengxie@tsinghua.org.cn
 */

package implement.common.infoIO;

import Global.define.*;
import Global.math.*;
import Global.methods.*;
import maosKernel.represent.*;
import maosKernel.infoIO.*;

public abstract class AIProblemIOHandler extends AbsProblemIOHandler {

  public String writeSolution(EncodedState state) throws Exception {
    String colStr = "";
    int[] solution = state.getSearchState().getIArray();
    for (int i=0; i<solution.length; i++) {
      colStr += solution[i]+BasicTag.RETURN_TAG;
    }
    return colStr;
  }

  protected void naiveReadSolution(EncodedState state, String content) throws Exception {
    String[] lines = GlobalString.getMeaningfulLines(content);
    int[] solution = state.getSearchState().getIArray();
    int index = 0;
    for (int i=0; i<lines.length; i++) {
      String[] lineContents = GlobalString.tokenize(lines[i], BasicTag.NULL_SEPERATE_TAG);
      for (int j=0; j<lineContents.length; j++) {
        solution[index] = Integer.parseInt(lineContents[j]);
        index++;
        if (index>=solution.length) {
          return;
        }
      }
    }
  }

  public void readSolution(EncodedState state, String content) throws Exception {
    super.readSolution(state, content);
    removeBias(state.getSearchState().getIArray());
  }

  private void removeBias(int[] sol) {
    //remove bias value
    int biasV = ArrayMath.getExtermal(sol, false);
    if (biasV!=0) {
      for (int i=0; i<sol.length; i++) {
        sol[i] -= biasV;
      }
    }
  }
}

⌨️ 快捷键说明

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