📄 qkpinstanceloader.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 + -