Выдержка из текста работы
В условиях современного развития производства оптимизация различных технологических процессов занимает лидирующие позиции. Поиск оптимума не менее важен и для среднего и малого бизнеса. Это может быть уменьшение затрат на транспортировку, стремление профинансировать различные проекты и получить от этого как можно больше прибыли и многое другое. Вся история человечества неразрывно связана с оптимизацией. Оптимизацию можно рассматривать и как нахождение численного значения глобального экстремума сложной функции.
Эти примеры показывают, что разработка обладающего универсальностью программного комплекса, позволяющего проводить оптимизацию различных по своей природе систем, является актуальной на сегодняшний день.
Полученные результаты.
За время прохождения практики были рассмотрены существующие оптимизационные программные комплексы и выявлены их некоторые недостатки. Самыми важными, на мой взгляд, являются ориентированность только на конкретную предметную область либо чрезмерная сложность, при которой система оптимизации становится лишь небольшой частью программного комплекса. В результате было решено создать относительно простую в использовании систему и, самое главное, универсальную. Исходя из этих пожеланий, были составлены основные требования к системе:
- комплекс должен обеспечивать интуитивно-понятный ввод информации, представленный в графическом виде (специализированный графический редактор);
- желаемую гибкость системы нужно обеспечить за счёт использования формульных зависимостей с некоторым набором встроенных функций и широко распространёнными правилами записи (например, как в языках программирования). Универсальность также достигается в результате применения специальных переменных, от которых зависит результат оптимизации;
- для удобства использования необходимо обеспечить возможность сохранения созданной модели в файл и загрузку её в графический редактор. При загрузке модели дальнейшая работа с ней не должна отличаться от работы с вновь создаваемой моделью;
- результатом работы комплекса является оптимальное (т.е. наибольшее или наименьшее, в зависимости от настроек) значение выхода системы, и значение всех критериев (т.е. переменных, описанных выше), при котором этот оптимум достигается. Эти значения выводятся для ознакомления на экран и параллельно сохраняются в файл.
Выбор «центра» системы – алгоритма вычисления оптимума – пал на предложенном научным руководителем семействе генетических алгоритмов. Данное семейство алгоритмов использует принципы эволюционного развития и обладает следующими замечательными свойствами:
- решение, полученное с помощью данных алгоритмов, с достаточной степенью приближено к точному решению;
- применение аналогов такой биологической операций, как мутация, позволяет избежать «зацикливания» и попадания в локальные экстремумы;
- время поиска решения на порядки меньше, чем затрачиваемое при поиске полным перебором.
На основании требований к программе и проведенного анализа задачи была разработана модульная структура комплекса. Это обеспечило распределение логически связанных подзадач и функций по отдельным модулям. Кроме того, модульное разбиение в значительной степени упрощает процесс отладки приложения. Для каждого модуля были разработаны алгоритмы функционирования. Среди всех алгоритмов наиболее важными, на мой взгляд, являются следующие:
- общий алгоритм работы программы. Этот алгоритм описывает взаимодействие всех модулей, а также программы и пользователя. По этому алгоритму «живёт» весь комплекс, поэтому он является основным, хотя и не детализирует отдельные моменты, а лишь описывает общее поведение.
- алгоритм обхода дерева модели. Модель в системе представляется в виде дерева. Перед запуском модуля поиска решения необходимо удостовериться в корректности информации, сохранённой в модели. Модуль поиска решения считает, что модель составлена корректно, что позволяет на этапе поиска не проводить никаких проверок, а значит и ускорить процесс. При обходе дерева модели проверяется корректность выражений, уникальность имён переменных, отсутствие «зацикливаний» в зависимостях переменных друг от друга и др. В результате применения данного алгоритма пользователь уведомляется об ошибках в модели, те из них, которые могуть быть устранены автоматически – устраняются;
- алгоритм разбора и проверки правильности выражений. Этот алгоритм используется в предыдущем алгоритме, а его часть, связанная с разбором – при вычислении значений выражений. Алгоритм реализует работу конечного автомата;
- алгоритм обнаружения циклов. Данный алгоритм использует информацию о переменных и их зависимостях, представленную в виде ориентированного графа и закодированную с помощью модифицированной матрицы связности. В результате такого кодирования обнаружение циклов упрощается.
- алгоритм поиска оптимального решения. Представляет собой реализацию генетических алгоритмов. Использует информацию о смоделированной системе для создания генотипа. Алгоритм поддерживает некоторые видоизменения, которые задаются с помощью настроек.
Т.к. программа написана на языке C++, который является объектно-ориентированным, то немалое внимание было уделено созданию иерархии классов. Основными являются классы, описывающие элементы модели, и классы для генетических алгоритмов. Базовым для описания элементов модели является класс, содержащий общие черты всех элементов. От него порождаются классы для компонентов, подсистем и системы. Применение базового класса упрощает организацию связанных списков и построение дерева, в котором объекты, всё ж таки, разнородны: корень дерева, узлы и листья. Иерархия классов для генетических алгоритмов сделана несколько проще, т.к. эти классы используются только в одном модуле.
Тестирование комплекса проводилось помодульно, в частности, отдельно тестировались некоторые классы. Т.к. в качестве среды разработки была выбрана Microsoft Visual C++ 6.0 (о причинах выбора именно этой среды разработки будет сказано ниже), то для отладки активно использовались инструментальные средства среды. В частности, использовалась пошаговая трассировка программ с возможностью установки контрольных точек останова и просмотра значений переменных, изменения их «на лету», а также просмотр стека вызова функций. Ещё одним программным средством, которое использовалось при отладке, явилась функция OutputDebugString(). Эта функция очень удобна, т.к. позволяет выводить отладочную текстовую информацию в специализированную консоль в тех приложениях, которые реализованы на функиях GDI и не содержат текстовой консоли. Тестирование проходило по нескольким направлениям: проверка работы каждого модуля в отдельности и в связи друг с другом, проверка правильности решения на простых примерах, проверка отказоустойчивости, т.е. как поведёт себя программа при некорректных входных данных (в том числе и при загрузке «неправильного» файла с описанием модели).
В качестве экономической части было предложено выбрать среду программирования с помощью метода, который широво используется во многих областях. Этот метод, названный методом анализа иерархий, позволяет провести оптимизацию иерархической системы на основе субъективных оценок эксперта, а некоторые его модификации также проверяют состоятельность этих оценок. В основе метода лежит сравнение критериев и задание относительной важности одного перед другим. Примениив данный метод, я получил среду разработки, которая на мой субъективный взгляд наиболее приемлема для написания дипломной работы по выбранной теме. Результатом явился выбор средв Microsoft Visual C++ 6.0.
Часть по производственной и экологической безопасности включает в себя следующие разделы: электромагнитное излучение монитора ЭВМ, электроопасность и пожароопасность и требования к освещению при работе с монитором ПК. Электромагнитное излучение различных устройств (например, сотовых телефонов), отрицательно сказывается на состоянии здоровья человека. В настоящее время существует несколько стандартов, регламентирующих, помимо всего прочего, силу данного излучения. Одним из последних является стандарт TCO’03. Мониторы, особенно с кинескопами на электронно-лучевых трубках (CRT-мониторы) представляют собой устройства повышенной электро- и пожароопасности. Поэтому при работе с ними необходимо соблюдать установленные требования техники безопасности. При работе с монитором большая нагрузка идёт на глаза. Они утомляются, со временем пропадает чёткость изображения, начинает болеть голова. Одним из способов уменьшения такого отрицательного воздействия на организм человека является организация правильного освещения мониторов. Эти проблемы и рассмотренны в последней части дипломной работы.
Результатом практики является необходимая для написания пояснительной записки к дипломной работе информация.
Руководитель от кафедры: профессор кафедры ИПОВС ____________Лисов О.И.