Доклад про генетические алгоритмы

В Москве есть такое замечательное сообщество — Московский клуб программистов. Раз в две недели участники этого сообщества собираются (в последнее время площадку для таких митапов предоставляет компания Леруа Мерлен у себя в офисе на Шаболовке) и обсуждают какие-нибудь две темы. Обычно это происходит в виде доклада с последующими вопросами или в виде модерируемого обсуждения.

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

Optlib. Реализация генетического алгоритма оптимизации на языке Rust

Optlib. Реализация генетического алгоритма оптимизации на языке Rust

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

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

Именно такую библиотеку я решил написать на Rust. Так появилась библиотека optlib. Ссылки на исходники и документацию:

На данный момент в этой библиотеке реализовал только генетический алгоритм, но зато со всеми возможностями, которые хотел. Точнее, там есть еще, что дополнить и улучшить, но в целом структура получилась достаточно гибкая. Генетический алгоритм с использованием библиотеки optlib собирается как из кубиков: алгоритм скрещивания берем этот, алгоритм мутации — тот и т.д.

Помимо документации я написал довольно большую статью про библиотеку optlib и генетический алгоритм, которую можно прочитать тут — Библиотека Optlib. Реализация генетического алгоритма оптимизации на Rust. Эту же статью я опубликовал на Хабре — https://habr.com/ru/post/448870/.

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

О языке Rust и книге Дж. Блэнди и Дж. Орендорфа «Программирование на языке Rust»

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

Rust — это компилируемый язык, предназначенный в том числе и для системного программирования. Основная «фишка» языка — это исключение на уровне компиляции ошибок работы с памятью — не инициализированные указатели, висячие ссылки и т.п. — и избегание неопределенного поведения. При этом не используется сборщик мусора, а сам язык ориентирован на максимально возможную производительность. При этом стиль программирования на Rust сильно отличается от традиционного объектно-ориентированного программирования. Если говорить очень грубо, то это скорее напоминает C с интерфейсами и очень необычной работой с памятью. Разработчики Rust позиционируют язык как замена C++. Особенности языка заставляют заранее продумывать структуру взаимодействия используемых объектов, а не плодить сложную сеть из взаимосвязанных объектов в надежде, что сборщик мусора потом все уберет. У Rust очень строгий компилятор, который откажется компилировать программу, если у него не будет уверенности в том, что она корректно работает с памятью, и что не будет гонок данных в многопоточной программе.

Читать далее ‘О языке Rust и книге Дж. Блэнди и Дж. Орендорфа «Программирование на языке Rust»’ »