Научная статья на тему 'Генетический алгоритм для решения транспортной задачи'

Генетический алгоритм для решения транспортной задачи Текст научной статьи по специальности «Математика»

CC BY
2174
247
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Генетический алгоритм для решения транспортной задачи»

установками генератора случайных чисел. Испытания проводились при М = 50, Т = 20, РС= 1.00 и РМ = 0.10.

ЗАКЛЮЧЕНИЕ

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

ЛИТЕРАТУРА

1. Yoshimura, T and Kuh, E S. "Efficient, algorithms for channel routing , IEEE Trans. Comput. — Aided Des. Integrated Circuits & Syst., vol.l, no.l, PP-25 —35,1982.

2. Burstein, M. "Channel routing" Layout Design and Verification, pp. 133 — 167, Elsevier Science, 1986.

3. Michalewicz, Z., Genetic Algorithms 4- Data Structures Evolution Programs, Springer - Verlag, 1992

4. Liu, X. Sakamoto, A., Shimamoto, T. "Restructive Channel Routing with Evolution Programs", Trans. IEICE. vol.E76 —A, no.10, pp.1738—1745, 1993.

5 Goldberg, D.E. "Genetic Algorithm in Search, Optimization & Machine Learning" Addison — Westley, 1989.

ЫК 658.512.2

В.НЛуценко

ГЕНЕТИЧЕСКИЙ АЛГОРИТМ ДЛЯ РЕШЕНИЯ ТРАНСПОРТНОЙ

ЗАДАЧИ

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

Генетические алгоритмы (ГА).позволяющие получать такие решения, особый класс алгоритмов, сочетающих в себе положительные качества случайных градиентных методов.ГА начинают свою работу с популяции каким-то образом сформированных решений, а затем улучшают их используя генетические операторы (ГО), моделируя тем самым в большей или меньшей степени -'волюционнный процесс в природе [2]. Структуру простого ГА можно спчсать бедующим образом [1]

Procedure Simple_Genetic_Algorithm begin Т = О

Initialize Р(Т) {создать стартовую популяцию Р(Т)}

repeat ( начало цикла }

Т = Т+ 1

select Р(Т) froip Р(Т-1) {сформировать популяцию Р(Т) из Р(Т-1)}

recombine Р(Т) { применить к Р(Т) ГО кроссинговера

и мутации} until termination_condition { повторять }

end

Во время итерации t ГА сохраняет текущую популяцию решений Pt <Х|,Х2,...Хы> (размер популяции N предполагается фиксированным). Оператор селекции, выполняющий процесс формирования новой популяции Р|+|, выполняется следующим образом :

1) На основе популяции Pt в результате применения ГО кроссинговера (скрещивания)и мутации создается промежуточная популяция Р\.

2) Вероятность ТОГО, ЧТО решение ИЗ популяции Р'| попадет в следующее поколение, популяцию Pt+i, зависит от целевой функции (ЦФ) данного решения, т.е. функции, определяющей качество решения по критерию, заданному в условии задачи.

Оператор кроссинговера (ОК) выполняет "скрещивание" двух родительских решений, производя два решения-потомка. Существует множество различных схем выполнения ОК, одна ш возможных будет описана ниже. Оператор мутации (ОМ) случайно' изменяет решение ("хромосому"). Это позволяет увеличить изменчивость популяции. После того, как мы описали работу ГА в общем перейдем к конкретной формулировке решаемой задачи

Транспортная задача

