Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Chip

Pages: [1] 2 3 ... 5
1
Самый простой способ обрубить рекламу в Скайпе: Панель управления -> Свойства браузера-> Вкладка «Безопасность» выбираем «Опасные сайты» тыкаем «Сайты» и добавляем туда apps.skype.com

2
Блог разработчика / Delphi и AVX
« on: September 10, 2012, 01:03:56 am »
Разумеется о нативной поддержке речь не идет.
Делать вставки байт-кода помогают две чудесных утилиты:
Ассемблер flat assembler - в нем набирается команда, генерируется bin.
Hex редактор HxDen - им bin открывается и копируется байт-код (зачем ассемблер везде сует префикс 67 я не знаю, но его копировать не нужно).
Hex редактор детектит изменения файла - после компиляции новой команды ассемблером заново открывать не нужно.
Байт-код вставляется в делфи, пробелы заменяются на ",$", добавляется db. Результат выглядит так:
db $C5,$F5,$5C,$CA           //vsubpd ymm1,ymm1,ymm2
для работы AVX требуется поддержка процессором (Sandy Bridge, Bulldozer и выше) и операционной системой (Windows 7 и выше) (она должна сохранять состояние новых регистров при переключении контекста)



3
Алгоритм такой:
1.пользователь открывает тяжелую страничку
2.браузер нагружает видеокарту
3.драйвер думает ага нагрузка - повышает частоты - монитор дергается
4.пользователь идет на другую страницу
5.нагрузка на видео падает
6.драйвер некоторое время думает - понижает частоты - монитор дергается
7. п.1

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

4
1. Скачайте этот файл (бесплатно, 40kb, без рекламы, без инсталляции).
2. Сохраните в любую папку (главное не удаляйте).
3. Прикрепите на панель задач (используйте drag&drop):
           
Результат с большими и маленькими иконками:
           

Этот метод также работает в Windows XP, если кнопка Скрыть все окна(показать рабочий стол) пропала с панели быстрого запуска. Должно работать в Windows 8.

Источник:Show Desktop Button

