Генетичний алгоритм. Мій варіант.

Одною з перших моїх вправ у програмуванні на OCaml була реалізація алгоритма генетичної оптимізації (ГА). За посиланням приведено повний текст програми.

Особливістю мого варіанту є те, що він з самого початку задумувався, як ключова частина оптимізатора алгоритмів, представлених у вигляді програм на C, C++ або будь-якій іншій мові програмування, що дозволяє розбивати тексти програм на кілька файлів. Передбачалось, що цільова функція (ЦФ), представлена у прикладі елементарною функцією трьох змінних, буде замінена модулем, що буде генерувати частину тексту програми (у випадку C/C++ це був-би h-файлу з константами), компілювати код в бінарний модуль та виконувати його. Результати виконання програми мали повертатись в ГА для збереження в кеші.

Внутрішнє уявлення гена - ціле число, хромосоми, відповідно, - список цілих. Для того, щоби трохи спростити генерацію коду цільовій функції було введено концепцію дескриптора. Дескриптор - це список областей визначення кожного параметра ЦФ, за допомогою якого можна отримати з хромосоми список конкретних значень параметрів. Також, оскільки передбачалось, що вартість обчислення ЦФ набагато дорожче, ніж зберігання хромосоми з результатом обчислення, тож було введено кеш результатів обчислення.

Кодування коментарів в програмі - koi8-u.

Сторінки

Про цей запис

This page contains a single entry by Микола Стрєбков published on May 19, 2009 4:57 PM.

Історія was the previous entry in this blog.

Олег Янковський. is the next entry in this blog.

Свіжі записи можна подивитись на головній сторінці. Все інше - в архіві.