• Регистрация
Sancho
Sancho +49.25
н/д

Кроме обучения алгоритмам и оптимизации нужно помочь студентам работать и думать, как инженеры

02.11.2020

Студенты-инженеры способны решать гораздо более сложные задачи, чем мы думаем.

Я обнаружил это преподавая курс «Алгоритмы и оптимизация», где студенты решали задачи оптимизации, в которых необходимо было принять решения на какие компромиссы пойти, чтобы удовлетворить противоречивым требованиям и прийти к жизнеспособному решению.

Хотя назначаемые мной задачи легко понять - например, помочь фермеру решить, какие культуры посадить для получения максимальной прибыли, - их сложно решить аналитически без соответствующего набора инструментов. Студентам требуется объединить понятия, усвоенные в первый год обучения, с навыками программирования для разработки математического решения и преобразования его в код или модель с последующим отображением, и интерпретацией результата.

MATLAB и Simulink позволяют студентам решать задачи такой сложности за один семестр. Вместо того, чтобы сосредотачиваться на деталях реализации нижнего уровня - уровня компонентов, они могут использовать встроенные функции и блоки для разработки решений, которые на Python, C или C# занимают до 10 раз больше времени.

Введение в программирование в MATLAB

Как правило, студенты, изучающие алгоритмы и оптимизацию, уже прошли вводный курс программирования, но для большинства из них MATLAB ещё неизвестен.

Для знакомства с языком MATLAB и средой разработки, в первом задании студентам можно поставить задачу создания простого пользовательского интерфейса. (рисунок 1).

Рисунок 1. Графический интерфейс пользователя, созданный студентом в MATLAB

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

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

Каждый из этих сценариев теоретически легко понять, но ни один не имеет очевидного математического решения.

Студенты сначала переводят словесное описание проблемы в систему уравнений. Затем они должны определить, какие методы нелинейного программирования использовать и применить их для решения задачи в MATLAB.

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

Динамические оптимизации в Simulink

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

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

Они разрабатывают модели Simulink, в которых имитируются осадки, скорость ветра, облачный покров и другие переменные окружающей среды с использованием случайно сгенерированных значений в пределах заранее определенного диапазона (рисунок 2).

Рисунок 2. Модель Simulink, созданная студентом для оптимизации выбора сельскохозяйственных культур.

Они включают код MATLAB из прошлых заданий как определяемые пользователем функциональные блоки, а затем уточняют код и модель, пока не найдут решение, которое работает для различных наборов динамических условий.

Для разработки моделей, студенты должны сначала построить отдельные компоненты, а затем выяснить, как объединить их в целостную систему. Я советую им тестировать модели чаще и как можно раньше, а не ждать, пока будет собрана вся система.

Я также показываю им, как они могут использовать блоки Simulink Scope для построения сигналов в любой точке своей модели и отслеживания ошибок в системе, как это сделал бы инженер при отладке реальной системы (рис. 3).

Рисунок 3. Примеры выходных данных блока Simulink Scope.

Работаем как инженеры

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

Даже если они решают работать вместе, каждый студент должен сдать свое собственное задание и быть в состоянии объяснить мне, как работает каждая строка кода MATLAB.

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

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

MATLAB для продвинутых проектов

Недавно я начал преподавать курс для четверокурсников по анализу данных, в котором студенты используют MATLAB для выполнения более сложных заданий. Эти задания основаны на моих собственных исследованиях и диссертациях, а также написанных моими аспирантами. Я разбил анализ данных на три этапа.

На первом этапе студенты выполняют простые статистические исследования и визуализацию данных.

Затем они применяют статистические измерения, чтобы увидеть, как различные подмножества данных отличаются друг от друга. Наконец, они создают модели регрессии, нейронной сети и дерева решений и используют их для прогнозирования на основе данных.

Студентам было необходимо закончить выполнение их экзаменационных заданий в течение 6 недель.

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

Потом я узнал, что этот студент поделился знаниями, полученными от меня, со своими однокурсниками - он действовал как своего рода старший инженер или ведущий инженер, работающий с младшими инженерами над реальным проектом.

Почти каждый ученик курса выполнил свои задания и сделал это хорошо.

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

Автор Элвин Хоффман, Северо-Западный университет

Источники

  1. MathWorks

Теги

    02.11.2020

    Комментарии

    • Александр Скуснов Леонидович
      Александр Скуснов Леонидович +2982.00
      19.11.2020 12:30

      Ну, Санчо, разочаровал: я-то думал, что это описание наших студентов и преподавателей. А оказалось, некий Элвин Хоффман (молодец, конечно).

      Предупреждать надо в начале.

      • Sancho
        Sancho+49.25
        19.11.2020 19:51

        Зарубежный опыт может быть тоже полезен)) 

        • Александр Скуснов Леонидович
          Александр Скуснов Леонидович +2982.00
          20.11.2020 06:00

          Кто спорит? Что бы мы без Матлаба делали?