⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qkpinstanceloader.java

📁 pso源程序
💻 JAVA
字号:
/**
 * Description: provide the information for the design space
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Apr 6, 2005     xiaofengxie@tsinghua.org.cn
 *
 */

package implement.QKP.infoIO;

import Global.define.*;
import Global.methods.*;
import maosKernel.represent.problem.*;
import maosKernel.infoIO.instance.*;
import implement.QKP.represent.*;

public class QKPInstanceLoader extends AbsFileInstanceLoader {

  public static String writeBillionnetSoutifFormat(RealProblemData problemData) throws Exception {
    String fileContent = "XName"+BasicTag.RETURN_TAG;
    int nodeNumber = problemData.getNodeNumber();
    fileContent += nodeNumber+BasicTag.RETURN_TAG;
    for (int i=0; i<nodeNumber; i++) {
      fileContent += problemData.getLinearValueAt(i) + " ";
    }
    fileContent += BasicTag.RETURN_TAG;
    for (int i=0; i<nodeNumber; i++) {
      for (int j=i+1; j<nodeNumber; j++) {
        fileContent += problemData.getQuadraticValueAt(i)[j] + " ";
      }
      fileContent += BasicTag.RETURN_TAG;
    }
    fileContent += 0+BasicTag.RETURN_TAG;
    fileContent += problemData.getWeightLimit()+BasicTag.RETURN_TAG;
    for (int i=0; i<nodeNumber; i++) {
      fileContent += problemData.getWeightAt(i) + " ";
    }
    fileContent += BasicTag.RETURN_TAG;

    return fileContent;
  }

  public AbsProblemData readBillionnetSoutifFormat(String content) throws Exception {
    String[] lines = GlobalString.getMeaningfulLines(content, "#");

    int nodeNumber = TypeConverter.toInteger(lines[1]);
    RealProblemData problemData = new RealProblemData(nodeNumber);
    problemData.setName(lines[0]);

    String[] lineContents = GlobalString.tokenize(lines[2], BasicTag.NULL_SEPERATE_TAG);
    for (int i=0; i<nodeNumber; i++) {
      problemData.setLinearValueAt(TypeConverter.toInteger(lineContents[i]), i);
    }

    for (int i=0; i<nodeNumber-1; i++) {
      lineContents = GlobalString.tokenize(lines[i+3], BasicTag.NULL_SEPERATE_TAG);
      for (int j=0; j<lineContents.length; j++) {
        problemData.setQuadraticValueAt(TypeConverter.toInteger(lineContents[j]), i, i+j+1);
      }
    }

    problemData.setWeightLimit(TypeConverter.toInteger(lines[nodeNumber+3]));

    lineContents = GlobalString.tokenize(lines[nodeNumber+4], BasicTag.NULL_SEPERATE_TAG);
    for (int i=0; i<nodeNumber; i++) {
      problemData.setWeightAt(TypeConverter.toInteger(lineContents[i]), i);
    }

    return problemData;
  }

  public AbsProblemData readProblem(String content) throws Exception {
    return readBillionnetSoutifFormat(content);
  }
}

⌨️ 快捷键说明

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