Многокритериальная оптимизация

Автор работы: Пользователь скрыл имя, 19 Марта 2014 в 21:05, курсовая работа

Краткое описание

Необходимость принятия решений в какой-либо ситуации так же стара, как и само человечество и принимать решения, как отдельному человеку, так и различным группам людей, вплоть до всего человечества приходится практически во всех областях своей деятельности. Причем в некоторых областях (военных, медицинских, космических, в атомной энергетике, химической промышленности и др.) возникает потребность принятия достаточно сложных управленческих решений, ошибка в которых может повлечь за собой катастрофические последствия. В силу этого появилась необходимость выделить процесс принятия оптимальных решений в отдельную область науки, которая бы формализовала и систематизировала данный процесс.

Вложенные файлы: 1 файл

Пояснительная записка.docx

— 764.08 Кб (Скачать файл)

МАИ не предписывает лицу, принимающему решение (ЛПР), какого-либо «правильного» решения, а позволяет ему в интерактивном режиме найти такой вариант (альтернативу), который наилучшим образом согласуется с его пониманием сути проблемы и требованиями к ее решению.

Анализ проблемы принятия решений в МАИ начинается с построения иерархической структуры, которая включает цель, критерии, альтернативы и другие рассматриваемые факторы, влияющие на выбор. Эта структура отражает понимание проблемы лицом, принимающим решение. Каждый элемент иерархии может представлять различные аспекты решаемой задачи, причем во внимание могут быть приняты как материальные, так и нематериальные факторы, измеряемые количественные параметры и качественные характеристики, объективные данные и субъективные экспертные оценки. Иными словами, анализ ситуации выбора решения в МАИ напоминает процедуры и методы аргументации, которые используются на интуитивном уровне.

Следующим этапом анализа является определение приоритетов, представляющих относительную важность или предпочтительность элементов построенной иерархической структуры, с помощью процедуры парных сравнений. Безразмерные приоритеты позволяют обоснованно сравнивать разнородные факторы, что является отличительной особенностью МАИ.

На заключительном этапе анализа выполняется синтез (линейная свертка) приоритетов на иерархии, в результате которой вычисляются приоритеты альтернативных решений относительно главной цели. Лучшей считается альтернатива с максимальным значением приоритета.

Иерархические структуры, используемые в МАИ, представляет собой инструмент для качественного моделирования сложных проблем. Вершиной иерархии является главная цель; элементы нижнего уровня представляют множество вариантов достижения цели (альтернатив); элементы промежуточных уровней соответствуют критериям или факторам, которые связывают цель с альтернативами.

После построения иерархии участники процесса используют МАИ для определения приоритетов всех узлов структуры. Информация для расстановки приоритетов собирается со всех участников и математически обрабатывается.

Приоритеты — это числа, которые связаны с узлами иерархии. Они представляют собой относительные веса элементов в каждой группе. Подобно вероятностям, приоритеты — безразмерные величины, которые могут принимать значения от нуля до единицы. Чем больше величина приоритета, тем более значимым является соответствующий ему элемент. Сумма приоритетов элементов, подчиненных одному элементу выше лежащего уровня иерархии, равна единице [11].

 

2.3 Описание схемы алгоритма метода Предпочтений

 

Рассмотрим одну из основных схем алгоритма созданного программного обеспечения – схему метода Предпочтений,  представленную в   приложении А и на рисунке 2.1. Метод Предпочтений предназначен для поиска весов критериев на основе оценок экспертов.

 

 

Рисунок 2.1 – Схема алгоритма метода Предпочтений

 

Данная схема состоит из восьми основных блоков, два из них являются подпрограммами. Алгоритмы подпрограмм представлены на рисунках 2.2 и 2.3 соответственно. Рассмотрим данные подпрограммы более подробно.

Для вычисления весов критериев необходимо для начала найти сумму экспертных оценок по каждому критерию, т.е. по каждому столбцу матрицы оценок. Реализация данных действий отражена в схеме алгоритма, представленной на рисунке 2.2 и является первой подпрограммой. В результате работы данного алгоритма будет получен массив сумм по каждому критерию.

 

 

Рисунок 2.2 – Схема алгоритма вычисления сумм оценок по столбцам

 

