0

私は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);

    }
}
4

1 に答える 1

0

私はあなたの質問が本当に何であるかを本当に理解していません。しかし、要約すると:

  1. ab保持する場合に限り、支配するのは悲しいことa.SoftConstraints<=b.SoftConstraints || a.hardConstraints<=b.hardConstraintsです。
  2. a同じ支配的な最前線にいるのba.SoftConstraints==b.SoftConstraints || a.hardConstraints==b.hardConstraints悲しい
  3. それ以外の場合bは支配的a

これに基づいて、Comparatorを定義して、ソートされていないセットの順序付きリストを作成できます。次に、その並べ替えられたリストを反復処理できます。内側のループは、外側のループが既に進んでいるサブリストの繰り返しです(または、外側のループがすでに進んでいる場所からのソート順によって異なります)。その内側のループの反復ごとに、アクションを実行する必要があります。

于 2013-01-13T13:39:21.677 に答える