Pull to refresh

Comments 11

Вопрос по работе арены — для готового к торгу участника каким образом арена выбирает пару? Любой из свободных на данный момент? Что происходит, если в данный момент нет других свободных участников?

Или арена выбирает произвольного участника из всех (кроме этого участника кому ищет пару) независимо от их текущей занятости, ставит «торг-пару» в очередь и первый участник ждёт пока второй освободится?

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

Или это как-то иначе решается на арене? Например рандомной и разной небольшой задержкой для обоих скриптов-участников после окончания их торга и отдачей предпочтения (если возможных свободных на данный момент соперников более 1) не тому же с кем был предыдущий торг?
Для каждой арены может быть только один ожидающий клиент (или ни одного). Если новый приходит, когда ожидающего нет, то становится ожидающим. Если ожидающий уже есть, то он вместе с новым образует пару.

Сейчас на арене standard каждую секунду в среднем завершается 2.5 сеансов, что достаточно много для «перемешивания» пар.
лучше самому добавить рандомную задержку между запусками.
В той самой предложенной UNIX shell команде которой,
while true; do node haggle.js --id me@example.com:1234abcd myscript.js wss://hola.org/challenges/haggling/arena/standard; done

можно например так:
while true; do node haggle.js --id me@example.com:1234abcd myscript.js wss://hola.org/challenges/haggling/arena/standard; seq 0.05 .001 0.5 | shuf | head -n1 | xargs sleep; done


Или под виндой такой батничек `client.bat` получился,
@echo off
set cnt=0
echo "start trading"
:loop
node haggle.js --id me@example.com:1234abcd myscript.js wss://hola.org/challenges/haggling/arena/standard
seq 0.05 .001 0.5 | shuf | head -n1 | xargs sleep
set /a cnt+=1
set /a cntb = cnt%%100
if %cntb% equ 0 echo "trades count %cnt%"
goto loop

(сообщающий что ещё живой через каждые 100 сделок)

`0.05 .001 0.5` — рандомная задержка между торгами от 50 до 500 мс.

Да, ещё стоит использовать параметр тихого запуска -q и т.о. запускать скрипт так:
node haggle.js -q --id ...

каков примерно будет процент участников «K» (второго этапа) от общего количества?
Возможно, сделаем не по проценту, а по пороговому значению среднего исхода сеанса. Ну и на решения посмотрим. Там же наверняка треть окажутся копиями example.js, как это бывает в каждом конкурсе.
Гипотетически, если example.js окажутся лучшими и займут топ, ведь не будет дискриминации по алгополовому признаку, и именно они пройдут во второй тур и возможно выиграют? ;)

Оно конечно понятно, что суть соревнования была не в этом, но пусть уж участвуют и такие решения на равных основаниях. Как и прочие, лишь бы правилам конкурса соответствовали.

Да, и ещё такая ремарка — там где есть рандом, всегда может выстрелить и не самая удачная стратегия, возможности, кондиции. Футбол сегодняшний хороший пример — чемпионы немцы (уже экс) прекрасные заслуженные результаты показывали, но вот наступил чемпионат-2018 и в раскладах ног, мяча и векторов $10 за все шляпы и книги забрала себе команда Южной Кореи. (не только Старкрафтом единым, молодцы, ага)
Так что а вдруг, и example.js окажется в тройке или даже победителем! Фантастический опыт тоже опыт.
Будем перебирать достаточно много сидов, чтобы случай не решал, кто победит.
Беда
«Added proof-of-work anti-spam measure (older clients may be asked to upgrade)»
Я первоначальную версию под себя переписал, теперь снова адаптировать.
Сегодня залили на арену каких-то ботов, которые 10 отдают, получая при этом 0.
Получается, свою стратегию нормально не потестируешь на арене (((
Sign up to leave a comment.