private static void RecieveData(Socket socket, List <CurrentSimulationCase> Table, PerformanceMeasures Performance)
        {
            byte[] buffer = new byte[1024];
            int    n      = socket.Receive(buffer);
            int    len    = int.Parse(Encoding.ASCII.GetString(buffer));

            for (int i = 0; i < len; i++)
            {
                CurrentSimulationCase Case = new CurrentSimulationCase();
                n = socket.Receive(buffer);
                Case.Bearing.RandomHours = int.Parse(Encoding.ASCII.GetString(buffer));
                n = socket.Receive(buffer);
                Case.Bearing.Hours = int.Parse(Encoding.ASCII.GetString(buffer));
                n = socket.Receive(buffer);
                Case.RandomDelay = int.Parse(Encoding.ASCII.GetString(buffer));
                n                     = socket.Receive(buffer);
                Case.Delay            = int.Parse(Encoding.ASCII.GetString(buffer));
                n                     = socket.Receive(buffer);
                Case.AccumulatedHours = int.Parse(Encoding.ASCII.GetString(buffer));
                Table.Add(Case);
            }
            n = socket.Receive(buffer);
            Performance.BearingCost = decimal.Parse(Encoding.ASCII.GetString(buffer));
            n = socket.Receive(buffer);
            Performance.DelayCost = decimal.Parse(Encoding.ASCII.GetString(buffer));
            n = socket.Receive(buffer);
            Performance.DowntimeCost = decimal.Parse(Encoding.ASCII.GetString(buffer));
            n = socket.Receive(buffer);
            Performance.RepairPersonCost = decimal.Parse(Encoding.ASCII.GetString(buffer));
            n = socket.Receive(buffer);
            Performance.TotalCost = decimal.Parse(Encoding.ASCII.GetString(buffer));
        }
