package HierarchicalFactoryPlayer;
import AgentSystemPluginAPI.Contract.IAgentSystem;
import AgentSystemPluginAPI.Services.IAgent;
import AgentSystemPluginAPI.Services.IPluginServiceProvider;
import AgentSystemPluginAPI.Services.LearningAlgorithm;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import EnvironmentPluginAPI.Service.IEnvironmentConfiguration;
import Factory.GameLogic.TransportTypes.TActionsInTurn;
import Factory.GameLogic.TransportTypes.TGameState;
import HierarchicalFactoryPlayer.StateActionGenerators.EvaluatorStateActionGenerator;
import HierarchicalFactoryPlayer.StateActionGenerators.MoverStateActionGenerator;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Chris on 13.06.2014.
*/
public class HierarchicalFactoryPlayerSystem implements IAgentSystem<IEnvironmentConfiguration, TGameState, TActionsInTurn> {
private final IAgent evaluator;
private final IAgent mover;
private List<IAgent> agentlist;
public HierarchicalFactoryPlayerSystem(IPluginServiceProvider provider) throws TechnicalException {
agentlist = new ArrayList<>();
evaluator = provider.getTableAgent("Evaluator", LearningAlgorithm.SARSALambda, new EvaluatorStateActionGenerator());
agentlist.add(evaluator);
mover = provider.getTableAgent("Mover", LearningAlgorithm.SARSALambda, new MoverStateActionGenerator());
agentlist.add(mover);
}
@Override
public void start(IEnvironmentConfiguration environmentConfiguration) throws TechnicalException {
}
@Override
public TActionsInTurn getActionsForEnvironmentStatus(TGameState current) throws TechnicalException {
return null;
}
@Override
public void end() throws TechnicalException {
}
public List<IAgent> getInternalAgents(){
return this.agentlist;
}
}