Архив рубрики: Публикации

Генетический алгоритм: эволюция помогает подросткам

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

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

Генетический алгорим (далее ГА) — это метаэвристический (metaheuristic) универсальный (general-purpose) алгоритм.

Метаэвристические алгоритмы — это мощнейший, популярный класс оптимизационных методов, сила таких алгоритмов в способности решения сложных задач без знания пространства поиска. Фактически такие алгоритмы ищут случайным образом решение и останавливаются при достижении какого-либо условия или числа операций. Иногда можно доказать, что найденное решение близко к оптимальному, но на практике, оптимальное решение нужно далеко не всегда. Вот неполный перечень метаэвристических алгоритмов: алгоритм оптимизации муравьиной колонии, эволюционные вычисления, включая ГА, итеративный локальный поиск, метод имитации отжига, алгоритм поиска с запретами и другие.

Алгоритм считается универсальным (общего назначения), если вы можете взять различные задачи и реализовать с его помощью решение.

Генетический алгоритм основывается на процессе эволюции и трёх основных процессах: селекция (выбор лучших особей), скрещивание (выбор двух случайных особей и смешивание их) и мутации (случайные изменения особей).

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

 

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

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

Будьте готовы, что теория иногда разнится в терминах.

Проблема

Представим, что у нас есть проблема: мама отправляет за хлебом, нужно встретиться с друзьями, магазин закрывается рано, а еще нужно успеть погулять с девочкой. Вероятно, вы думаете, что такие проблемы никого не волнуют, но если вы вспомните каково это быть подростком, то думаю, что проблема вполне реальна. Также в качестве входных данных нам дается матрица весов. Если мы проиндексируем наши действия, как 0 (сходить за хлебом), 1 (встретиться с друзьями) и 2 (погулять с девочкой), то получится следующая матрица весов. Индекс строки будет означать, что действие выполнится первым, а индекс столбца — это действие которое будет выполнено следом.

Содержимое клеток означает следующее:

  • позитивное значение — действие желательно пропорционально значению;
  • негативное значение — действие нежелательно пропорционально значению;
  • 0 — действие может быть выполнено без какого-либо оттенка;
  • «-» — действие не допустимо.
    0     1     2
------------------
0| - -0,5 -1
1| 0 - 0.5
2| 0 0.5 -

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

Решение

Спроектируем решение с помощью генетического алгоритма. Как вы уже знаете нам нужно создать случайную популяцию, но что будет считаться индивидом? Нам необходимо построить наилучшим образом цепочку действий, т.е. чтобы сумма коэффициентов из матрицы с весами была максимальна. Индивидом в нашем случае является последовательность действий, т.е. каждый генотип содержит одну хромосому, которая будет иметь 3 гена, которые и представляют из себя цепочку. Например, индивид с генотипом с одной хромосомой, который содержит последовательность генов «1, 2, 0» представляет из себя решение «встретиться с друзьями -> встретиться с девочкой -> сходить за хлебом».

Как оценить такое решение? Для этого нам нужно определить целевую функцию (в генетическом алгоритме она называется функцией приспособленности). Простым языком, это функция, результат которой дает нам представление о том на сколько хорош о наше решение (особь). В нашем случае, целевая функция это сумма весов переходов. Мы должны обойти последовательность и в результате переход 1->2 дает 0.5, а 2->0 дает 0, итого, в сумме целевая функция дает значение 0.5.

Селекция

Как вы понимаете, теперь мы умеем оценивать «лучших» особей, однако, подходов к селекции всё равно много. Простейший способ выбрать лучших — отсортировать особей по значениям целевой функции и выбрать N штук с наибольшим значением. Такой селектор называется Truncation Selector. Еще один интересный и популярный экземпляр это Tournament Selector. Всё зависит от решаемой задачи. Как вы понимаете, после селекции в популяции следующего поколения остается свободное место и, в зависимости от подхода, новое поколение может быть наполнено либо дубликатами лучших особей, либо случайными особями. Я нашел интересную статью в которой разбираются 6 популярных методов для селекции. Вы сможете скачать эту статью по ссылке.

Скрещивание