5
Delevoper's Blog / Show Desktop button for Windows 7. Simplest way.
« on: June 16, 2012, 03:33:06 am »
1.Download this (Free, 40kb, no ads, no need to install).
2. Save it in any folder you want (just don't delete it).
3. Pin to Taskbar on your favorite place (use drag and drop):
           
Result with small and large icons:
           

This method also works for Windows XP if you lost Show Desktop button in Quick Launch. Should work for Windows 8 too.

Source:Show Desktop Button

6
Delevoper's Blog / Favorite video
« on: February 22, 2012, 12:28:59 pm »

8
Delevoper's Blog / OpenCL for Delphi
« on: February 01, 2012, 12:53:03 am »
Useful links with headers and links to drivers http://www.heatlab.cz/OpenCLforDelphi.html

9
Блог разработчика / OpenCL for Delphi
« on: February 01, 2012, 12:52:09 am »
Полезная ссылка с заголовками и ссылками на драйвера http://www.heatlab.cz/OpenCLforDelphi.html

10
Delevoper's Blog / Simple API for JSON for Delphi (SAX analog for JSON)
« on: January 14, 2012, 04:11:31 pm »
Simple API for JSON for Delphi it's analog of SAX for XML.
To use you need to inherit class TSAJ and override StartElement, SetElementValue, EndElement procedures.
In these procedures you can recode, process and all that pleases - just like in SAX. Nowhere faster, memory is not allocated.

11
Delevoper's Blog / AI Challenge 2011 Ants Murashka finished on 15 place
« on: January 14, 2012, 04:01:12 pm »
translation in progress

12
Блог разработчика / Simple API for JSON for Delphi
« on: January 14, 2012, 04:00:16 pm »
Simple API for JSON for Delphi это аналог SAX для XML.
Для использования нужно унаследовать класс TSAJ, перегрузить методы начала, конца и установки значения для элемента. В этих методах можно производить перекодировку, обработку и все что вздумается - почти как в SAX. Быстрее некуда, память не выделяется.

13
Bits    Last code point    Byte 1    Byte 2    Byte 3    Byte 4    Byte 5    Byte 6
  7    U+007F    0xxxxxxx
11    U+07FF    110xxxxx    10xxxxxx
16    U+FFFF    1110xxxx    10xxxxxx    10xxxxxx
21    U+1FFFFF    11110xxx    10xxxxxx    10xxxxxx    10xxxxxx
26    U+3FFFFFF    111110xx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx
31    U+7FFFFFFF    1111110x    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx

Управляющие символы:
The C0 set defines codes in the range 00HEX-1FHEX and the C1 set defines codes in the range 80HEX-9FHEX
http://ru.wikipedia.org/wiki/UTF-8

0x00000000 - 0x00011111   C0
0x10000000 - 0x10011111   C1

Символы UTF-8 получаются из Unicode следующим образом:
Unicode    UTF-8    Представленные символы
0x00000000 - 0x0000007F    0xxxxxxx    ASCII, в том числе латинский алфавит, простейшие знаки препинания и арабские цифры
0x00000080 - 0x000007FF    110xxxxx 10xxxxxx    кириллица, расширенная латиница, арабский, армянский, греческий, еврейский и коптский алфавит; сирийское письмо, тана, нко; МФА; некоторые знаки препинания
0x00000800 - 0x0000FFFF    1110xxxx 10xxxxxx 10xxxxxx    все другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
0x00010000 - 0x001FFFFF    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx    музыкальные символы, редкие китайские иероглифы, вымершие формы письменности

вобщем главное, что эти символы никогда не совпадут с управляющими, даже если их анализировать по одному

14
Турнир привлекал своей простотой и собрал широкую аудиторию. Идея пришлась по вкусу и старшеклассникам и умудренным опытом гуру, помнящим еще чемпионат мира по компьютерным шахматам 1972-го года.

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

Иллюстрация BFS для множественных источников (автор BenJackson):

Для отыскания деталей, влияющих на результат, нужно было проделать много теоретической и экспериментальной работы.
Для быстрой реализации иметь простое, легко модифицируемое ядро алгоритма.
Для настройки быстрые и точные тесты, позволяющие определить полезность нововведения (процентов 70, казалось бы, полезных изменений влияли негативно).
Но на момент старта я всего этого не знал и, исходя из беглого анализа форума, начал бороться с таймлимитом. В итоге родился быстрый, но громоздкий и совсем не удобный для экспериментирования вариант поиска в ширину. Первая версия была готова за несколько дней, умела только собирать еду, но легко забиралась в Top 100 на официальном сервере.

Алгоритм столкновения с противником

Хотелось чего-то большого и чистого, но, в конце концов, реализовалось усеченным минимаксом и совсем неплохо работало.
Каждый ход предрассчитывались 5 карт в предположении, что противник будет двигаться всеми муравьями в одном направлении или стоять на месте. Дальше карта разбивалась на квадраты 5*5 клеток и мои муравьи, попадающие в зону атаки (5 штук максимум), двигались всеми возможными способами. Полученные результаты собирались минимаксом в оценку и выбиралась наиболее благоприятная комбинация ходов. Для более правильной обработки стыков сама сетка 5*5 тоже немного сдвигалась каждый ход.

Теперь можно было приравнять ближайших к хилу вражеских муравьев к еде, остальное алгоритм атаки делал сам.

Детали, позволявшие существенно улучшить игру, выглядели достаточно тривиально:

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



За 2 недели до дедлайна

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

День перед дедлайном

Подбираются последние коэффициенты. На TCP сервере круглосуточно висят 8(4+4) копий с двумя разными наборами констант. Впрочем определить кто лучше это не помогает – постоянные таймауты из-за большого количества игроков или при приближении к лимиту в 200 муравьев (команды на сервер идут долго). К тому же разброс в классе ботов не позволяет алгоритму оценки корректно определить рейтинг. Тестовый набор карт тоже показывает противоречивые результаты, поэтому в финал уходит слегка более агрессивная (из за техники смещения маски 5 на 5 при расчете атаки) версия. Также в последний момент прикручен бонус за движение в сторону еды в момент атаки. Тесты дружно клялись, что это полезно.
Официальный сервер в хаосе, большинство основных участников ресабмитятся с последними изменениями.

Финалы

День первый

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

День второй

Начиная с 5-й партии организаторами включен алгоритм оценки рейтинга TrueSkill – рейтинг состоит из двух коэффициентов: mu — собственно рейтинг и sigma — отражающий уверенность системы в рейтинге. Общий рейтинг равен mu-3*sigma. Соперники подбираются с близким рейтингом и с меньшим sigma. На практике это привело к тому, что из-за больших sigma топовые боты играют намного реже остальных.
Для Мурашки 5-я партия закончилась тем, что, пройдя под прикрытием тумана войны, на маленькой бедной карте бот, не входящий в первые две сотни, украл единственный хил. Итого -4 к mu и место в пятой сотне. Казино открыто с шиком.
Рейтинг некоторых игроков считается с ошибками. Ошибки в очередной раз исправляются, сервера рестартуют.
Игры идут еще медленнее.

День третий

Стартовые пакеты с удовольствием наиграли по 20 игр друг с другом, лидеры взирают на них с завистью и 6-ю играми в активе. Организаторы меняют алгоритм выбора соперников, чтобы выровнять количество игр, после чего включают отсечение до 5000-го места. А к вечеру до 3000-го и продлевают соревнование на полтора дня. Аллилуйя!

День четвертый

Отсечение в 2000 и 1000 мест.
Российская команда teapotahedron на расстоянии одной игры от xathis-а, все в предвкушении смены лидера… не судьба.
Мурашка мирно шебуршится в 20-ке.

День пятый – завершающий

Отсечение в 500 мест.
teapotahedron уходит вниз (финиш на 5-м месте).
Зато сценарий предыдущего дня повторяется с украинцем GreenTea. На этот раз успешно — смена лидера действительно произошла за 2 часа до остановки серверов. К тому же алгоритм выбора соперников дал очередной сбой, подобрав участника за пределами лимита отсечения в 500, и выделил всю серверную мощность на компенсацию не сыгранных им партий – весь топ пол часа внимательно сосет лапу.
Но чуда не произошло, xathis уверенно и заслужено вернул себе первое место, с чем его и поздравляю.
Мурашка, занимавшая за пару часов до финиша 14-е место, последней игрой в очной встрече опередила японца Komaki. И в то же время была пройдена российскими SDil_ -ом и meduz-ой. Опять же казино, но все могло быть и хуже — 15-е место для данного набора карт неплохой результат.

Ошибки

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

Заметки на будущее

Догонять соперника, имеющего фору в несколько месяцев, труднее чем кажется.
Система тестирования, позволяющая определить полезность – это очень важно.
В последний день все кардинально меняется, а финальное соревнование сильно отличается от тестирования.
От мелких ошибок нужно избавляться сразу – они накапливаются и могут приводить к тому, что хорошая стратегия перестанет работать и будет отброшена на тестировании.

Организация

Идея отличная, работа проделана огромная, организаторы заслуживают всяческих благодарностей. Без погрешностей тоже не обошлось, но мы живем в неидеальном мире.
Спорным решением было оставить в соревновании ботов из стартового пакета. Организаторов можно понять – хотелось задекларировать массовость. Но при более чем скромных вычислительных мощностях это доставляло неудобства реальным участникам. Впрочем, ошибка признана и на будущее обещали фильтровать.
Набор карт с сильно нестабильными результатами тоже не совсем понятен, ведь очевидно, что ошибок, которые нужно будет исправить TrueSkill-у и так достаточно.
Резкие всплески и падения в рейтингах, вероятно, тоже заслуга набора карт и особенностей алгоритма выбора, который не был достаточно случаен. Моя версия такова, что внутри общего набора финальных карт сформировались кластеры, которые резко выгодны одним ботам и не выгодны другим. Едва система рейтинга, оцениваемая TrueSkill, приходила в равновесное состояние, алгоритм выбора карт натыкался на очередную такую комбинацию и за 5-10 игр перемешивал таблицу. Сигма ближе к концу сжалась до минимума, уже ни на что не влияла и компенсировать всплески не могла.

Финальный рейтинг

Отчет победителя

На последок немножко Ant-Art-а в исполнении Мурашки.

Всех с наступающим и удачи на соревнованиях!

15
Delevoper's Blog / Ants TCP Server
« on: November 10, 2011, 12:42:38 pm »
Official AIChallenge server is overloaded and it's not possible to test bot there.
It turned all the people sitting on a TCP server.
http://ants.fluxid.pl/howto (requires 2nd python  http://www.python.org/download/releases/2.7.2/)
It means the bot is running locally (you can debug), the server only makes the moves and get-post data. No registration - you just need only specify the free username and the desired password. Also you can watch replays and rank.

Pages: [1] 2 3 ... 5