コード例 #1
0
        /// <summary>
        /// Calculates the fitness of a solution depending on settings
        /// </summary>
        /// <param name="solution">The solution</param>
        /// <returns>The fitness</returns>
        protected override double CalculateFitness(Solution solution)
        {
            StablePairsEvaluation          stablePairsEvaluation          = new StablePairsEvaluation();
            GroupHappinessEvaluation       groupHappinessEvaluation       = new GroupHappinessEvaluation();
            EgalitarianHappinessEvaluation egalitarianHappinessEvaluation = new EgalitarianHappinessEvaluation();

            return(stablePairsEvaluation.Evaluate(_stableMarriage, solution) * Settings.StablePairWeight +
                   groupHappinessEvaluation.Evaluate(_stableMarriage, solution) * Settings.GroupHappinessWeight -
                   egalitarianHappinessEvaluation.Evaluate(_stableMarriage, solution) * Settings.EgalitarianHappinessWeight);
        }
コード例 #2
0
        private async Task <int> RunAlgorithm(int Index)
        {
            await Task.FromResult(0);

            AlgorithmBase algorithm = Context.Algorithms[Index].Algorithm;

            algorithm.Calculate();

            StablePairsEvaluation          stablePairsEvaluation          = new StablePairsEvaluation();
            GroupHappinessEvaluation       groupHappinessEvaluation       = new GroupHappinessEvaluation();
            EgalitarianHappinessEvaluation egalitarianHappinessEvaluation = new EgalitarianHappinessEvaluation();

            AlgorithmFinished?.Invoke(this, new AlgorithmEventArgs(Index,
                                                                   algorithm.Evaluate(stablePairsEvaluation),
                                                                   algorithm.Evaluate(groupHappinessEvaluation),
                                                                   algorithm.Evaluate(egalitarianHappinessEvaluation)));
            return(Index);
        }
コード例 #3
0
ファイル: AppModelTest.cs プロジェクト: kolpet/szakdolgozat
        public void NewRunModel()
        {
            StablePairsEvaluation          stablePairsEvaluation          = new StablePairsEvaluation();
            GroupHappinessEvaluation       groupHappinessEvaluation       = new GroupHappinessEvaluation();
            EgalitarianHappinessEvaluation egalitarianHappinessEvaluation = new EgalitarianHappinessEvaluation();

            NewModel();
            SetupModel setupModel = _model.NewSetupModel();

            setupModel.Initialize();
            ParticipantsModel participantsModel = _model.NewParticipantsModel();

            participantsModel.Initialize();
            PreferencesModel preferencesModel = _model.NewPreferencesModel();

            preferencesModel.Initialize();
            AlgorithmModel algorithmModel = _model.NewAlgorithmModel();

            algorithmModel.Initialize();
            RunModel runModel = _model.NewRunModel();

            runModel.Initialize();

            int  receivedEvents = 0;
            Task task;

            NewModel();

            runModel.AlgorithmStarted  += (object sender, AlgorithmEventArgs e) => receivedEvents++;
            runModel.AlgorithmFinished += (object sender, AlgorithmEventArgs e) =>
            {
                receivedEvents++;
                Assert.AreEqual(_context.Algorithms[e.Index].Algorithm.Evaluate(stablePairsEvaluation), e.StablePairs);
                Assert.AreEqual(_context.Algorithms[e.Index].Algorithm.Evaluate(groupHappinessEvaluation), e.GroupHappiness);
                Assert.AreEqual(_context.Algorithms[e.Index].Algorithm.Evaluate(egalitarianHappinessEvaluation), e.EgalitarianHappiness);
            };
            task = Task.Run(async() => {
                await runModel.RunSingleAlgorithm(0);
                Assert.AreEqual(2, receivedEvents);
            });
        }
コード例 #4
0
ファイル: RunModelTest.cs プロジェクト: kolpet/szakdolgozat
 public void TestInitialize()
 {
     stablePairsEvaluation          = new StablePairsEvaluation();
     groupHappinessEvaluation       = new GroupHappinessEvaluation();
     egalitarianHappinessEvaluation = new EgalitarianHappinessEvaluation();
 }