Example #1
0
 public Авто()
 {
     показателиРаботы = new ПоказателиРаботыАвто();
 }
Example #2
0
        public void  асчетПоказателей(int колЧасРаботы)
        {
            int i, j, dt;
            int номерЧаса;

            int[] sumDT = new int[колЧасРаботы];
            int   колЧасовСПоложПеревозкой = 0;

            //инициализация массивов
            колВыполненРейсов = маршВладец.архивАвто.Count;
            КолЧасов          = колЧасРаботы;
            КолОстановок      = маршВладец.КоличОстановок;
            колВошедПоВремени = new int[колЧасРаботы];
            if (колВыполненРейсов > 0)
            {
                колВошедПоРейсам = new int[колВыполненРейсов];
            }
            колВошедПоОстановкам       = new int[КолОстановок];
            пассажирокмПоВремени       = new double[колЧасРаботы];
            срКолПасВАвтоВЧасПоВремени = new double[колЧасРаботы];
            срКолПасВАвтоПоПерегонам   = new double[КолОстановок - 1];
            максКолПасВАвтоПоВремени   = new ХаракПерегона[колЧасРаботы];
            for (i = 0; i < колЧасРаботы; i++)
            {
                максКолПасВАвтоПоВремени[i] = new ХаракПерегона();
            }

            if (колВыполненРейсов == 0)
            {
                //нет ни одного авто, нечего расчитывать
                //обнулить массивы????????
                return;
            }

            //*** цикл по авто (рейсам)
            Выручка = 0;
            for (i = 0; i < колВыполненРейсов; i++)
            {
                ПоказателиРаботыАвто показатРаботыАвто = маршВладец.архивАвто[i].показателиРаботы;
                Выручка += показатРаботыАвто.Выручка;
                // количество вошедших по рейсам
                колВошедПоРейсам[i] = показатРаботыАвто.сумКолПеревезПассаж;
                //суммарное количество перевезенных пассажиров
                сумКолПеревезПассаж += показатРаботыАвто.сумКолПеревезПассаж;
                //коэффициент использования вместимости_1
                коэфИспользВместим += показатРаботыАвто.коэфИспользВместим;
                if (МаксКоэфИсполВмесЗа1Рейс < показатРаботыАвто.коэфИспользВместим)
                {
                    МаксКоэфИсполВмесЗа1Рейс = показатРаботыАвто.коэфИспользВместим;
                }
                //время окончания последнего рейса
                if (времяОкончПоследРейса < показатРаботыАвто.времяОкончРейса)
                {
                    времяОкончПоследРейса = показатРаботыАвто.времяОкончРейса;
                }
                //цикл по остановкам
                for (j = 0; j < КолОстановок; j++)
                {
                    //количество вошедших по остановкам
                    колВошедПоОстановкам[j] += показатРаботыАвто.колВошедПоОст[j];
                    //количество вошедших по времени
                    номерЧаса = показатРаботыАвто.времяПриездаНаОст[j] / 60;
                    колВошедПоВремени[номерЧаса] += показатРаботыАвто.колВошедПоОст[j];
                }
                //цикл по перегонам
                for (j = 0; j < КолОстановок - 1; j++)
                {
                    //среднее количество пассажиров в автобусе по перегонам _1
                    срКолПасВАвтоПоПерегонам[j] += показатРаботыАвто.колПасПоПерегонам[j];
                    //среднее количество пассажиров в авто в час по времени_1
                    номерЧаса         = показатРаботыАвто.времяПриездаНаОст[j] / 60;
                    dt                = показатРаботыАвто.времяПриездаНаОст[j + 1] - показатРаботыАвто.времяПриездаНаОст[j];
                    sumDT[номерЧаса] += dt;
                    срКолПасВАвтоВЧасПоВремени[номерЧаса] += показатРаботыАвто.колПасПоПерегонам[j] * dt;
                    //пассажирокилометры по времени
                    пассажирокмПоВремени[номерЧаса] += показатРаботыАвто.колПасПоПерегонам[j] * маршВладец.ДлинаПерегона(j + 1);
                    //максимальное количество пассажиров в автобусе на 1 перегон по времени
                    if (максКолПасВАвтоПоВремени[номерЧаса].значение < показатРаботыАвто.колПасПоПерегонам[j])
                    {
                        максКолПасВАвтоПоВремени[номерЧаса].значение      = показатРаботыАвто.колПасПоПерегонам[j];
                        максКолПасВАвтоПоВремени[номерЧаса].номерПерегона = j;
                    }
                }
            }

            //цикл по перегонам
            for (i = 0; i < КолОстановок - 1; i++)
            {//средняя дальность поездки в остановках_1
                срДальностьПоездкиОст += срКолПасВАвтоПоПерегонам[i];
                //среднее количество пассажиров в автобусе по перегонам _2
                срКолПасВАвтоПоПерегонам[i] /= колВыполненРейсов;
                //среднее количество пассажиров в автобусе на 1 перегон_1
                срКолПасВАвтоНаПерегон += срКолПасВАвтоПоПерегонам[i];
                //средняя длина перегона_1
                срДлинаПерегона += маршВладец.ДлинаПерегона(i + 1);
            }
            //среднее количество пассажиров в автобусе на 1 перегон_2
            срКолПасВАвтоНаПерегон /= (маршВладец.КоличОстановок - 1);
            //средняя дальность поездки в становках_2
            if (сумКолПеревезПассаж > 0)
            {
                срДальностьПоездкиОст /= сумКолПеревезПассаж;
            }
            //средняя длина перегона_2
            срДлинаПерегона /= (маршВладец.КоличОстановок - 1);

            //цикл по времени
            for (i = 0; i < колЧасРаботы; i++)
            { //среднее количество пассажиров в авто в час по времени_2
                if (sumDT[i] > 0)
                {
                    срКолПасВАвтоВЧасПоВремени[i] /= sumDT[i];
                }
                ////максимальное количество пассажиров в автобусе на 1 перегон
                if (максКолПасВАвтоНаПерегон.значение < максКолПасВАвтоПоВремени[i].значение)
                {
                    максКолПасВАвтоНаПерегон.значение      = максКолПасВАвтоПоВремени[i].значение;
                    максКолПасВАвтоНаПерегон.номерПерегона = i;
                }
                //средняя дальность поездки пассажиров в километрах_1
                срДальностьПоездкиКм += пассажирокмПоВремени[i];
                if (колВошедПоВремени[i] > 0)
                {
                    колЧасовСПоложПеревозкой++;
                }
            }
            //средняя дальность поездки пассажиров в километрах_2
            if (сумКолПеревезПассаж > 0)
            {
                срДальностьПоездкиКм /= сумКолПеревезПассаж;
            }
            //коэффициент использования вместимости_2
            коэфИспользВместим /= колВыполненРейсов;
            //средний размер перевозки в час
            if (колЧасовСПоложПеревозкой > 0)
            {
                срКолПеревезПасВЧас = сумКолПеревезПассаж * 1.0 / колЧасовСПоложПеревозкой;
            }
            if (маршВладец.ЧислоТСнаМаршруте > 0)
            {
                срчасКолПеревезПасНа1ТС = сумКолПеревезПассаж / (КолЧасов * маршВладец.ЧислоТСнаМаршруте);
                доходНа1ТСвЧас          = (int)Math.Round(Выручка * 1.0 / (КолЧасов * маршВладец.ЧислоТСнаМаршруте));
            }
        }