Автор работы: Пользователь скрыл имя, 24 Сентября 2015 в 15:57, курсовая работа
Оптимизация как раздел математики существует достаточно давно. Оптимизация – это выбор, то есть то, чем постоянно приходится заниматься в повседневной жизни. Хотя конечной целью оптимизации является отыскание наилучшего или "оптимального" решения, обычно приходится довольствоваться улучшением известных решений, а не доведением их до совершенства. Поэтому под оптимизацией понимают скорее нахождение наилучшего варианта среди всех существующих. В любой практической оптимизационной задаче существует много совпадающих этапов.
Таблица 3.3 – Описание класса OneCriterionOptimization
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
1 |
2 |
3 |
4 |
5 |
Optimize(List<Line> tablets) |
метод |
Line |
public static |
Метод перебора |
Таблица 3.4 – Описание класса MultiCriterionOptimization
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
1 |
2 |
3 |
4 |
5 |
Range(double[,] cc) |
метод |
double[] |
static public |
Метод Ранга |
ParetaMethod(List<Line> tablets) |
метод |
List<int> |
static public |
Метод Парето |
Продолжение таблицы 3.4
1 |
2 |
3 |
4 |
5 |
HierarchyAnalys(double[,] criterionMarks, List<Line> tablets) |
метод |
Line |
static public |
Метод анализа иерархий |
CriterionWeightByMin(double[] values) |
метод |
double[] |
static private |
|
CriterionWeightByMax(double[] values) |
метод |
double[] |
static private |
Для работы с разработанной программой не нужно иметь специальных навыков, достаточно лишь ознакомиться с данной инструкцией.
Разработанное приложения позволяет проводить оптимизацию, принимать правильное решение при выборе компьютера из множества альтернатив.
Требования к пользователю:
– умение пользоваться компьютерной мышью и клавиатурой;
– ознакомление с предметной областью задачи;
– понимание работы программы для её оценки.
Для отображения информации о компьютерах, а также для выполнения основных функций по однокритериальной и многокритериальной оптимизации были созданы формы.
Для выбора однокритериальной оптимизации необходимо в меню гланого окна нажать кнопку «Однокритериальная». Откроется окно «Однокритериальная оптимизация», на котором отображаются исходные данные, после нажатия кнопки «Получить результат» мы получаем результат однокритериальной оптимизации. Результат однокритериальной оптимизации будет справа окна, рисунок 3.2.
Рисунок 3.2 – Результат однокритериальной оптимизации
Никаких ограничений и требований на режим работы и запуска программы не налагается. Для контроля правильности выполнения программы предусмотрены сообщения пользователю о некорректно введенных данных. Средства восстановления программы после сбоя не предусмотрены.
Для нахождения оптимального компьютера на основе многокритериальной оптимизации необходимо в меню гланого окна нажать кнопку «Многокритериальная». После нажатия кнопки «Получить результат» мы получаем результат многокритериальной оптимизации.
Общий вид окна «Многокритериальная оптимизация» расположен на рисунке 3.3.
Рисунок 3.3 – Общий вид окна «Многокритериальная оптимизация»
Результат выполнения многокритериальной оптимизации расположен справа окна, рисунок 3.4.
Рисунок 3.4 – Результат выполнения многокритериальной оптимизации
Для проведения верификации была сформирована и решена задача с помощью MS Excel. Задача была сокращена до трех альтернатив с целью облегчения расчетов.
Исходные данные для задачи представлены в таблицах 4.1 и 4.2.
Таблица 4.1 – Альтернативы участвующие в отборе
№ |
Стоимость, бел. руб. |
Размер экрана, дюймов |
Вес, кг. |
Разрешение камеры, Мп |
Возможность проведения видеоконференций |
1 |
5821200 |
18,5 |
16,1 |
0,3 |
Да |
2 |
6444900 |
19 |
14,3 |
1,3 |
Да |
3 |
6222150 |
19 |
13,8 |
2 |
Да |
Таблица 4.2 – Мнения экспертов
Эксперт |
Стоимость |
Размер экрана |
Вес |
Разрешение камры |
Возможность проведения видеоконференций |
Эксперт 1 |
4 |
7 |
2 |
9 |
10 |
Эксперт 2 |
7 |
1 |
8 |
2 |
9 |
Эксперт 3 |
9 |
5 |
4 |
3 |
1 |
На начальном этапе сформируем множество Парето-оптимальных альтернатив и проверим, есть ли компьютеры, по всем характеристикам уступающие или равные другим.
На рисунке 4.1 показан результат сравнения.
Рисунок 4.1 – Результат сравнения
Из рисунка 4.1 видно, что второй компьютер из списка уступает третьему по всем характеристикам, следовательно, в дальнейшей оптимизации будут участвовать все компьтеры, кроме второго.
На рисунке 4.2 приведены результаты выполнения данного шага в программе.
Рисунок 4.2 – Список компьютеров после оптимизации
Из полученных результатов видно, что данный этап в разработанном приложении выполняется верно.
На следующем этапе были вычислены веса критериев методом Ранга.
Были вычислены суммы оценок по каждому критерию, общая сумма оценок, а также были вычислены веса критериев (рисунок 4.3).
Рисунок 4.3 – Результаты вычислений в MS Excel
Результаты, полученные в приложении, представлены на рисунке 4.4.
Рисунок 4.4 – Результаты выполнения метода Ранга в debug режиме
Следующий шаг для верификации – перевод характеристик компьютеров в безразмерный вид. Критерий «стоимость» должен стремиться к минимуму, поэтому для перевода его в безразмерную форму необходимо найти минимальный элемент в строке и делить его на каждый элемент этой строки.
Критерий «вес» должен стремиться к минимуму, поэтому для перевода его в безразмерную форму необходимо найти минимальный элемент в строке и делить его на каждый элемент этой строки. Критерий «размер экрана» должен стремиться к максимуму, поэтому для перевода его в безразмерный вид требуется найти максимальный элемент в строке и делить на него каждый элемент этой строки. Критерий «возможность проведения видеоконференций» имеет два варианта: «да», «нет». Полагаем, что этим вариантам соответствуют значения 0,67 и 0,33 соответственно. Критерий «разрешение камеры» должен стремиться к максимуму, поэтому для перевода его в безразмерный вид требуется найти максимальный элемент в строке и делить на него каждый элемент этой строки.
Результаты, полученные в MS Excel, представлены на рисунку 4.5.
Рисунок 4.5 – Результаты, полученные в MS Excel
Данные полученные в приложении представлены на рисунке 4.6.
Рисунок 4.6 – Результат приведения к безразмерному виду в debug режиме
На заключительном этапе определяем лучшую альтернативу (по максимальному значению). Для этого находим произведение веса альтернативы на вес соответствующего критерия для всех критериев и суммируем соответствующие значения для каждой альтернативы (рисунок 4.7).
Рисунок 4.7 – Результат выбора лучшей альтернативы в MS Excel
Результат, полученный в приложении, представлен на рисунке 4.8.
Рисунок 4.8 – Результат оптимизации в debug режиме
Результат работы программы представлен на рисунке 4.9. Сравнивая все результаты, полученные при помощи MS Excel, и результаты выполнения программы, можно сделать вывод, что данная программа работает корректно.
Рисунок 4.9 – Результат выполнения оптимизации
В данной работе было спроектировано и разработано программное обеспечение выбора оптимального компьютера для сотрудника организации.
Для выбора компьютера по одному критерию был выбран метод полного перебора, так как количество альтернатив не достигает больших объемов. Для реализации многокритериальной оптимизации были выбраны методы Парето, Ранга, анализа иерархий.
Перед разработкой программного обеспечения были спроектированы блок-схемы алгоритмов, а также функциональная модель. Впоследствии по ним было разработано Windows-приложение на языке C#.
На заключительном этапе работы была проведена верификация разработанного программного обеспечения, в результате которой было выяснено, что приложение работает правильно и может использоваться при решении реальных практических задач.
Данный курсовой проект значительно расширил обзор в области принятия решения и показал, что даже в этой области может успешно применяться автоматизация, что немаловажно в нашем мире полном технологий, которые «должны» оправдывать затраты на них, тем самым делать жизнь, создавшего их человека, проще и качественнее.
Результатом работы стало Windows-приложение для выбора компьютера, по одному критерию, а также по оценкам экспертов.
1. Шикин, Е.В. Исследование операций / Е.В. Шикин, Г.Е. Шикина.- М.: ТК Велби, 2006. - 280 с.
2. Акимов, С.В. Проблемы автоматизации
структурно-параметрического
3. Сафронов, В. Лекции и
учебные пособия по системному
анализу / В. Сафронов // Системный анализ
и проектирование [Электронный ресурс]. -
2006 – 2012. - Режим доступа: http://victor-safronov.narod.
4. Информационные технологии оптимальных решений. Учебный курс для специальности «Государственное управление и экономика». - Минск: Академия управления при Президенте Республики Беларусь, 2003. - 241 с.
5. Теория принятия решений. Учебно-методическое пособие / Ю.О. Матузко. - Запорожье: Запорожская государственная инженерная академия, 2009. - 61 с.
6. Подиновский, В.В. Парето – оптимальные решения многокритериальных задач. / В.В. Подиновский, В.Д. Ногин. - М.: Наука. Главная редакция физико-математической литературы, 1982. – 256 с.
7. Горбунов, В.М. Теория принятия решений. Учебное пособие / В.М. Горбунов. – Томск: Национальный исследовательский томский политехнический университет, 2010. - 67 с.
(обязательное)
Метод Ранга. Блок-схема алгоритма
(обязательное)
Текст программы
Line.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Windows.Forms;
namespace CourseProject
{
class Line
{
private int _cost;
private double _razm_ekrana;
private double _ves;
private double _razr_cam;
private String _konf;
private double _konf_;
/// <summary>
/// Конструктор
/// </summary>
public Line(int cost, double razm_ekrana, double ves, double razr_cam, string konf)
{
_cost = cost;
_razm_ekrana = razm_ekrana;
_ves = ves;
_razr_cam = razr_cam;
_konf = konf;
}
public double KonfMark
{
get
{
_konf_ = 0.33;
if (_konf.Trim() == "Да")
_konf_ = 0.67;
return _konf_;
}
}
/// <summary>
/// Свойства доступа
/// </summary>
public int Cost
{
get { return _cost; }
set { _cost = value; }
}
public double Razm_ekrana
{
get { return _razm_ekrana; }
set { _razm_ekrana = value; }
}
public double Ves
{
get { return _ves; }
set { _ves = value; }
}
public double Razr_cam
{
get { return _razr_cam; }
set { _razr_cam = value; }