Jmetal Problem和Problem Set的变量范围
ProblemSet的变量范围
double unilw= problemSet.getUnifiedLowerLimit();
double uniup=problemSet.getUnifiedUpperLimit();
System.out.println("unilw "+unilw+" "+"uniup "+uniup);
可以看出ProblemSet的变量范围是下限0,上限1
这是因为在ProblemSet的类定义中默认下限0,上限1
public ProblemSet() {
problemsList_ = new ArrayList<Problem>();
accObjsList_ = new ArrayList<Integer>();
maxDim_ = 0;
solutionType_ = new RealSolutionType(this);
unifiedLowerLimit_ = 0;
unifiedUpperLimit_ = 1;
}
或者是人为的进行初始化
public ProblemSet(int maximumSize, double low, double up) {
problemsList_ = new ArrayList<Problem>();
accObjsList_ = new ArrayList<Integer>();
capacity_ = maximumSize;
maxDim_ = 0;
solutionType_ = new RealSolutionType(this);
unifiedLowerLimit_ = low;
unifiedUpperLimit_ = up;
}
或者是单独使用set函数进行设置
public void setUnifiedLowerLimit(double low) {
unifiedLowerLimit_ = low;
}
public void setUnifiedUpperLimit(double up) {
unifiedUpperLimit_ = up;
}
Problem的变量范围由各个不同维度的范围组成,即一个问题的范围不是一个共同的值,不同维度的范围是不同的
- 例如对于MATP1问题的第1个问题而言,其中变量的范围第一维是在0-1之间,而其后的49维变量范围为-100~100
double prolw0 = problemSet.get(0).getLowerLimit(0);
double proup0 = problemSet.get(0).getUpperLimit(0);
double prolw1 = problemSet.get(0).getLowerLimit(1);
double proup1 = problemSet.get(0).getUpperLimit(1);
System.out.println("prolw0 " + prolw0 + " " + "proup0 " + proup0+"prolw1 " + prolw1 + " " + "proup1 " + proup1);