Для операции скрещивания также существует множество подходов. В англоязычной википедии есть не плохое описание некоторых из них (ссылка). Для рассматриваемого случая с цепочкой действий один из лучших подходов к скрещиванию называние Cycle Crossover. Как он работает? Когда мы скрещиваем две особи в их генотипах мы находим общий цикл и сохраняем его для потомков, а вот гены не задействованные в циклах меняются местами. Для цепочек из трёх генов такой подход, конечно бесполезен, как и не оправдано использование этого алгоритма, но всё же. В тот момент, когда я пытался осознать этот способ скрещивания лучше всего мне помогло вот это видео на YouTube:

Cycle Crossover

 

Мутация

В нашем случае мутация это случайный обмен случайных позиций для двух генов, т.е. это обычная смена последовательности. Здесь даже объяснения не нужны: была хромосома 12-0, мы сделали обмен для 0 и 1 позиции (ранее случайно определенных) и получили мутировавшую хромосому 21-0. Обычно, вероятность мутации сильно ниже вероятности скрещивания.

Реализация

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

Я подскажу вам одну отличную библиотеку для Java, которой сам пользовался: jenetics.

Примеры работы с такой библиотекой вы можете найти в документации к ней, либо вот здесь.

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

При подготовке к статье в качестве теоретических оснований я использовал: http://tvim.info/files/56_72_Shcherbina.pdf

Автор: Roman Brovko

Размер обуви США на «Алиэкспресс»

размер обуви сша на алиэкспресс таблица

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

Замена вздутых конденсаторов на материнской плате.

Принесли компьютер и рассказали, что он плохо работает, включается не с первого раза, тормозит, не работают два USB-порта.

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

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

Они вздулись и повзрывались.

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

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

Подготавливаем конденсаторы для замены. Номинал конденсаторов написан на их корпуса. В нашем случае это 2200uF 6,3V. Покупаем такие же или очень близкие по номиналу. Напряжение меньше 6,3V не подойдет. Больше можно, но не меньше. Конденсаторы с других старых мат. плат брать не рекомендую. Они внешне могут быть нормальные, а внутри уже покойники или близки к этому состоянию.

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

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

Собираем и проверяем работу. ПК запустился, но остановился при загрузке с сообщением Floppy disk fail (40). Для продолжения нужно нажать F1. Система проверяет дискетный дисковод и не находит.

Каждый раз жать F1 неудобно. Идем в BIOS и выставляем опцию Boot Up Floppy Seek в положение Disabled (отключено). Сохраняем настройки F10.

Теперь проверка дискетного дисковода не будет проходить, ПК загрузился и стал нормально работать. После нескольких часов тестов он был возвращен своему владельцу (разогнали его немножко : )



2017-10-30T20:46:36
Системный блок

Как сделать снэпшоты системы Linux с помощью Timeshift

Linux не проявляет милосердия, когда у вас нет резервной копии.

Существует несколько резервных утилит, включая System Restore для Windows и Time Machine для Mac OS.

Timeshift – это программное обеспечение с открытым исходным кодом, которое регулярно получает  снэпшоты вашей файловой системы Linux, которые вы можете восстановить позже, если вы случайно сделаете вашу систему непригодной для использования.

Функция Timeshift работает в двух режимах: режиме Rsync и режиме BTRFS.

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

В режиме BTRFS моментальные снимки берутся с использованием файловой системы BTRFS.

BTRFS поддерживается только в системах, имеющих подтомы типа Ubuntu.

В этой статье мы установим Timeshift на различные дистрибутивы Linux и рассмотрим его возможности.

Установка Timeshift

Дистрибуты на основе Ubuntu

Вы можете использовать утилиту apt для установки Timeshift для всех версий ОС Debian, таких как Ubuntu, Linux Mint, Elementary OS и т. д.

 # add-apt-repository ppa:teejee2008/ppa

# apt-get update

# sudo apt install timeshift 

 

 

Установка из репозитория GitHub

Используя репозиторий GitHub, вы можете установить Timeshift на все Linux-версии, такие как Linux Mint, Kali OS, Ubuntu, Arch Linux и Manjaro.

# wget https://github.com/teejee2008/timeshift/releases/download/v17.10/timeshift-v17.10-amd64.run

# chmod +x timeshift-v17.10-amd64.run

# ./timeshift-v17.10-amd64.run 

 

 

Чтобы установить 32-разрядную версию, выполните следующие действия:

# wget https://github.com/teejee2008/timeshift/releases/download/v17.10/timeshift-v17.10-i386.run 

# chmod +x timeshift-v17.10-i386.run 

# ./timeshift-v17.10-i386.run 

Удаление Timeshift

Timeshift может быть удалена с использованием любой из этих двух простых команд.

