/// <summary> /// We update the beliefbase /// </summary> /// <param name="percepts">The percepts we retrieved for this agent from the environment</param> protected override void UpdateBeliefs(Dictionary <string, object> percepts) { var beliefSetTowns = BeliefBase.GetBeliefSet("towns").Values; var beliefSetMines = BeliefBase.GetBeliefSet("mines").Values; foreach (var town in (percepts["towns"] as List <Town>)) { if (!beliefSetTowns.Contains(town)) { beliefSetTowns.Add(town); } } foreach (var goldMine in beliefSetMines.Select(x => (GoldMine)x).ToList()) { if (!(percepts["mines"] as List <GoldMine>).Contains(goldMine) && Math.Pow(CurrentX - goldMine.X, 2) + Math.Pow(CurrentY - goldMine.Y, 2) < 4) { beliefSetMines.Remove(goldMine); } } foreach (var goldMine in (percepts["mines"] as List <GoldMine>)) { if (!beliefSetMines.Contains(goldMine)) { beliefSetMines.Add(goldMine); } } BeliefBase.UpdateBelief(new Belief("inx", CurrentX)); BeliefBase.UpdateBelief(new Belief("iny", CurrentY)); BeliefBase.UpdateBelief(new Belief("hasgold", HasGold)); }
/// <summary> /// The beliefbase of the agent is updated through the received percepts /// </summary> /// <param name="percepts">The percepts as a list of keyvalue pairs</param> protected override void UpdateBeliefs(Dictionary <string, object> percepts) { var perceptedTable = (Table)percepts["table"]; BeliefBase.UpdateBelief(new Belief("table", perceptedTable)); BeliefBase.UpdateBelief(new Belief("inarm", InArm)); var beliefsetBlocks = BeliefBase.GetBeliefSet("blocks"); var newBeliefSetBlocks = new BeliefSet("blocks"); foreach (var block in perceptedTable.Blocks) { UpdateFactForOneBlock(beliefsetBlocks, newBeliefSetBlocks, block); } BeliefBase.UpdateBeliefSet(newBeliefSetBlocks); }
/// <summary> /// Extracts facts for STRIPS from the current beliefbase /// </summary> /// <returns>A list of STRIP facts</returns> protected override List <Fact> ExtractFactsFromBeliefBase() { var facts = new List <Fact> { new Fact("ArmHolds", new ValueParameter(BeliefBase.GetBelief("inarm").Value)) }; var blocks = BeliefBase.GetBeliefSet("blocks").Values; foreach (Block block in blocks) { if (block.Lower != null) { facts.Add(new Fact("On", new ValueParameter(block), new ValueParameter(block.Lower))); } if (block.Upper == null) { facts.Add(new Fact("Clear", new ValueParameter(block))); } } return(facts); }
/// <summary> /// Extracts facts from a beliefbase /// </summary> /// <returns>A list of facts</returns> protected override List <Fact> ExtractFactsFromBeliefBase() { var lstFact = new List <Fact>(); lstFact.Add(new Fact(Definitions.HasGold, new ValueParameter(BeliefBase.GetBelief("hasgold").GetValue <bool>()))); lstFact.Add(new Fact(Definitions.In, new ValueParameter(BeliefBase.GetBelief("inx").Value), new ValueParameter(BeliefBase.GetBelief("iny").Value))); foreach (Town town in BeliefBase.GetBeliefSet("towns").Values) { lstFact.Add(new Fact(Definitions.Town, new ValueParameter(town.X), new ValueParameter(town.Y))); } foreach (GoldMine mine in BeliefBase.GetBeliefSet("mines").Values) { lstFact.Add(new Fact(Definitions.Mine, new ValueParameter(mine.X), new ValueParameter(mine.Y))); } return(lstFact); }