Ejemplo n.º 1
0
        private void eq33go_Click(object sender, RoutedEventArgs e)
        {
            cons            = 3; vars = 3;
            string[,,] text = new string[4, 4, 4]
            {
                { //first row
                    { eq33000.Text, eq33001.Text, eq33002.Text, eq33003.Text },
                    { eq33010.Text, eq33011.Text, eq33012.Text, eq33013.Text },
                    { eq33020.Text, eq33021.Text, eq33022.Text, eq33023.Text },
                    { eq33030.Text, eq33031.Text, eq33032.Text, eq33033.Text }
                },
                { //second row
                    { eq33100.Text, eq33101.Text, eq33102.Text, eq33103.Text },
                    { eq33110.Text, eq33111.Text, eq33112.Text, eq33113.Text },
                    { eq33120.Text, eq33121.Text, eq33122.Text, eq33123.Text },
                    { eq33130.Text, eq33131.Text, eq33132.Text, eq33133.Text }
                },
                { //third row
                    { eq33200.Text, eq33201.Text, eq33202.Text, eq33203.Text },
                    { eq33210.Text, eq33211.Text, eq33212.Text, eq33213.Text },
                    { eq33220.Text, eq33221.Text, eq33222.Text, eq33223.Text },
                    { eq33230.Text, eq33231.Text, eq33232.Text, eq33233.Text }
                },
                { //z-row
                    { eq33z00.Text, eq33z01.Text, eq33z02.Text, eq33z03.Text },
                    { eq33z10.Text, eq33z11.Text, eq33z12.Text, eq33z13.Text },
                    { eq33z20.Text, eq33z21.Text, eq33z22.Text, eq33z23.Text },
                    { "0", "0", "0", "0" }
                }
            };

            // Validation
            string[] tiers = new string[16];
            string[] tier = new string[16];
            int      n = 0; bool ans; bool status = false;

            for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    for (int z = 0; z < 4; z++)
                    {
                        eqn33[x, y, z] = isValid(text[x, y, z]) ? float.Parse(text[x, y, z]) : 0;
                    }
                    tiers[n] = eqn33[x, y, 0] + "-" + eqn33[x, y, 1] + "-" + eqn33[x, y, 2] + "-" + eqn33[x, y, 3];
                    List <float> temp = new List <float> {
                        eqn33[x, y, 0], eqn33[x, y, 1], eqn33[x, y, 2], eqn33[x, y, 3]
                    };
                    temp.Sort();
                    tier[n] = temp[0] + "-" + temp[1] + "-" + temp[2] + "-" + temp[3];
                    n       = n + 1;
                }
            }

            for (int i = 0; i < 16; i++)
            {
                ans = isArranged(tiers[i], tier[i]);
                if (ans == true)
                {
                    status          = true;
                    err4.Visibility = Visibility.Visible;
                    err4.Foreground = Brushes.Green;
                    err4.Content    = "Inputs are Ok.";
                }
                else if (ans == false)
                {
                    status          = false;
                    err4.Visibility = Visibility.Visible;
                    err4.Foreground = Brushes.Red;
                    err4.Content    = "Inputs are not Ok.";
                    break;
                }
            }

            if (status == true)
            {
                // Assigning the
                float[,,] eqn_33 =
                {
                    //row 1
                    { { eqn33[0, 0, 0], eqn33[0, 0, 1], eqn33[0, 0, 2], eqn33[0, 0, 3], 0 },
                            { eqn33[0, 1, 0], eqn33[0, 1, 1], eqn33[0, 1, 2], eqn33[0, 1, 3], 0 },
                            { eqn33[0, 2, 0], eqn33[0, 2, 1], eqn33[0, 2, 2], eqn33[0, 2, 3], 0 },
                            { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0,     0 },
                            { eqn33[0, 3, 0], eqn33[0, 3, 1], eqn33[0, 3, 2], eqn33[0, 3, 3], 0 } },
                    //row 2
                    { { eqn33[1, 0, 0], eqn33[1, 0, 1], eqn33[1, 0, 2], eqn33[1, 0, 3], 0 },
                            { eqn33[1, 1, 0], eqn33[1, 1, 1], eqn33[1, 1, 2], eqn33[1, 1, 3], 0 },
                            { eqn33[1, 2, 0], eqn33[1, 2, 1], eqn33[1, 2, 2], eqn33[1, 2, 3], 0 },
                            { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0,     0 },
                            { eqn33[1, 3, 0], eqn33[1, 3, 1], eqn33[1, 3, 2], eqn33[1, 3, 3], 0 } },
                    //row 3
                    { { eqn33[2, 0, 0], eqn33[2, 0, 1], eqn33[2, 0, 2], eqn33[2, 0, 3], 0 },
                            { eqn33[2, 1, 0], eqn33[2, 1, 1], eqn33[2, 1, 2], eqn33[2, 1, 3], 0 },
                            { eqn33[2, 2, 0], eqn33[2, 2, 1], eqn33[2, 2, 2], eqn33[2, 2, 3], 0 },
                            { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0,     0 },
                            { eqn33[2, 3, 0], eqn33[2, 3, 1], eqn33[2, 3, 2], eqn33[2, 3, 3], 0 } },
                    //z-row
                    { { eqn33[3, 0, 0], eqn33[3, 0, 1], eqn33[3, 0, 2], eqn33[3, 0, 3], 0 },
                            { eqn33[3, 1, 0], eqn33[3, 1, 1], eqn33[3, 1, 2], eqn33[3, 1, 3], 0 },
                            { eqn33[3, 2, 0], eqn33[3, 2, 1], eqn33[3, 2, 2], eqn33[3, 2, 3], 0 },
                            { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0,     0 }, { 0,0,0, 0, 0 } }
                };

                //Major
                //initialize the draw segment
                int       offset = 20;
                tableGrid page   = new tableGrid(stacky, offset);
                page.clear();
                tableau4 tb33 = new tableau4(eqn_33, type, cons, vars, side4);
                tb33.toCompForm();
                tb33.rank();
                //gives optimal the value of the isOptimal method of the current tableau
                optimal = tb33.isOptimal();
                for (int i = 0; optimal == false; i++)
                {
                    if (tb33.isOptimal())
                    {
                        //stop
                        tab4            = tb33.tab;
                        pref.Visibility = Visibility.Collapsed;
                        comm.Visibility = Visibility.Collapsed;
                        page.draw4(tab4, "Tableau " + (i + 1), "Tableau is Optimal", 0, side4);
                        optimal = true;
                        page.statement("Z* = " + tab4[3, 6, 0] + " , " + tab4[3, 6, 1] + " , " + tab4[3, 6, 2] + " , " + tab4[3, 6, 3] + " | " + tab4[3, 6, 4] + "\n" +
                                       side4[0] + "* = " + tab4[0, 6, 0] + " , " + tab4[0, 6, 1] + " , " + tab4[0, 6, 2] + " , " + tab4[0, 6, 3] + " | " + tab4[0, 6, 4] + " , " +
                                       side4[1] + "* = " + tab4[1, 6, 0] + " , " + tab4[1, 6, 1] + " , " + tab4[1, 6, 2] + " , " + tab4[1, 6, 3] + " | " + tab4[1, 6, 4] + " , " +
                                       side4[2] + "* = " + tab4[2, 6, 0] + " , " + tab4[2, 6, 1] + " , " + tab4[2, 6, 2] + " , " + tab4[2, 6, 3] + " | " + tab4[2, 6, 4]);
                        break;
                    }
                    else
                    {
                        tab4 = tb33.tab;
                        pc   = tb33.getPC();
                        pr   = tb33.getPR(pc);
                        float pe  = tb33.getPE(pc, pr);
                        int   pos = getPeNum4(pr, pc);
                        pref.Visibility = Visibility.Collapsed;
                        comm.Visibility = Visibility.Collapsed;
                        side4           = tb33.side;
                        page.draw4(tab4, "Tableau " + (i + 1), "Tableau is not Optimal", pos, side4);
                        tb33    = fuzzy4(tb33, type, cons, vars, tab4);
                        optimal = false;
                        offset  = page.off;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        // These set of functions handles the event click of the "Go" buttons
        private void eq22go_Click(object sender, RoutedEventArgs e)
        {
            cons = 2; vars = 2;

            string[,,] text = new string[3, 3, 4] {
                { //first row
                    { eq22000.Text, eq22001.Text, eq22002.Text, eq22003.Text },
                    { eq22010.Text, eq22011.Text, eq22012.Text, eq22013.Text },
                    { eq22020.Text, eq22021.Text, eq22022.Text, eq22023.Text }
                },
                { //second row
                    { eq22100.Text, eq22101.Text, eq22102.Text, eq22103.Text },
                    { eq22110.Text, eq22111.Text, eq22112.Text, eq22113.Text },
                    { eq22120.Text, eq22121.Text, eq22122.Text, eq22123.Text }
                },
                { //z-row
                    { eq22z00.Text, eq22z01.Text, eq22z02.Text, eq22z03.Text },
                    { eq22z10.Text, eq22z11.Text, eq22z12.Text, eq22z13.Text },
                    { "0", "0", "0", "0" }
                }
            };

            // Validation
            string[] tiers = new string[9];
            string[] tier = new string[9];
            int      n = 0; bool ans; bool status = false;

            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    for (int z = 0; z < 4; z++)
                    {
                        eqn22[x, y, z] = isValid(text[x, y, z]) ? float.Parse(text[x, y, z]) : 0;
                    }
                    tiers[n] = eqn22[x, y, 0] + "-" + eqn22[x, y, 1] + "-" + eqn22[x, y, 2] + "-" + eqn22[x, y, 3];
                    List <float> temp = new List <float> {
                        eqn22[x, y, 0], eqn22[x, y, 1], eqn22[x, y, 2], eqn22[x, y, 3]
                    };
                    temp.Sort();
                    tier[n] = temp[0] + "-" + temp[1] + "-" + temp[2] + "-" + temp[3];
                    n       = n + 1;
                }
            }

            for (int i = 0; i < 9; i++)
            {
                ans = isArranged(tiers[i], tier[i]);
                if (ans == true)
                {
                    status          = true;
                    err1.Visibility = Visibility.Visible;
                    err1.Foreground = Brushes.Green;
                    err1.Content    = "Inputs are Ok.";
                }
                else if (ans == false)
                {
                    status          = false;
                    err1.Visibility = Visibility.Visible;
                    err1.Foreground = Brushes.Red;
                    err1.Content    = "Inputs are not Ok.";
                    break;
                }
            }

            if (status == true)
            {
                // Assigning the
                float[,,] eqn_22 =
                {
                    //row 1
                    { { eqn22[0, 0, 0], eqn22[0, 0, 1], eqn22[0, 0, 2], eqn22[0, 0, 3], 0 },
                        { eqn22[0, 1, 0], eqn22[0, 1, 1], eqn22[0, 1, 2], eqn22[0, 1, 3], 0 },
                        { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 },
                        { eqn22[0, 2, 0], eqn22[0, 2, 1], eqn22[0, 2, 2], eqn22[0, 2, 3], 0 } },
                    //row 2
                    { { eqn22[1, 0, 0], eqn22[1, 0, 1], eqn22[1, 0, 2], eqn22[1, 0, 3], 0 },
                        { eqn22[1, 1, 0], eqn22[1, 1, 1], eqn22[1, 1, 2], eqn22[1, 1, 3], 0 },
                        { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 },
                        { eqn22[1, 2, 0], eqn22[1, 2, 1], eqn22[1, 2, 2], eqn22[1, 2, 3], 0 } },
                    //z-row
                    { { eqn22[2, 0, 0], eqn22[2, 0, 1], eqn22[2, 0, 2], eqn22[2, 0, 3], 0 },
                        { eqn22[2, 1, 0], eqn22[2, 1, 1], eqn22[2, 1, 2], eqn22[2, 1, 3], 0 },
                        { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
                };

                //Major
                //initialize the draw segment
                int       offset = 20;
                tableGrid page   = new tableGrid(stacky, offset);
                page.clear();
                tableau1 tb22 = new tableau1(eqn_22, type, cons, vars, side1);
                tb22.toCompForm();
                tb22.rank();
                //gives optimal the value of the isOptimal method of the current tableau
                optimal = tb22.isOptimal();
                //int itr = 1;
                for (int i = 0; optimal == false; i++)
                {
                    if (tb22.isOptimal())
                    {
                        //stop
                        tab1            = tb22.tab;
                        pref.Visibility = Visibility.Collapsed;
                        comm.Visibility = Visibility.Collapsed;
                        page.draw1(tab1, "Tableau " + (i + 1), "Tableau is Optimal", 0, side1);
                        optimal = true;
                        page.statement("Z* = " + tab1[2, 4, 0] + " , " + tab1[2, 4, 1] + " , " + tab1[2, 4, 2] + " , " + tab1[2, 4, 3] + " | " + tab1[2, 4, 4] + "\n" +
                                       side1[0] + "* = " + tab1[0, 4, 0] + " , " + tab1[0, 4, 1] + " , " + tab1[0, 4, 2] + " , " + tab1[0, 4, 3] + " | " + tab1[0, 4, 4] + " , " +
                                       side1[1] + "* = " + tab1[1, 4, 0] + " , " + tab1[1, 4, 1] + " , " + tab1[1, 4, 2] + " , " + tab1[1, 4, 3] + " | " + tab1[1, 4, 4]);
                        break;
                    }
                    else
                    {
                        tab1 = tb22.tab;
                        pc   = tb22.getPC();
                        pr   = tb22.getPR(pc);
                        float pe  = tb22.getPE(pc, pr);
                        int   pos = getPeNum1(pr, pc);
                        pref.Visibility = Visibility.Collapsed;
                        comm.Visibility = Visibility.Collapsed;
                        side1           = tb22.side;
                        page.draw1(tab1, "Tableau " + (i + 1), "Tableau is not Optimal", pos, side1);
                        tb22    = fuzzy1(tb22, type, cons, vars, tab1);
                        optimal = false;
                        offset  = page.off;
                    }
                }
            }
        }