/// <summary>
        /// Build and persist a new <see cref="KnowledgeLevel"/>.
        /// </summary>
        /// <param name="knowledgeLevel">A new <see cref="KnowledgeLevel"/></param>
        /// <returns>The persisted <see cref="KnowledgeLevel"/>.</returns>
        public KnowledgeLevel AddKnowledgeLevel(KnowledgeLevel knowledgeLevel)
        {
            this._persistence.GetRepository<KnowledgeLevel>().Add(knowledgeLevel);
            this._persistence.Commit();

            return knowledgeLevel;
        }
        /// <summary>
        /// Build and persist a new <see cref="KnowledgeLevel"/>.
        /// </summary>
        /// <param name="knowledgeLevel">A new <see cref="KnowledgeLevel"/></param>
        /// <returns>The persisted <see cref="KnowledgeLevel"/>.</returns>
        public KnowledgeLevel AddKnowledgeLevel(KnowledgeLevel knowledgeLevel)
        {
            this._persistence.GetRepository <KnowledgeLevel>().Add(knowledgeLevel);
            this._persistence.Commit();

            return(knowledgeLevel);
        }
예제 #3
0
        public static float GetMinFromKnowledgeLevel(KnowledgeLevel level)
        {
            switch (level)
            {
            case KnowledgeLevel.NoKnowledge:
                return(0);

            case KnowledgeLevel.BasicKnowledge:
                return(0.2F);

            case KnowledgeLevel.Foundational:
                return(0.3F);

            case KnowledgeLevel.Intermediate:
                return(0.4F);

            case KnowledgeLevel.FullProficiency:
                return(0.5F);

            case KnowledgeLevel.Expert:
                return(0.6F);

            case KnowledgeLevel.FullKnowledge:
                return(1F);

            case KnowledgeLevel.Random:
                return(ContinuousUniform.Sample(0, 1F));

            default:
                throw new ArgumentOutOfRangeException(nameof(level), level, null);
            }
        }
예제 #4
0
        public async Task <KnowledgeLevel> AddAsync(KnowledgeLevel entity)
        {
            var res = await _uow.KnowledgeLevels.AddAsync(entity);

            await _uow.SaveChangesAsync();

            return(res);
        }
예제 #5
0
        private void friendButton_Click(object sender, EventArgs e)
        {
            callLabel.Text = "Call your friend ?";

            this.selectedKnowledgeLevel = KnowledgeLevel.LOW;

            this.callButton.Enabled = true;
        }
예제 #6
0
        private void teacherButton_Click(object sender, EventArgs e)
        {
            callLabel.Text = "Call your teacher ?";

            this.selectedKnowledgeLevel = KnowledgeLevel.MEDIUM;

            this.callButton.Enabled = true;
        }
예제 #7
0
        private void jerryButton_Click(object sender, EventArgs e)
        {
            callLabel.Text = "Call Jerry ?";

            this.selectedKnowledgeLevel = KnowledgeLevel.HIGH;

            this.callButton.Enabled = true;
        }
예제 #8
0
 public Knowledge(int level)
 {
     if (level > 4 || level < 0)
     {
         throw new ArgumentException("Knowledge level should be >= 0 and <= 4");
     }
     KnowledgeLevel = (KnowledgeLevel)level;
 }
예제 #9
0
        public void ConsumeTheNecessaryPoints(string heroName, KnowledgeLevel level)
        {
            var data = GetStatusFrom(heroName);

            data.points -= level.NecessaryPoints;

            StatusResource.Save(heroName, data);
        }
        /// <summary>
        /// Build and persist a new <see cref="KnowledgeLevel"/>.
        /// </summary>
        /// <param name="knowledgeLevelDesc">A new <see cref="KnowledgeLevel"/></param>
        /// <returns>The persisted <see cref="KnowledgeLevel"/>.</returns>
        public KnowledgeLevel AddKnowledgeLevel(string knowledgeLevelDesc)
        {
            var knowledgeLevel = new KnowledgeLevel()
            {
                Description = knowledgeLevelDesc
            };

            return this.AddKnowledgeLevel(knowledgeLevel);
        }
