/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule to avoid collision with wall SupportCalculator avoidCollisionWallSupportCalculator = FixedRuleToAvoidCollisionWall; FixedRule ruleAvoidCollisionWall = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, avoidCollisionWallSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleAvoidCollisionWall); // Create Rule to avoid collision with wall SupportCalculator goItemSupportCalculator = FixedRuleToGoItem; FixedRule ruleGoItem = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoItem, goItemSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoItem); // Create Rule to avoid collision with wall SupportCalculator sackItItemSupportCalculator = FixedRuleToSackItItem; FixedRule ruleSackItItem = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputSackItItem, sackItItemSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleSackItItem); // Create Rule to avoid collision with wall SupportCalculator eatItemSupportCalculator = FixedRuleToEatItem; FixedRule ruleEatItem = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputEatItem, eatItemSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleEatItem); // Create Rule to avoid collision with wall SupportCalculator stopCreatureSupportCalculator = FixedRuleToStopCreature; FixedRule ruleStopCreature = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputStopCreature, stopCreatureSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleStopCreature); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; }
/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule to rotate SupportCalculator rotateSupportCalculator = FixedRuleToRotate; FixedRule ruleRotate = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, rotateSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleRotate); // Create Colission To Go Ahead SupportCalculator goAheadSupportCalculator = FixedRuleToGoAhead; FixedRule ruleGoAhead = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoAhead, goAheadSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoAhead); // Create Colission To Eat SupportCalculator eatSupportCalculator = FixedRuleToEat; FixedRule ruleEat = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputEat, eatSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleEat); // Create Colission To Sack SupportCalculator sackSupportCalculator = FixedRuleToSack; FixedRule ruleSack = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputSack, sackSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleSack); // Create Colission To Hide SupportCalculator hideSupportCalculator = FixedRuleToHide; FixedRule ruleHide = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputHide, hideSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleHide); // Create Colission To Stop SupportCalculator stopSupportCalculator = FixedRuleToStop; FixedRule ruleStop = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputStop, stopSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleStop); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; }
/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule to avoid collision with wall SupportCalculator avoidCollisionWallSupportCalculator = FixedRuleToAvoidCollisionWall; FixedRule ruleAvoidCollisionWall = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, avoidCollisionWallSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleAvoidCollisionWall); // Create Colission To Go Ahead SupportCalculator goAheadSupportCalculator = FixedRuleToGoAhead; FixedRule ruleGoAhead = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoAhead, goAheadSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoAhead); // Create Go to Jewel SupportCalculator goToJewelSupportCalculator = FixedRuleToGoToJewel; FixedRule ruleGoToJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToJewelInVision, goToJewelSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToJewel); // Create eat food SupportCalculator eatFoodSupportCalculator = FixedRuleToEatFood; FixedRule ruleEatFood = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputEatFood, eatFoodSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleEatFood); // Create get desired jewel SupportCalculator getDesiredJewelSupportCalculator = FixedRuleToGetDesiredJewel; FixedRule ruleGetDesiredJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGetJewel, getDesiredJewelSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGetDesiredJewel); // Create hide jewel SupportCalculator hideJewelSupportCalculator = FixedRuleToHideJewel; FixedRule ruleHideJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputHideJewel, hideJewelSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleHideJewel); // Create goal achieved SupportCalculator goalAchievedSupportCalculator = FixedRuleGoalAchieved; FixedRule ruleGoalAchieved = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoalAchieved, goalAchievedSupportCalculator); // Create fuel low rule SupportCalculator fuelLowSupportCalculator = FixedRuleFuelLow; FixedRule ruleFuelLow = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputFuelLow, fuelLowSupportCalculator); CurrentAgent.Commit(ruleFuelLow); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoalAchieved); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; }
/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule To Stop when all leaflets have been delivered (success) SupportCalculator stopWhenFinishedSupportCalculator = FixedRuleToStopWhenFinished; FixedRule ruleStopWhenFinished = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputStop, stopWhenFinishedSupportCalculator); ruleStopWhenFinished.Parameters.WEIGHT = 1; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleStopWhenFinished); // Create Rule to Eat Food SupportCalculator eatFoodSupportCalculator = FixedRuleToEatFood; FixedRule ruleEatFood = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputEatFood, eatFoodSupportCalculator); ruleEatFood.Parameters.WEIGHT = 0.9; ruleEatFood.Parameters.PARTIAL_MATCH_ON = true; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleEatFood); // Create Rule to Collect (Sack) Jewel SupportCalculator sackJewelSupportCalculator = FixedRuleToSackJewel; FixedRule ruleSackJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputSackJewel, sackJewelSupportCalculator); ruleSackJewel.Parameters.WEIGHT = 0.9; ruleSackJewel.Parameters.PARTIAL_MATCH_ON = true; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleSackJewel); // Create Rule to avoid colision with wall SupportCalculator avoidCollisionWallSupportCalculator = FixedRuleToAvoidCollisionWall; FixedRule ruleAvoidCollisionWall = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, avoidCollisionWallSupportCalculator); ruleAvoidCollisionWall.Parameters.WEIGHT = 0.8; ruleAvoidCollisionWall.Parameters.PARTIAL_MATCH_ON = true; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleAvoidCollisionWall); // Create Rule To Go Ahead //SupportCalculator goAheadSupportCalculator = FixedRuleToGoAhead; //FixedRule ruleGoAhead = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoAhead, goAheadSupportCalculator); // Commit this rule to Agent (in the ACS) //CurrentAgent.Commit(ruleGoAhead); // Create Rule To Go To Closest Jewel SupportCalculator goToClosestJewelSupportCalculator = FixedRuleToGoToClosestJewel; FixedRule ruleGoToClosestJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToClosestJewel, goToClosestJewelSupportCalculator); ruleGoToClosestJewel.Parameters.WEIGHT = 0.7; ruleGoToClosestJewel.Parameters.PARTIAL_MATCH_ON = true; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToClosestJewel); // Create Rule To Go To Closest Jewel SupportCalculator goToClosestFoodSupportCalculator = FixedRuleToGoToClosestFood; FixedRule ruleGoToClosestFood = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToClosestFood, goToClosestFoodSupportCalculator); ruleGoToClosestFood.Parameters.WEIGHT = 0.6; ruleGoToClosestFood.Parameters.PARTIAL_MATCH_ON = true; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToClosestFood); // Create Rule to Deliver a Leaflet SupportCalculator deliverLeafletSupportCalculator = FixedRuleToDeliverLeaflet; FixedRule ruleDeliverLeaflet = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputDeliverLeaflet, deliverLeafletSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleDeliverLeaflet); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; }
/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule to avoid collision with wall SupportCalculator avoidCollisionWallSupportCalculator = FixedRuleToAvoidCollisionWall; FixedRule ruleAvoidCollisionWall = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, avoidCollisionWallSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleAvoidCollisionWall); // Create Rule To Go Ahead SupportCalculator goAheadSupportCalculator = FixedRuleToGoAhead; FixedRule ruleGoAhead = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoAhead, goAheadSupportCalculator); // Commit this rule to Agent (in the ACS) - FMT commenting to avoid conflict //CurrentAgent.Commit(ruleGoAhead); // FMT 29/04/2017 // FMT Create Rule to Eat SupportCalculator eatSupportCalculator = FixedRuleToEat; FixedRule ruleEat = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputEat, eatSupportCalculator); CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = true; CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.COMBINED; CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.WM_UPDATE_ACTION_PROBABILITY = 1; // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleEat); // FMT Create Rule to Get SupportCalculator getSupportCalculator = FixedRuleToGet; FixedRule ruleGet = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGet, getSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGet); // FMT Create Rule to Hide SupportCalculator hideSupportCalculator = FixedRuleToHide; FixedRule ruleHide = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputHide, hideSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleHide); // FMT Create Rule to Go To SupportCalculator gotoSupportCalculator = FixedRuleToGoTo; FixedRule ruleGoto = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoTo, gotoSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoto); // FMT Create Rule to Stop SupportCalculator stopSupportCalculator = FixedRuleToStop; FixedRule ruleStop = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputStop, stopSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleStop); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; // FMT 13/05/2017 additonal setting for network SimplifiedQBPNetwork net = AgentInitializer.InitializeImplicitDecisionNetwork(CurrentAgent, SimplifiedQBPNetwork.Factory); net.Parameters.LEARNING_RATE = 1; CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; }
/// <summary> /// Setup the ACS subsystem /// </summary> private void SetupACS() { // Create Rule to avoid collision with wall SupportCalculator avoidCollisionWallSupportCalculator = FixedRuleToAvoidCollisionWall; FixedRule ruleAvoidCollisionWall = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputRotateClockwise, avoidCollisionWallSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleAvoidCollisionWall); // Create Rule to Wander SupportCalculator wanderSupportCalculator = FixedRuleToWander; FixedRule ruleWander = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputWander, wanderSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleWander); // Create Rule To Get Jewel SupportCalculator getJewelSupportCalculator = FixedRuleToGetJewel; FixedRule ruleGetJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGetJewel, getJewelSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGetJewel); // Create Rule To Get Food SupportCalculator getFoodSupportCalculator = FixedRuleToGetFood; FixedRule ruleGetFood = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGetFood, getFoodSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGetFood); // Create Rule To Go To Jewel SupportCalculator goToJewelSupportCalculator = FixedRuleToGoToJewel; FixedRule ruleGoToJewel = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToJewel, goToJewelSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToJewel); // Create Rule To Go To Food SupportCalculator goToFoodSupportCalculator = FixedRuleToGoToFood; FixedRule ruleGoToFood = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToFood, goToFoodSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToFood); // Create Rule To Go To the Delivery Spot SupportCalculator goToDeliverySpotSupportCalculator = FixedRuleToGoToDeliverySpot; FixedRule ruleGoToDeliverySpot = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputGoToDeliverySpot, goToDeliverySpotSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleGoToDeliverySpot); // Create Rule To Deliver Jewels SupportCalculator deliverSupportCalculator = FixedRuleToDeliver; FixedRule ruleDeliver = AgentInitializer.InitializeActionRule(CurrentAgent, FixedRule.Factory, outputDoDelivery, deliverSupportCalculator); // Commit this rule to Agent (in the ACS) CurrentAgent.Commit(ruleDeliver); // Disable Rule Refinement CurrentAgent.ACS.Parameters.PERFORM_RER_REFINEMENT = false; // The selection type will be probabilistic CurrentAgent.ACS.Parameters.LEVEL_SELECTION_METHOD = ActionCenteredSubsystem.LevelSelectionMethods.STOCHASTIC; // The action selection will be fixed (not variable) i.e. only the statement defined above. CurrentAgent.ACS.Parameters.LEVEL_SELECTION_OPTION = ActionCenteredSubsystem.LevelSelectionOptions.FIXED; // Define Probabilistic values CurrentAgent.ACS.Parameters.FIXED_FR_LEVEL_SELECTION_MEASURE = 1; CurrentAgent.ACS.Parameters.FIXED_IRL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_BL_LEVEL_SELECTION_MEASURE = 0; CurrentAgent.ACS.Parameters.FIXED_RER_LEVEL_SELECTION_MEASURE = 0; }