Esempio n. 2
0
        void BuildTable1()
        {
            int delayt = 0;

            DataTable dc = new DataTable(), dc2 = new DataTable(), dc3 = new DataTable();

            dc.Columns.Add("Bearing Index");
            dc2.Columns.Add("Bearing rnd");
            dc3.Columns.Add("bearing life");
            Random rnd = new Random();

            for (int bearingIDX = 1; bearingIDX <= simulationSystem.NumberOfBearings; bearingIDX++)
            {
                for (int life = 0; life < simulationSystem.NumberOfHours;)
                {
                    CurrentSimulationCase csc = new CurrentSimulationCase();
                    csc.Bearing.Index = bearingIDX;
                    dc.Rows.Add(bearingIDX);
                    csc.Bearing.RandomHours = rnd.Next(1, 100);
                    dc2.Rows.Add(csc.Bearing.RandomHours);
                    csc.Bearing.Hours = binarySearch(csc.Bearing.RandomHours, simulationSystem.BearingLifeDistribution);
                    dc3.Rows.Add(csc.Bearing.Hours);
                    int lstIdx = simulationSystem.CurrentSimulationTable.Count;
                    csc.RandomDelay      = rnd.Next(1, 100);
                    csc.AccumulatedHours = csc.Bearing.Hours + life;
                    csc.Delay            = binarySearch(csc.RandomDelay, simulationSystem.DelayTimeDistribution);
                    simulationSystem.CurrentSimulationTable.Add(csc);
                    delayt += csc.Delay;
                    life    = csc.AccumulatedHours;
                }
            }
            simulationSystem.CurrentPerformanceMeasures.BearingCost      = simulationSystem.CurrentSimulationTable.Count * simulationSystem.BearingCost;
            simulationSystem.CurrentPerformanceMeasures.DelayCost        = delayt * simulationSystem.DowntimeCost;
            simulationSystem.CurrentPerformanceMeasures.DowntimeCost     = simulationSystem.CurrentSimulationTable.Count * simulationSystem.RepairTimeForOneBearing * simulationSystem.DowntimeCost;
            simulationSystem.CurrentPerformanceMeasures.RepairPersonCost = (decimal)simulationSystem.CurrentSimulationTable.Count * simulationSystem.RepairTimeForOneBearing * simulationSystem.RepairPersonCost / 60;

            simulationSystem.CurrentPerformanceMeasures.TotalCost = simulationSystem.CurrentPerformanceMeasures.BearingCost + simulationSystem.CurrentPerformanceMeasures.DelayCost + simulationSystem.CurrentPerformanceMeasures.DowntimeCost + simulationSystem.CurrentPerformanceMeasures.RepairPersonCost;
            dataGridView1.DataSource         = simulationSystem.CurrentSimulationTable;
            dataGridView1.Columns[0].Visible = false;
            dataGridView1.Columns.Add("bearingIDX", "bearingIDX");
            dataGridView1.Columns.Add("bearingRND", "bearingRND");
            dataGridView1.Columns.Add("bearingLife", "bearingLife");
            dataGridView1.Columns["bearingIDX"].DisplayIndex  = 0;
            dataGridView1.Columns["bearingRND"].DisplayIndex  = 1;
            dataGridView1.Columns["bearingLife"].DisplayIndex = 2;
            for (int i = 0; i < simulationSystem.CurrentSimulationTable.Count; i++)
            {
                dataGridView1[dataGridView1.Columns.Count - 3, i].Value = Convert.ToInt32(dc.Rows[i][0]);
                dataGridView1[dataGridView1.Columns.Count - 2, i].Value = Convert.ToInt32(dc2.Rows[i][0]);
                dataGridView1[dataGridView1.Columns.Count - 1, i].Value = Convert.ToInt32(dc3.Rows[i][0]);
            }

            curBearing.Text  = curBearing.Text + ": " + simulationSystem.CurrentPerformanceMeasures.BearingCost.ToString();
            curCost.Text     = curCost.Text + ": " + simulationSystem.CurrentPerformanceMeasures.TotalCost.ToString();
            curDelay.Text    = curDelay.Text + ": " + simulationSystem.CurrentPerformanceMeasures.DelayCost.ToString();
            curDowntime.Text = curDowntime.Text + ": " + simulationSystem.CurrentPerformanceMeasures.DowntimeCost.ToString();
            curRepair.Text   = curRepair.Text + ": " + simulationSystem.CurrentPerformanceMeasures.RepairPersonCost.ToString();
        }
        private void Construst_concurrentPolicy()
        {
            List <CurrentSimulationCase> currentSimulationCases     = new List <CurrentSimulationCase>();
            PerformanceMeasures          currentPerformanceMeasures = new PerformanceMeasures();

            for (int i = 1; i <= _simulationSystem.NumberOfBearings; i++)
            {
                int accHours = 0;
                while (true)
                {
                    CurrentSimulationCase currentSimulation = new CurrentSimulationCase();
                    Bearing bearing = new Bearing();
                    bearing.Index       = i;
                    bearing.RandomHours = _rnd.Next(1, 101);
                    bearing.Hours       = Get_Hours(bearing.RandomHours);

                    currentSimulation.Bearing = bearing;
                    accHours += bearing.Hours;
                    currentSimulation.AccumulatedHours = accHours;
                    currentSimulation.RandomDelay      = _rnd.Next(1, 11);
                    currentSimulation.Delay            = Get_Delay(currentSimulation.RandomDelay);
                    currentSimulationCases.Add(currentSimulation);
                    if (currentSimulation.AccumulatedHours >= _simulationSystem.NumberOfHours)
                    {
                        break;
                    }
                }
            }
            _simulationSystem.CurrentSimulationCases = currentSimulationCases;

            currentPerformanceMeasures.BearingCost =
                _simulationSystem.CurrentSimulationCases.Count * _simulationSystem.BearingCost;
            currentPerformanceMeasures.DelayCost    = Get_Delay_Accmulated() * _simulationSystem.DowntimeCost;
            currentPerformanceMeasures.DowntimeCost =
                _simulationSystem.CurrentSimulationCases.Count * _simulationSystem.RepairTimeForOneBearing *
                _simulationSystem.DowntimeCost;
            decimal val = Convert.ToDecimal(_simulationSystem.RepairPersonCost) / 60;

            currentPerformanceMeasures.RepairPersonCost = _simulationSystem.CurrentSimulationCases.Count *
                                                          _simulationSystem.RepairTimeForOneBearing * val;

            currentPerformanceMeasures.TotalCost = currentPerformanceMeasures.BearingCost +
                                                   currentPerformanceMeasures.DelayCost +
                                                   currentPerformanceMeasures.DowntimeCost +
                                                   currentPerformanceMeasures.RepairPersonCost;
            _simulationSystem.CurrentPerformanceMeasures = currentPerformanceMeasures;
            TotlBearingCost_lbl.Text  = currentPerformanceMeasures.BearingCost.ToString(CultureInfo.CurrentCulture);
            TotlCost_lbl.Text         = currentPerformanceMeasures.TotalCost.ToString(CultureInfo.CurrentCulture);
            TotlDelayCost_lbl.Text    = currentPerformanceMeasures.DelayCost.ToString(CultureInfo.CurrentCulture);
            TotlDownCost_lbl.Text     = currentPerformanceMeasures.DowntimeCost.ToString(CultureInfo.CurrentCulture);
            TotlRepairPerson_lbl.Text = currentPerformanceMeasures.RepairPersonCost.ToString(CultureInfo.CurrentCulture);
        }
