Багатокритеріальні задачі. Паретовскіе рішення » Українські реферати
Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Экономико-математическое моделирование » Багатокритеріальні задачі. Паретовскіе рішення

Реферат Багатокритеріальні задачі. Паретовскіе рішення

и до Кроку 5.

Крок 3. Видалити з поточного безлічі векторів P (Y) вектор, так як він не є Парето-оптимальним. Потім перейти до Кроку 4.

Крок 4. Перевірити виконання нерівності j

Крок 5. Перевірити справедливість нерівності. У тому випадку, коли воно є істинним, перейти до Кроку 6. В іншому випадку - повернутися до Кроку 4.

Крок 6. Видалити з поточного безлічі векторів P (Y) вектор і перейти до Кроку 7.

Крок 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;

}

}

}

}

}

І нарешті отримуємо метод, возвращающий список Парето-оптимальних рішень:

public List > GetParetoList (List > y)

{

DeleteDominated (y);

return y;

}

3.3 Лістинг програмного коду

public class Graph

{

public ZedGraphControl DisplayGrahpics (Panel panel, int [] x, int [] y, int [] pareto_x, int [] pareto_y)

{

var control = new ZedGraphControl ();

control.Width = panel.Width;

control.Height = panel.Height;

GraphPane myPane = control.GraphPane;

// Set the title and axis labels

myPane.Title.IsVisible = false;

// myPane.Title.Text = title;

myPane.XAxis.Title.IsVisible = false;

myPane.YAxis.Title.IsVisible = false;

myPane.YAxis.Scale.MaxAuto = true;

myPane.Legend.IsVisible = false;

PointPairList list1 = new PointPairList ();

for (int i = 0; i

list1.Add (x [i], y [i]);

LineItem curve1 = myPane.AddCurve ("label", list1, Color.Black, SymbolType.Circle);

curve1.Symbol.Fill = new Fill (Color.Black);

curve1.Symbol.Size = 7;

curve1.Line.IsVisible = false;

PointPairList list2 = new PointPairList ();

for (int i = 0; i

list2.Add (pareto_x [i], pareto_y [i]);

LineItem curve2 = myPane.AddCurve ("label", list2, Color.Red, SymbolType.Circle);

curve2.Symbol.Fill = new Fill (Color.Red);

curve2.Symbol.Size = 7;

curve2.Line.IsVisible = false;

// Fill the axis background with a color gradient

myPane.Chart.Fill = new Fill (Color.White, Color.FromArgb (255, 255, 166), 45.0F);

control.AxisChange ();

// expand the range of the Y axis slightly to accommodate the labels

myPane.YAxis.Scale.Max + = myPane.YAxis.Scale.MajorStep;

return control;

}

}

public class File

{

private StreamWriter writer;

private StreamReader reader;

public void WriteData (List > y, string fileName)

{

writer = new StreamWriter (new FileStream (fileName, FileMode.Create, FileAccess.Write));

writer.WriteLine (y.Count.ToString () + "" + y [0]. Count.ToString ());

for (int i = 0; i

{

for (int j = 0; j

{

writer.Write (y [i] [j]. ToString () + "");

}

writer.WriteLine ();

}

writer.Close ();

}

public List > ReadData (string fileName)

{

List > y = new List > ();

int n, m;

reader = new StreamReader (new FileStream (fileName, FileMode.Open, FileAccess.Read));

while (! reader.EndOfStream)

{

char [] separator = {''};

string [] vals = reader.ReadLine (). Split (separator, StringSplitOptions.RemoveEmptyEntries);

n = Convert.ToInt32 (vals [0]);

m = Convert.ToInt32 (vals [1]);

for (int i = 0; i

{

List list = new List ();

vals = reader.ReadLine (). Split (separator, StringSplitOptions.RemoveEmptyEntries);

for (int j = 0; j

{

list.Add (Convert.ToInt32 (vals [j]));

}

y.Add (list);

}

}

reader.Close ();

return y;

}

}

public partial class SolutionsView: Form

{

public SolutionsView (List > list)

{

InitializeComponent ();

int n = list [0]. Count;

int m = list.Count;

dataGridView2.ColumnCount = n;

dataGridView2.RowCount = m;

for (int i = 0; i

{

for (int j = 0; j

dataGridView2 [j, i]. Value = list [i] [j];

}

}

}

public partial class GraphView: Form

{

public GraphView ()

{

InitializeComponent ();

}

public Panel GetPanel ()

{

return panel1;

}

}

public partial class MainView: Form

{

private int n, m, krit, comp, var;

private List > y;

private List paretoSet;

private List paretoSet2;

private Pareto pareto;

public MainView ()

{

InitializeComponent ();

InitComboboxes (2, 20, 1);

y = new List > ();

paretoSet = new List ();

dataGridView1.AllowUserToAddRows = false;

dgA.AllowUserToAddRows = false;

dgK.AllowUserToAddRows = false;

dgX.AllowUserToAddRows = false;

}

private void InitComboboxes (int minimum, int maximum, int step)

{

for (int i = minimum; i

{

comboBox1.Items.Add (i);

comboBox2.Items.Add (i);

comboBox3.Items.Add (i);

comboBox4.Items.Add (i);

comboBox5.Items.Add (i);

}

}

private void button1_Click (object sender, EventArgs e)

{

n = Convert.ToInt32 (comboBox1.Text);

m = Convert.ToInt32 (comboBox2.Text);

dataGridView1.ColumnCount = n;

dataGridView1.RowCount = m;

for (int i = 0; i

dataGridView1.Columns [i]. Name = "k" + (i +1). ToString ();

}

private void GetValuesFromGrid ()

{

y = new List > ();

if (tabControl1.SelectedIndex == 0)

{

for (int i = 0; i

{

var list = new List ();

<...


Друкувати реферат
Замовити реферат
Замовлення реферату
Реклама

Наверх Зворотнiй зв'язок