Первая команда работает с системами на базе Debian, а вторая работает с любым Linux.

 # apt-get remove timeshift 

 

 

 # timeshift-uninstall 

 

Настройка Timeshift

Вы можете запустить Timeshift из терминала, набрав timehift-launcher.

Вам будет предложено ввести пароль для использования приложения. Ввод только timeshift в терминале выдаст вам только версию.

Timeshift имеет несколько важных функций, которые требуют очень мало времени и усилий для настройки.

Это основные функции, описанные в разделе «Настройки».

Type

Этот параметр запрашивает тип снэпшотов, которые вы хотите использовать.

Вы можете делать их с помощью rsync или BTRFS. Различие между этими двумя объяснялось ранее.

Location

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

Здесь вы можете выбрать, где вы хотите сохранить снэпшоты.

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

Schedule

Чем чаще вы делаете снэпшоты, тем больше места они занимают.

Вы можете планировать, когда будут сделаны снэпшоты.

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

Users

Timeshift не является инструментом резервного копирования для ваших личных файлов, а скорее для файлов и настроек вашей системы.

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

Вы можете включить ваши данные пользователя в этот раздел, а также ваши настройки (скрытые файлы).

Filters

Вы можете добавить папки или файлы, которые соответствуют определенным критериям, которые вы предоставляете.

Использование Timeshift

Как сделать снэпшот

Нажмите «Create», и операция начнется немедленно.

Если вам не хватает места, вы будете предупреждены об этом.

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

Восстановление из моментального снэпшота

Нажмите кнопку «restore» и нажмите «next».

Вы можете восстановить моментальные снимки из запущенной снэпшоты или Live Live CD (после установки Timeshift).

Если восстановите систему, вам потребуется перезагрузка.

Вы можете восстановить свои снэпшоты на другие тома или разделы. Обратите внимание, что выполнение этого будет перезаписывать ваши данные.

Существуют и другие варианты в Timeshift, такие как удаление и просмотр снэпшотов.

Вы можете выполнить эти операции или узнать полезные команды в командной строке, набрав timehift.



2017-10-30T13:49:26
Медиа

Защита хостинга. Уязвимость в логах

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

Если хотите взломать чей-то сайт, то вам запрещено читать дальше! Эта статья — не пособие для взлома, а наблюдение за небезопасными хостингами! Читать

MikroTik RADIUS Server (User Manager) Installation

RADIUS Server is a centralized user authentication, authorization and accounting application. RADIUS authentication gives the ISP or network administrator ability to manage PPP users, login users and Hotspot users from one server throughout a large network. MikroTik RouterOS has a RADIUS client that is able to authenticate login users, Hotspot users and PPP users through a RADIUS server. MikroTik team also developed a totally separate RADIUS server package named User Manager that can be used to authenticate MikroTik users smoothly. But frankly speaking, MikroTik User Manager is not suitable for medium to large organizations because it is limited to customization. On the other hand, freeRADIUS is a modular RADIUS suite that can be customized according to organizational requirements but freeRADIUS has to be customized by yourself. In this article, I will only discuss about MikroTik User Manager RADIUS Server and how to install and configure MikroTik User Manager Package properly. For freeRADIUS installation and configuration, visit my another article about freeRADIUS installation and basic configuration on CentOS 7 Linux distribution.




RADIUS Server




RADIUS, short for Remote Authentication Dial-In User Service, is a client-server networking protocol that is used to manage (authentication, authorization and accounting) users who connect and use network services.  RADIUS server runs in the application layer and it can use either TCP or UDP as transport.  A lot of RADIUS server applications are found today but among these User Manager RADIUS Server developed by MikroTik is specially used for MikroTik user authentication and authorization purpose.




MikroTik User Manager RADIUS Server




User Manager is an optional and totally separate MikroTik RouterOS RADIUS Server Package that is used to manage MikroTik user authentication, authorization and accounting. ISP Company or network administrator can use User Manager as their login user authentication, PPP user authentication, and Hotspot user authentication as well as billing purpose. But before using User Manager RADIUS Server Package in your network, you should know the minimum system requirements of this package.




User Manager Package Requirements




User Manager RADIUS Server installation must have below minimum requirements.               




  • MikroTik RouterOS and User Manager Package must have the same version.
  • The MikroTik User Manager works on x86, MIPS, PowerPC and TILE processor based routers and CHR devices.
  • The router should have at least 32MB RAM and 2MB free HDD space.