Транспортная задача как одна из важнейших комбинаторных задач, была выбрана объектом исследования потому, что техника ее решения хорошо известна и изучение нового метода на данной задаче позволит в дальнейшем с его помощью решать другие, более сложные задачи, которые в данный момент решать точно либо невозможно, либо затруднительно. Итак, транспортная задача состоит в отыскании такого плана перевозок с п складов к к потребителям, который требовал бы минимальных затрат. Запасы продукции в каждом складе равны воин. Заявки потребителей - destj Издержки по достаьке единицы продукции с 1-го склада к ^тому потребителе сов^. Решение можно представить в виде транспортной матрицы Х(1:п,1:к) = х^, где п число складов; к число потребителей; хц объем продукции, доставляемой с (-го склада к ^му потребителю.

Таким образом транспортную задачу формально можно определить как задачу нахождения минимума функции

^ = (О

у-1у-1

при выполнении следующих ограничений :

Хц >= 0 дфвсех 1 = 1,2,...nиj = 1,2,...к (2)

к

X*// хоиг, для всех i = 1,2,...п (3)

1=I

/I

-destj для Bcexj = l,2,...k (4)

/=1

Транспортная задача всегда имеет оптимальное решение [3], причем если все sour, и destj есть целые неотрицательные числа, то в оптимальном решении все хд будут также неотрицательными целыми числами [3].Поэтому далее будет исследоваться только возможность получения целочисленного оптимального решения линейной транспортной задачи.

Генетический алгоритм решение транспортной задачи v

В качестве ЦФ решения исследовались различные функции. Наилучшие результаты были получены с

где Г'(Х) вычисляется по формуле (I) и определяет стоимость плана перевозок X, <Fii> - некоторая константа, близкая по значению к среднему F(X) популяции.

Для получения стартовой популяции использовалась процедура Initialize !П.работающая следующим образом

Вход ;п,к,копии массивов sour[l:n] и dest[l:k];

Выход массив x[l:n,1;k], удовлетворяющий ограничениям (2-4):

1-У становить все числа от I до п * к непомеченными;

2.Выбрать случайное неиспользованное число q, такое что I <— q <= п * к и пометить его.

~ [(Я ' + 1] (символы (J обозначают операцию взятия целой части числа);

4 j = (q - 1) mod к + I;

5.val = min(sour,,destj);

6-Xij = val:

7.sour, = sour, - val;

K.destj = riest, - val;

9. Вы полни ь шаги со 2 по К включительно пока все числа от 1 до п * к не будут

помечены;

10. Конец.

I енстические операторы были определены три ГО - два оператора мутации и один оператор кроссинговсра. Операнды для ГО выбираются случайно.Оператор мутации

1.создадим два числовых множества I — (іь'2....ip) *n (1,2,...п) и J - (ii.jz,...j4) in

(* >2...k), такие что 2 <= p <= n и 2 <= q <= k.

2.Используя эти множества, сформируем массив X'[l:p, так, что - Xij входит

в Xі тогда и только тогда, когда і in I и j in J. f . _

3.Для массива X' вычислим вектора sour'[l..p] и dest'[l..q] для всех і -l,2,...p, sour1; есть сумма элементов і-й строки массива Xі; соответственно, для всех j — l>2,...q, dest'j есть сумма элементов - ш-го столбца массива X.

4.Выэов процедуры Initiali3e(p,q,sour',dest').

5.Вернем элементы, переписанные из X в Xі на шаге 2. назад,в X.

6-Конец.

Второй оператор мутаиии является вариантом первого и отличается от него только способом формирояания множеств I и J.B множество I попадают р последовательных целых положительных чисел (границы диапазона выбираются случайным удовлетворяющие условию задачи образом ). Множество .1 Ф°рмируеісл аналогично, но него включаются q последовательных целых

положительных чисел. Оператор кроссинговера но родительской паре хромосом-решений Х| и Xi находит пару потомков Xi и \|. комбинируя свойства родителей Xi и X2. Оператор выполняется следующим обраюм:

1. Заполняются массивы DIV[l:n,l:k] и REM(l:n.l:k| но правилу для всех i = 1.2....П и j = l.2....k div(i.j) = [(XI + Х2) /2]. rem(i.j) - (\ I +■ \2) mod 2: (символ mod обозначает деление но модулю);

2.Формируем массивы REMI и REM2, обладающие свойствами

1.Для всех i = 1.2....П

З Для всех i = 1,2,...п Hj = 1,2,...k REMI|0 >=0,

REM2ij >= 0.

3. Потомки, полученные по формулам Xi = D1V + REMI, Х« = DIV + REM2, очевидно, будут легальными решениями(т.е. будут удовлетворять условиям задачи)

Оператор селекции формирует из текущей, t-й, популяции следующую, t+1 по закону : вероятность "выживания" хромосомы-решения (перехода ее в следующее поколение) пропорциональна ее целевой функции. При этом два решения в популяции, имеющие лучшие ЦФ, выживают безусловно.

Для исследования описанного выше алгорит ма была написана программа, на основании тестирования которой можно сказать следующее:

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

Вероятности мутации и кроссинговера наилучшая сходимость была достигнута при вероятности мутации ~ 0.2 - 0.7 и вероятности кроссинговера ~0.01

0.1. Большое число мутаций и малое кроссинговеров позволяет получить множество разнообразных решений в популяции и более высокую вероятность нахождения глобального оптимума ЦФ.

Размер популяции исследовались популяции размером от 5 до 500 решений. При этом выявился парадоксальный, на первый взгляд, факт оптимальный размер популяции не зависит от размерности задачи (числа складов и потребителей) и составляет примерно 40 - 60 решений. Это можно объяснить тем, что оператор селекции, осуществляющий смену поколений, инвариантен к размерности решения и вероятность выживания решения полностью определяется значением ЦФ данного решения. Рассмотрим теперь результаты решений некоторых задач, сгенерированных случайным образом :

Задачи с 6 складами и 6 потребителями (6x6) оптимум находился, как правило, уже на этапе формирования стартовой популяции. В задачах 8x8 требовалось несколько десятков поколений (генераций) для нахождения оптимального рещения, причем ~90-95% оптимума находилось за первые ~30% генераций. Это же справедливо и для задач 10x10, но стартовую популяцию

2. Для всех j = 1.2....к

Результаты

отделяет от популяции, в которой было получено оптимальное решение, уже 100 -600 генераций. Эти результаты получены обобщением данных о ~ 3-5 прогонах программы с каждой задачей. Число задач 6x6,8x8 и 10x10 составило 3,5,5 соответсвенно. Для нахождения оптимального решения использовалась программа, реализующая т.н. "алгоритм северо-западного угла" [4].

В отличие от работы [I], где также рассматривается ГА решения транспортной задачи, описаннный выше алгоритм обладает следующими преимуществами:

1. Более высокая скорость сходимости (к примеру, при решении задач 8x8 описанный алгоритм за одно и тоже количество генераций выдавал решения, на 4-5° о более близкие к оптимуму).

2. Значительно более высокая скорость выполнения каждой генерации (время получения следующего поколения сокращается в 2-2.4-3 раза)

Заключение

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

ЛИТЕРАТУРА

1. G.A.Vignaux, Z.Michakwicz. A Genetic Algorithm for the Linear transportation Problem. IEEE Trans, vol.21, No.2, March/April,1991

2. D.E. Goldberg Genetic Algorithmes in ....

3. Вентцель E.C. Исследование операций. М.."Советское радио", 1972

4. Информатика: Учеб.пособие для пед. спец. высш. учеб. заведений / А.Р.Есаян, В.И.Ефимов, Л.П. Лапицкая и др. М.: Просвещение, 1991

i Надоели баннеры? Вы всегда можете отключить рекламу.