Затем необходимо найти общую сумму значений сформированного после работы предыдущей подпрограммы массива. Реализация данных действий отражена в схеме алгоритма, представленной на рисунке 2.3 и является второй подпрограммой. В результате работы данного алгоритма получаем общую сумму оценок (числовое значение).

 

 

Рисунок 2.3 – Схема алгоритма вычисления суммы значений массива

 

После завершения работы описанных подпрограмм их результаты используются основным алгоритмом непосредственно для вычисления весов критериев.

 

 

 

 

 

 

 

 

 

 

 

 

3  ОПИСАНИЕ  РАЗРАБОТАННОГО ПРИЛОЖЕНИЯ

 

3.1 Структура программного комплекса

 

Программное обеспечение для решения поставленной задачи было реализовано в среде разработки MS Visual Studio 2010 на языке C#. Данная среда разработки позволяет быстро, эффективно и просто создать полноценное и многофункциональное  приложение.

Созданное приложение состоит из четырёх пользовательских классов, реализующих методы, описанные в разделе 2.2. Рассмотрим каждый класс более подробно.

1) Класс OdnokreterialnaiaOptimizacia – содержит методы для организации однокритериальной оптимизации  методом полного перебора по заданному критерию с учётом ограничений. Рассмотрим структуру класса.

Данный класс включает следующие поля:

  • texnXarakter1- содержит технические характеристики станков первого вида. Тип поля double [ , ];
  • texnXarakter2 – содержит технические характеристики станков второго вида. Тип поля double [ , ];
  • timeM - количество часов на изготовление изделий в месяц. Тип поля int;
  • moshnost – максимально возможная потребляемая мощность станками в месяц. Тип поля double;
  • count – количество изделий, выпускаемых предприятием в год. Тип поля int;
  • cena – максимально возможная общая стоимость станков. Тип поля double;
  • stanki1,  stanki2– номера станков, удовлетворяиющих ограничениям, первого и второго типа соответственно. Тип поля ArrayList;

 В классе реализован конструктор, инициализирующий поля, описанные выше. Так же в классе определены следующие методы:

  • PolniyPerebor – реализует метод полного перебора. В данном методе так же реализована проверка на соответствие альтернатив ограничениям. На вход данного метода подаётся критерий, относительно которого мы производим полный перебор (например, стоимость, энергоэффективность или производительность), а на выходе получаем список значений выбранного критерия, отобранных в соответствии с ограничениями альтернатив станков;
  • Min, Max – из списка, полученного в предыдущем методе производится поиск номера альтернативы станков с минимальным или максимальным значением выбранного критерия соответственно (например, если выбран критерий «стоимость», то будет выбираться альтернатива с минимальным значением данного критерия из списка). На вход данного метода подаётся список полученный в результате работы метода PolniyPerebor , а на выходе получаем номер лучшей альтернативы.

2) Класс  MnogokreterialnaiaOptimizacia – реализует методы, необходимые для организации многокритериальной оптимизации. Рассмотрим данный класс более подробно.

Данный класс включает следующие поля:

  • x – матрица экспертных оценок. Тип поля double [ ,];
  • altSt1, altSt2 – альтернативы станков. В первом поле хранятся для каждой соответствующей альтернативы номер станка первого типа, а во втором – для этой же альтернативы номер станка второго типа. Тип поля ArrayList;
  • st1, st2 – выбранные станки первого и второго вида в соответствии с ограничениями соответственно. Тип поля ArrayList;
  • timeM - количество часов на изготовление изделий в месяц. Тип поля int;
  • moshnost – максимально возможная потребляемая мощность станками в месяц. Тип поля double;
  • count – количество изделий, выпускаемых предприятием в год. Тип поля int;
  • cena – максимально возможная общая стоимость станков. Тип поля double;

