コード例 #1
0
        public List <int> GetRanksELECTRE()
        {
            ELECTREDecisionProvider      provider = new ELECTREDecisionProvider();
            ELECTREDecisionConfiguration config   = new ELECTREDecisionConfiguration
            {
                CriteriaRanks = _criterias.GetNormalizedWeight(),
                Parameters    = _criterias.GetELECTREParameters(),
                alpha         = ELECTREAlpha,
                beta          = ELECTREBeta
            };

            provider.Init(config);

            AlternativesBase alternatives = GetAlternativesBases(MethodsEnum.REGIME);

            List <int> result    = provider.Solve(alternatives).Ranks;
            int        MinResult = result.Min();

            for (int i = 0; i < result.Count; ++i)
            {
                result[i] -= (MinResult - 1);
            }
            return(result);
        }
コード例 #2
0
        public void TestELECTREDecision()
        {
            ELECTREDecisionProvider      provider      = new ELECTREDecisionProvider();
            ELECTREDecisionConfiguration configuration = new ELECTREDecisionConfiguration
            {
                CriteriaRanks = new List <double> {
                    0.179, 0.062, 0.211, 0.017, 0.531
                },
                alpha      = 0.05,
                beta       = 0.5,
                Parameters = new List <ELECTREParameters>
                {
                    new ELECTREParameters {
                        v = 0.09, p = 0.08, q = 0.02
                    },
                    new ELECTREParameters {
                        v = 0.02, p = 0.015, q = 0.005
                    },
                    new ELECTREParameters {
                        v = 0.11, p = 0.1, q = 0.05
                    },
                    new ELECTREParameters {
                        v = 0.001, p = 0.001, q = 0
                    },
                    new ELECTREParameters {
                        v = 0.35, p = 0.33, q = 0.15
                    },
                }
            };

            provider.Init(configuration);

            var alternatives = new AlternativesBase
            {
                Criterias = new List <ICriteria>
                {
                    new CriteriaBase {
                        CriteriaDirection = CriteriaDirectionType.Minimization
                    },                                                                       //cost
                    new QualitativeCriteriaBase {
                        CriteriaDirection = CriteriaDirectionType.Maximization
                    },                                                                                   //strength
                    new QualitativeCriteriaBase {
                        CriteriaDirection = CriteriaDirectionType.Maximization
                    },                                                                                    //national reputation
                    new CriteriaBase {
                        CriteriaDirection = CriteriaDirectionType.Maximization
                    },                                                                        // capacity
                    new QualitativeCriteriaBase {
                        CriteriaDirection = CriteriaDirectionType.Minimization
                    },                                                                                   // work hardness
                },
                Alternatives = new List <AlternativeBase>
                {
                    new AlternativeBase
                    {
                        Values = new List <IAlternativeValue>
                        {
                            new AlternativeValueBase(3),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Medium, new QualitativeCriteriaBase()),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.VeryGood, new QualitativeCriteriaBase()),
                            new AlternativeValueBase(24000),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.FairlyWeak, new QualitativeCriteriaBase())
                        }
                    },
                    new AlternativeBase
                    {
                        Values = new List <IAlternativeValue>
                        {
                            new AlternativeValueBase(1.2),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Good, new QualitativeCriteriaBase()),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Medium, new QualitativeCriteriaBase()),
                            new AlternativeValueBase(25000),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Good, new QualitativeCriteriaBase())
                        }
                    },
                    new AlternativeBase
                    {
                        Values = new List <IAlternativeValue>
                        {
                            new AlternativeValueBase(1.5),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Excellent, new QualitativeCriteriaBase()),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.FairlyWeak, new QualitativeCriteriaBase()),
                            new AlternativeValueBase(32000),
                            new QualitativeAlternativeValue(QualitativeCriteriaEnum.Excellent, new QualitativeCriteriaBase())
                        }
                    }
                }
            };
            var result = provider.Solve(alternatives);

            Assert.IsTrue(result.Ranks.Count == 3);
            Assert.IsTrue(result.Ranks[0] == 3);
            Assert.IsTrue(result.Ranks[1] == 2);
            Assert.IsTrue(result.Ranks[2] == 1);
        }