<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-417973693802397097</id><updated>2011-07-07T23:27:17.106-07:00</updated><title type='text'>Mengeengineering</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://innochenti.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://innochenti.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>innochenti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-417973693802397097.post-7361342620697278172</id><published>2009-09-29T08:58:00.000-07:00</published><updated>2009-09-29T09:10:22.331-07:00</updated><title type='text'>Day 4: MFC stuff</title><content type='html'>По умолчанию CListBox не умеет прокручивать по горизонтали. Для того чтобы обойти это ограничение, необходимо добавить код, который будет считать максмимальную длинну строк и через CListBox::SetHorizontalExtent сдвигать содержимое.&lt;br /&gt;&lt;br /&gt;&lt;table width = "100%" bgcolor="#F2F2F2"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;font color="#0000FF"&gt;void&lt;/font&gt; &lt;font color="#000000"&gt;UpdateHorizBarWidth&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt; &lt;font color="#0000FF"&gt;const&lt;/font&gt; &lt;font color="#000000"&gt;CString&lt;/font&gt; &lt;font color="#C8003C"&gt;&amp;amp;&lt;/font&gt; &lt;font color="#000000"&gt;item&lt;/font&gt; &lt;font color="#C8003C"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#C8003C"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;CClientDC&lt;/font&gt; &lt;font color="#000000"&gt;dc&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#0000FF"&gt;this&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;CFont&lt;/font&gt; &lt;font color="#C8003C"&gt;*&lt;/font&gt; &lt;font color="#000000"&gt;pFont&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;CListBox&lt;/font&gt;&lt;font color="#C8003C"&gt;::&lt;/font&gt;&lt;font color="#000000"&gt;GetFont&lt;/font&gt;&lt;font color="#C8003C"&gt;();&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;dc&lt;/font&gt;&lt;font color="#C8003C"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;SelectObject&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;pFont&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;CSize&lt;/font&gt; &lt;font color="#000000"&gt;size&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;dc&lt;/font&gt;&lt;font color="#C8003C"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;GetTextExtent&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;item&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;size&lt;/font&gt;&lt;font color="#C8003C"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;cx&lt;/font&gt; &lt;font color="#C8003C"&gt;+=&lt;/font&gt; &lt;font color="#40B440"&gt;3&lt;/font&gt; &lt;font color="#C8003C"&gt;*&lt;/font&gt; &lt;font color="#C8003C"&gt;::&lt;/font&gt;&lt;font color="#000000"&gt;GetSystemMetrics&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;SM_CXBORDER&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000FF"&gt;if&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt; &lt;font color="#000000"&gt;size&lt;/font&gt;&lt;font color="#C8003C"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;cx&lt;/font&gt; &lt;font color="#C8003C"&gt;&amp;gt;&lt;/font&gt; &lt;font color="#000000"&gt;MaxWidth&lt;/font&gt; &lt;font color="#C8003C"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#C8003C"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;MaxWidth&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;size&lt;/font&gt;&lt;font color="#C8003C"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;cx&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;CListBox&lt;/font&gt;&lt;font color="#C8003C"&gt;::&lt;/font&gt;&lt;font color="#000000"&gt;SetHorizontalExtent&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;MaxWidth&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;font color="#C8003C"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#C8003C"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://dobrokot.nm.ru/WinnieColorizer.html"&gt;&lt;font color="#727272"&gt;_Winnie C++ Colorizer&lt;/font&gt;&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Ес-но придется вызывать foreach UpdateHorizBarWidth при каждом изменении данных ListBox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/417973693802397097-7361342620697278172?l=innochenti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://innochenti.blogspot.com/feeds/7361342620697278172/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://innochenti.blogspot.com/2009/09/day-4-mfc-stuff.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/7361342620697278172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/7361342620697278172'/><link rel='alternate' type='text/html' href='http://innochenti.blogspot.com/2009/09/day-4-mfc-stuff.html' title='Day 4: MFC stuff'/><author><name>innochenti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-417973693802397097.post-4904046090355246783</id><published>2009-06-09T11:25:00.000-07:00</published><updated>2009-06-09T11:51:05.780-07:00</updated><title type='text'>Day 3: NN Crossover &amp; Mutation</title><content type='html'>Позавчера на #gamedev Suslik рассказывал про свое использование нейронных сетей и ГА.&lt;br /&gt;http://www.gamedev.ru/flame/forum/?id=75030&amp;page=45#m663&lt;br /&gt;про скрещивание и мутацию нейронных сетей. &lt;br /&gt;а вот совсем случайно наткнулся на такой способ:&lt;br /&gt;для многослойного персептрона с прямым распространением этот процесс представляет собой образование новой нейронной сети, в которой выходные нейроны родителей станут скрытыми нейронами потомка. При этом сохраняются знания, накопленные родителями. и рисунок&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GoRRALzZ3fM/Si6s4Id9TXI/AAAAAAAAAGY/X0fy4stgg64/s1600-h/1.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 261px; height: 241px;" src="http://2.bp.blogspot.com/_GoRRALzZ3fM/Si6s4Id9TXI/AAAAAAAAAGY/X0fy4stgg64/s320/1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5345399888081145202" /&gt;&lt;/a&gt;&lt;br /&gt;с мутацией еще проще: веса сетки умножаются на случайное число.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/417973693802397097-4904046090355246783?l=innochenti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://innochenti.blogspot.com/feeds/4904046090355246783/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://innochenti.blogspot.com/2009/06/day-3-nn-crossover.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/4904046090355246783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/4904046090355246783'/><link rel='alternate' type='text/html' href='http://innochenti.blogspot.com/2009/06/day-3-nn-crossover.html' title='Day 3: NN Crossover &amp; Mutation'/><author><name>innochenti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GoRRALzZ3fM/Si6s4Id9TXI/AAAAAAAAAGY/X0fy4stgg64/s72-c/1.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-417973693802397097.post-951734117920512048</id><published>2009-05-27T04:08:00.000-07:00</published><updated>2009-08-04T11:44:00.812-07:00</updated><title type='text'>Day 2: Genetics Algorithms On GPU</title><content type='html'>или gpgpgpu.&lt;br /&gt;&lt;br /&gt;Генетические алгоритмы на GPU&lt;br /&gt;&lt;br /&gt;Вкратце о том, как реализовать ГА на gpu. &lt;br /&gt;При реализации на CPU у нас есть M хромосом (или популяция), в каждой из которой N ген. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GoRRALzZ3fM/Sh0yB9HWxLI/AAAAAAAAAFc/ekcwgs7JscA/s1600-h/1.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 184px; height: 87px;" src="http://1.bp.blogspot.com/_GoRRALzZ3fM/Sh0yB9HWxLI/AAAAAAAAAFc/ekcwgs7JscA/s320/1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5340479742297949362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;При реализации на GPU популяция представляется в виде множества потоков (текстур), где каждый элемент потока (rgba, в зависимости от формата текстуры)  является отдельным геном(или 4, если rgba). Количество потоков равно количеству ген в хромосоме, а количество генов в одном потоке определяет размер популяции. Т.е. получаем 3д сетку вида:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GoRRALzZ3fM/Sh0yIQu_nOI/AAAAAAAAAFk/plmig3gdNgY/s1600-h/2.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 246px; height: 165px;" src="http://4.bp.blogspot.com/_GoRRALzZ3fM/Sh0yIQu_nOI/AAAAAAAAAFk/plmig3gdNgY/s320/2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5340479850643692770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Данное представление позволяет эффективно реализовать операторы скрещивания,  мутации и замещения. Основными плюсами является то, что для каждого элемента потока (гена) требуется выборка только k ближайших соседей, что эффективно использует текстурный кеш видеокарты. Кроме того, можно упаковать и обработать до 4 ген(float) в одном элементе потока. &lt;br /&gt;Если целевую функцию довольно просто посчитать в kernel, то удается избежать медленную передачу данных из GPU в CPU, поскольку тогда все данные (значения фитнеса) хранятся в видеопамяти. В противном случае необходимо оценить затраты на чтение/запись значений фитнеса, посчитанного на CPU и передаваемого на GPU, поскольку время записи/чтения может превысить весь суммарный эффект от распараллеливания.&lt;br /&gt;&lt;br /&gt;Оператор скрещивания. На входе элемент потока и информация о k( на рисунке 4 соседа) соседях слева, справа, вверху, внизу. На выходе элемент потока. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GoRRALzZ3fM/Sh0yNRDTQAI/AAAAAAAAAFs/AfC-QOqzGgY/s1600-h/3.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 135px; height: 131px;" src="http://4.bp.blogspot.com/_GoRRALzZ3fM/Sh0yNRDTQAI/AAAAAAAAAFs/AfC-QOqzGgY/s320/3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5340479936628211714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;С некоторой вероятностью скрещиваются две хромосомы, одна из которых является текущей, другая - с лучшим фитнесом среди k соседних. В результате скрещивания  получается  один потомок. &lt;br /&gt;&lt;br /&gt;Оператор мутации. На входе/выходе элемент потока. &lt;br /&gt;Любой оператор мутации реализуемый на CPU подойдет. Например, простейший для RCGA – добавление случайного числа из нормального распределения. В glsl коде это Rand текстура с этими значениями.&lt;br /&gt;&lt;br /&gt;&lt;table width = "100%" bgcolor="#F2F2F2"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;font color="#0000C8"&gt;#extension&lt;/font&gt; &lt;font color="#000000"&gt;GL_ARB_texture_rectangle&lt;/font&gt; &lt;font color="#C8003C"&gt;:&lt;/font&gt; &lt;font color="#000000"&gt;enable&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;uniform&lt;/font&gt; &lt;font color="#000000"&gt;sampler2DRect&lt;/font&gt; &lt;font color="#000000"&gt;OldPopulation&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;uniform&lt;/font&gt; &lt;font color="#000000"&gt;sampler2DRect&lt;/font&gt; &lt;font color="#000000"&gt;Rand&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;uniform&lt;/font&gt; &lt;font color="#000000"&gt;vec4&lt;/font&gt; &lt;font color="#000000"&gt;Up&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;uniform&lt;/font&gt; &lt;font color="#000000"&gt;vec4&lt;/font&gt; &lt;font color="#000000"&gt;Down&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt; &lt;br /&gt;&lt;font color="#0000FF"&gt;void&lt;/font&gt; &lt;font color="#000000"&gt;main&lt;/font&gt;&lt;font color="#C8003C"&gt;()&lt;/font&gt; &lt;br /&gt;&lt;font color="#C8003C"&gt;{&lt;/font&gt;&lt;br /&gt; &lt;font color="#000000"&gt;vec4&lt;/font&gt; &lt;font color="#000000"&gt;cell&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;texture2DRect&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;OldPopulation&lt;/font&gt;&lt;font color="#C8003C"&gt;,&lt;/font&gt; &lt;font color="#000000"&gt;gl_TexCoord&lt;/font&gt;&lt;font color="#C8003C"&gt;[&lt;/font&gt;&lt;font color="#40B440"&gt;0&lt;/font&gt;&lt;font color="#C8003C"&gt;].&lt;/font&gt;&lt;font color="#000000"&gt;st&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt; &lt;br /&gt; &lt;font color="#000000"&gt;vec4&lt;/font&gt; &lt;font color="#000000"&gt;rnd&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;texture2DRect&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Rand&lt;/font&gt;&lt;font color="#C8003C"&gt;,&lt;/font&gt; &lt;font color="#000000"&gt;gl_TexCoord&lt;/font&gt;&lt;font color="#C8003C"&gt;[&lt;/font&gt;&lt;font color="#40B440"&gt;1&lt;/font&gt;&lt;font color="#C8003C"&gt;].&lt;/font&gt;&lt;font color="#000000"&gt;st&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt; &lt;font color="#000000"&gt;cell&lt;/font&gt; &lt;font color="#C8003C"&gt;+=&lt;/font&gt; &lt;font color="#000000"&gt;rnd&lt;/font&gt;&lt;font color="#C8003C"&gt;;&lt;/font&gt;&lt;br /&gt; &lt;br /&gt; &lt;font color="#000000"&gt;gl_FragColor&lt;/font&gt; &lt;font color="#C8003C"&gt;=&lt;/font&gt; &lt;font color="#000000"&gt;clamp&lt;/font&gt;&lt;font color="#C8003C"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;cell&lt;/font&gt;&lt;font color="#C8003C"&gt;,&lt;/font&gt; &lt;font color="#000000"&gt;Up&lt;/font&gt;&lt;font color="#C8003C"&gt;,&lt;/font&gt; &lt;font color="#000000"&gt;Down&lt;/font&gt;&lt;font color="#C8003C"&gt;);&lt;/font&gt;&lt;br /&gt;&lt;font color="#C8003C"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://dobrokot.nm.ru/WinnieColorizer.html"&gt;&lt;font color="#727272"&gt;_Winnie C++ Colorizer&lt;/font&gt;&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Оператор замещения. На входе поток с информацией о фитнессе, поток с популяцией до мутации и после. На выходе новая популяция.&lt;br /&gt;&lt;br /&gt;Учитывая представление популяции и все входящие/исходящие потоки для каждого из операторов, общую схему работы генетического алгоритма можно описать следующим образом:&lt;br /&gt;&lt;br /&gt;Параллельно для M хромосом выполнить:&lt;br /&gt;1. Оператор скрещивания для N потоков, где N – количество генов. &lt;br /&gt;2. Оператор мутации для N потоков. На выходе N новых потоков.&lt;br /&gt;3. Подсчет фитнеса&lt;br /&gt;4. Замещение&lt;br /&gt;&lt;br /&gt;В реализации без CUDA, для шага 1,2,4 понадобится N проходов(render passes) и промежуточные текстуры для хранения результатов. Для шага 3 необходим всего один проход с информацией о всех N текстурах. Кроме того, необходима текстура со случайными числами, которая либо обновляется в каждой эпохе, либо выборка в mutation kernel происходит со случайных элементов (при этом значения остаются неизменными) потока этой текстуры. Такой случайный элемент задается с помощью случайных текстурных координат.&lt;br /&gt; &lt;br /&gt;Такая реализация имеет следующее ограничения: &lt;br /&gt;&lt;br /&gt;Количество потоков(текстур) ограничено. &lt;br /&gt;Если функция фитнесса сложная, то может не хватить команд в kernel, тогда необходимо разбивать обработку потока на несколько kernels(или N проходов). &lt;br /&gt;Позже код и дополнения.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/417973693802397097-951734117920512048?l=innochenti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://innochenti.blogspot.com/feeds/951734117920512048/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://innochenti.blogspot.com/2009/05/day-2-genetics-algorithms-on-gpu.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/951734117920512048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/951734117920512048'/><link rel='alternate' type='text/html' href='http://innochenti.blogspot.com/2009/05/day-2-genetics-algorithms-on-gpu.html' title='Day 2: Genetics Algorithms On GPU'/><author><name>innochenti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GoRRALzZ3fM/Sh0yB9HWxLI/AAAAAAAAAFc/ekcwgs7JscA/s72-c/1.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-417973693802397097.post-3581755091648806492</id><published>2009-05-25T15:16:00.000-07:00</published><updated>2009-05-27T05:56:40.689-07:00</updated><title type='text'>Day 1: Intro</title><content type='html'>Буду писать о gamedev, эвристике, NP-задачах, вообщем тем, чем сейчас занимаюсь. Надеюсь это будет происходить часто и доступно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/417973693802397097-3581755091648806492?l=innochenti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://innochenti.blogspot.com/feeds/3581755091648806492/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://innochenti.blogspot.com/2009/05/day-1.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/3581755091648806492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/417973693802397097/posts/default/3581755091648806492'/><link rel='alternate' type='text/html' href='http://innochenti.blogspot.com/2009/05/day-1.html' title='Day 1: Intro'/><author><name>innochenti</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
