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); }
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); } }