TL; DR: мне нужно организовать семинары для своего отдела. Я ленив, поэтому написал код, который сделает это за меня. Да, можно использовать и даже улучшать.

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

За одним заметным исключением

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

Тем не мение…

Даже если это увлекательно, на организацию семинаров может уйти много времени. Вам необходимо связаться с возможными выступающими, найти для них подходящую дату, обсудить их ограничения в поездке, составить их график визита, включая встречи, обеды, семинары и т. Д. Составление их расписания на день визита также является деликатной задачей. , в котором вам нужно стать экспертом в переговорах и профессиональным дипломатом. Ваши коллеги хотят встретиться с докладчиком для обсуждения своего исследования, пообедать и поужинать с докладчиком, и часто бывает сложно управлять предпочтениями и ожиданиями каждого. Мне пришлось потратить много времени на то, чтобы убедиться, что те люди, которые действительно хотели встретиться с докладчиком, имели возможность сделать это в нужное время (из-за ограничений, продиктованных преподаванием и другими повседневными делами). Раньше это занимало большую часть моей недели, особенно для громких имен, пользующихся большим спросом. Представьте себе бесконечные обмены электронными письмами с изменением планов в последнюю минуту, к радости вашим истинным поклонникам, которые должны были исправить то, что можно исправить.

Автоматизируйте это дерьмо

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

Введите smnr-mngmt

Это класс Matlab, который автоматически составляет расписание посещения семинара. Он работает в симбиозе с шаблоном Google Form и Google Spreadsheet, где собраны предпочтения для слотов и блюд. Ваши коллеги могут выразить, насколько им нравится этот конкретный слот, по шкале от 0 (не могу) до 5 (этот слот идеально подходит для меня). Они также могут выразить свой общий интерес к докладчику от 1 (я рад помочь, но не совсем в ее / его работе) до 5 (мы работаем над теми же темами, необходимо встретиться с ней / ним).

Почему Матлаб?

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

Венгерский алгоритм

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

Гугл твой друг

Как упоминалось выше, код использует Google Form для сбора настроек, которые затем сохраняются в Google Spreadsheet. Чтобы перенести эти данные в свой ноутбук, я воспользовался библиотекой GetGoogleSpreadsheet (опять же, ленивый мальчик).

LaTeX и pdf

Код предполагает, что у вас есть какая-то установка LaTeX, поскольку он создает файл tex с расписанием, а затем использует pdflatex для его компиляции в файл pdf.

Увеличение скоростиz

Теперь мне нужно настроить форму Google из шаблона (потраченное время, около 1-2 минут, большую часть времени слоты в основном одинаковы), подождать, пока мои коллеги заполнят форму, и за день до семинара, просто запустите код Matlab примерно на 0,2 секунды. Распределение является лучшим, что вы можете получить с учетом предпочтений, высказанных вашими коллегами, поэтому жалоб нет. Могут быть небольшие изменения в последние минуты, но пока вы ждете до самой последней минуты (скажем, после полудня перед датой семинара) для запуска кода, все будет в порядке. И в любом случае, когда у вас есть файл LaTeX, становится легко изменить расписание на месте.

Нужна помощь

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