예제 #11
0
        /// <summary>
        ///     Add an agentId's Knowledge to the network
        /// </summary>
        /// <param name="knowledgeId"></param>
        /// <param name="level"></param>
        /// <param name="minimumKnowledge"></param>
        /// <param name="timeToLive"></param>
        public void AddKnowledge(IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge, short timeToLive)
        {
            if (!On || !_knowledgeAndBeliefs.HasKnowledge)
            {
                return;
            }

            ActorKnowledge.CreateInstance(_actorKnowledgeNetwork, _agentId, knowledgeId, level, minimumKnowledge, timeToLive);
        }
예제 #12
0
 public void OnPing(PingSource pingSource, Vector3 pingOrigin)
 {
     if (pingSource == PingSource.Player)
     {
         // Detect player
         knowledgeLevel     = KnowledgeLevel.KnowsLastLocation;
         playerLastLocation = pingOrigin;
     }
 }
        /// <summary>
        /// Build and persist a new <see cref="KnowledgeLevel"/>.
        /// </summary>
        /// <param name="knowledgeLevelDesc">A new <see cref="KnowledgeLevel"/></param>
        /// <returns>The persisted <see cref="KnowledgeLevel"/>.</returns>
        public KnowledgeLevel AddKnowledgeLevel(string knowledgeLevelDesc)
        {
            var knowledgeLevel = new KnowledgeLevel()
            {
                Description = knowledgeLevelDesc
            };

            return(this.AddKnowledgeLevel(knowledgeLevel));
        }
예제 #14
0
 /// <summary>
 ///     Constructor based on the knowledge Id and the knowledge Level.
 ///     KnowledgeBits is not yet initialized.
 ///     NetworkKnowledges.InitializeAgentKnowledge must be called to initialized KnowledgeBits
 /// </summary>
 /// <param name="network"></param>
 /// <param name="actorId"></param>
 /// <param name="knowledgeId"></param>
 /// <param name="level"></param>
 /// <param name="minimumKnowledge"></param>
 /// <param name="timeToLive"></param>
 public ActorKnowledge(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge,
                       short timeToLive) : base(network, actorId, knowledgeId)
 {
     KnowledgeLevel   = level;
     MinimumKnowledge = minimumKnowledge;
     TimeToLive       = timeToLive;
     KnowledgeBits    = new KnowledgeBits(minimumKnowledge, timeToLive);
     Length           = KnowledgeBits.Length;
 }
예제 #15
0
 /// <summary>
 ///     Constructor based on the knowledge Id and the knowledge Level.
 ///     KnowledgeBits is not yet initialized.
 ///     NetworkKnowledges.InitializeAgentKnowledge must be called to initialized KnowledgeBits
 /// </summary>
 /// <param name="actorId"></param>
 /// <param name="knowledgeId"></param>
 /// <param name="level"></param>
 /// <param name="minimumKnowledge"></param>
 /// <param name="timeToLive"></param>
 public ActorKnowledge(IAgentId actorId, IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge,
                       short timeToLive) : base(actorId, knowledgeId)
 {
     KnowledgeLevel   = level;
     MinimumKnowledge = minimumKnowledge;
     TimeToLive       = timeToLive;
     KnowledgeBits    = new KnowledgeBits(minimumKnowledge, timeToLive);
     Length           = KnowledgeBits.Length;
 }
예제 #16
0
        /// <summary>
        ///     Add an agentId's Knowledge to the network
        /// </summary>
        /// <param name="knowledgeId"></param>
        /// <param name="level"></param>
        /// <param name="internalCharacteristics"></param>
        public void AddKnowledge(IAgentId knowledgeId, KnowledgeLevel level,
                                 InternalCharacteristics internalCharacteristics)
        {
            if (internalCharacteristics == null)
            {
                throw new ArgumentNullException(nameof(internalCharacteristics));
            }

            AddKnowledge(knowledgeId, level, internalCharacteristics.MinimumRemainingKnowledge,
                         internalCharacteristics.TimeToLive);
        }
