README.md

Сервер для модели популяции

Сервер предназначен для работы с моделью популяции Drop’s arena и выполняет следующие функции: 1. Автоматически составляет сочетания исследуемых переменных 2. Изменяет значение исследуемых переменных на заданную величину и перезапускает модель с новыми значениями 3. Переключает исследуемые переменные согласно схеме эксперимента

Циклы изменения переменных

Во время работы модели происходит переключение нескольких циклов. 1. Первый из них cycle относится к работе самой программы Drop’s arena: когда эта програма заканчивает обработку всех записей с календарными датами и долей активных особей, она возвращается к первой из них и начинает новый цикл изменения активности особей, находящихся на сцене. 2. Цикл repeating, относится уже к работе самого сервера, который может несколько раз перезапустить медель с неизменными параметрами, для того чтобы можно было собрать статистику того, насколько сильно может колебаться значения исследуемых переменных при неизменных условиях.

Количество циклов, после которых надо осуществить перезапуск модели и количество таких перизапусков задается в конфигурационном файле

  1. Цикл step связан с изменением величины исследуемых переменных на определенную долю. После того, как сервер запустил модель несколько раз с неизменными параметрами, он уменьшает текущую исследуемую переменную.

    Доля, на которую уменьшаются все исследуемые переменные устанавливается в конфигурационном файле.

  2. Цикл combination начинается после того как текущая переменная была за несколько шагов уменьшена до минимума, сервер сбрасывает ее до значения по умолчанию и начинает изменять следующую переменную.

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

Обмен данными между сервером и моделью

От модели к серверу

Данные от модели прередаются модели методом GET в виде строки, состоящей из пар имя_переменной:значение, разделенных символом точки с запятой ;.

Пример строки с данными, передаваемой от модели к серверу.

ind_numb:1298;inactive_ind_numb:22;calendar_data:11.04.11;ind_numb_msq1:150;ind_quant:1.52;quant_std:1.33;morisita_index:1.825;dead_ind_numb:5;hybernate_ind_numb:72;cycle:0;observ_id:1;step:1;repeating:1;comb_id:2

Сервер начинает записывать эти данные только тогда, когда в строке есть все переменные.

При первом запуске модели, она передает серверу методом GET строку init_mode=true, получив которую сервер передает модели состояние переменных, которое было во время последнего закрытия браузера с файлом модели.

От сервера к модели

После обработки данных пришедших от модели или после получения строки init_mode=true, сервер посылает модели ответ в виде JSON строки.

Пример строки ответа сервера.

{"timestamp":["7472394549732"],"indexVars":{"comb_id":"1","step":"3","repeating":"1"},"dataVars":{"group_1.number":"33","group_2.number":"12","group_1.age":"10404","group_2.age":"4824","lifeTime":"35800","adultAge":"11500","maturingDeley":"1000"},"errors":[],"commands":["GO_ON"],"status":[]}.

В этой строке сервер передает для модели такие группы переменных как 1. Индексные переменные indexVars которые определяют номер текущего повторения, шага и комбинации изменяемых переменных 2. Изменяемые переменные dataVars с информацией о текущем значении изменяемых переменных 3. Информация о проишедших в процессе обработки данных ошибках errors 4. Команды, для модели commands. Предусмотрены следующие команды: 1. ERROR — модель должна остановится из за произошедшей на сервере ошибки 2. WAIT — подается, когда на сервер поступает неполная строка данных от модели. Это происходит в течении некоторого времени после запуска модели, пока не успели задействоваться все используемые переменные. Сервер говорит таким образом, что он пока не обрабатывает данные, потому что ждет строку со всеми ожидаемыми переменными. 3. GO_ON — подается когда сервер обрабатывает поступающие данные в штатном режиме. 4. STOP — подается либо в конце исследования, либо если на сервере произошла серьезная ошибка и он не может обрабатывать данные.

Конвейеры
0 успешных
0 с ошибкой