1. Постановка завдання
Необхідно розробити програмний засіб для пошуку альтернативних рішень для наступного завдання:
В· багатокритеріальна завдання
вхідні дані: кількість критеріїв і рішень; вагові значення, задані безпосередньо, ступінь важливості критеріїв, інтервали переваги, ціна переходу значення в сусідній клас.
вихідні дані: матриця згоди; матриця незгоди; ядро ​​бінарного відносини.
програмний альтернативний рішення багатокритеріальний
2. Короткі теоретичні відомості
Нехай заданий набір числових функцій, визначених на множині можливих рішень X. Залежно від змісту завдання вибору ці функції іменують критеріями оптимальності, критеріями ефективності або цільовими функціями.
Зазначені вище числові функції утворюють векторний критерій, який приймає значення в просторі m-мірних векторів. Це простір називають критеріальним простором або простором оцінок, а всяке значення іменують векторної оцінкою можливого рішення x. Всі можливі векторні оцінки утворюють безліч можливих оцінок (можливих або допустимих векторів)
Як правило, між множинами можливих рішень X і відповідним безліччю векторів Y можна встановити взаємно однозначна відповідність, тобто кожному можливому рішенню поставити у відповідність певний можливий вектор, і назад - кожному можливому вектору зіставити певне можливе рішення. У таких випадках вибір у безлічі рішень з математичної точки зору рівносильний вибору в безлічі векторів і всі визначення і результати можна формулювати як в термінах рішень, так і в термінах векторів, причому при бажанні завжди можна без зусиль здійснити перехід від однієї форми викладу до іншого.
Завдання вибору, яка включає безліч допустимих рішень X і векторний критерій f, зазвичай називають багатокритеріальної завданням або завданням багатокритеріальної оптимізації. </p>
Необхідно відзначити, що формування математичної моделі прийняття рішень (тобто побудова безлічі X і векторного критерію f ) нерідко є складний процес, в якому тісно взаємодіють фахівці двох сторін. А саме, представники конкретній галузі знань, до якої відноситься досліджувана проблема, і фахівці з прийняття рішень (математики). З одного боку, слід врахувати всі найважливіші риси і деталі реальної задачі, а з іншого, - побудована модель не повинна виявитися надмірно складною з тим, щоб для її дослідження та рішення можна було успішно застосувати розроблений до теперішнього часу відповідний математичний апарат. Саме тому етап побудови математичної моделі значною мірою залежить від досвіду, інтуїції і мистецтва дослідників обох сторін. Його неможливо ототожнити з простим формальним застосуванням вже відомих, добре описаних алгоритмів.
Тут слід ще додати, що будь-яка задача вибору (в тому числі і багатокритеріальна) тісно пов'язана з конкретним ОПР (особа, яка приймає рішення). Вже на стадії формування математичної моделі при побудові безлічі можливих рішень і векторного критерію справа не обходиться без порад, рекомендацій і вказівок ОПР, тим більше що векторний критерій як раз і служить. Прийняття рішення при багатьох критеріях для вираження цілей ОПР. При цьому ясно, що побудувати модель в точності відповідну всім реальним обставинам неможливо. Модель завжди є спрощенням дійсності. Важливо домогтися, щоб вона містила ті риси і деталі, які найбільшою мірою впливають на остаточний вибір найкращого рішення.
Розглянемо два довільних можливих рішення і. Для них має місце один і тільки один з наступних трьох випадків:
1) справедливо співвідношення (ОПР перше рішення воліє другого),
2) справедливо співвідношення (ОПР друге рішення воліє першому),
3) не виконується ні співвідношення, ні співвідношення (ОПР не може віддати перевагу жодному з вказаних двох рішень).
Зауважимо, що четвертий випадок, коли обидва беруть участь тут співвідношення і виконуються, неможливий завдяки асиметричності відносини переваги
У першому із зазначених вище випадків, тобто при виконанні співвідношення , Кажуть, що рішення домінує рішення.
Якщо ж реалізується третій випадок, то говорять, що рішення і не порівняні по відношенню уподобання.
3. Реалізація програмного засобу
середу розробки: Visual Studio 2008 Мова програмування: C #
3.1 Проектування
При проектуванні програмного засобу будемо використовувати об'єктно-орієнтований підхід. Список класів з коротким описом:
1) Program.cs - це головне вікно, служить для введення даних, запуску роботи алгоритму пошуку Парето-оптимальних рішень, містить методи для вирішення поставленого завдання.
2) Reader.cs - методи для завантаження даних з файлу
3) Writer.cs - методи для збереження даних у файл
3.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-ю лише тоді, коли, тобто для всіх. При можуть виникнути інші пари альтернатив, пов'язані введеним бінарним відношенням.
Після того як бінарне відношення побудовано, представляється безліч взаімнонедомінірующіх альтернатив, на якому побудоване бінарне відношення володіє НМ-властивістю. Далі ОПР вибирає остаточне рішення з цієї множини. Таким чином даний метод дозволяє скоротити число аналізованих варіантів, полегшуючи тим самим вибір ОПР.
3.3 Лістинг програмного коду
public partial class Form1: Form
{
private int countOfVariant;
private int countOfCriterion;
private double p;
private double q;
private double alfa;
private int max = 0;
private double Interval = 0;
private int count1 = 0;
private int count2 = 0;
private int row1;
private int col1;
private static int rows;
private static int cols;
private Double [,] tablesWeight;
private Double [,] tablesCriterionImportance;
private Double [,] tablesIntervalSuperiority;
private Double [,] TableOfAgreementIndex;
private Double [,] TableOfDisagreementIndex;
private String [,] TableofDecisiveRule;
// private Double [,] tablesCriterionImportance;
private double CriterionSumm = 0;
public Form1 ()
{
InitializeComponent ();
}
// отримання числа варіантів, числа критеріїв і параметра альфа
private void GetDate ()
{
countOfVariant = (int) numericUpDown1....