Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_4_Булево (из конспект_СК_13).doc
Скачиваний:
3
Добавлен:
11.08.2019
Размер:
258.05 Кб
Скачать

Метод направленного частичного перебора по векторной решетке.

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

Опр2 Расстоянием Хемминга между двумя точками называется величина

Опр3 Уровнем Хемминга называется местоположение точек векторной решетки, расстояние Хемминга от которых до т. одно и то же. При этом номер уровня равен величине расстояния Хемминга.

Как правило, предполагается, что все =0. В этом случае нулевая точка располагается на нулевом уровне, точки (1,0,...,0), (0,1,0,...,0),...,(0,...,0,1) - на первом уровне и т.д.

Опр4 Точки, находящиеся на соседних уровнях и отстоящие друг от друга на расстояние Хемминга равное 1, соединяются дугой.

Пример. Изобразим векторную решетку для случая n=3,

.

Для решения задачи булевого программирования методом направленного частичного перебора по векторной решетке необходимо, чтобы задача была представлена в форме:

  1. Целевая функция на минимум

  2. Все коэффициенты целевой функции неотрицательны

  3. все ограничения имеют знак (или ):

,

Если в исходной задаче некоторый ее коэффициент при j -й переменной C[j]< 0, тo для обеспечения требования 1. в целевой функции и во всех ограничениях необходимо сделать следующую замену переменных

При такой замене,

- во-первых, (т.е. достигается основная цель замены);

- во-вторых, задача остается комбинаторной { =0, если х[j] = 1; = 1, если x[j]= 0);

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

Пример.

В задаче, у которой все C[j] > 0, при движении по векторной решетке с помощью шагов вперед целевая функция возрастает, т.е. ее значение с точки зрения направления оптимизации ухудшается. На этой основе может быть сформулировано следующее правило, ограничивающее движение по векторной решетке: как только при перемещении по векторной решетке достигается допустимая точка, дальнейшее движение с помощью шагов вперед прекращается; необходимо сделать шаг назад.

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

Метод направленного перебора заключается в переборе вершин векторной решетки по маршрутам шагами вперед и назад. Шаг- переход на соседний уровень.

Чтобы исключить повторное попадание в вершины введем правило. Шаг вперед из вершины х возможен только по переменным с индексами

Пример. Для точки (1,1,0,0) .

Вершины, у которых , называются конечными. При попадании в конечную вершину (КВ) выполняем шаг назад.

Пример. Конечные точки для : (0001), (0101).

Из полученного в примере куба для получим дерево

Опишем правила, сокращающие перебор.

Критерий недопустимости (КН). Позволяет выяснить, можно ли при движении вперёд из текущей точки найти допустимую точку и указывает, когда такое невозможно. Ограничения запишем в виде (каноническом):

,

Для допустимых точек все , для недопустимых существует .

Пример. В точке (1,1,0,0) . Первое и третье ограничения выполнены, второе – нет. Точка недопустима.

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

- множество номеров ограничений, невыполняющихся в точке x;

,

– множество индексов переменных, по которым из точки x еще можно сделать шаг вперед, и при которых коэффициенты в i -м ограничении отрицательны (только за счет увеличения переменных при этих коэффициентах можно добиться выполнения -го ограничения).

Пример. Для точки (1,1,0,0) , .

Очевидно, что осуществление шага вперед по переменной увеличивает балансовую переменную y[i] на . Поэтому: если хотя бы для одного из невыполняющихся в рассматриваемой точке x ограничений

,

то точка x отсеивается по КН. Обоснование: даже сделав шаги вперед по всем переменным , невозможно обеспечить такое возрастание , при котором станет положительным, т.е. невозможно при движении вперед добиться выполнения -го ограничения.

Пример. Для точки (0,0,1,0) , . Первое ограничение выполнить при движении вперед не удастся. Точка (0,0,1,0) отсеивается по критерию недопустимости.

Для точки (1,1,0,0) , . . Критерий недопустимости не выполнен. Точка не отсеивается по КН.

Критерий планомерного исключения альтернатив (КПИА).

Работает, когда найдена допустимая точка и на ней подсчитан рекорд . Вводится фильтрующее ограничение

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

Пример. ЕЩЕ будет

Критерий предпочтительной переменной (КПП).

Упорядочивает шаги вперёд из каждой недопустимой точки после первого прихода в неё. Цель упорядочения - рассматривать в первую очередь те маршруты, которые могут быстрее приводят к допустимым решениям. Действие КПП по сокращению перебора реализуется через совместную работу с КПИА: чем раньше будет найдено первое допустимое решение, тем раньше включится в работу КПИА; при нахождении затем лучших допустимых решений действие фильтрующего ограничения по отсеву шагов вперед становится более жестким.

Переменные для шагов вперед упорядочиваются по возрастанию значений (*), где – множество индексов ограничений, невыполненных в точке . В первую очередь движемся по переменной с наименьшей суммой.

        Работа КПП в точке (0,0,0,0) определяется табл. 1.3.2.  Таблица 1.3.2.

 Номера переменных для возможных шагов вперед

1

2

3

4

Значения переменных

-8

-1

7

-4

Порядок шагов вперед по КПП

1

3

4

2

Идея: в первую очередь рассматривать маршруты, приводящие скорее к возрастанию балансовых переменных y[i] в не выполняющихся ограничениях (при отрицательных a[ij]), т.е. к сокращению множества . Действие КПП в отличие от КН и КПИА носит эвристический характер и не всегда может привести к желаемым результатам, так как выбор маршрута по наименьшему значению (*) не гарантирует первоочередное движение к допустимым решениям.

Движение по решётке начинается с нулевой точки и заканчивается, когда другие движения невозможны.