так як він не є парето-оптимальним. Потім перейти до Кроку 4. p> Крок 4. Перевірити виконання нерівності j Крок 5. Перевірити справедливість нерівності. У тому випадку, коли воно є істинним, перейти до Кроку 6. В іншому випадку - повернутися до Кроку 4. p> Крок 6. Видалити з поточного безлічі векторів P (Y) вектор і перейти до Кроку 7. p> Крок 7. Перевірити виконання нерівності i Спочатку реалізуємо допоміжні методи:
// поелементне порівняння вектора v1 з вектором v2
private void Compare (List v1, List v2)
{
more = 0;
less = 0;
equal = 0;
for (int i = 0; i
{
if (v1 [i]> v2 [i])
more + +;
else if (v1 [i]
else equal + +;
}
}
// повертає істину якщо v1> = v2
private bool MoreOrEqual ()
{
if (more> = 0 && less == 0)
return true;
else return false;
}
Далі напишемо рекурсивну процедуру видалення домінованих рішень, спираючись на алгоритм, описаний вище:
// y - список рішень
public void DeleteDominated (List > y)
{
foreach (List yi in y)
{
foreach (List gj in y)
{
if (! Equals (gj, yi))
{
Compare (gj, yi);
if (MoreOrEqual ())
{
y.Remove (yi);
DeleteDominated (y);
return;
}
Compare (yi, gj);
if (MoreOrEqual ())
{
y.Remove (gj);
DeleteDominated (y);
return;
}
}
}
}
}
І нарешті отримуємо метод, який повертає список парето-оптимальних рішень:
Схожі реферати:
Реферат на тему: This is a list of problems facing society today Реферат на тему: Return to materialism Реферат на тему: Монтаж валопроводу з гвинтами регульованого кроку на судні Реферат на тему: Універстітет КРОК Реферат на тему: Багатокритеріальні задачі. Метод альтернативних рішень