public KriterijiProtuprirodnosti(SpremanjeUnosa podaci, int igrac)
        {
            uneseniPodaci = podaci;
            vrstaIgraca   = igrac;

            if (vrstaIgraca == 2)//moraju se sve pretvoriti u pozitivne vrijednosti kada je igrac A priroda, a B bas igrac
            {
                foreach (var strategija in uneseniPodaci.igracB)
                {
                    for (int i = 0; i < strategija.DobitakGubitakStrategije.Count(); i++)
                    {
                        strategija.DobitakGubitakStrategije[i] = Math.Abs(strategija.DobitakGubitakStrategije[i]);
                    }
                }
            }

            for (int i = 0; i < uneseniPodaci.igracA.Count; i++)
            {
                varijableA.Add("X" + (i + 1) + "");
            }

            for (int i = 0; i < uneseniPodaci.igracB.Count; i++)
            {
                varijableB.Add("Y" + (i + 1) + "");
            }

            vrijednostiLaplace = Laplace();
            vrijednostiSavage  = Savage();
            vrijednostiHurwicz = Hurwicz();
        }
示例#2
0
        public KalkulatorZakljuckaA(DataTable tablica, SpremanjeUnosa podaci, int dif)
        {
            zadnjaTablica    = tablica;
            podaciStrategija = podaci;
            diferencija      = Convert.ToDouble(dif);

            IzracunajZakljucak();
        }
        public ProtuprirodnaKontradiktornaIgra(SpremanjeUnosa podaci)
        {
            uneseniPodaci = podaci;

            for (int i = 0; i < uneseniPodaci.igracA.Count; i++)
            {
                varijableA.Add("X" + (i + 1) + "");
            }

            for (int i = 0; i < uneseniPodaci.igracB.Count; i++)
            {
                varijableB.Add("Y" + (i + 1) + "");
            }
        }
示例#4
0
        public MatricnaIgra(SpremanjeUnosa podaci)
        {
            uneseniPodaci = podaci;

            for (int i = 0; i < uneseniPodaci.igracA.Count; i++)
            {
                varijableA.Add("X" + (i + 1) + "");
            }

            for (int i = 0; i < uneseniPodaci.igracB.Count; i++)
            {
                varijableB.Add("Y" + (i + 1) + "");
            }
        }
示例#5
0
        public SimplexKalkulatorB(SpremanjeUnosa podaci, int minDif)
        {
            podaciStrategija = podaci;

            if (minDif <= 0)
            {
                diferencija = Math.Abs(minDif) + 1;
            }
            else
            {
                diferencija = 0;
            }
            diferencirajPodatke();

            stvoriPocetnuTablicu();
            pokreniSimplexPostupak();
        }
