Разработка методов исследования характеристик генетического алгоритма распределения цепей по слоям в МСМ
С.Н. Щеглов, А.В. Мухлаев, В.А. Кулинский
Одной из задач проектирования топологии матричных БИС и СБИС является задача оптимального распределения по слоям трассируемых соединений в базовом матричном кристалле. Известно, что базовый матричный кристалл (БМК) – это компактный модуль с высшей степенью интеграции, служащий для расположения нескольких сотен кристаллов и их соединения несколькими тысячами цепями. Самой общей целью при решении этой проблемы является наиболее эффективное использование площади коммутационного пространства при одновременной оптимизации таких конструктивных параметров схемы, как число слоев количество межслойных переходов, процент реализованных соединений.
Традиционные методы решения этой задачи имеют существенный недостаток – “ловушки” локальных оптимумов. Рассматриваемый генетический метод является методом направленного случайного поиска. Основной характеристикой таких методов является то, что они допускают временное ухудшение целевой функции. Это позволяет избежать “ловушек”, а при достаточном числе итераций найти приемлемое решение. Генетические алгоритмы являются адаптивными поисковыми алгоритмами, которые осуществляют процесс накопления и использования информации в проектируемой области, направленной на достижение оптимального решения при первоначальной неопределенности и изменяющихся внешних условиях. В отличие от стандартных поисковых алгоритмов, генетические алгоритмы базируются на улучшении некоторой популяции, состоящей из ограниченного множества решений. Данная методика мотивируется тем, что поиск в области многих решений уменьшает риск попадания в локальные оптимумы, что дает более лучшие результаты, чем использование одного решения.
Генетический метод основан на имитации процессов натуральной селекции в биологии, эволюционируя от одного поколения к другому путем исключения слабых элементов и оставления оптимальных. Рассматриваемые решения называются хромосомами и изображаются как ряд величин определенных через некоторый алфавит.
Кодировка хромосом осуществляется следующим образом. По заданному графу создается массив ограничений, который определяет, какие цепи могут, а какие не могут находится в одном слое проектируемого кристалла. При этом каждой цепи графа присваивается уникальный номер (в данном случае по порядку задания в списке). Создание самих хромосом происходит путем случайного заполнения аллелей генов неповторяющимися номерами цепей графа, при чем количество цепей определяет количество генов.
Рис 1.
В рассматриваемом алгоритме каждое решение представляется в виде списка, количество элементов которого соответствует количеству цепей рассматриваемой задачи.
Если условие рассматриваемой задачи заданно на рис. 1, то хромосома примет вид
1 2 3 4 5 6 7
Пусть после применения некоторых генетических операторов новая хромосома имеет вид:
3 4 6 5 2 7 1
тогда решение, закодированное в новой хромосоме, изображено на рис. 2
Рис 2
где разными типами линий показаны разные слои распределяемых цепей.
Раскодирование хромосомы происходит по следующим правилам:
Берется первый ген хромосомы и по значению его аллели определяется исходная цепь. Полученная цепь кладется в первый слой, затем аналогичным образом получаем новую цепь из аллели второго гена хромосомы (цепь 4 в данном примере); сведения о том могут ли эти ребра находится в одном слое получаем из массива ограничений, который мы определили выше. Если могут, то определяем их в один слой, если нет, то слой объявляем заполненным цепь определяем в следующем слое, а к заполненным слоям не возвращаемся с попытками дополнить их новыми цепями.
Популяция – набор хромосом. В качестве исходной берется популяция представляющая собой некоторое подмножество найденных или случайно полученных квазиоптимальных решений. Далее популяция подвергается действию генетических операторов селекции, кроссинговера, мутации, инверсии, транслокации, сегрегации.
Оператор селекции выбирает представителей настоящего поколения для участия в последующих генетических операциях. Для каждой хромосомы вычисляется целевая функция. В данной задаче основным критерием оценки является минимум числа слоев, необходимых для распределения трассируемых соединений:
Где f(i,t) – значение целевой функции для i-й хромосомы;
N – число слоев.
Целевая функция определяет ценность каждой хромосомы. Хромосомы с лучшими характеристиками затем подвергаются действиям генетических операторов. В программе реализованы три о
Кроссинговер – операция смешивания составляющих хромосом, называемых родителями. В данном алгоритме реализовано несколько операторов кроссинговера, но для решения задачи наилучшие результаты дает использование следующего оператора кроссинговера. Потомок производится от двух родителей, которые выбираются на основе значений их целевых функций. У каждого родителя определяется слой, содержащий максимальное количество цепей. Затем происходит обмен информацией между родителями,– выбранные слои переносятся от одного родителя к другому и наоборот. Цепи, перенесенные при переписывании слоев, исключаются из новой хромосомы.
Например: оператор кроссинговера получил двух родителей
Р1: 1 8 11 12 15 0 3 5 6 9 2 7 4 10 13 14
P2: 1 2 7 8 11 0 6 9 4 10 12 13 14 15 3 5
При раскодировке алгоритм распределил их по слоям
Слой 0: 1 8 11 Слой 1: 12 15 Слой 2: 0 3 5 6 9 Слой 3: 2 7 Слой 4: 4 10 13 14 |
Слой 0: 1 2 7 8 11 Слой 1: 0 6 9 Слой 2: 4 10 Слой 3: 12 13 14 15 Слой 4: 3 5 |
Слой 0: 1 8 11: Слой 1: 12 15 Слой 2: 0 3 5 6 9 Слой 3: 2 7 Слой 4: 4 10 13 14 Слой 2,0: 1 2 7 8 11 |
Слой 0: 1 2 7 8 11 Слой 1: 0 6 9 Слой 2: 4 10 Слой 3: 12 13 14 15 Слой 4: 3 5 Слой 1,2: 0 3 5 6 9 |
П1: Слой 0: 12 15 Слой 1: 0 3 5 6 9 Слой 2: 4 10 13 14 Слой 3: 1 2 7 8 11 |
П2: Слой 0: 1 2 7 8 11 Слой 1: 4 10 Слой 2: 12 13 14 15 Слой 3: 1 5 6 14 15 |
Из этого примера видно, что в потомках цепи располагаются только в четырех слоях, тогда как в каждом родителе используется, пять слоев. Таким образом, потомки имеют высшее значение оценочной функции, чем родители. Если продолжить этот процесс, то можно прийти к оптимальному решению.
Операция мутации применяется к одной хромосоме и незначительно преобразует ее путем локальных случайных перемещений. Однако применение различных операторов мутации убыстряет или замедляет нахождение приемлемого решения задачи. Неплохие результаты дает применение оператора мутации известного в литературе как “Золотое сечение”.
При реализации алгоритма были реализованы также операторы транслокации (перенос части одной хромосомы на другую, если обнаруживается недостаток одних и избыток других участков хромосом, то избыточные заменяются на недостающие случайным образом), оператор сегрегации (организован как чисто случайный выбор генов из всей популяции, пока не “соберется” хромосома) и операторы инверсии (двухточечные с инверсией между локальными точками и инверсия частей хромосомы попавших за локальные точки).
Но, как выяснилось в ходе исследования, ощутимого вклада в решение задачи они не внесли. Цель их, как и операторов мутации, – предотвращение единообразия во множестве решений. Сознательное ухудшение некоторых решений привносит новую информацию и является механизмом выхода из “локальных” ям.
Попытка реализации искусственного (принудительного) выхода из “локальных” ям не привнесла улучшения или убыстрения нахождения приемлемого решения. Реализован выход следующим образом. При обнаружении, что более половины новой популяции состоит из одинаковых решений происходит уничтожение популяции, а новая создается случайным образом и в нее добавляется лучшее решение полученное алгоритмом. Эта попытка подтверждает что алгоритм в ходе решения задачи накапливает информацию и является адаптивной системой.
Таким образом получается новая популяция, которая в свою очередь подвергается действию генетиеских операторов. Следует отметить ,что необязательно применять генетические операторы к каждой хромосоме лучшее решение может переносится в новую популяцию без изменения (принцип эллитизма).
Рассмотренный процесс выполняется итерационно до тех пор, пока не будет получено приемлемое решение.
По выше описанному алгоритму была сделана программа на языке BorlandC++ под Windows 95, которая позволяет эффективно использовать все богатство генетического инструментария.