Esempio n. 4
0
        public void fillCurrentSimlationTable()
        {
            CurrentSimulationCase currentSimulation;
            Random randomNum = new Random();

            for (int j = 0; j < simSys.NumberOfBearings; j++)
            {
                int currentAccumelatedHours = 0;
                int countBearings           = 0;

                while (true)
                {
                    countBearings++;
                    Bearing bearing = new Bearing();
                    bearing.Index = j + 1;
                    //////////////////////////////////////////////Hours//////////////////////////////////////////////
                    currentSimulation   = new CurrentSimulationCase();
                    bearing.RandomHours = randomNum.Next(1, 101);
                    for (int i = 0; i < simSys.BearingLifeDistribution.Count(); i++)
                    {
                        if (bearing.RandomHours >= simSys.BearingLifeDistribution[i].MinRange && bearing.RandomHours <= simSys.BearingLifeDistribution[i].MaxRange)
                        {
                            bearing.Hours = simSys.BearingLifeDistribution[i].Time;
                            break;
                        }
                    }
                    currentAccumelatedHours           += bearing.Hours;
                    currentSimulation.Bearing          = bearing;
                    currentSimulation.AccumulatedHours = currentAccumelatedHours;

                    /////////////////////////////////////////////////Delay/////////////////////////////////////////
                    currentSimulation.RandomDelay = randomNum.Next(1, 100);
                    for (int i = 0; i < simSys.DelayTimeDistribution.Count(); i++)
                    {
                        if (currentSimulation.RandomDelay >= simSys.DelayTimeDistribution[i].MinRange && currentSimulation.RandomDelay <= simSys.DelayTimeDistribution[i].MaxRange)
                        {
                            currentSimulation.Delay = simSys.DelayTimeDistribution[i].Time;
                            break;
                        }
                    }

                    totalDelay += currentSimulation.Delay;
                    simSys.CurrentSimulationTable.Add(currentSimulation);
                    if (currentAccumelatedHours >= simSys.NumberOfHours)
                    {
                        break;
                    }
                }
                countOfBearings.Add(countBearings);
            }
        }
