geum.ru - только лучшие рефераты!

Программная система автоматического формирования нечеткого логического контроллера

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Вµнная имеет свой диапазон изменения, соответственно, разные переменные изменяются в разных диапазонах, а для использования оптимизационного алгоритма необходимо, чтобы все переменные имели одинаковый диапазон варьирования;

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

.термы должны покрывать весь интервал изменения переменной, т.е. между термами не должно существовать разрывов.

Данные проблемы можно обойти, если наложить на решение множество ограничений, но тогда вместо задачи безусловной оптимизации пришлось бы решать задачу условной оптимизации, что гораздо сложнее. Следовательно, необходимо разработать такой способ кодирования и декодирования термов, который позволил бы решить обозначенные выше проблемы. Первая проблема решается достаточно просто - для каждой лингвистической переменной составляется своя масштабная функция вида , в результате применения которой диапазоны изменения переменных становятся одинаковыми. Здесь, x - исходная координата вершины терма по оси абсцисс, k = d/D - коэффициент масштаба, d = (l2-l1) - ширина интервала изменения переменной до масштабирования, D = (lM2-l M1) - ширина интервала изменения переменной после масштабирования, l1 и l2 - левая и правая границы изменения переменной до масштабирования, lM1 и lM2 - левая и правая границы изменения переменной после масштабирования, fM(x) - промасштабированная абсцисса вершины. При декодировании полученного решения используется обратная к масштабной функция:

,

где kM = 1/k = D/d - коэффициент обратного масштаба и xM = fM (x).

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

Однако сразу возникает вопрос, а какая из точек (1) и (2), (3) и (4) должна находиться левее, т.е. (1)>(2) или (2)>(1), (3)>(4) или (4)>(3)? Конечно, если предварительно определить очередность их расположения, например, (1)>(2), (3)>(4), то можно будет избежать данной проблемы. Однако, убрав из рассмотрения остальные варианты расположения точек, мы искусственно сократим поисковое пространство, что не допустимо при оптимизации.

Для решения данной проблемы авторами был разработан алгоритм перевода массива точек в вершины термов. Для каждой пары таких точек ((1) и (2), (3) и (4), тАж; рис. 3.3.1), назовем их спорными, определяется одна приоритетная точка, к примеру, первая точка пары. Затем найденный массив точек термов сортируется в порядке возрастания их значений. Каждой паре спорных точек в сортированном массиве соответствует своя двойка значений. Первой спорной паре первого терма соответствуют первый и второй элементы сортированного массива, второй паре второго терма - (3) и (4) элементы массива и т.д. Когда возникает вопрос о том, какая из точек будет лежать левее, из двух значений массива приоритетной точке приравнивается то число, которое в исходной строке (не сортированной) встречается раньше. Таким образом, отпадает какая-либо необходимость ввода ограничений на решение или искусственного сокращения пространство поиска.

Рассмотрим этот алгоритм на примере. Пусть некоторая лингвистическая переменная описывается тремя термами и пусть в ходе оптимизации было получено решение в виде массива {1,2,0,7,5,4,8,6}. Для каждой пары спорных точек (1 и 2, 3 и 4, 5 и 6, тАж; рис. 3.3.1) назначаем приоритетной первую точку, т.е. для 1 и 2 приоритетной является точка 1, для 3 и 4 - это 3 и т.д. После сортировки массив точек примет вид {0,1,2,4,5,6,7,8}. Далее, решается вопрос о расположении точек. Так, точка (2) терма будет лежать левее точки (1), поскольку элемент приоритетной точки {1} в исходном массиве находится левее точки {0}, т.е. точка (2) = {0} терма будет лежать левее точки (1) = {1}. Схематически данная процедура отображена на рисунке 3.3.2.

Для предупреждения разрывов между термами порядок расположения таких точек как (2) и (3) (рис. 3.3.1) оговаривается заранее и не претерпевает изменений в процессе оптимизации. В данном случае, точка (2) должна лежать левее, либо совпадать с точкой (3), в противном случае возникнет разрыв функции, что не допустимо.

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

.4 Коэволюционный алгоритм для формирования НСУ в целом

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

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

Алгоритм состоит из следующих шагов:

.Инициализация БП и термов случайными значениями;

.Фиксация