コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }