Лабораторная работа №1. Исследование сравнительной эффективности градиентного и покоординатного методов оптимизации. Лабораторная работа №2. Исследование сравнительной эффективности дискретных методов оптимизации
Лабораторная работа
в среде программирования C#
Среда программирования: C#
Название работы: Лабораторная работа №1. Исследование сравнительной эффективности градиентного и покоординатного методов оптимизации. Лабораторная работа №2. Исследование сравнительной эффективности дискретных методов оптимизации
Вид работы: Лабораторная работа
Описание: Лабораторная работа № 1. Исследование сравнительной эффективности градиентного и покоординатного методов оптимизации
Цель работы: исследовать, насколько покоординатный спуск медленнее, чем градиентный. Овладеть навыками подключения подпрограмм, реализующих оба метода.
Работа выполняется парами магистрантов.
Ход работы
1. Получить у преподавателя тексты подпрограмм, выполняющих градиентный спуск с автоматическим выбором шага. Ознакомиться с комментариями в тексте подпрограмм GradDown, GoldenSelection, понять их работу.
2. Найти подпрограмму, вычисляющую оптимизирующую функцию. Заменить функцию на . Значения A, B, C – по вариантам.
Вариант А В С
1 2 4 3
2 2,5 3,5 2,5
3 1,5 4,5 2,5
4 2 3,5 3,5
5 1,5 3,5 3
3. Принять начальной точкой {–0.4, –0.4}, задаться погрешностью .
4. В любом математическом пакете (например, MathCAD) или вручную найти точное значение минимума, решая (численно или аналитически) систему .
5. Написать программу на любом языке программирования, используя предоставленный код. Программа должна, кроме прочего, определять время, затраченное на поиск минимума.
6. Выполнить спуск, сравнить полученный результат с точным (определенным аналитически выше), определить, достигнута ли требуемая погрешность. Определить время работы градиентного метода оптимизации T1.
7. Написать по аналогии с функцией GradDown функцию покоординатного спуска StepDown, используя пример. Функция должна обеспечивать спуск по любому количеству координат, при этом должен использоваться один цикл. То есть конструкция типа
for(x=x0-dx; x<=x0+dx; x+=dx)
for(y=y0-dy; y<=y0+dy; y+=dy)
…..
является недопустимой. Подсказка: переменные, описывающие координаты, должны быть элементами массива.
8. Включите написанную функцию в свою программу, обеспечив для пользователя программы удобство выбора метода спуска, начального шага dx = dy = Δ>ε и дробления шага.
9. Изменяя начальный шаг в разумных пределах, определить время спуска T2(Δ) покоординатным методом. Определить, достигнута ли требуемая погрешность в каждом случае.
10. Построить график сравнения эффективности методов градиентного и покоординатного спуска. Объяснить результат.
11. Исследовать зависимость времени покоординатного спуска от величины коэффициента дробления шага при каком-то неизменном Δ. Построить график, объяснить результат.
12. Отчет о лабораторной работе должен содержать:
a. Описание проделанной работы.
b. Полный листинг полученной программы, скриншот экранной формы.
c. Вывод аналитического значения минимума (если с использованием математического пакета – то и листинг).
d. Сведения о времени спуска и погрешности метода градиентного спуска.
e. Графики (см. п. 10 и п. 11) и выводы по ним.
13. Отчет должен быть оформлен в соответствии с требованиями к оформлению и сдан в виде doc-(docx-)файла.
Лабораторная работа № 2. Исследование сравнительной эффективности дискретных методов оптимизации
Цель работы: исследовать сравнительную эффективность дискретных методов оптимизации (случайный перебор, полный перебор, генетические алгоритмы). Овладеть навыками подключения подпрограмм, реализующих эти методы, на примере задачи о рюкзаке (максимизация стоимости вещей известного объема, помещаемых в рюкзак с ограниченным суммарным объемом).
Работа выполняется парами магистрантов.
Ход работы
1. Получить у преподавателя библиотеку MathHarrixLibrary, реализующую, в том числе, метод генетических алгоритмов, пример организации случайного поиска и файл LongA.cpp, в котором реализовано длинное число с произвольным основанием.
2. Задаться собственными данными об объеме рюкзака, объеме и стоимости набора вещей достаточной длины N.
3. Задаться функцией критерия (эффективность метода). Это может быть
a. стоимость вещей, находящихся в рюкзаке (обычно);
b. отношение стоимости вещей в рюкзаке к объему вещей, взятых в рюкзак;
c. отношение стоимости вещей, взятых в рюкзак, к остатку пустого объема в рюкзаке (надо следить, чтобы не получилось деления на нуль);
d. время максимизации стоимости вещей, взятых в рюкзак;
e. отношение стоимости вещей, взятых в рюкзак, к времени максимизации;
f. и т.п.
4. Написать программу, использующую случайный перебор (с указанием количества вариантов, не превышающих количество вариантов полного перебора 2N), полный перебор и генетические алгоритмы (с указанием настроек ГА, включая количество популяций). Программа должна давать пользователю выбрать и настроить метод, измерять время работы метода.
5. Увеличивая длину набора вещей (параметр исследования) построить таблицу и графики зависимости эффективности метода (п. 3) от N. Для методов случайного поиска и генетических алгоритмов, при каждом запуске выдающих разные результаты, эффективность вычислять как среднее значение по 10 запускам программы.
6. Отчет о лабораторной работе должен содержать:
a. Описание проделанной работы.
b. Полный листинг полученной программы, скриншот экранной формы.
c. График и таблицу (см. п. 5)
d. Объяснения полученного результата.
7. Отчет должен быть оформлен в соответствии с требованиями к оформлению и сдан в виде doc-(docx-)файла.
Год: 2017
Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2017-м году, в рамках этого заказа была разработана программа в среде программирования C#. Если у Вас похожее задание на программу, которую нужно написать на C#, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2017-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.:
+79374242235
Viber: +79374242235 Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |