Как отличить бек- и форвард- проход из функции Init() ?

 

Всех приветствую.

Вопрос вынесен в заголовок. 

Надо внутри функции Init() узнать, запущен ли режим оптимизации, и если запущен - какой это проход - бэк-тестирование или форвард-тестирование.

Никто с подобной задачей не сталкивался ?


Поясню причину. Вычислительная мощь нового компьютера - вдвое превышает вычислительную мощь всей моей домашней локальной сети. В результате - во время бек-оптимизации оказывается наиболее разумно использовать только его, чтобы минимизировать ожидания пересчета каждого поколения. А вот во время форвард-тестирования - было бы разумно подключить и локальную сеть, чтобы ускорить форвард-просчет на 30%.

Но для осуществления задумки - необходимо различать, на каких компьютерах запущены агенты, и различать бэк- и форвард- проходы. (чтобы вернуть признак неподходящего агента)

С различением компьютеров я еще как-то могу справиться (скажем, через объем памяти). А вот как отличить бэк и форвард - что-то не пойму.

Какие мысли, коллеги ?

 

Можно проверять глобальную переменную терминала, и получать ошибку INIT_AGENT_NOT_SUITABLE, при тесте отмечать в роботе что это форвард

 
Fast451:

Можно проверять глобальную переменную терминала, и получать ошибку INIT_AGENT_NOT_SUITABLE, при тесте отмечать в роботе что это форвард

То есть, действительно, первый проход - всегда бэк, и можно устанавливать в глобальных переменных флаг, что бэк-проход был. При этом, если агент "слабый" - вернуть INIT_AGENT_NOT_SUITABLE. А если перменная найдена - следовательно, это форвард-проход, и можно на  мощность агента не смотреть.

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

Ну, в принципе, как вариант - да, можно будет попробовать.

 
Я этого не делал, просто сразу пришло на ум
 

Печальные новости.

Моя идея не прокатывает. Я хотел проводить бек-тестирование - только на самых быстрых агентах, а форвард-тестирование - на всех. По моим прикидам, для меня это бы ускорило работу процентов на 30. И собирался для этого в бэк-проходе обозначать слабых агентов, как AGENT_NOT_SUITABLE, а в форвард - все как INIT_SUCCESS.

Увы, если в бэк-тестировании агент помечается как AGENT_NOT_SUITABLE, то к Init() форвард-теста он уже не допускается.

Очень жаль.

 
Georgiy Merts:

Печальные новости.

Моя идея не прокатывает. Я хотел проводить бек-тестирование - только на самых быстрых агентах, а форвард-тестирование - на всех. По моим прикидам, для меня это бы ускорило работу процентов на 30. И собирался для этого в бэк-проходе обозначать слабых агентов, как AGENT_NOT_SUITABLE, а в форвард - все как INIT_SUCCESS.

Увы, если в бэк-тестировании агент помечается как AGENT_NOT_SUITABLE, то к Init() форвард-теста он уже не допускается.

Очень жаль.

А если в параметрах робота заносить вручную дату, с которой начинается форвард? И в коде прописывать, что если после этой даты, то меняем настройки?

 
Sergey Savinkin:

А если в параметрах робота заносить вручную дату, с которой начинается форвард? И в коде прописывать, что если после этой даты, то меняем настройки?

Вот, я так и сделал.

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

Я предполагал использовать код возврата AGENT_NOT_SUITABLE,  и он нормально работает, агент, вернувший его - выключается. Проблема только в том, что нам надо выключать агенты вначале, во время бэк-теста, а если мы их выключаем - то включить их уже не получается, и форвард-тестирование проходит только на быстрых агентах.

 
А если прервать тестирование после окончания бэк-тестирования? При прерывании процесса тестирования, его результаты сохраняются (чтобы повторно не пересчитывать). Может, при перезапуске медленные агенты включатся?
 
Sergey Savinkin:
А если прервать тестирование после окончания бэк-тестирования? При прерывании процесса тестирования, его результаты сохраняются (чтобы повторно не пересчитывать). Может, при перезапуске медленные агенты включатся?

Задача - все сделать в автоматическом режиме. Если сидеть рядом с терминалом - то и смысла огород городить нету. В бэк-тестировании - отключаем мелденные агенты, в форварде - подключаем. По идее, можно попробовать на медленных агентах в бэк-тесте - выдавать INIT_FAILED. Но, неизвестно, как поведет себя оптимизатор, если будет много таких ответов. Не исключено и качество оптимизации может снизиться.

Придется остановиться просто на работе только на быстрых агентах.

 
Georgiy Merts:

Задача - все сделать в автоматическом режиме. Если сидеть рядом с терминалом - то и смысла огород городить нету. В бэк-тестировании - отключаем мелденные агенты, в форварде - подключаем. По идее, можно попробовать на медленных агентах в бэк-тесте - выдавать INIT_FAILED. Но, неизвестно, как поведет себя оптимизатор, если будет много таких ответов. Не исключено и качество оптимизации может снизиться.

Придется остановиться просто на работе только на быстрых агентах.

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

 
Alexey Volchanskiy:

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

Эх, Лёх... да я и рад бы...  Но только не нужен я двести лет бабам... А комп - он всегда будет делать то, что от него требуется...