3.5 Р еал и зац и я и ап р о б а ц и я а л го р и тм о в Для реализации генетических алгоритмов и алгоритмов схемы МИВЕР необходимо уметь генерировать значения дискретных случайных величин распределённых по закону, отличному от равномерного. Закон распределения, в нашем случае, это вектор вероятностей р а = ( л . л . —. л ) , и вектор соответствующих значений дискретной случайной величины а а = (а],а 2,...,ап) , где pi —вероятность того, что случайная величина примет значение ah п / . P i = 1 условие нормировки вероятностей. Запишем алгоритм ы разыгрывания значения дискретной случайной величины а, принимающей значения а,,/ = 1,п с вероятностями p i9i = l9n. 1. Инициализация к~1, S = 0;1 разыгрывается в соответствии с непрерывным равномерным законом распределкния. к 2. Если $ то a-aii, к пункту 4. ы 3. Иначе к=к+19к пункту 2. 4. Выход. Для реализации алгоритмов была выбрана среда быстрой разработки приложений Borland C++ Builder 6.0 по следующим соображениям: поддержка средой класса векторов булевых переменных, что значительно упрощает работу с булевыми переменными и обеспечивает корректное их представление с точки зрения предметной области; 8 4 |
„*+1 Pi 0, если Xj = 1с X k, j = I; 1, если х; = 1c X k,j ф I; —.если x. =\ k = k + l, H=1 и если e Таким образом, работа алгоритма сводится к последовательной замене единичной компоненты найденного решения (вектора X*) на нулевую, при этом случайным образом выбранной нулевой компоненте присваивается единичное значение (вектор Х*+/). Целенаправленность в работе алгоритма получена за счет возврата к предыдущему вектору (X*) при неудачной замене компонент. Для реализации алгоритмов может быть взят любой из современных языков программирования. От того, какой именно алгоритмический язык будет выбран, во многом зависит эффективность программной реализации. В частности представление кода значительно влияет на скорость обработки данных, их представление в памяти машины, интерфейс работы с памятью и т.д. От структуры и синтаксиса языка зависит то, насколько “близко” и точно программа будет отражать алгоритм [86]. Для разработки был выбрана среда быстрой разработки приложений Borland C++ Builder 6.0 по следующим соображениям: поддержка средой класса векторов булевых переменных, что значительно упрощает работу с булевыми переменными и обеспечивает корректное их представление с точки зрения предметной области; несмотря на то, что C++ объектно-ориентированный язык низкого уровня, его структурность поддерживает написание программ “близко к тексту” исходного алгоритма; достаточно легкая интегрируемость написанных в данной среде приложений с существующими форматами баз данных. 128 |