В классе реализован конструктор для инициализации вышеперечисленных  полей. В классе определены следующие методы:

  • PreobrazovanieX – преобразовывает исходную матрицу экспертных оценок в соответствии с этапом 2, описанным в разделе 2.2;
  • SumColumns – находит сумму экспертных оценок по каждому критерию (по столбцам). На выходе получаем массив сумм оценок по столбцам;
  • Sum – находит сумму всех элементов, передаваемого в качестве аргумента, массива. Возвращает число типа double;
  • Predpochtenie – реализует метод экспертного анализа – метод предпочтений. Два вышеперечисленных метода являются вспомогательными для данного метода. На выходе получаем массив весов по каждому критерию;
  • SoglosovanieOcenok – реализует проверку экспертных оценок на согласованность. В качестве результата возвращается значение типа bool, true – если проверка пройдена и false – если не пройдена;
  • Pareto – реализует метод Парето для отбора бесперспективных альтернатив. На вход подаются приведённые в безразмерный вид характеристики  станков двух типов. В результате работы метода из сформированных ранее альтернатив удаляются бесперспективные альтернативы;
  • MAI – реализует метод анализа иерархий для выбора лучшей альтернативы. На вход так же подаются приведённые в безразмерный вид характеристики  станков двух типов, веса критериев и технические характеристики станков. В результате работы метода формируется список, содержащий количественные индикаторы важности каждой из альтернатив, удовлетворяющей условиям ограничений;
  • Max – определяет лучшую альтернативу на основе списка сформированного в методе MAI. На выходе получаем номер альтернативы.

3) Класс PerevodOcenok – реализует методы для  перевода качественных и количественных оценок в безразмерный вид (оценки в диапазоне от 0 до 1).

Класс содержит поле ocenki, типа double [ , ], в котором хранятся переведённые в безразмерный вид оценки. Так же в классе реализованы следующие методы:

  • Max – реализуем поиск максимального значения в массиве. В качестве параметра передается массив значений типа double[] и возвращается максимальное значение данного массива;
  • PerevodOcenokVBezrazmVid – перевод количественных оценок в безразмерный вид. В качестве параметров метод получает массив исходных оценок (которые нужно перевести), номер строки в матрице ocenki (для того, чтобы свести все оценки в единую матрицу) и переменную типа bool, которая принимает значение true – если по значению оценка чем больше, тем лучше и false – иначе (например, если рассматривать оценки по критерию «стоимость», то чем ниже оценка по данному критерию, тем лучше эта альтернатива для нас, а если – оценки по критерию «производительность», то чем ниже оценка, тем хуже данная альтернатива);
  • ShkalaHarringtona – перевод качественных оценок по шкале Харрингтона. В качестве параметров метод принимает массив исходных оценок (которые нужно перевести), номер строки в матрице ocenki;
  • PerevodYesNo – перевод оценок типа «Да/Нет». В качестве параметров метод принимает массив исходных оценок (которые нужно перевести), номер строки в матрице ocenki.

В результате работы данных методов исходная матрица ocenki заполняется переведёнными оценками.

4) Класс Form1 – содержит графический интерфейс пользователя и  использует все вышеперечисленные классы, определяя структуру всего приложения. В данном классе так же обрабатываются все введённые пользователем данные и передаются на обработку другим классам. В результате выдается конечный результат работы приложения пользователю.

Исходный код приложения представлен в приложении Б.

 

3.2 Инструкция  пользователя

 

Разработанный пользовательский интерфейс является простым и интуитивно-понятным для обычного пользователя.

Созданное приложение предназначено помочь принять решение о покупке станков двух типов лицу принимающему решение. После запуска exe-файла появляется основное окно, представленное на рисунке 3.1.

 

 

Рисунок 3.1 – Вид главного окна приложения

 

Всё приложение разделено на три основные области. Рассмотрим их:

1) Область «Технические  характеристики станков» - предназначена для ввода технических характеристик станков. В первую таблицу заносятся параметры станков первого типа, во вторую – второго типа. Так же в данных таблицах можно редактировать данные. Для редактирования необходимо выбрать нужную ячейку, кликнуть по ней два раза и ввести новое значение вместо старого.

2) Область «Ограничения» - предназначена для ввода и редактирования ограничений по критериям.

Если пользователь не введёт какие-либо данные, необходимые для расчёта, то приложение отобразит диалоговое окошко, приведённое на рисунке 3.2.

 

 

Рисунок 3.2 – Окно, появляющееся при неполном вводе данных

Для закрытия данного окошка нужно нажать кнопку «OK», после чего снова появится главное окно приложения и в нём можно задать все необходимые данные. Если данное окошко не появилось,  значит, пользователь ввёл все данные, необходимые приложению.

3) Область «Оптимизация» - это основная часть приложения. Как видно из рисунка 3.1 она состоит из двух вкладок «Одномерная оптимизация» и «Многомерная оптимизация». Рассмотрим данную часть приложения более подробно.

Информация о работе Многокритериальная оптимизация