Пример #1
0
        public static Tuple <bool, List <double?> > CreateAlternativeMatrix(List <Alternativa> primljenaListaAlternativa, List <UsporedbaAlternativaPremaKriteriju> usporedbe)
        {
            int brojAlternativa = primljenaListaAlternativa.Count();

            double?[,] matricaAlternativa = new double?[brojAlternativa, brojAlternativa];

            bool matricaPotpuna = true;


            for (int i = 0; i < primljenaListaAlternativa.Count; i++)
            {
                Alternativa alternativa1 = new Alternativa();
                alternativa1 = primljenaListaAlternativa[i];
                for (int j = 0; j < primljenaListaAlternativa.Count; j++)
                {
                    if (i == j)
                    {
                        matricaAlternativa[i, j] = 1;
                    }
                    else if (i < j)
                    {
                        Alternativa alternativa2 = new Alternativa();
                        alternativa2 = primljenaListaAlternativa[j];
                        double?vrijednost;
                        UsporedbaAlternativaPremaKriteriju usp = usporedbe.Find(x => ((x.alternativa1 == alternativa1.id && x.alternativa2 == alternativa2.id) || (x.alternativa1 == alternativa2.id && x.alternativa2 == alternativa1.id)));
                        if (usp != null)
                        {
                            vrijednost = usp.vrijednost;
                            matricaAlternativa[j, i] = vrijednost;
                            matricaAlternativa[i, j] = 1 / vrijednost;
                        }
                        else
                        {
                            matricaPotpuna = false;
                            break;
                        }
                    }
                }
            }

            Tuple <bool, List <double?> > konzistentnostIVrijednostiAlternativa = null;

            if (matricaPotpuna)
            {
                konzistentnostIVrijednostiAlternativa = CheckConsistencyAndGetValues(matricaAlternativa);
            }
            else
            {
                konzistentnostIVrijednostiAlternativa = new Tuple <bool, List <double?> >(false, null);
            }
            return(konzistentnostIVrijednostiAlternativa);
        }
Пример #2
0
        public void ChangeAlternativeComparisonFactor(int alternative1, int alternative2, int criteria, float factor)
        {
            AHPEntities4 db = new AHPEntities4();
            UsporedbaAlternativaPremaKriteriju usporedbaAlternativaPremaKriteriju = db.UsporedbaAlternativaPremaKriterijus.Where(x => (x.alternativa1 == alternative1 && x.alternativa2 == alternative2 && x.kriterij == criteria)).SingleOrDefault();

            if (usporedbaAlternativaPremaKriteriju != null)
            {
                usporedbaAlternativaPremaKriteriju.vrijednost = factor;
            }
            else
            {
                var usporedbaAlternativaPremaKriterijuLista = db.Set <UsporedbaAlternativaPremaKriteriju>();
                UsporedbaAlternativaPremaKriteriju uapk     = new UsporedbaAlternativaPremaKriteriju();
                uapk.alternativa1 = alternative1;
                uapk.alternativa2 = alternative2;
                uapk.kriterij     = criteria;
                uapk.vrijednost   = factor;
                usporedbaAlternativaPremaKriterijuLista.Add(uapk);
            }
            if (db.SaveChanges() > 0)
            {
                //UpdateProjectsAlternativesConsistency(usporedbaAlternativaPremaKriteriju.Kriterij1.projekt);
            }
        }