Esempio n. 5
0
        public static void calculate_current_solution(DataGridView dataGridView3)
        {
            dataGridView3.Columns.Add("Count", "Count");
            dataGridView3.Columns.Add("Index", "Index");
            dataGridView3.Columns.Add("Random Life", "Random Life");
            dataGridView3.Columns.Add("Life", "Life");
            dataGridView3.Columns.Add("Accumelated Life", "Accumelated Life");
            dataGridView3.Columns.Add("Random Delay", "Random Delay");
            dataGridView3.Columns.Add("Delay", "Delay");

            int    Bearings_number = mysystem.NumberOfBearings;
            int    index_number    = 1;
            Random rand            = new Random();
            Random rand2           = new Random();
            int    counter         = 0;

            while (Bearings_number > 0)
            {
                bool bearing_start = true;
                int  round_cond    = 0;

                while (round_cond < mysystem.NumberOfHours)
                {
                    CurrentSimulationCase temp = new CurrentSimulationCase();
                    temp.Bearing             = new Bearing();
                    temp.Bearing.Index       = index_number;
                    temp.Bearing.RandomHours = rand.Next(1, 100);
                    for (int i = 0; i < mysystem.BearingLifeDistribution.Count; i++)
                    {
                        if (temp.Bearing.RandomHours >= mysystem.BearingLifeDistribution[i].MinRange && temp.Bearing.RandomHours <= mysystem.BearingLifeDistribution[i].MaxRange)
                        {
                            temp.Bearing.Hours = mysystem.BearingLifeDistribution[i].Time;
                        }
                    }

                    if (bearing_start)
                    {
                        temp.AccumulatedHours = temp.Bearing.Hours;
                        bearing_start         = false;
                    }
                    else
                    {
                        temp.AccumulatedHours = temp.Bearing.Hours + mysystem.CurrentSimulationCases[counter - 1].AccumulatedHours;
                    }

                    temp.RandomDelay = rand2.Next(1, 100);

                    for (int i = 0; i < mysystem.DelayTimeDistribution.Count; i++)
                    {
                        if (temp.RandomDelay >= mysystem.DelayTimeDistribution[i].MinRange && temp.RandomDelay <= mysystem.DelayTimeDistribution[i].MaxRange)
                        {
                            temp.Delay = mysystem.DelayTimeDistribution[i].Time;
                        }
                    }

                    round_cond = temp.AccumulatedHours;
                    mysystem.CurrentSimulationCases.Add(temp);
                    counter++;
                }

                index_number++;
                bearing_start = true;
                Bearings_number--;
            }


            int z, total_delay = 0;

            for (z = 0; z < mysystem.CurrentSimulationCases.Count; z++)
            {
                dataGridView3.Rows.Add(z + 1, mysystem.CurrentSimulationCases[z].Bearing.Index, mysystem.CurrentSimulationCases[z].Bearing.RandomHours, mysystem.CurrentSimulationCases[z].Bearing.Hours, mysystem.CurrentSimulationCases[z].AccumulatedHours, mysystem.CurrentSimulationCases[z].RandomDelay, mysystem.CurrentSimulationCases[z].Delay);
                total_delay += mysystem.CurrentSimulationCases[z].Delay;
            }
            decimal total = decimal.Parse(z.ToString());

            mysystem.CurrentPerformanceMeasures.BearingCost      = total * mysystem.BearingCost;
            mysystem.CurrentPerformanceMeasures.DelayCost        = total_delay * mysystem.DowntimeCost;
            mysystem.CurrentPerformanceMeasures.DowntimeCost     = total * mysystem.RepairTimeForOneBearing * mysystem.DowntimeCost;
            mysystem.CurrentPerformanceMeasures.RepairPersonCost = total * mysystem.RepairTimeForOneBearing * mysystem.RepairPersonCost / 60;
            mysystem.CurrentPerformanceMeasures.TotalCost        = mysystem.CurrentPerformanceMeasures.BearingCost + mysystem.CurrentPerformanceMeasures.DelayCost + mysystem.CurrentPerformanceMeasures.DowntimeCost + mysystem.CurrentPerformanceMeasures.RepairPersonCost;
        }