示例#6
0
        private List <string> sveVarijableU       = new List <string>(); //u - dopunske varijable

        public IzgradnjaModelaB(SpremanjeUnosa podaci, int minDif)
        {
            upisaniPodaci = podaci;

            if (minDif <= 0)
            {
                diferencija = Math.Abs(minDif) + 1;
            }
            else
            {
                diferencija = 0;
            }

            stvoriOriginalniOblik();
            stvoriDiferenciraniOblik();
            supstituiraj();
            stvoriKanonskiOblik();
        }
        private SimplexForma simplexMetoda()
        {
            nerijesenRezultatPocetakSedlo  = false;
            protuprirodnaIgraPocetakSedlo  = false;
            kontradiktornaIgraPocetakSedlo = false;

            nerijesenRezultatInternSedlo  = false;
            protuprirodnaIgraInternSedlo  = false;
            kontradiktornaIgraInternSedlo = false;

            if (rbIgracA.Checked == true)
            {
                igrac = 1;
                uneseniDobiciGubitci = new SpremanjeUnosa(dgvMatrica);

                //provjera postojanja sedla
                SedloDominacija provjeraSedla = new SedloDominacija(uneseniDobiciGubitci);

                Tuple <bool, int, int> postojanjeSedla = provjeraSedla.ProvjeriSedlo();
                bool postojiSedlo = postojanjeSedla.Item1;
                int  rezultatIgre = postojanjeSedla.Item2;

                if (postojiSedlo)
                {
                    ProtuprirodnaKontradiktornaIgra protuprirodnostSedla = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));
                    int vrstaIgre = protuprirodnostSedla.ProvjeriProtuprirodnost();

                    if (vrstaIgre == 1)
                    {
                        protuprirodnaIgraPocetakSedlo = true;
                    }
                    else if (vrstaIgre == 2)
                    {
                        kontradiktornaIgraPocetakSedlo = true;
                    }

                    if (kontradiktornaIgraPocetakSedlo == false)
                    {
                        if (rezultatIgre > 0)
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " u korist igrača A.", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else if (rezultatIgre == 0)
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " - neriješeno (pravedna igra).", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            nerijesenRezultatPocetakSedlo = true;
                        }
                        else
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " u korist igrača B.", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    return(null);
                }
                else
                {
                    ProtuprirodnaKontradiktornaIgra protuprirodnost = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));

                    int vrstaIgre = protuprirodnost.ProvjeriProtuprirodnost();

                    if (vrstaIgre == 0)
                    {
                        provjeraSedla.ukloniDominantneStrategije(); //provjera dal postoje dominantnih i duplikatnih strategija te ih eliminira

                        Tuple <bool, int, int> postojanjeSedlaIntern = provjeraSedla.ProvjeriSedlo();
                        bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                        int  rezultatIgreIntern = postojanjeSedlaIntern.Item2;

                        if (postojiSedloIntern)
                        {
                            MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return(null);
                        }
                        else
                        {
                            //simplex metoda
                            SimplexKalkulatorA smplxCalcMI = new SimplexKalkulatorA(provjeraSedla.uneseniPodaci, postojanjeSedlaIntern.Item3); //šalju se strategije bez onih dominantnih
                            return(new SimplexForma(smplxCalcMI.SimplexTabliceRazlomci, smplxCalcMI.Zakljucak, smplxCalcMI.indexiVodecihStupaca, smplxCalcMI.indexiVodecihRedaka, smplxCalcMI.brojRedaka, smplxCalcMI.brojStupaca, smplxCalcMI.postupakIzracuna));
                        }
                    }
                    else if (vrstaIgre == 1)
                    {
                        //protuprirodnaIgra = true;
                        MessageBox.Show("Unesena je protuprirodna igra!\nNe uključujem duplikatne strategije.");

                        provjeraSedla.ukloniDuplikatneStrategije();
                        protuprirodnost.ukloniDuplikatneStrategije();

                        SedloDominacija sedloIntern = new SedloDominacija(protuprirodnost.uneseniPodaci);

                        Tuple <bool, int, int> postojanjeSedlaIntern = sedloIntern.ProvjeriSedlo();
                        bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                        int  rezultatIgreIntern = postojanjeSedlaIntern.Item2;

                        if (postojiSedloIntern)
                        {
                            MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            protuprirodnaIgraInternSedlo = true;
                            return(null);
                        }
                        else
                        {
                            SimplexKalkulatorA smplxCalcPI = new SimplexKalkulatorA(protuprirodnost.uneseniPodaci, provjeraSedla.ProvjeriSedlo().Item3);
                            return(new SimplexForma(smplxCalcPI.SimplexTabliceRazlomci, smplxCalcPI.Zakljucak, smplxCalcPI.indexiVodecihStupaca, smplxCalcPI.indexiVodecihRedaka, smplxCalcPI.brojRedaka, smplxCalcPI.brojStupaca, smplxCalcPI.postupakIzracuna));
                        }
                    }
                    else//kontradiktorna
                    {
                        //kontradiktornaIgra = true;
                        MessageBox.Show("Unesena je kontradiktorna igra! Takva igra se ne odigrava!"); //kontradiktorna nastaje nakon uklanjanja strategija svođenjem jednog igrača na samo 1 strategiju
                                                                                                       //provjeraSedla.ukloniDuplikatneStrategije();
                        return(null);

                        /*
                         * SedloDominacija sedloIntern = new SedloDominacija(protuprirodnost.uneseniPodaci);
                         *
                         * Tuple<bool, int, int> postojanjeSedlaIntern = sedloIntern.ProvjeriSedlo();
                         * bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                         * int rezultatIgreIntern = postojanjeSedlaIntern.Item2;
                         *
                         * if (postojiSedloIntern)
                         * {
                         *  MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         *  kontradiktornaIgraInternSedlo = true;
                         *  return null;
                         * }
                         * else
                         * {
                         *  SimplexKalkulatorA smplxCalcKI = new SimplexKalkulatorA(protuprirodnost.uneseniPodaci, provjeraSedla.ProvjeriSedlo().Item3);//protuprirodnost -> provjeraSedla.uneseniPodaci
                         *  return new SimplexForma(smplxCalcKI.SimplexTabliceRazlomci, smplxCalcKI.Zakljucak, smplxCalcKI.indexiVodecihStupaca, smplxCalcKI.indexiVodecihRedaka, smplxCalcKI.brojRedaka, smplxCalcKI.brojStupaca, smplxCalcKI.postupakIzracuna);
                         * }
                         */
                    }
                }
            }

            else //igracB.Check == true;
            {
                igrac = 2;
                uneseniDobiciGubitci = new SpremanjeUnosa(dgvMatrica);

                //provjera postojanja sedla
                SedloDominacija provjeraSedla = new SedloDominacija(uneseniDobiciGubitci);

                Tuple <bool, int, int> postojanjeSedla = provjeraSedla.ProvjeriSedlo();
                bool postojiSedlo = postojanjeSedla.Item1;
                int  rezultatIgre = postojanjeSedla.Item2;

                if (postojiSedlo)
                {
                    ProtuprirodnaKontradiktornaIgra protuprirodnostSedla = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));
                    int vrstaIgre = protuprirodnostSedla.ProvjeriProtuprirodnost();

                    if (vrstaIgre == 1)
                    {
                        protuprirodnaIgraPocetakSedlo = true;
                    }
                    else if (vrstaIgre == 2)
                    {
                        kontradiktornaIgraPocetakSedlo = true;
                    }
                    if (kontradiktornaIgraPocetakSedlo == false)
                    {
                        if (rezultatIgre > 0)
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " u korist igrača A.", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else if (rezultatIgre == 0)
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " - neriješeno.", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            nerijesenRezultatPocetakSedlo = true;
                        }
                        else
                        {
                            MessageBox.Show("Postoji sedlo!\nVrijednost ove igre iznosi " + rezultatIgre + " u korist igrača B.", "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }

                    return(null);
                }
                else
                {
                    ProtuprirodnaKontradiktornaIgra protuprirodnost = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));
                    int vrstaIgre = protuprirodnost.ProvjeriProtuprirodnost();
                    if (vrstaIgre == 0)
                    {
                        provjeraSedla.ukloniDominantneStrategije();                                   //provjera dal postoje dominantne i duplikatne strategije te ih eliminira

                        Tuple <bool, int, int> postojanjeSedlaIntern = provjeraSedla.ProvjeriSedlo(); //provjera sedla nakon uklanjanja strategija
                        bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                        int  rezultatIgreIntern = postojanjeSedlaIntern.Item2;

                        if (postojiSedloIntern)
                        {
                            MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return(null);
                        }
                        else
                        {
                            //simplex metoda
                            SimplexKalkulatorB smplxCalcMI = new SimplexKalkulatorB(provjeraSedla.uneseniPodaci, postojanjeSedlaIntern.Item3); //šalju se strategije bez onih dominantnih i duplikatnih
                            return(new SimplexForma(smplxCalcMI.SimplexTabliceRazlomci, smplxCalcMI.Zakljucak, smplxCalcMI.indexiVodecihStupaca, smplxCalcMI.indexiVodecihRedaka, smplxCalcMI.brojRedaka, smplxCalcMI.brojStupaca, smplxCalcMI.postupakIzracuna));
                        }
                    }
                    else if (vrstaIgre == 1)
                    {
                        //protuprirodnaIgra = true;
                        MessageBox.Show("Unesena je protuprirodna igra!\nNe uključujem duplikatne strategije.");

                        provjeraSedla.ukloniDuplikatneStrategije();
                        protuprirodnost.ukloniDuplikatneStrategije();

                        SedloDominacija sedloIntern = new SedloDominacija(protuprirodnost.uneseniPodaci);

                        Tuple <bool, int, int> postojanjeSedlaIntern = sedloIntern.ProvjeriSedlo();
                        bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                        int  rezultatIgreIntern = postojanjeSedlaIntern.Item2;

                        if (postojiSedloIntern)
                        {
                            MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            protuprirodnaIgraInternSedlo = true;
                            return(null);
                        }
                        else
                        {
                            SimplexKalkulatorB smplxCalcPI = new SimplexKalkulatorB(protuprirodnost.uneseniPodaci, provjeraSedla.ProvjeriSedlo().Item3);
                            return(new SimplexForma(smplxCalcPI.SimplexTabliceRazlomci, smplxCalcPI.Zakljucak, smplxCalcPI.indexiVodecihStupaca, smplxCalcPI.indexiVodecihRedaka, smplxCalcPI.brojRedaka, smplxCalcPI.brojStupaca, smplxCalcPI.postupakIzracuna));
                        }
                    }
                    else//kontradiktorna
                    {
                        //kontradiktornaIgra = true;
                        MessageBox.Show("Unesena je kontradiktorna igra! Takva igra se ne odigrava!"); //kontradiktorna nastaje nakon uklanjanja strategija svođenjem jednog igrača na samo 1 strategiju
                                                                                                       //provjeraSedla.ukloniDuplikatneStrategije();
                        return(null);

                        /*                                                                       //provjeraSedla.ukloniDuplikatneStrategije();
                         * SedloDominacija sedloIntern = new SedloDominacija(protuprirodnost.uneseniPodaci);
                         *
                         * Tuple<bool, int, int> postojanjeSedlaIntern = sedloIntern.ProvjeriSedlo();
                         * bool postojiSedloIntern = postojanjeSedlaIntern.Item1;
                         * int rezultatIgreIntern = postojanjeSedlaIntern.Item2;
                         *
                         * if (postojiSedloIntern)
                         * {
                         *  MessageBox.Show("Postoji sedlo nakon uklanjanja strategija!\nVrijednost ove igre iznosi: " + rezultatIgreIntern, "Kraj igre!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         *  kontradiktornaIgraInternSedlo = true;
                         *  return null;
                         * }
                         * else
                         * {
                         *  SimplexKalkulatorB smplxCalcKI = new SimplexKalkulatorB(protuprirodnost.uneseniPodaci, provjeraSedla.ProvjeriSedlo().Item3);
                         *  return new SimplexForma(smplxCalcKI.SimplexTabliceRazlomci, smplxCalcKI.Zakljucak, smplxCalcKI.indexiVodecihStupaca, smplxCalcKI.indexiVodecihRedaka, smplxCalcKI.brojRedaka, smplxCalcKI.brojStupaca, smplxCalcKI.postupakIzracuna);
                         * }
                         */
                    }
                }
            }
        }
        private string stvoriModelProblema()
        {
            if (rbIgracA.Checked == true)
            {
                uneseniDobiciGubitci = new SpremanjeUnosa(dgvMatrica);

                SedloDominacija provjeraDominacije = new SedloDominacija(uneseniDobiciGubitci);

                ProtuprirodnaKontradiktornaIgra protuprirodnost = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));

                int vrstaIgre = protuprirodnost.ProvjeriProtuprirodnost();

                if (vrstaIgre == 0)
                {
                    provjeraDominacije.ukloniDominantneStrategije();
                    MatricnaIgra matricnaIgra = new MatricnaIgra(provjeraDominacije.uneseniPodaci);

                    string uklonjeneStrategije = "Unesena je miješana matrična igra." + Environment.NewLine;

                    uklonjeneStrategije += provjeraDominacije.IspisUklonjenihStrategijaIgracaA();
                    uklonjeneStrategije += matricnaIgra.IspisMatricneIgre() + Environment.NewLine + Environment.NewLine + "Kod izrade modela ne uključujem dominantne ili duplikatne strategije.";    //prikaz matricne igre

                    IzgradnjaModelaA modelZadatkaA = new IzgradnjaModelaA(provjeraDominacije.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + Environment.NewLine + modelZadatkaA.DohvatiZapisModela());
                }
                else if (vrstaIgre == 1)     // izračun po 3 kriterija
                {
                    provjeraDominacije.ukloniDuplikatneStrategije();
                    if (!protuprirodnost.ProvjeraSvihJednakihIsplata())
                    {
                        protuprirodnost.ukloniDuplikatneStrategije();
                    }

                    //protuprirodnost.ukloniDuplikatneStrategije();

                    MatricnaIgra matricnaIgra = new MatricnaIgra(protuprirodnost.uneseniPodaci);

                    KriterijiProtuprirodnosti kriteriji = new KriterijiProtuprirodnosti(protuprirodnost.uneseniPodaci, 1);     //rjesavanje po kriterijima

                    string uklonjeneStrategije = "Unesena igra je protuprirodna ili postaje protuprirodna igra nakon uklanjanja strategija:" + protuprirodnost.IspisUklonjenihStrategijaIgraca() + matricnaIgra.IspisMatricneIgre() + Environment.NewLine + kriteriji.IspisiVrijednostiKriterija() + Environment.NewLine + "Kod izrade modela ne uključujem dominantne ili duplikatne strategije." + Environment.NewLine;

                    /* NEPOTREBNO- ponovni ispis uklonjenih strategija i matrice
                     * if(protuprirodnost.IspisUklonjenihStrategijaIgraca() != string.Empty)
                     * {
                     *  //uklonjeneStrategije += protuprirodnost.IspisUklonjenihStrategijaIgraca();
                     *  //matricnaIgra = new MatricnaIgra(protuprirodnost.uneseniPodaci);
                     *  //uklonjeneStrategije += matricnaIgra.IspisMatricneIgre();
                     * }
                     */

                    IzgradnjaModelaA modelZadatkaA = new IzgradnjaModelaA(protuprirodnost.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + modelZadatkaA.DohvatiZapisModela());
                }
                else
                {
                    //provjeraSedla.ukloniDuplikatneStrategije();

                    MatricnaIgra matricnaIgra = new MatricnaIgra(protuprirodnost.uneseniPodaci);

                    string uklonjeneStrategije = "Unesena igra je kontradiktorna ili postaje kontradiktorna igra nakon uklanjanja strategija:" + protuprirodnost.IspisUklonjenihStrategijaIgraca() + matricnaIgra.IspisMatricneIgre() + Environment.NewLine + Environment.NewLine + "Kod izrade modela ne uklanjam strategije. " + Environment.NewLine;
                    uklonjeneStrategije += provjeraDominacije.IspisUklonjenihDuplikatnihA();

                    matricnaIgra         = new MatricnaIgra(provjeraDominacije.uneseniPodaci);
                    uklonjeneStrategije += matricnaIgra.IspisMatricneIgre();

                    IzgradnjaModelaA modelZadatkaA = new IzgradnjaModelaA(provjeraDominacije.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + Environment.NewLine + modelZadatkaA.DohvatiZapisModela());
                }
            }
            else     //igracB.Check == true;
            {
                uneseniDobiciGubitci = new SpremanjeUnosa(dgvMatrica);

                SedloDominacija provjeraDominacije = new SedloDominacija(uneseniDobiciGubitci);

                ProtuprirodnaKontradiktornaIgra protuprirodnost = new ProtuprirodnaKontradiktornaIgra(new SpremanjeUnosa(dgvMatrica));

                int vrstaIgre = protuprirodnost.ProvjeriProtuprirodnost();

                if (vrstaIgre == 0)
                {
                    provjeraDominacije.ukloniDominantneStrategije();
                    MatricnaIgra matricnaIgra = new MatricnaIgra(provjeraDominacije.uneseniPodaci);

                    string uklonjeneStrategije = "Unesena je miješana matrična igra." + Environment.NewLine;

                    uklonjeneStrategije += provjeraDominacije.IspisUklonjenihStrategijaIgracaB();
                    uklonjeneStrategije += matricnaIgra.IspisMatricneIgre() + Environment.NewLine + Environment.NewLine + "Kod izrade modela ne uključujem dominantne ili duplikatne strategije.";

                    IzgradnjaModelaB modelZadatkaB = new IzgradnjaModelaB(provjeraDominacije.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + Environment.NewLine + modelZadatkaB.DohvatiZapisModela());
                }
                else if (vrstaIgre == 1)     // izračun po 3 kriterija
                {
                    provjeraDominacije.ukloniDuplikatneStrategije();

                    if (!protuprirodnost.ProvjeraSvihJednakihIsplata())
                    {
                        protuprirodnost.ukloniDuplikatneStrategije();
                    }

                    //protuprirodnost.ukloniDuplikatneStrategije();

                    MatricnaIgra matricnaIgra           = new MatricnaIgra(protuprirodnost.uneseniPodaci);
                    KriterijiProtuprirodnosti kriteriji = new KriterijiProtuprirodnosti(protuprirodnost.uneseniPodaci, 2);     //rjesavanje po kriterijima

                    string uklonjeneStrategije = "Unesena igra je protuprirodna ili postaje protuprirodna igra nakon uklanjanja strategija:" + protuprirodnost.IspisUklonjenihStrategijaIgraca() + matricnaIgra.IspisMatricneIgre() + Environment.NewLine + kriteriji.IspisiVrijednostiKriterija() + Environment.NewLine + "Kod izrade modela ne uključujem dominantne ili duplikatne strategije." + Environment.NewLine;

                    /* NEPOTREBNO
                     * if (protuprirodnost.IspisUklonjenihStrategijaIgraca() != string.Empty)
                     * {
                     *  uklonjeneStrategije += protuprirodnost.IspisUklonjenihStrategijaIgraca();
                     *  //matricnaIgra = new MatricnaIgra(protuprirodnost.uneseniPodaci);
                     *  //uklonjeneStrategije += matricnaIgra.IspisMatricneIgre();
                     * }
                     */

                    IzgradnjaModelaB modelZadatkaB = new IzgradnjaModelaB(protuprirodnost.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + modelZadatkaB.DohvatiZapisModela());
                }
                else
                {
                    //provjeraSedla.ukloniDuplikatneStrategije();

                    MatricnaIgra matricnaIgra = new MatricnaIgra(protuprirodnost.uneseniPodaci);

                    string uklonjeneStrategije = "Unesena igra je kontradiktorna ili postaje kontradiktorna igra nakon uklanjanja strategija:" + protuprirodnost.IspisUklonjenihStrategijaIgraca() + matricnaIgra.IspisMatricneIgre() + Environment.NewLine + Environment.NewLine + "Kod izrade modela ne uklanjam strategije. " + Environment.NewLine;
                    uklonjeneStrategije += provjeraDominacije.IspisUklonjenihDuplikatnihB();

                    matricnaIgra         = new MatricnaIgra(provjeraDominacije.uneseniPodaci);
                    uklonjeneStrategije += matricnaIgra.IspisMatricneIgre();

                    IzgradnjaModelaB modelZadatkaB = new IzgradnjaModelaB(provjeraDominacije.uneseniPodaci, provjeraDominacije.ProvjeriSedlo().Item3);

                    if (String.IsNullOrEmpty(uklonjeneStrategije))
                    {
                        uklonjeneStrategije = "Ne postoji niti jedna dominantna ili duplikatna strategija!";
                    }

                    return(uklonjeneStrategije + Environment.NewLine + Environment.NewLine + modelZadatkaB.DohvatiZapisModela());
                }
            }
        }