私はNSGAiiアルゴリズムを最終年度プロジェクトに実装する作業をしています。アルゴリズムの一部は、考えられるすべてのソリューションを最前線に分類することです。つまり、優勢なソリューションと優勢でないソリューションです。
支配集合を取得するのに問題があります。
その瞬間、ネストされた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);
}
}