Идея состоит в том, чтобы смоделировать среду для агентов.В самом простом случае это выглядит примерно так:
- Система запрашивает у агента следующее действие
- Агент отвечает (например, «двигаться влево!»)
- Системапереводит агента в соответствующее состояние
Однако у меня возникают проблемы с реализацией этого асинхронным образом (с многопоточностью и т. д.).
В настоящее время моя система выглядит следующим образом:
void Start(){
while(true && !gameOver){
askAgent()
moveAgent()
if(agentState == terminalState){
gameOver = True;
}
}
}
Очевидно, это блокирует поток, в котором он запущен.(Что еще более неприятно, так это то, что я использую OSGi, поэтому ни один пакет не должен занимать все время обработки!)
Кроме того, я хотел бы, чтобы система реагировала на новых агентов, появляющихся в среде, и взаимодействовала сих (моя среда выполнения, OSGi, уже имеет возможность уведомлять меня, если что-то появляется или исчезает из системы) что-то вроде:
void setAgent(Agent agent){
system.addAgentToEnvironment(agent);
system.simulateAgent(agent);
}
Вместо того, чтобы просто бежать из главного сразу ...
Я знаю, что это очень сбивает с толку, и я не уверен, правильно ли я задаю вопрос, поэтому любые советы по архитектуре или подходам, на которые я могу взглянуть, очень ценятся.