<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Может сюда можно добавить флеш версию этой игры
и добавьте нас сайт дистрибутивы
А вообще прикольно! Даешь локальный турнир по galcon, чем мы хуже Google, готов поддержать проект, информационное спонсорство однозначно, а может какие и призы придумаем! Напиши мне на почту
Вот, добавил флеш версию, чтобы можно было попробовать поиграть вручную.
АнализПриказов: Игрок 1 выдал неверный номер исх.планеты: <0>. В данный момент она ему непринадлежит.
(2) Дистрибутивы проще держать в одном месте. Письмо напишу. За флэш — спасибо, надеюсь ничего не нарушаем.
(5) MaxDavid, обрати внимание, в Приказе() нужно передавать Планета.ИД — числовой идентификатор планеты.
(6) Упс… В одной ветке написал правильно, а в другой скосячил. Спасибо, буду внимательней, придержите за мной место в турнире 😎
(6) Ничего не нарушаем, так как внутри флеша есть все ссылки на покупку программы и ее официальный сайт.
Для версии 8.1 будет?
нужна версия для 8.1
(9) (10) В ближайшую неделю версии для восьмерки не будет. Желающих портировать нет. Я пока семерку до ума буду доводить.
Ну-с, вот вам для затравки 😉
(12) Отлично, начало положено!
Выложены очередные обновления:
1.01
— добавлены русские синонимы математических функций:
КореньКвадратный(), АркТангенс(), Синус(), Косинус(), СлучайноеЧисло().
Пояснение по работе функции СлучайноеЧисло(МаксЗнач): функция возвращает случайные числа в диапазоне от 1 до МаксЗнач включительно.
Например, для СлучайноеЧисло(2) будет всегда возвращаться только 1 или 2.
— приведен в соответствие метод Вселенная.ДлинаПути(НачПланета, КонПланета). Теперь в качестве параметров можно передавать числовые идентификаторы планет.
Возможность передачи агрегатных объектов оставлена для совместимости.
— добавлен вывод текущего состояния игры: общее количество судов и общий темп роста для каждого бота.
1.02
В связи с тем, что операции по обработке строк в 1С выполняются очень медленно в этом обновлении изменен способ передачи боту состояния игры.
Про игру С-robots слышали? На базе вашей разработки можно сделать 1с-роботы?
(15) Кинь ссылку посмотреть?
(16)
Здесь и здесь
(12) простенький бот.. 1 условие в твоём коде и уже начинает обыгрывать.
🙂
(18)
Дык это ж для затравки… ) Зато оперативно.
Там даже если поиграть коэффициентами, уже есть разница. Но, например, если выставить К1 = 2, К4 = 3, первоначальный вариант будет проигрывать почти на всех картах, а на карте №16 — выигрывать. Это уже повод для размышлений.
Вопрос автору. Могу я программно узнать номер хода? Или надо заводить свой счетчик?
(20) Заводи свой
(19) страви своего бота с RangeBot
🙂
Интересный конкурс…
http://ai-contest.com/profile.php?user_id=7157
Являюсь участником в оригинальном конкурсе.
Мой профиль:
Чтобы посмотреть битвы нажмите «View Game >>»
http://ai-contest.com/rankings.php
Рейтинги игроков:
PS: кстати rsergio — участник который находится в верхушке рейтинга 1С-ник 😀
А будут ограничения на время хода?
Вообще, как я понимаю, в чем отличие от Google, так в этом, что больше внимания надо уделить оптимизации алгоритмов в 1С. Т.е. получается, что условия более жесткие, чем в официальном конкурсе.
Попробуй в условиях ограниченных ресурсов и времени выжать максимум. У кого это получится, тот и будет победителем.
Вот не хотел же ввязываться, как знал. Ну не ставится у меня MapWinGIS47… 😮
(26) Ограничение — 1 секунда.
(28) Какая ОСь?
(29) XP prof (2002) SP3
(30) А есть права администратора? Посмотрел форум разработчиков, советуют проверить наличие прав. В некоторых случаях ещё помогает установка более ранней версии:
http://svn.mapwindow.org/svnroot/InstallationProjects/4.7/Release/MapWinGIS47RC-x86-Setup.exe
(31) Помогло. Похоже, этот установщик ставит какие-то примочки от С++, а тот, что по ссылке в начале их не ставит, но требует.
(32) Вот и хорошо. Добавлю этот способ в инструкцию на форуме.
(16) .. еще такой «наглядный» вариант —http://antru.ru/crobots3d/
Гы. Моя любимая игруха в детстве )). Жаль поучаствовать в конкурсе времени нет 😥
(29)
Это значит, если бот не успел просчитать ход за это время, то что? И опять же, буду делать я, например, замеры на одном компе — будет одно время, на другом другое…
(36) Если бот не успевает сделать ход он проигрывает партию.
Оба бота запускаются на одном компьютере и находятся в равных условиях, если один успевает ходить, а второй нет, то вывод очевиден.
Жесткое ограничение времени хода считаю одним из достоинств этого соревнования.
Нужно найти компромисс между быстродействием и эффективностью, оптимизировать алгоритмы, кэшировать данные. В общем есть над чем подумать.
(37) На какой примерно конфигурации будет проводиться соревнование?
Ошибка (все устанавливал по схеме), конфигурация последняя 1.2.1
Не существует файла: C:ВойнапланетPlanetWarsExtFormsotsDualBot.ert для класса: Бот.4061437
Регистрация класса закончилась неудачно!
Ошибка инициализации Бота 1
(40) Попробуй переименовать папку «Войнапланет» на «PW», например.
Думаю, что проблема в русском наименовании в пути к файлу.
Работает сервис защиты ботов. Подробнее здесь:Обмен ботами
pshunailov, я тоже сталкивался с такой проблемой, решилось — переустановил windows installer, потом переустановил ActiveX-компоненту MapWinGIS. У меня заработало
Фу-уу, наконец-то зарегистрировался, правда не без проблем
При нажатии на эту ссылку. Демострация игры не работает.
Выдает сообщение:
Строка: 1
Символ: 547
Код: 0
URI-код:
Подскажите плиз, что у меня не так?
(44) FF, Opera, Chrome работают.
Google Chrome Frame
Для IE нужен
Добавил нового бота на форум … так … для веселья. Это пока набросок
чет странно — при указании ограничения в 200 ходов — фактически делается 201. Начинается все с 0 хода. Это нормально?
(47) На нулевом ходе показываются только планеты. Ботам передается управление не более 200 раз включительно. Это легко проверить, добавив счетчик ходов в модуль бота.
Выложил обновление 2.00.
Установка и обновления
См. на форуме
Проверяйте «групповое тестирование». Если всё нормально, то сегодня-завтра начнем.
ну вот .. ещё немного доработал бота, существующим тут — неплохой конкурент. доработки ещё продолжу, идей ещё много
Когда начнется чемпионат?
rsergio выложи пожалуйста своего бота на 1С, хоть глянуть как твой воюет
(52)
Жду начала чемпионата, ну а пока мой бот рвет вчистую всех, кто пока выложил свои 🙂
rsergio не жадничай, давай своего, нам хоть веселее будет
Обновление 2.11:
Установка и обновления
— Исправлены ошибки релиза 2.0.
— В логе работает колесо мыши.
— Добавлена возможность пошагового выполнения боя.
— Исправлена ошибка в Вселенная.МоиФлоты().
Качать здесь:
Выводы которые сделал для себя:
Еще хорошо было бы решать эту задачу, как кластерную. Но опыт и знания пока что не позволяют.
(21) Увы скорее всего нет. Сроки конкурса таковы, что времени на обширную программу исследований нет. Что очень жаль. Дали бы на написание бота хотя бы пол года… В основу своего бота положил систему резервирования изложенную во второй статье. Естественно систему резервирования значительно модифицировал. Изложенная в статье система дает слишком осторожную игру. В ней не учитывается темп роста планет и летящие к планетам флоты.
Идеи в изложенные в первой статье тоже очень интересны. Планировал идти от простого к сложному. Рассмотреть систему из трех планет и т.д. При этом ища общие закономерности. Поиски в этом направлении дали следующее.
Пусть у нас есть две наши планеты A и B. Пусть выполняется условие |A,P|<=|B,P|, где Pлюбая чужая планета (|A,P| — расстояние от планеты A до планеты P).
Тогда назвем планету A ведущей, а планету B подчиненной. Исходя из этого можно выстроить иерархию сових планет. Назовем нашу планету главной, если она не подчинена ни одной из наших планет.
Тогда вырисовывается очень простой алгоритм.
1) все ракеты на подчиненых планетах немедленно отправляем на ее ведущую планету. Маленькая сложность появляется если у планеты несколько ведущих планет. Тогда надо решить на какую из них и в какой пропрции отправлять ракеты.
2) Модель игры сводится к рассмотрению противостояния наших и вражеских главных планет. Просмотр игр в конкурсе гугла показывает, что главных планет всего одна, две. То есть задача имеет поразительно маленькую размерность. Да и вариантов решений при таком количестве главных планет немного.
Планируется ли сделать тут таблицу рейтинга, логи боёв между ботами???
(58) Готовьте ботов 😀 Доделываю сайт …
Если резервировать корабли против всех планет противника общий флот должен составлять MyFlot = EnemyFlot*CountEnemyPlanet.
Поэтому нужно расставлять приоритеты, насколько высокая опасность потерять планету, и насколько она нам нужна (можно ведь и выгодно обменять, на одну, а то и несколько).
Я пока что отказался от модуля защиты, слишком много нюансов.
Для себя решил, количество резерва на планете должно быть равно (! если после атаки на планете население = 0, планета не считается завоеванной),
Знаки возможно напутал.
А вообще если темп роста у противника выше, нам должно быть вкусно съесть ее до того как он накопит достаточное количество кораблей, чтобы нас запобедонить.
Это происходит из-за того, что в середине партии любой из соперников при остром желании может захватить любую из планет соперника.
Если в «Старте» захват планет был нацелен на равноудаленность от противника, в «Середине» при равных количествах кораблей, каждая планета защищена:
Еще обратил внимание:
т.е. противник в любом случае потеряет F(Bi,Ni).Count флота, особенно планета интересна, когда (Ni.Count + F(Bi,Ni).Count)/2 + 1 < F(Bi,Ni).Count (противник собьет больше половины флота нейтральной планеты)
блин, четвертый раз ввожу сообщение, все время на post сбивается на начало форума.
Естественно при этом может потерять свои планеты.
Почему бы не дать ему это сделать? Видел несколько боев которые велись из-за одной единственной планеты, ценность ее никак не мог понять (регенерация ~2), в то время как потраченой мощности хватило бы на завоевание соседних планет (регенерация бы с лихвой закрыла потери).
Это происходит из-за того, что в середине партии любой из соперников при остром желании может захватить любую из планет соперника.
При равных силах и равномерном захвате планет (равноудаленные к противнику). Первые планеты будут достаточно защищены. А последним могут помочь те, что более сильны (говорю о ситуации, слив на передовую). Да и можно разрешить небольшой оправданный риск (захватить нейтральную планету на своей территории, для увеличения репродукции).
Кроме того обратил внимание на следующие вещи:
Пытаюсь все это систематизировать. Пока что туго получается. Очень много факторов. Сейчас переписываю предлагаемый файл PlanetsWars.py, для получения большей информации из методов (связывание в дерево (корни ведущие планеты), расстояние до ближайшей планеты, и т.п. на этапе получения данных).
Приглашаю на регистрацию:
Для участия необходимо заявку вида:
личным сообщением пользователю PlanetWars
——————————————
Заявка на участие в конкурсе «PlanetWars::1C»
Логин на Инфостарте: microsott
Эл.почта: microsott@gmail.com
Имя и фамилия: Билл Гейтс
Страна: США
Город: Вашингтон
Организация: Микрософт
——————————————
отправить
Не забудьте заменить данные в заявке на свои.
Информацию о состоянии турнира смотрим показдесь
Требования к файлам ботов
1. Файл бота должен быть оформлен в виде внешнего отчета/обработки с расширением *.ert.
2. Текст модуля бота должен быть открыт, т.к. все боты будут проверяться перед участием в Чемпионате.
3. В программе бота не должно содержаться ничего, что могло бы повлиять на корректное проведение турнира.
4. Не допускается использование одного и того же бота несколькими участниками турнира.
ПЕРВЫЙ БОЙ!
http://pw1c.narod.ru/view.htm?game/000001.log
эммм … получается, что бои на сайте не могут посмотреть те у кого не установлена ActiveX-компонента MapWinGIS ???
(66) На сайте используются оригинальный движок официального чемпионатаGoogle AI Challenge
Никакой связи с MapWinGIS нет.
Просмотр боев через Internet Explorer временно не работает. Разбираюсь в чём дело.
Google Chrome
Рекомендую пока воспользоваться
Обновление 2.16
— Исправлены ошибки при переходе по закладкам;
— На закладке «Параметры» добавлен «Калькулятор рейтинга ELO»
В течении сегодняшнего дня жду замечаний и предложений по расчету рейтинга
Если всех всё устраивает — с завтрашнего дня начнутся регулярные бои между ботами — каждый час, «все-со-всеми» на случайных картах.
(70) как это сделано в официальном турнире??? предлагаю либо не изменять текущие очки, либо переигрывать прошлый бои, но уже с текущим ботом. А то как то глупость получается — обновил бота и все очки сбросились, как будто и не играл
(71) Так ведь пока ещё идут предварительные (отладочные) бои. Они показывают баланс проигрышей и выигрышей.
mszsuz, можно как то с сайта получить карту по которой проходил бой?
(73) Карты, по которым проходят бои, полностью совпадают с теми, которые поставляются с полным дистрибутивом движка. Номер карты можно узнать из файла лога — это 6-й параметр в строке «result».
В принципе, инфу о номере карты можно вывести в профиле — там есть место для колонки.
Если надо — сделаю.
(74) было бы здорово видеть номер карты
Вечер перестает быть томным. Борьба в чемпионате обостряется на всех этажах турнирной таблицы.
(76) это уж точно 😀
В связи с непонятными проблемами на «народе», перенес сайт с рейтингами на новый хостинг:http://pw1c.jino.ru/rankings.htm
Не забудьте обновить ссылки.
Зафиксировал. Может это первый и последний раз. 😀
Все. Минута славы закончилась. 😀
(80) Из последних 6 игр — 3 слил по таймауту.
Если бы избавился от них, глядишь, и RSergio обновление бы сделал.
(81) Посмотрел последние игры, где я проиграл по тайм-ауту. Везде была проигранная позиция. Так что это своебобразная форма сдачи партии. Чего зря время тянуть.
RSergio пора делать обновление. Впереди последние выходные перед окончанием тестового режима.
Мой бот опять отметился на первой строчке рейтинга! Хотя это уже не новость. 😀
Теперь каждый вечер буду вносить небольшие изменения и присваивать боту кодовое слово.
Боту, что играет сейчас присвоено кодовое слово «Лидер»
Сегодня буду делать бота «Экспресс»
В среду «Захватчик»
В четверг «Пионер»
В пятницу планирую сделать бота «Чемпион»
Финал чемпионата
Предварительные соревнования заканчиваются в 08:59 28 ноября 2010 г. по московскому времени.
В это время прием ботов прекратится и регулярные бои между участниками будут остановлены. Будет сброшен (обнулен) рейтинг всех участников.
Спустя 6 часов (это время необходимо для проверки ботов) после окончания предварительных соревнований стартует финал чемпионата.
Финальные схватки будут проводиться в режиме онлайн на каждой карте между всеми участниками.
Результаты будут публиковаться после розыгрыша каждой карты, начиная с первой.
Позволю себе процитировать фразу с офиц. турнира:
«Не ждите до последней секунды, чтобы отправить своего финального бота. Оставьте себе несколько часов, чтобы убедиться, что ваш последний бот играет правильно и имеет лучшие показатели, чем предыдущие.»
Может есть смысл на оставшееся до финала время сделать регулярные бои каждые полчаса или хватает информации из боев, проводимых раз в час?
Если честно мне хватает информации по результатам тестовых боев с QD_v6.kzk2.ert и alexk-is-09.kzk2.ert. Никак не могу добиться 100% результата. Пользуясь случаем, благодоарю авторов этих ботов за предоставление класных спарринг-партнеров.
Но вот в пятницу и особенно в субботу подробная информация с тестового турнира может понадобится.
Срок сдачи финальной версии бота назначил себе в субботу утром. Суббота вечером — запасной срок.
С этого момента и до окончания предварительных соревнований, бои будут проходить каждые полчаса.
А чего все молчат? Неужели еще правят ботов?!
Предварительные соревнования завершены!
Регистрация участников и приём ботов закончились.
28 ноября в 15-00 по московскому времени начнутся финальные соревнования.
У университета компьютеры немного пошустрее … 🙂
1 rsergio Россия Москва 95 24 317
2 rs514 Украина Киев 101 18 311
Интересный подсчет очков, интересно как так получилось))
(93) Тут не просто подсчет очков — рассчитывается рейтинг ELO. См.здесь
Я понимаю что рассчитывается рейтинг. Объективно ли?
Через полчаса будет готов протокол игр и на твоем примере покажу расчет.
Протокол во вложении.
Речь в (93) идет о схватке 28.11.10, 23:01:36, №010540
К этой игре rsergio подошел с рейтингом 325, у rs514 было 303.
rs514 выиграл.
Заносим эти данные в «калькулятор рейтинга ELO».
Проверяем результат.
Если есть какие-то вопросы — спрашивайте.
Финальный турнир продолжается. Пройдено 50 из 100 карт.
Текущий рейтинг:
Показать
Пройдено 60 из 100 карт.
№ Участник Страна Город Побед Поражений ELO
1 rs514 Украина Киев 393 74 620
2 rsergio Россия Москва 365 111 472
3 Pavlovsky Россия Екатеринбург 365 112 461
4 alexk-is Россия Лысьва 317 161 452
5 ASDF2 Россия Пермь 272 208 316
6 venger Украина Одесса 154 326 103
7 Salimbek Россия Набережные Челны 160 312 101
8 qd-phantom Россия Первоуральск 81 391 6
9 dmitry_k7 Россия Москва 34 446 0
Может еще рано. Хочу высказать свое уважение и даже восхищение Андрею Кайгородову ( mszsuz ). Поднять такой проект могут единицы.
Хочется спросить что будет дальше с проектом? После окончания чемпионата?