예제 #17
0
        public void InitializeBitsTest(KnowledgeLevel level)
        {
            _actorKnowledge.InitializeKnowledge(_knowledge.Length, RandomGenerator.RandomBinary, level, 0);
            var knowledgeBits = _actorKnowledge.KnowledgeBits;

            for (byte i = 0; i < 10; i++)
            {
                Assert.IsTrue(Math.Abs(knowledgeBits.GetBit(i)) < Tolerance ||
                              Math.Abs(knowledgeBits.GetBit(i) - 1) < Tolerance);
            }
        }
예제 #18
0
    private void Start()
    {
        sonicDetectable = (SonicDetectable)GetComponent(typeof(SonicDetectable));
        agent           = (NavMeshAgent)GetComponent(typeof(NavMeshAgent));
        currentHealth   = maxHealth;
        knowledgeLevel  = KnowledgeLevel.Unaware;

        agent.speed        = patrolSpeed;
        agent.angularSpeed = angularSpeed;

        keepOrbitDistanceSqr = keepOrbitDistance * keepOrbitDistance;
    }
예제 #19
0
        public async Task <IActionResult> Remove(KnowledgeLevel knowledgeLevel)
        {
            try
            {
                await _knowledgeLevelService.RemoveAsync(knowledgeLevel);

                return(StatusCode(200));
            }
            catch
            {
                return(StatusCode(500, "Internal server error"));
            }
        }
예제 #20
0
        public async Task <IActionResult> UpdateAsync(Guid id, KnowledgeLevel knowledgeLevel)
        {
            try
            {
                knowledgeLevel.Id = id;
                await _knowledgeLevelService.UpdateAsync(knowledgeLevel);

                return(StatusCode(200));
            }
            catch
            {
                return(StatusCode(500, "Internal server error"));
            }
        }
예제 #21
0
        public void InitializeBitsTest3(KnowledgeLevel level)
        {
            _actorKnowledge.InitializeKnowledge(_knowledge.Length, RandomGenerator.RandomUniform, level, 0);
            var knowledgeBits = _actorKnowledge.KnowledgeBits;

            for (byte i = 0; i < 10; i++)
            {
                Assert.IsTrue(
                    Knowledge.GetMinFromKnowledgeLevel(level) <= knowledgeBits.GetBit(i) ||
                    Math.Abs(knowledgeBits.GetBit(i)) < Tolerance);
                Assert.IsTrue(knowledgeBits.GetBit(i) <=
                              Knowledge.GetMaxFromKnowledgeLevel(level));
            }
        }
        /// <summary>
        /// Create a new customer.
        /// </summary>
        /// <param name="name">The name of the new customer.</param>
        /// <param name="email">The email address of the new customer.</param>
        /// <param name="mobile">The mobile number of the new customer.</param>
        /// <param name="address">The address of the new customer.</param>
        /// <param name="language">The language of the new customer.</param>
        /// <param name="knowledgeLevel">The knowledge level of the new customer.</param>
        /// <returns>The newly created customer.</returns>
        public Customer CreateCustomer(string name, string email, string mobile, string address, Language language, KnowledgeLevel knowledgeLevel)
        {
            var newCustomer = new Customer
            {
                Name = name,
                Email = email,
                MobileNumber = mobile,
                Address = address,
                Language = language,
                KnowledgeLevel = knowledgeLevel
            };

            this.CreateCustomer(newCustomer);

            return newCustomer;
        }
        /// <summary>
        /// Retrieve an <see cref="AudioFile"/>.
        /// </summary>
        /// <param name="exhibit">The <see cref="Exhibit"/> to get the audio file for.</param>
        /// <param name="knowledgeLevel">The <see cref="KnowledgeLevel"/> of the <see cref="Customer"/> so they get the right <see cref="AudioFile"/>.</param>
        /// <param name="language">The <see cref="Language"/> of the <see cref="Customer"/> so they get the right <see cref="AudioFile"/>.</param>
        /// <returns>An <see cref="AudioFile"/> that corresponds to the given information.</returns>
        public AudioFile GetFile(Exhibit exhibit, KnowledgeLevel knowledgeLevel, Language language)
        {
            var file =
                this._persistence.GetRepository<AudioFile>()
                    .Single(
                        af =>
                            af.Exhibit.Id == exhibit.Id
                            && af.KnowledgeLevel.Id == knowledgeLevel.Id
                            && af.Language.Id == language.Id);

            if (file == null || file.FilePath == null)
            {
                return null;
            }

            file.FilePath = Path.Combine(ConfigurationManager.AppSettings["RemoteAudioFilePath"], file.FilePath);

            return file;
        }
        /// <summary>
        /// Retrieve an <see cref="AudioFile"/>.
        /// </summary>
        /// <param name="exhibit">The <see cref="Exhibit"/> to get the audio file for.</param>
        /// <param name="knowledgeLevel">The <see cref="KnowledgeLevel"/> of the <see cref="Customer"/> so they get the right <see cref="AudioFile"/>.</param>
        /// <param name="language">The <see cref="Language"/> of the <see cref="Customer"/> so they get the right <see cref="AudioFile"/>.</param>
        /// <returns>An <see cref="AudioFile"/> that corresponds to the given information.</returns>
        public AudioFile GetFile(Exhibit exhibit, KnowledgeLevel knowledgeLevel, Language language)
        {
            var file =
                this._persistence.GetRepository <AudioFile>()
                .Single(
                    af =>
                    af.Exhibit.Id == exhibit.Id &&
                    af.KnowledgeLevel.Id == knowledgeLevel.Id &&
                    af.Language.Id == language.Id);

            if (file == null || file.FilePath == null)
            {
                return(null);
            }

            file.FilePath = Path.Combine(ConfigurationManager.AppSettings["RemoteAudioFilePath"], file.FilePath);

            return(file);
        }
