Изменения

Перейти к: навигация, поиск
Нет описания правки
== Постановка задачи однокритериальной оптимизации==
 Пусть <tex>S</tex> {{---}} дискретное пространство решений (дискретно),а
<tex>f : S \rightarrow \mathbb{R}</tex> {{---}} оценочная функция.
Задача: Тогда задача однокритериальной оптимизации заключается в том, чтобы найти такое <tex>s \in S : </tex>, что <tex> f(s) \rightarrow max </tex>максимально. При этом рассматривается black-box scenario, что означает, что получить информацию об <tex>f</tex> можно только путем ее вычисления.В случае эволюционных алгоритмов время их работы измеряется в количестве вычислений оценочной функции.
== Методы Рассмотренные методы решения ====='''HC'''(Hill Climbing)===В русскоязычном варианте этот метод называется методом спуска. Общая схема данного алгоритма выглядит следующим образом:
x <tex>\leftarrow</tex> random
while(true)
Итерации выполняются, пока не будет удовлетворен критерий останова. Возможны два варианта HC:
1) '''first ascent''' {{---}} в качестве <tex>x'</tex> выбирается первый из соседей, для которого <tex>f(x') \geq f(x)</tex>;
2) '''steepest ascent''' {{---}} осуществляется перебор всех соседей, и в качестве <tex>x'</tex> выбирается тот, для которого <tex>f(x')-f(x)</tex> максимально.
==='''RMHC''' (Random Mutation Hill Climbing)===
Та В данном алгоритме применяется же схема, что и для HCметода спуска, но <tex> x'</tex> получают путем случайного изменения одного из компонентов решения <tex> x </tex>.
==='''ES''' (Evolution Strategies)===
Это широкий класс алгоритмов поиска, основанных на идеях приспособления и эволюции<ref>Droste S., Jansen T., Wegener I.: [http://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEcQFjAA&url=http%3A%2F%2Fwww.mpi-inf.mpg.de%2F~tfried%2Fteaching%2FSS08%2Fseminar%2Fpaper%2F7-DorsteJansenWegener.pdf&ei=92DfT6vnDMX6mAWz1fmtDA&usg=AFQjCNErEUu9L8x4PWFPofp3Y80hjE2_Ow&sig2=G9rsT_PDarYfL7LL4tLPvg On the analysis of the (1 + 1) evolutionary algorithm.] Theoretical Computer Science 276, 51–81 (2002) </ref>. Существуют различные вариации ES:
1) (1+1)-ES {{---}} после на каждой итерации существует одно исходное решение <tex> x</tex> и одно промежуточное решение <tex>x'</tex>. После внесения случайного изменения в каждый из компонентов <tex> x</tex>, <tex>x'</tex> может оказаться любым элементом <tex>S</tex>, но, чем он ближе к <tex>x</tex>, тем выше вероятность его выбора.
2) (1+<tex>\lambda</tex>)-ES {{---}} на каждой итерации генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается лучшее.
3) (<tex>\mu</tex>+<tex>\lambda</tex>)-ES {{---}} на каждой итерации генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается <tex>\mu</tex> лучших.
== Примеры задач ==
===OneMax===
Найти Задача состоит в том, чтобы найти битовую строку длины <tex>n</tex>, состоящую из одних единиц. Оценочная функция {{---}} количество единиц в текущем решении:
<tex>f(x_1, x_2, \dots , x_n) = OneMax(x_1, x_2, \dots , x_n) = x_1 + x_2, + \dots + x_n </tex>
===MST (Minimum spanning tree)===
Дан Известная задача на графах, формулируется следующим образом. Пусть дан связный неориентированный граф <tex> G = (V, E) </tex>, с ребрами веса . Для каждого ребра <tex>e \in E</tex> задан вес <tex> w_e </tex>. Требуется найти [[Дискретная математика, алгоритмы и структуры данных#Построение остовных деревьев|остовное дерево ]] <tex>T = (V, E')</tex> минимального веса <tex> w(T) = \sum_{e \in E'} w_e </tex>.
== Оценка времени работы для OneMax ==
 
Содержание данного раздела основано на работе <ref>Witt C.: [http://massivedatasets.files.wordpress.com/2010/03/slides-02283-20102.pdf Randomized Search Heuristics.] Algorithms for Massive Data Sets, DTU Informatik,Danmarks Tekniske Universitet (2010)</ref>.
 
Чтобы оценить время работы вышеописанных алгоритмов на задаче OneMax необходимо доказать несколько утверждений.
{{Утверждение
Путем несложных преобразований получаем: <tex> (\frac {1} {1 + \frac{1}{n}})^n = (\frac {1} {\frac{n + 1}{n}})^n = (\frac {n} {n+1})^n \stackrel{ _{m = n + 1}}{=}
(1 - \frac{1}{m}) ^ {m-1}</tex>. Чтобы перейти от предела к неравенству, докажем, что <tex>(1 + \frac{1}{n})^n \leq e</tex>. Известно, что <tex>1 + x \leq e^x</tex>. Пусть <tex>x = \frac{1}{n}</tex>, тогда <tex>1 + \frac{1}{n} \leq e^{\frac{1}{n}}</tex>. Возведем обе части в степень <tex>n</tex> и получим требуемое неравенство. }}
{{Утверждение
|id=proposal4
|about=4
|statement=<tex> C_n^k (\frac{1}{n})^k(1 - \frac{1}{n})^{n - k} \geq \frac{1}{e k^k} </tex>.
|proof=
<tex> C_n^k (\frac{1}{n})^k(1 - \frac{1}{n})^{n - k}
|id=proposal5
|about=Лемма об ожидании
|statement=Если вероятность наступления события <tex>A</tex> на каждом шаге равна <tex>p</tex>, то матожидание времени наступления этого события <tex>E(t_A) = \frac{1}{p}</tex>.
|proof=По определению математического ожидания:
Воспользовавшись этим фактом, получаем:
<tex> (\frac{1}{1 - x})' = \frac{1}{(1 - x) ^ 2} = \sum_{i=0}^\infty i x^{i - 1} </tex>.
Отсюда видно, что: <tex> \frac{p}{ (1 - (1 - p)) ^ 2} = p \sum_{i=1}^\infty i (1 - p)^{i-1} = \frac{1}{p} </tex>.
=== Алгоритм RMHC ===
На каждом шаге равномерно Решение задачи OneMax с помощью алгоритма RMHC выглядит следующим образом. В качестве начального решения примем случайный вектор, а затем на каждой итерации равновероятно выбираем и инвертируем один бит из <tex> n </tex>. Пусть <tex> k </tex> {{---}} количество единиц в векторе (то есть значение <tex> f </tex> ) в начале фазы. При <tex> k + 1 = k' > k </tex> фаза заканчивается.
Оценим время работы алгоритма для данной задачи.
Вероятность окончания фазы {{---}} это вероятность того, что будет выбран один из оставшихся <tex>n - k</tex> нулевых битов: <tex> \frac{n - k}{n} </tex>. Тогда по [[#proposal5|лемме об ожидании]] <tex> E(t) = \frac{n}{n-k} </tex> для конкретной фазы.
Отсюда ожидаемая продолжительность всех фазравна:
<tex> \sum_{k=0}^{n-1} \frac{n}{n-k} = n \sum_{i=1}^{n} \frac{1}{i} = O(n \log n) </tex>
=== Алгоритм (1+1)-ES ===
Независимо Применим (1+1)-ES к решению задачи OneMax. Для этого на каждой итерации независимо для каждого бита инвертируем его с вероятностью <tex> p = \frac{1}{n} </tex>. Пусть <tex> k </tex> {{---}} значение <tex> f </tex> в начале фазы. При <tex> k' > k </tex> фаза заканчивается.
Оценим время работы алгоритма для данной задачи.
Вероятность Чтобы количество единиц увеличилось, необходимо из перевернуть хотя бы один из <tex>n - k</tex> нулевых битов, и при этом не затронуть единичных. С учетом того, что вероятность переворота <tex> \frac{1}{n} </tex>, получаем вероятность окончания фазы <tex> (n - k)\frac{1}{n}(1 - \frac{1}{n}) ^ {n-1} \geq \frac{n - k}{e n}</tex> по [[#proposal3|утверждению(3)]]. Тогда по [[#proposal5|лемме об ожидании]] <tex> E(t) \leq \frac{e n}{n-k} </tex> для конкретной фазы.
Отсюда ожидаемая продолжительность всех фаз меньше либо равна:
==Оценка времени работы с использованием Drift Analysis==
{{[[Теоремао дрифте |id=theorem1|about=Drift theorem|statement= Пусть <tex>X_0, X_1, \dots</tex> {{---}} неотрицательные целочисленные случайные величины и существует <tex>\delta > 0</tex> такое что: <tex>\forall t \in \mathbb{N}, x \in \mathbb{N}_0 : E(X_t | X_{t-1} = x) \leq (1 - \delta) xТеорема о дрифте]] с успехом применяется для оценки времени работы эволюционных алгоритмов в различных ситуациях. Примеры можно найти в работе</texref>Doerr BТогда <tex>T = \min\{t \in \mathbb{N}_0 | X_t = 0\}</tex> удовлетворяет:<tex>E(T) \leq \frac{1}{\delta}(\ln(X_0) + 1)</tex>}} {{Теорема|about=An Improved Drift theorem|statement= Пусть <tex>X_0, X_1, \dots</tex> {{---}} случайные величины из <tex>\{0\} \cup [1, \infty)<http:/tex> и существует <tex>\delta > 0</tex> такое что: <tex>\forall t \in \mathbb{N}, x \in \mathbb{N}_0 : E(X_t | X_{t-1} = x) \leq (1 - \delta) x<dl.acm.org/tex>citationТогда <tex>T cfm?id= \min\{t \in \mathbb{N}_0 | X_t = 0\}</tex> удовлетворяет2002138 Tutorial<tex>E(T) \leq \frac{1}{\delta}(\ln(X_0) + 1)</tex>Drift Analysis.] GECCO '11 Proceedings of the 13th annual conference companion on Genetic and evolutionary computation<tex>\forall c > 0, Pr(T > 1311-1320 \frac{1}{\delta}(\ln(X_0) + c)2011) \leq e ^ {-c}</texref>}}.
===RMHC для OneMax===
Пусть <tex>X_{t-1} = k</tex>. Тогда
<tex>E(X_t | X_{t-1} = k) = (k-1)\frac{k}{n} + k \frac{n-1k}{n} = k (1 - \frac{1}{n})</tex>, то есть <tex> \delta = \frac{1}{n}</tex>.
Отсюда по [[#theorem1Теорема о дрифте|теореме о дрифте]], с учетом того, что <tex> X_0 \leq n </tex> получаем: <tex> E(T) \leq n(\ln{n} + 1)</tex>.
===(1+1)-ES для OneMax===
<tex>E(X_t | X_{t-1} = k) \leq (k-1)\frac{k}{e n} + k (1 - \frac{k}{e n}) = k (1 - \frac{1}{e n})</tex>, то есть <tex> \delta = \frac{1}{e n}</tex>.
Отсюда по Применяем [[#theorem1Теорема о дрифте|теореме теорему о дрифте]], с учетом того, что <tex> X_0 \leq n </tex> , и получаем: <tex> E(T) \leq e n(\ln{n} + 1)</tex>.
=== (1+1)-ES для MST ===
Рассмотрим в качестве более содержательного примера поиск минимального остовного дерева с помощью (1+1)-ES. Решение представляет собой битовую строку <tex>x</tex> длины <tex>m = |E|</tex>, где <tex>x_e = 1</tex>, если ребро <tex>e \in E'</tex> входит в текущий подграф <tex>T</tex>, и <tex>x_e = 0</tex> в обратном случае.
Мутация: На каждой итерации независимо для каждого бита инвертируем его с вероятностью <tex>\frac{1}{m}</tex>.
Фитнес-функция: В качестве оценочной функции возьмем <tex>w(T) + c_C_{penalty} (|T| - n + 1) + {C_{penalty}}^2 ({\#comp} - 1) </tex>, где <tex>\#comp</tex> {{---}} число компонент связности в текущем <tex> T </tex>, а <tex> C_{penalty} > m w_{max}</tex>, где <tex>w_{max}</tex> {{---}} максимальный вес ребра.
{{Теорема
|proof=
1) Пусть после <tex>O(m \log m)</tex> итераций <tex>T</tex> связноРазобьем доказательство теоремы на три этапа:<tex>X_t = {\#comp} - 1</tex> после итерации <tex>t</tex>получение связного подграфа, получение остовного дерева и получение минимального остовного дерева.
Если <tex>X_{t - 1} = k</tex>, то существует как минимум <tex>k</tex> ребер, которые не входят в <tex>T</tex> и добавление которых уменьшает <tex>X_t</tex>:
1) Покажем, что после <tex>EO(m \log m)</tex> итераций <tex>T</tex> связно.Пусть <tex>X_t) = {\leq (1 #comp} - \frac{1}{e m})k</tex> после итерации <tex>t</tex>.
Применяя [[#theorem1|теорему о дрифте]]Если <tex>X_{t - 1} = k</tex>, то существует как минимум <tex>k</tex> ребер, которые не входят в <tex>T</tex> и добавление которых уменьшает <tex>X_t</tex>. По аналогии с решением задачи OneMax получаем требуемый результат.:
2) Пусть <tex>TE(X_t | X_{t-1} = k) \leq (1 - \frac{1}{e m})k</tex> уже связно. Тогда оно остается связным и на дальнейших итерациях.
Пусть <tex> X_t = w(T) - w_{opt} </tex> для <tex>T</tex> после итерации <tex>t</tex>Применяя [[Теорема о дрифте|теорему о дрифте]], получаем требуемый результат.
Если <tex>X_{t-1} = D > 0</tex>, то существуют <tex>e_1, \dots, e_k</tex> из <tex>T</tex> и <tex>e'_1, \dots, e'_k</tex> из <tex>E \setminus T</tex> такие, что
2) Пусть <tex>T' = T - \{e_1</tex> уже связно. Тогда оно остается связным и на дальнейших итерациях, \dots , e_k\} + \так как <tex>C_{e'_1, \dots , e'_k\penalty}</tex> {{---}} это MST,достаточно велико.
следовательно Покажем, что после <tex>D = O(m \sum_{i} (w(e_ilog m) </tex> итераций <tex>T</tex> является деревом, то есть <tex>|T| = n - 1</tex>, где <tex>n = |V|</tex>.Пусть <tex>X_t = |T| - w(e'_i)n - 1)</tex>, и для всех после итерации <tex>t</tex> (количество "лишних" ребер в <tex>iT</tex>).
Если <tex>T_i X_{t - 1} = T - e_i + e'_ik</tex> {{---}} остовное дерево с , то существует как минимум <tex>k</tex>w(T_i) ребер, удаление которых из < w(tex>T)</tex> уменьшает <tex>X_t</tex>.По аналогии с решением задачи OneMax получаем:
С верояностью <tex>E(X_t | X_{t-1} = k) \leq (1 - \geq frac{1/}{e m^2</tex>, одна итерация обменяет в точности ребра <tex>e_i</tex> и <tex>e'_i})k</tex>.
<tex>E(X_t) \leq D - \sum_{i} (1/e m^2) (w(e_i) - w(e'_i))= (1 - 1/e m^2) D </tex>Применяя [[Теорема о дрифте|теорему о дрифте]], получаем требуемый результат.
 3) Пусть <tex>T</tex> уже связно и является деревом. Тогда останется таковым и на дальнейших итерациях, так как <tex>C_{penalty}</tex> достаточно велико.  Пусть <tex> X_t </tex> для <tex>T</tex>{{---}} это разница между весом текущего дерева и оптимального: <tex> X_t = w(T) - w_{opt} </tex> после итерации <tex>t</tex>. Если <tex>X_{t-1} = D > 0</tex>, то существуют наборы ребер <tex>e_1, \dots, e_k</tex> из <tex>T</tex> и <tex>e'_1, \dots, e'_k</tex> из <tex>E \setminus T</tex> такие, что  <tex>T' = T - \{e_1, \dots , e_k\} + \{e'_1, \dots , e'_k\}</tex> {{---}} это минимальное остовное дерево. Следовательно <tex>D = \sum_{i} (w(e_i) - w(e'_i))</tex>, и для всех <tex>i</tex> <tex>T_i = T - e_i + e'_i</tex> {{---}} остовное дерево с весом <tex>w(T_i) < w(T)</tex>. С верояностью <tex>\geq 1/e m^2</tex>, одна итерация обменяет в точности ребра <tex>e_i</tex> и <tex>e'_i</tex>. Тогда: <tex>E(X_t | X_{t-1} = D) \leq D - \sum_{i} (1/e m^2) (w(e_i) - w(e'_i))= (1 - 1/e m^2) D </tex> Используем [[#theorem1Теорема о дрифте|теорему о дрифте]], учитывая, что
<tex>X_0 \leq \sum_{e \in E} w(e) \leq m w_{max}</tex>, и получаем требуемый результат.
}}
 
==Источники==
#Doerr B.: [http:<references //dl.acm.org/citation.cfm?id=2002138 Tutorial: Drift Analysis.] GECCO '11 Proceedings of the 13th annual conference companion on Genetic and evolutionary computation, 1311-1320 (2011)#Droste S., Jansen T., Wegener I.: [http://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEcQFjAA&url=http%3A%2F%2Fwww.mpi-inf.mpg.de%2F~tfried%2Fteaching%2FSS08%2Fseminar%2Fpaper%2F7-DorsteJansenWegener.pdf&ei=92DfT6vnDMX6mAWz1fmtDA&usg=AFQjCNErEUu9L8x4PWFPofp3Y80hjE2_Ow&sig2=G9rsT_PDarYfL7LL4tLPvg On the analysis of the (1 + 1) evolutionary algorithm.] Theoretical Computer Science 276, 51–81 (2002) #Witt C.: [http://massivedatasets.files.wordpress.com/2010/03/slides-02283-20102.pdf Randomized Search Heuristics.] Algorithms for Massive Data Sets, DTU Informatik,Danmarks Tekniske Universitet (2010)>
3
правки

Навигация