єктно-орієнтований підхід. Список класів з коротким описом:
1) Program.cs - це головне вікно, служить для введення даних, запуску роботи алгоритму пошуку парето-оптимальних рішень, містить методи для вирішення поставленого завдання.
2) Reader.cs - методи для завантаження даних з файлу
3) Writer.cs - методи для збереження даних у файл
.2 Алгоритм пошуку альтернативних рішень
Крок 1. Призначення ваг. Призначаються позитивні ваги кожного з критеріїв Крок 2. Побудова індексу згоди. Для кожної пари альтернатив j і k безліч критеріїв розбивається на три групи:
, ,
Безліч включає ті категорії, по яких j-я альтернатива краще k-й, безліч , складається з критеріїв, яким j-я альтернатива гірше k-й, а безліч , складається з тих критеріїв, за якими j-а і k-я альтернативи еквівалентні. Індекс згоди з тим, що альтернатива j краще альтернативи k визначається наступним чином:
,
Де ? - параметр, ?
Крок 3. Побудова списку незгоди. Для кожної пари j і k індекс незгоди з тим, що альтернатива j краще альтернативи k визначається за формулою:
В
Де інтервал переваги k-й альтернативи над j-й за i-му критерію визначає число послідовних переходів з класу в клас, яке необхідно здійснити для того, щоб j-й варіант став еквівалентний k-му по i-му критерію, помножене на ціну одного розподілу такого переходу. При цьому потрібно, щоб величини не перевищували одиницю
Крок 4. Побудова вирішального правила. На основі чисел і , обумовлений ОПР, на безлічі альтернатив будується наступне бінарне відношення: j- я альтернтіва визнається кращим альтернативи k, за умови того, що . Відразу можна помітити, що при вказане бінарне відношення стає аналогом бінарного відношення Слейтера, оскільки в цьому випадку j-я альтернатива домінує k-ю лише тоді, коли , тобто для всіх . При можуть виникнути інші пари альтернатив, пов'язані введеним бінарним відношенням.
Після того як бінарне відношення побудовано, представляється безліч взаімнонедомінірующіх альтернатив, на якому побудоване бінарне відношення має НМ-властивістю. Далі ОПР вибирає остаточне рішення з цієї множини. Таким чином даний метод дозволяє скоротити число аналізованих варіантів, полегшуючи тим самим вибір ОПР. br/>
3.3 Лістинг програмного коду
public partial class Form1: Form
{int countOfVariant; int countOfCriterion; double p; double q; double alfa; int max = 0; double Interval = 0; int count1 = 0; int count2 = 0; int row1; int col1; static int rows; static int cols; Double [,] tablesWeight; Double [,] tablesCriterionImportance; Double [,] tablesIntervalSuperiority; Double [,] TableOfAgreementIndex; Double [,] TableOfDisagreementIndex; String [,] TableofDecisiveRule;
// private Double [,] tablesCriterionImportance; double CriterionSumm = 0; Form1 ()
{();
}
// отримання числа варіантів, числа критеріїв і параметра альфаvoid GetDate ()
{= (int) numericUpDown1.Value; = (int) numericUpDown2.Value; = Convert.ToDouble (comboBox1.Text);
}
// створення і заповнення таблиці ваг з формиvoid createTableOfWeightFromForm ()
{= new double [rows, cols]; (int i = 0; i
{(int j = 0; j
{[i, j] = Convert.ToDouble (dataGridView1.Rows [i]. Cells [j]. Value);
}
}
}
// створення і заповнення таблиці важливості критеріїв, числа інтервалів переваги
// і вартість переходу з рівня на рівень з формиvoid createTableOfCriterionImportanceFromForm ()
{= new double [cols, 3]; (int i = 0; i