Учебное пособие: Методические указания к курсовой работе для студентов специальности «Управление и информатика в технических системах»
Название: Методические указания к курсовой работе для студентов специальности «Управление и информатика в технических системах» Раздел: Остальные рефераты Тип: учебное пособие | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Московский государственный университет путей сообщения (МИИТ) Кафедра «Управление и информатика в технических системах» В.Г. Сидоренко Реализация алгоритмов решения задач при проектировании САУ с использованием объектно-ориентированного языка программирования C ++
Рекомендовано редакционно-издательским советом университета в качестве методических указаний для студентов специальности «УПРАВЛЕНИЕ И ИНФОРМАТИКА В ТЕХНИЧЕСКИХ СИСТЕМАХ» Москва - 2008 Московский государственный университет путей сообщения (МИИТ) Кафедра «Управление и информатика в технических системах» В.Г. Сидоренко Реализация алгоритмов решения задач при проектировании САУ с использованием объектно-ориентированного языка программирования C ++ Методические указания к курсовой работе для студентов специальности «Управление и информатика в технических системах» Москва - 2008 УДК 378:656.2:681.3 C-34 Сидоренко В.Г. Методические указания к курсовой работе «Реализация алгоритмов решения задач при проектировании САУ с использованием объектно-ориентированного языка программирования C++» для студентов специальности «Управление и информатика в технических системах». – М.: МИИТ. 2008. – 38 с. В методических указаниях излагаются задания, структура и основные этапы выполнения курсовой работы по дисциплинам «Алгоритмы решения задач при проектировании САУ» и «Вычислительные алгоритмы при исследовании систем управления» для специальности 210100 «Управление и информатика в технических системах». © Московский государственный университет путей сообщения (МИИТ), 2008 Введение Решение задач проектирования и исследования систем управления напрямую связано с решением оптимизационных задач, а именно задач определения таких параметров системы, при которых выбранный критерий оптимальности достигает своего минимального значения. Существует множество методов решения оптимизационных задач для функций одной и многих переменных, каждый из которых обладает как преимуществами, так и недостатками по сравнению с другими. Современный уровень развития вычислительной техники позволяет автоматизировать процесс решения оптимизационных задач, использовать для их решения как стандартные программные продукты, так и создавать собственные специализированные. Необходимой составляющей систем автоматизированного проектирования является блок решения оптимизационных задач. Это определяет актуальность данной курсовой работы. 1 ЦЕЛЬ КУРСОВОЙ РАБОТЫ Целью курсовой работы является формирование у студентов практических навыков решения оптимизационных задач при проектировании и исследовании систем управления с использованием программных средств. 2 Методы одномерной оптимизации Постановка задачи: Задана непрерывная унимодальная целевая функция Рассмотрим следующие методы одномерной оптимизации [1, 3, 6-9, 14]: – метод равномерного поиска или перебора; – половинного деления; – поразрядного поиска; – золотого сечения; – Фибоначчи; – метод средней точки; – метод Ньютона. Два последних из перечисленных методов являются методами первого порядка. Их преимущество состоит в том, что они не требуют проведения трудоемких и объемных вычислений. Недостатком является требование задания целевой функции в аналитическом виде, унимодальности целевой функции в заданном интервале изменения переменной, дифференцируемости целевой функции. 2.1 Метод равномерного поиска 1. Задать допустимую погрешность вычислений точки экстремума 2. Определить число итераций
3. Вычислить значения независимой переменной в пробных точках:
4. Найти значения целевой функции в пробных точках 5. Определить минимальное значение целевой функции путем сравнения значений функции в пробных точках Метод равномерного поиска требует выполнения большого числа вычислений. 2.2 Метод дихотомии (половинного деления) 1. Задать численные значения 2. Определить значения пробных точек
3. Вычислить значения 4. Сравнить 5. Определить полученную (достигнутую) погрешность
где 6. Если 7. Положить
2.3 Метод поразрядного поиска 1. Задать допустимую погрешность определения точки экстремума 2. Выбрать начальный шаг:
3. Положить начальную пробную точку 4. Положить следующую пробную точку 5. Сравнить 6. Если 7. Положить 8. Проверка окончания поиска: если 9. Изменить направление и шаг поиска положив 2.4 Метод Фибоначчи Если необходимо определить минимум функции с наименьшим возможным интервалом неопределенности, но при этом выполнить только n вычислений функции, используют метод Фибоначчи. В этом случае значения функции, полученные в предыдущих шагах, определяют положение последующих точек. Поиск методом Фибоначчи, названный так ввиду появления при поиске чисел Фибоначчи, является итерационной процедурой и состоит в следующем. 1. Задать 2. Найти n – количество вычислений функции из следующих соображений:
где
3. Положить число итераций 4. Определить значения пробных точек
5. Вычислить значения 6. Установить, какое соотношение существует между если 7. Если 8. Положить число итераций 9. Процесс заканчивается, 3.5 Метод золотого сечения Метод «золотого сечения» почти столь же эффективен, как и метод Фибоначчи, однако при этом не требуется знать n - количество вычислений функции, определяемое вначале. Название «золотое сечение» определяется тем, что заданный отрезок делится на две части так, что отношение целого к большей части равно отношению большей части к меньшей. Метод гарантирует нахождение минимума в самых неблагоприятных условиях, однако он обладает медленной сходимостью. Алгоритм вычислений по методу золотого сечения следующий. 1.Задать 2.Выбрать две внутренние точки
3.Вычислить значения 4.Установить, какое соотношение существует между если 5.Определить величину 6.Если 7.Процесс заканчивается, за минимальное значение функции принимается наименьшее из 2.6 Метод средней точки (с использованием первой производной оптимизируемой функции) 1.Задать значение погрешности нахождения точки минимума функции 2.Взять пробную точку, равную 3.Осуществить проверку на окончание поиска. Если 4.Сравнить 2.7 Метод Ньютона (с использованием второй производной оптимизируемой функции) Данный метод применяется, если функция Алгоритм вычислений по методу Ньютона следующий: 1. Задать погрешность определения точки минимума 2. В качестве первой пробной точки взять 3. Осуществить проверку на окончание поиска. Если 4. Определить новую пробную точку: 5. Принять последнюю пробную точку за точку минимума и вычислить минимум целевой функции в этой точке. 3 Методы многомерной оптимизации 3.1 Метод многомерной оптимизации Гаусса – Зейделя (метод покоординатного спуска) 1. Задать погрешность определения местоположения точки минимума 2. Принять одну из переменных
3. Задаться с некоторым шагом (величина шага обычно берется в интервале 4. С заданной величиной погрешности 5. За точку минимума принять точку, имеющую последние фиксированные значения всех переменных, минимум функции найдется как ее значение в этой точке. 3.2 Метод Хука – ДживсаЭтот метод был разработан в 1961 году, но до сих пор является весьма эффективным и оригинальным. Поиск состоит из последовательности шагов исследующего поиска вокруг базисной точки, за которой в случае успеха следует поиск по образцу. Описание этой процедуры представлено ниже: 1.Задать погрешность определения местоположения точки минимума 2.Задать значение базисной точки 3.Задать величину начального шага для каждой переменной 4.Вычислить 5.Каждая переменная по очереди изменяется прибавлением длины шага Таким образом, мы вычисляем значение функции 6.Если 7.Если Разумно двигаться из базисной точки
В общем случае
8.Затем исследование следует продолжать вокруг точки 9.Если наименьшее значение в п.8 меньше значения в базисной точке 10. Завершить этот процесс, когда длина шага (длины шагов) будет уменьшена до заданного малого значения. 3.3 Метод полного перебора (метод сеток)Многомерные задачи, естественно, являются более сложными и трудоемкими, чем одномерные, причем обычно трудности при их решении возрастают при увеличении размерности. Для того чтобы вы лучше почувствовали это, возьмем самый простой по своей идее приближенный метод поиска наименьшего значения функции. Покроем рассматриваемую область сеткой G с шагом h и определим значения функции в ее узлах. Сравнивая полученные числа между собой, найдем среди них наименьшее и примем его приближенно за наименьшее значение функции для всей области. 3.4 Градиентный метод. 1. Задать значение погрешности вычисления экстремума функции 2. Задать значение начальной пробной точки 3. Задать величину начального шага 4. Вычислить значения частных производных функции в пробной точке: 5. Проверить условие достижения заданной точности: Если это условие выполняется по всем переменным, то поиск завершается и за точку минимума принимается точка 6. Определить значение координат новой пробной точки 7. Вычислить значение функции в последней пробной точке 8. Положить 3.5 Метод наискорейшего спуска многомерной функции Выбор шага 1. Задать значение погрешности определения местоположения минимума функции 2. Задать значение начальной пробной точки 3. Вычислить значение частных производных функции в рассматриваемой пробной точке: 4. Проверить условие достижения заданной точности: 5. Если это условие выполняется по всем переменным, то переход к п. 8, иначе перейти к п. 6. 6. Определить наилучшие значения шага
Из этих формул находится Если Поиск тем эффективнее, чем ближе поверхность на участке поиска к линейной аппроксимации, т. е. в достаточном удалении от экстремума. Вблизи экстремума рекомендуется перейти на чисто градиентный метод и задавать 7. Вычислить значение каждой координаты
Переход к п. 3. 8. За точку минимума принимается точка Вследствие конечности шагов поиска градиентные методы также, как и методы покоординатного поиска, могут привести к ложному оптимуму, особенно при наличии «оврагов» и «гребней». 3.6 Метод Ньютона Метод Ньютона использует квадратичную аппроксимацию функции
где Оптимизируя т. е. и направление, и значения шага определяются одновременно. Для квадратичных функций достаточно сделать один такой шаг, чтобы найти оптимум. Сходимость метода Ньютона к локальному экстремуму гарантируется только при положительности 3.7 Метод сопряженных направлений К другому классу методов, улучшающих градиентный поиск, относятся методы сопряженных направлений. При определении направления поиска на k -м шаге они учитывают предыдущее направление, т. е.:
где Благодаря суммированию направлений 3.8 Методы случайных направлений Эти методы позволяют выбрать направления поиска случайным образом с помощью программ выработки случайных чисел. Простейшие из них возникли при включении элементов случайности в детерминированные методы направленного поиска. Например, при покоординатном поиске последовательность варьируемых переменных может устанавливаться случайно. Или в градиентных методах градиент можно определять по выражению:
где Статистический градиент определяется проще по сравнению с точным – при заданном l не зависит от числа переменных, но в то же время может служить лишь математическим ожиданием градиента, вычисленным с вероятностью, зависящей от l . Более развитые случайные методы полностью исключают определенность при выборе направлений поиска. Если принять, что
где
Чтобы избежать нормирования векторов направления, присущего детерминированным методам, можно рассматривать Эффективность поиска можно увеличить, если ограничить множество случайных направлений. Например, можно потребовать, чтобы случайные направления приводили к не худшему результату, чем движение по градиенту. В общем многомерном случае лучшие случайные направления находятся внутри так называемого направляющего конуса с вершиной в исходной точке Кроме гиперсфер и направляющих косинусов для построения случайных направлений используются также многогранники, например симплексы. В случае двух переменных регулярный симплекс представляет равносторонний треугольник, в случае n переменных – многоугольник с равными гранями и В поиске с многогранником сначала случайным образом задаются вершины симплекса или комплекса. В каждой вершине вычисляются значения На основе рассмотренных способов выбора случайных направлений построен ряд эффективных алгоритмов поиска. 3.9 Метод Нелдера – МидаМетод Нелдера — Мида (называется также поиском по деформируемому многограннику) является развитием симплексного метода Спендли, Хекста и Химсворта. Эта конфигурация рассматривается в методе Спендли, Хекста и Химсворта. Идея метода состоит в сравнении значений функции в В методе Спендли, Хекста и Химсворта симплекс перемещается с помощью трех основных операций: отражения, растяжения и сжатия. Смысл этих операций станет понятным при рассмотрении шагов процедуры. 1. Найдем значения функции 2. Найдем наибольшее значение функции 3. Найдем центр тяжести всех точек, за исключением точки
и вычислим 4. Удобнее всего начать перемещение от точки
т.е.
5. Сравним значения функций Если Коэффициент растяжения
т.е.
6. Если 7. Если 8. Если 9. Если 10. Сравним значения функции Если Если 11. В этом случае
где Тогда
Если
т.е.
12. Сравним значения функции Если Если 13. На этом шаге мы уменьшаем размерность симплекса делением пополам расстояния от каждой точки симплекса до Таким образом, точка Затем вычисляем 14. Проверка сходимости основана на том, чтобы стандартное отклонение
где Если Коэффициенты Начальный симплекс выбирается на наше усмотрение. В данном случае точка
…,
где 4 ЗАДАНИЯ К КУРСОВОЙ РАБОТЕ I. Создать программную реализацию процедуры вывода на экран координатной плоскости с возможностью выбора пользователем обозначения откладываемых величин, минимального и максимального отображаемых значений (они могут быть одного знака), а также шага оцифровки по каждой из осей. II. Организовать дружественный для пользователя интерфейс ввода исходных данных и выбора процедуры исследования функций. III. Организовать проверку корректности ввода числовых данных с клавиатуры. IV. Создать программную реализацию следующих процедур исследования функции одной переменной: 1. Отображение графика исследуемой функции при заданных пользователем параметрах. 2. Изменение отображения графика исследуемой функции заданным образом в соответствии с командами, задаваемыми с клавиатуры. При нажатии на клавиатуре одной из заданных клавиш исследуемый параметр увеличивается на величину заданного шага, а при нажатии на клавиатуре другой – уменьшается на величину заданного шага. 3. Поиск экстремума функции заданным методом оптимизации на заданном пользователем интервале изменения независимой переменной. Отображение на экране процесса приближения к экстремуму. Подсчет количества шагов в процессе оптимизации. 4. Организация вывода на экран и печати в табличном виде, сохранения в файл и чтения из него определенных номером варианта данных. Организация выбора имени файла при сохранении и чтении данных. Проверка правильности задания имени файла. V. Исследование функции двух переменных. 1. Отображение исследуемой функции при заданных пользователем параметрах на плоскости заданным способом. Линии уровня или характеристики должны отображаться разными цветами. 2. Поиск экстремума функции заданным методом оптимизации на заданных пользователем интервалах изменения независимых переменных. Отображение на экране процесса приближения к экстремуму. Подсчет количества шагов в процессе оптимизации. VI. Описать функционирование устройства, описываемого заданной функцией, использованные методы оптимизации, провести их сравнение с другими. VII. При работе в среде визуального программирования создать приложение Windows , реализующее решение сформулированных в п.п.I-V задач, а также перечисленных ниже. 1.Создание приложения заданного типа с диалоговым окном и набором элементов управления в соответствии с заданием на курсовую работу для ввода данных, выбора типа решаемой задачи и ее решения. 2.Решение задачи на поиск условного экстремума в задаче линейного программирования. 3.Выбор начального приближения при решении задач поиска экстремума путем нажатия на левую кнопку манипулятора типа «мышь» на точке графика функции. 4.Изменение размера окна. 5.Набор функции из заданных элементов для функции нескольких переменных. 6.Создание электронной таблицы с данными. 7.Организация вывода на печать из приложения графического изображения. 8.Создание сетевого приложения. С автоматизированного рабочего места (АРМ) преподавателя передается задача. Студент решает ее вручную и передает ответ преподавателю, тот – студенту оценку. 9.Создание элементов ActiveX или процедур в составе DLL на основе разработанного в п.п.I-VII программного обеспечения и организация их вызова из другой программы. VIII. Оформить курсовую работу в соответствии с требованиями, сформулированными в [2]. Курсовая работа должна включать в себя: – таблицы соответствия входных, выходных, справочных, промежуточных переменных;
– описание математических методов решения задач; – схемы алгоритмов и их описание; – текст созданных программ в приложении к курсовой работе; – тестовый пример; – результат программного решения тестового примера. IX. Программное обеспечение должно быть разработано на объектно-ориентированном языке программирования С++ [4, 5, 10-13]. Каждая из созданных программ должна быть представлена в виде исполняемого файла (*.exe ).
При выполнении п.IV задания к курсовой работе по номеру варианта определяются: – исследуемая функция; – изменяемый параметр; – шаг изменения параметра; – способ изменения изображения; – клавиши, нажатие на которые отслеживается – метод поиска экстремума; – данные, записываемые в файл. Варианты исследуемых функций. 1. Квадратичная парабола
где 2. Характеристика «вход-выход» магнитного усилителя (МУ) – зависимость тока в рабочей обмотке
где 3. где 4. Зависимость момента, развиваемого трехфазным асинхронным двигателем где 5. Зависимость ускорения нагрузки где
6. Зависимость мощности
где 7. Функциональная зависимость вращающегося трансформатора от угла поворота ротора
где
8. Зависимость отображения заданной функциональной зависимости вращающегося трансформатора, вызванной поперечной реакцией выходной обмотки при нагрузке, от угла поворота ротора:
где 9. Зависимость погрешности отображения заданной функциональной зависимости вращающегося трансформатора, вызванной поперечной реакцией выходной обмотки при нагрузке, от угла поворота ротора: 10. Зависимость относительной погрешности отображения заданной функциональной зависимости вращающегося трансформатора, вызванная поперечной реакцией выходной обмотки при нагрузке, от угла поворота ротора: 11. Зависимость к.п.д. трансформатора
где
Варианты способов изменения изображения на экране компьютера при вводе команды на изменение параметра: 1. стирается отображенный график функции и отображается график исследуемой функции, построенный для нового значения изменяемого параметра; отображение ведется одним цветом; 2. отображается график исследуемой функции, построенный для нового значения изменяемого параметра, график функции, построенный для предыдущих значений параметров, стирается при смене направления изменения параметра, если он был построен ранее; 3. отображается график исследуемой функции, построенный для нового значения изменяемого параметра; каждый новый график отображается другим цветом; 4. отображается график исследуемой функции, построенный для нового значения изменяемого параметра; каждый новый график отображается линией другого типа (сплошной, пунктирной, точечной и т.д.); 5. стирается отображенный график функции и отображается график исследуемой функции, построенный для нового значения изменяемого параметра; с возрастанием модуля параметра толщина линий возрастает. Варианты данных, записываемых в файл. 1. Значения функции при изменении независимой переменной с заданным шагом при выбранном пользователем значении параметра. 2. Значения функции при изменении параметра с заданным шагом при выбранном пользователем значении независимой переменной. 3. Значения функции в точках пересечения с осями координат при изменении параметра с заданным шагом. 4. Значения аргумента и функции в точке экстремума при изменении параметра с заданным шагом. При выполнении п. V задания к курсовой работе по номеру варианта определяются: – исследуемая функция; – способ отображения функции на плоскости; – метод поиска экстремума. Варианты исследуемых функций. 1. Эллиптический параболоид:
где 2.Зависимость амплитуды силы тока
3. Зависимость амплитуды напряжения на индуктивности
4. Зависимость амплитуды напряжения на емкости
5. Зависимость амплитуды напряжения на активном сопротивлении 6.Функция Розенброка
где 7.Функция Пауэлла
8.Двумерная экспоненциальная функция
где СПИСОК ЛИТЕРАТУРЫ 1. Аветисян Дж. А. И др. Оптимальное проектирование электрических машин на ЭВМ. – М.: Энергия, 1976. – 208 с. 2. Баранов Л.А., Максимов В.М. Методические указания к дипломному проектированию. – М.: МИИТ, 2005. – 36 с. 3. Волков Е. А. Численные методы. Учебное пособие. – М.: Наука, 1982. 4. Грегори К. Использование Visual C ++ 6. – М.; СПб.; К.: Издательский дом «Вильямс», 2000. – 864 с. 5. Дейтел Х., Дейтел П. Как программировать на С++. – М.: ЗАО «Издательство БИНОМ», 1999. – 1024с. 6. Калиткин Н. Н. Численные методы. – М.: Наука, 1978. 7. Коршунов Ю.М. Математические основы кибернетики. – М.: Энергия, 1980. 8. Моисеев Н.Н., Иванилов Ю.П., Столярова Е.М. Методы оптимизации. – М.: НАУКА, 1978. 9. Норенков И.П., Маничев В.Б. Системы автоматизированного проектирования электронной и вычислительной аппаратуры. – М.: Высшая школа, 1983. 10.Павловская Т.А. C/C ++. Программирование на языке высокого уровня. Учебник для ВУЗов. – Питер, 2006. 11.Павловская Т.А. C ++. Объектно-ориентированное программирование. Практикум. – Питер, 2005. 12.Страуструп Б. Язык программирования C ++. Специальное издание. – Бином, 2001. 1099с. 13.Шлее М. Qt . Профессиональное программирование на С ++. – BHV-СПб, 2005. 544с. 14. http://www.intuit.ru/department/mathematics/mathprog. Приложение 1. Набор символов ASCII
Цифры слева от таблицы являются первыми цифрами десятичного эквивалента кода символа (0-127), а цифры вверху таблицы представляют собой последнюю цифру кода символа. Например, код символа 'F' равен 70, а код символа '&' - 38. СОДЕРЖАНИЕ
Учебно-методическое издание Сидоренко Валентина Геннадьевна Методические указания к курсовой работе «Реализация алгоритмов решения задач при проектировании САУ с использованием объектно-ориентированного языка программирования C++» для студентов специальности «Управление и информатика в технических системах»
127994, Москва, ул. Образцова, 15 Типография МИИТа |