How RouterOS Client and User Manager RADIUS Server Works




MikroTik User Manager works like a judge. It receives question from RADIUS client and must give answer. For example, when a user (say, bob) like below network diagram wants to connect to the network, the RouterOS RADIUS client first check its local user database and if it fails to authenticate from local database, it asks to User Manager RADIUS Server: “is user ‘bob’ is allowed to network?”




MikroTik RADIUS Server Network
MikroTik RADIUS Server Network




If user ‘bob’ is present in RADIUS server’s user database, it answers: “Yes but with profile limitation”. If user is not in RADIUS Server’s user database, the server replies with NO.




How to Install MikroTik User Manager RADIUS Server




User Manager is a MikroTik RouterOS Package. So, User Manager Package installation in your network can be divided into methods.




  • User Manager Package can be installed in your physical MikroTik RouterOS. Or,
  • User Manager Package can be installed in a Server Machine or in a PC where MikroTik RouterOS is running.




I always prefer the second method because User Manager will generate a lot of logs and a physical RouterOS machine has limited storage capacity as well as to handle multiple RouterOS request in a large network, a User Manager should have a stable and powerful physical machine.




Install User Manager Radius Server Package in a Physical MikroTik RouterOS




As User Manager is a separate RouterOS Package, it is usually not included with MikroTik Roterboard Operating System.  However, you can check your RouterOS whether it contains User Manager Package or not by visiting Winbox System > Packages menu. In this Package List window, you will find all the available packages that are installed in your RouterOS. If User Manager Package is installed, you will find a list named user-manager. If User Manager Package is not installed, follow the below steps to install User Manager Package in your RouterOS.




  • Login Mikrotik Router with Winbox Software.
  • From Winbox, go to System > Resources menu item and find Architecture Name and RouterOS Version from Resources window.




MikroTik Router Resources Window
MikroTik Router Resources Window




  • Go to MikroTik download section and select your MikroTik RouterOS version and download all packages zip file that will match with your Architecture Name (all_packages-architecture_name-routeros_version.zip).



  • Now extract downloaded zip file and you will find User Manager (user-manager-routeros_version-architecture_name.npk) file within this zip file.



  • Click on Files menu item from Winbox and drag and drop this user-manager file to File List window.



  • Now reboot your RouterOS.



  • User Manager Package will be installed at the time of next booting and user-manager package will be available in your Package List window.




    Install User Manager RADIUS Server Package in a Dedicated Server Machine or in a PC




    This is the best method to use User Manager RADIUS Server in a network. In this method, MikroTik RouterOS is installed on a dedicated server machine or on a personal Desktop Computer having only basic system package and user manager package installed.




    MikroTik RouterOS can be installed on a dedicated physical machine or on a virtual machine. If you use physical machine, download the latest MikroTik RouterOS ISO file from MikroTik download section and burn the ISO file on a DVD or on a USB drive and then boot your computer from this media. If you wish to install RouterOS on a virtual machine, just download the ISO file and attach the ISO file to CD/DVD drive and then boot your virtual machine. While booting your machine, MikroTik package selection window will appear. You will just select System Package and User Manager Package from this window and then start installation. Within a few seconds MikroTik RouterOS installation will be completed.




    If you feel confused to install MikroTik RouterOS ISO on your machine, read my article about Install MikroTik RouterOS on PC where I have described how to install MikroTik RouterOS on a PC and a video is also included. I hope your confusion will be reduced if you follow the article carefully.




    After completing RouterOS installation, login with user admin and password left blank and then run this command: ip address add address=radious_server_ip interface=ether1 to assign IP address to ether1 interface.




    Note: Put your RADIUS Server IP that you want to assign in the place of radious_server_ip such as 192.168.110.10/24




    Now open your favorite web browser and type https://radious_server_ip/userman. If everything is OK, you will find a login prompt like below image to login to your User Manager RADIUS Server.




    User Manager Login Screen
    User Manager Login Screen




    By default User Manager creates an owner customer named admin with no password. So, put admin as login and password left blank and then click on Lon in button. You will now find User Manger Dashboard where we will do our entire User Management activity.




    MikroTik User Manager Radius Server Package can easily be installed and configured if you follow above steps carefully. However, if you face any difficulty to do above steps properly, follow my video tutorial about MikroTk User Manager Radius Server installation and configuration. I hope, it will reduce your any confusion.