예제 #25
0
 public static ActorKnowledge CreateInstance(TwoModesNetwork <IEntityKnowledge> network, IAgentId actorId, IAgentId knowledgeId, KnowledgeLevel level, float minimumKnowledge,
                                             short timeToLive)
 {
     return(new ActorKnowledge(network, actorId, knowledgeId, level, minimumKnowledge, timeToLive));
 }
예제 #26
0
 public void SetKnowledge(Knowledge knowledge)
 {
     Knowledge = knowledge.KnowledgeLevel;
 }
예제 #27
0
 /// <summary>
 ///     Get the name of a KnowledgeLevel
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public static string GetName(KnowledgeLevel level)
 {
     return(level.ToString());
 }
예제 #28
0
 public async Task RemoveAsync(KnowledgeLevel entity)
 {
     _uow.KnowledgeLevels.Remove(entity);
     await _uow.SaveChangesAsync();
 }
예제 #29
0
        /// <summary>
        ///     Given a KnowledgeModel and a KnowledgeLevel
        ///     return the knowledgeBits for the agent: an array fill of random binaries
        ///     representing the detailed knowledge of an agent
        /// </summary>
        /// <param name="length"></param>
        /// <param name="model"></param>
        /// <param name="knowledgeLevel"></param>
        /// <param name="step"></param>
        /// <returns></returns>
        public void InitializeKnowledge(byte length, RandomGenerator model, KnowledgeLevel knowledgeLevel, ushort step)
        {
            float[] knowledgeBits;
            switch (model)
            {
            case RandomGenerator.RandomUniform:
            {
                float min;
                float max;

                switch (knowledgeLevel)
                {
                case KnowledgeLevel.Random:
                    min = 0;
                    max = 1;
                    break;

                default:
                    min = Knowledge.GetMinFromKnowledgeLevel(knowledgeLevel);
                    max = Knowledge.GetMaxFromKnowledgeLevel(knowledgeLevel);
                    break;
                }

                knowledgeBits = ContinuousUniform.Samples(length, min, max);
                if (Math.Abs(min - max) < Constants.Tolerance)
                {
                    SetKnowledgeBits(knowledgeBits, step);
                    return;
                }

                for (byte i = 0; i < knowledgeBits.Length; i++)
                {
                    if (knowledgeBits[i] < min * (1 + 0.05))
                    {
                        // In randomUniform, there is quasi no bit == 0. But in reality, there are knowledgeBit we ignore.
                        // We force the lowest (Min +5%) knowledgeBit to 0
                        knowledgeBits[i] = 0;
                    }
                }

                break;
            }

            case RandomGenerator.RandomBinary:
            {
                switch (knowledgeLevel)
                {
                case KnowledgeLevel.Random:
                    knowledgeBits = ContinuousUniform.FilteredSamples(length, 0, 1);
                    break;

                default:
                    var mean = 1 - Knowledge.GetValueFromKnowledgeLevel(knowledgeLevel);
                    knowledgeBits = ContinuousUniform.FilteredSamples(length, mean);
                    break;
                }

                break;
            }

            default:
                throw new ArgumentOutOfRangeException(nameof(model), model, null);
            }

            SetKnowledgeBits(knowledgeBits, step);
        }
