0
我正在将NSGA ii算法实施到我的Final Year项目中。部分算法将所有可能的解决方案分为前沿,即占主导地位的解决方案和未命名的解决方案ArrayList中的元素对同一列表中的元素排序
我在获得支配组时遇到问题。
在一分钟我使用嵌套for循环,从未排序列表中的第一个元素,检查列表中的每个项目。如果元素是未命名的,则意味着它的软约束或硬约束小于被检查的元素,或者两者都小于。我的想法是说如果这不是真正的脱离嵌套循环并转到第一个循环。如果它通过整个列表而不被支配,则会检查它是否已经被检查过,如果它已经被指定了。我希望这是有道理的!
只是寻求帮助的任何一点开始下载,感谢:-)
基本上把所有我想要做的是检查的条件和做的东西,如果条件吃了嵌套循环内的
满足public void sortIntoFronts(ArrayList<Chromosome> c)
{
ArrayList<Chromosome> UnsortedSet = new ArrayList<Chromosome>();
ArrayList<Chromosome> UndominatedSet = new ArrayList<Chromosome>();
ArrayList<Chromosome> DominatedSet = new ArrayList<Chromosome>();
UnsortedSet = c;
Chromosome a = new Chromosome();
Chromosome b = new Chromosome();
for (int x = 0; x<=UnsortedSet.size()-1; x++)
{
a=UnsortedSet.get(x);
for(int y = 0; y<=UnsortedSet.size()-1;)
{
b=UnsortedSet.get(y);
if(a.SoftConstraints<=b.SoftConstraints || a.hardConstraints<=b.hardConstraints)
{
y++;
} else
{
break;
}
if(y==UnsortedSet.size()-1)
{
UndominatedSet.add(a);
}
}
}
}
基本上把所有我想要做的是检查的条件和做的东西,如果条件吃了嵌套循环内得到满足,使用此代码some1能帮我
for (int x = 0; x<=UnsortedSet.size()-1; x++)
{
a=UnsortedSet.get(x);
for(int y = 0; y<=UnsortedSet.size()-1;y++)
{
b=UnsortedSet.get(y);
}
}
您应该尝试遵循Java代码的Java编码约定。 – adarshr