public virtual List<DataModel.StateActionMap> GetStateActionMaps(State state)
주어진 State에서 고려할 Action 집합을 정의합니다.
public override List<StateActionMap> GetStateActionMaps(State state)
{
List<StateActionMap> maps = new List<StateActionMap>();
CRPData data = DataManager.Instance.Data as CRPData;
CRPState fromState = state as CRPState;
Dictionary<int, CRPConveyor> stateInfo = fromState.StateInfo;
CRPJob lastJob = fromState.LastRetrievedJob;
for (int i = 1; i <= CRPParameter.CONV_NUM; i++)
{
CRPConveyor conv = stateInfo[i];
if (conv.JobCount <= 0)
{
continue;
}
CRPState toState = new CRPState();
toState.SetStateInfo(stateInfo);
CRPJob toJob = toState.RetrieveJob(i);
StateActionMap map = new StateActionMap();
map.PreActionState = fromState;
map.PostActionState = toState;
double cost = 0;
if (lastJob != null && lastJob.Color.ColorNumber != toJob.Color.ColorNumber)
cost = 1;
map.Cost = cost;
if (toState.JobCount <= 0)
{
toState.IsLastStage = true;
}
maps.Add(map);
}
return maps;
}