예제 #30
0
 public async Task UpdateAsync(KnowledgeLevel entity)
 {
     _uow.KnowledgeLevels.Update(entity);
     await _uow.SaveChangesAsync();
 }
예제 #31
0
        /// <summary>
        /// Create a new customer.
        /// </summary>
        /// <param name="name">The name of the new customer.</param>
        /// <param name="email">The email address of the new customer.</param>
        /// <param name="mobile">The mobile number of the new customer.</param>
        /// <param name="address">The address of the new customer.</param>
        /// <param name="language">The language of the new customer.</param>
        /// <param name="knowledgeLevel">The knowledge level of the new customer.</param>
        /// <returns>The newly created customer.</returns>
        public Customer CreateCustomer(string name, string email, string mobile, string address, Language language, KnowledgeLevel knowledgeLevel)
        {
            var newCustomer = new Customer
            {
                Name           = name,
                Email          = email,
                MobileNumber   = mobile,
                Address        = address,
                Language       = language,
                KnowledgeLevel = knowledgeLevel
            };

            this.CreateCustomer(newCustomer);

            return(newCustomer);
        }
예제 #32
0
 /// <summary>
 ///     Transform KnowledgeLevel into a value between [0;1]
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public static float GetValueFromKnowledgeLevel(KnowledgeLevel level)
 {
     return(ContinuousUniform.Sample(GetMinFromKnowledgeLevel(level), GetMaxFromKnowledgeLevel(level)));
 }
예제 #33
0
        public int triggerPhoneCall(int correctAnswerIndex, int totalNumberOfAnswers, KnowledgeLevel knowledgeLevel)
        {
            int questionLevel = this.getCurrentPlayer().currentLadderLevel;

            int phoneCallAnswer = PhoneCall.getPhoneCallResult(correctAnswerIndex, totalNumberOfAnswers, questionLevel, knowledgeLevel);

            this.getCurrentPlayer().usedPhoneCall = true;

            return(phoneCallAnswer);
        }
예제 #34
0
        public static int getPhoneCallResult(int correctAnswerIndex, int totalNumberOfAnswers, int questionLevel, KnowledgeLevel knowledgeLevel)
        {
            Random random = new Random();

            int phoneResult = 0;

            int minIndex = 0;

            double correctRate = 0.0;

            if (questionLevel <= 5)
            {
                correctRate = 1.0;
            }
            else if (questionLevel <= 10)
            {
                switch (knowledgeLevel)
                {
                case KnowledgeLevel.LOW:

                    correctRate = 0.55;

                    break;

                case KnowledgeLevel.MEDIUM:

                    correctRate = 0.75;

                    break;

                case KnowledgeLevel.HIGH:

                    correctRate = 0.95;

                    break;
                }
            }
            else
            {
                switch (knowledgeLevel)
                {
                case KnowledgeLevel.LOW:

                    correctRate = 0.25;

                    break;

                case KnowledgeLevel.MEDIUM:

                    correctRate = 0.55;

                    break;

                case KnowledgeLevel.HIGH:

                    correctRate = 0.75;

                    break;
                }
            }

            if (random.NextDouble() <= correctRate)
            {
                //Answer Correctly
                phoneResult = correctAnswerIndex;
            }
            else
            {
                phoneResult = random.Next(minIndex, totalNumberOfAnswers);

                while (phoneResult == correctAnswerIndex)
                {
                    phoneResult = random.Next(minIndex, totalNumberOfAnswers);
                }
            }


            return(phoneResult);
        }