Пример #1
0
        public KPD(VS parent, string name)
            : base(parent, name)
        {
            #region Инициализация переменных объектов модели
            KOZ = InitModelObject<TIntVar>();
            KPZ = InitModelObject<TIntVar>();
            Zanyatost = InitModelObject<TRefVar<VS.Zayavka>>();

            Q_Vhod = InitModelObject<SimpleModelList<QRec>>();
            Q_Vozvrat = InitModelObject<SimpleModelList<QRec>>();
            #endregion

            #region Инициализация сборщиков статистики
            Variance_Q_Vhod = InitModelObject<Variance<int>>();
            Variance_Q_Vhod.ConnectOnSet(Q_Vhod.Count);
            Min_Q_Vhod = InitModelObject<Min<int>>();
            Min_Q_Vhod.ConnectOnSet(Q_Vhod.Count);
            Max_Q_Vhod = InitModelObject<Max<int>>();
            Max_Q_Vhod.ConnectOnSet(Q_Vhod.Count);

            Variance_Q_Vozvrat = InitModelObject<Variance<int>>();
            Variance_Q_Vozvrat.ConnectOnSet(Q_Vozvrat.Count);
            Min_Q_Vozvrat = InitModelObject<Min<int>>();
            Min_Q_Vozvrat.ConnectOnSet(Q_Vozvrat.Count);
            Max_Q_Vozvrat = InitModelObject<Max<int>>();
            Max_Q_Vozvrat.ConnectOnSet(Q_Vozvrat.Count);

            Zanyato = InitModelObject<BoolCollector>();
            Zanyato.ConnectOnSet(Zanyatost);
            #endregion
        }
        TIntVar KVZ; //Количество вошедших заявок

        #endregion Fields

        #region Constructors

        public UstroystvoVvoda(VU parent, string name)
            : base(parent, name)
        {
            #region Инициализация переменных объектов модели
            KOZ = InitModelObject<TIntVar>();
            KVZ = InitModelObject<TIntVar>();
            Zanyatost = InitModelObject<TRefVar<VS.Zayavka>>();

            Que = InitModelObject<SimpleModelList<QRec>>();

            parentVU = parent;
            #endregion

            #region Инициализация сборщиков статистики
            Variance_QueCount = InitModelObject<Variance<int>>();
            Variance_QueCount.ConnectOnSet(Que.Count);

            Min_QueCount = InitModelObject<Min<int>>();
            Min_QueCount.ConnectOnSet(Que.Count);
            Max_QueCount = InitModelObject<Max<int>>();
            Max_QueCount.ConnectOnSet(Que.Count);

            Zanyto = InitModelObject<BoolCollector>();
            Zanyto.ConnectOnSet(Zanyatost);

            #endregion
        }
Пример #3
0
        public SMOModel(Model parent, string name)
            : base(parent, name)
        {
            KVZS = InitModelObject<TIntVar>();
            KVZ = InitModelObjectArray<TIntVar>(3, "");
            KPZ = InitModelObjectArray<TIntVar>(3, "");
            KZ = InitModelObjectArray<TBoolVar>(2, "");
            TZKO = InitModelObjectArray<TRealVar>(2, "");
            KPZ = InitModelObjectArray<TIntVar>(3, "");

            queue = InitModelObjectArray<SimpleModelList<QueueRec>>(3, "");

            TimeIn_FirstFlow = InitModelObject<TRealVar>();
            TimeIn_SecondFlow = InitModelObject<TRealVar>();

            inFlowGenerator = InitModelObjectArray<PoissonStream>(2, "");
            servFlowGenerator = InitModelObjectArray<ExpStream>(2, "");
            repeateGenerator = InitModelObject<UniformStream>();

            Variance_QueueCount = InitModelObjectArray<Variance<int>>(3, "");
            Variance_QueueCount[0].ConnectOnSet(queue[0].Count);
            Variance_QueueCount[1].ConnectOnSet(queue[1].Count);
            Variance_QueueCount[2].ConnectOnSet(queue[2].Count);

            Variance_TimeIn_FirstFlow = InitModelObject<Variance<double>>();
            Variance_TimeIn_FirstFlow.ConnectOnSet(TimeIn_FirstFlow);

            Variance_TimeIn_SecondFlow = InitModelObject<Variance<double>>();
            Variance_TimeIn_SecondFlow.ConnectOnSet(TimeIn_SecondFlow);

            Min_TimeIn_FirstFlow = InitModelObject<Min<double>>();
            Min_TimeIn_FirstFlow.ConnectOnSet(TimeIn_FirstFlow);

            Min_TimeIn_SecondFlow = InitModelObject<Min<double>>();
            Min_TimeIn_SecondFlow.ConnectOnSet(TimeIn_SecondFlow);

            Max_TimeIn_FirstFlow = InitModelObject<Max<double>>();
            Max_TimeIn_FirstFlow.ConnectOnSet(TimeIn_FirstFlow);

            Max_TimeIn_SecondFlow = InitModelObject<Max<double>>();
            Max_TimeIn_SecondFlow.ConnectOnSet(TimeIn_SecondFlow);

            Bool_Kanal = InitModelObjectArray<BoolCollector>(2, "");
            Bool_Kanal[0].ConnectOnSet(KZ[0]);
            Bool_Kanal[1].ConnectOnSet(KZ[1]);
        }
Пример #4
0
        TRealVar TOZ; //Время обработки заявки в системе

        #endregion Fields

        #region Constructors

        public VU(VS parent, string name)
            : base(parent, name)
        {
            ParentVS = parent;
            UVD = new UstroystvoVvoda(this, "УВД" + "(" + name + ")");
            UR = new UstroystvoRabota(this, "УОД" + "(" + name + ")");
            UV = new UstroystvoVyvoda(this, "УВР" + "(" + name + ")");

            this.AddModelObject(UVD);
            this.AddModelObject(UR);
            this.AddModelObject(UV);

            #region  Инициализация переменных объектов модели
            KVZ = InitModelObject<TIntVar>();
            KOZ = InitModelObject<TIntVar>();
            TOZ = InitModelObject<TRealVar>();
            KPZ = new int[3];

            Gener_Vhod = InitModelObject<ExpStream>();
            Gener_RazmerVvod = InitModelObject<UniformStream>();
            Gener_RazmerVyvoda = InitModelObject<NormalStream>();
            //  Gener_RazmerRabota = InitModelObject<ExpStream>();
            #endregion

            #region Инициализация сборщиков статистики
            Variance_TOZ = InitModelObject<Variance<Double>>();   //создаем сборщик
            Variance_TOZ.ConnectOnSet(TOZ);              //подключаем сборщик к переменной

            Min_TOZ = InitModelObject<Min<double>>();   //создаем сборщик
            Min_TOZ.ConnectOnSet(TOZ);                  //подключаем сборщик к переменной

            Max_TOZ = InitModelObject<Max<double>>();   //создаем сборщик
            Max_TOZ.ConnectOnSet(TOZ);              //подключаем сборщик к переменной

            His_TOZ = InitModelObject<DynamicHistogram>();
            His_TOZ.ConnectOnSet(TOZ);
            #endregion
        }
Пример #5
0
        Variance<Double> Variance_TOZ; //МО и дисперсия

        #endregion Fields

        #region Constructors

        public VS(Model parent, string name)
            : base(parent, name)
        {
            #region  Инициализация переменных объектов модели
            KVZ = InitModelObject<TIntVar>();
            KOZ = InitModelObject<TIntVar>();
            TOZ = InitModelObject<TRealVar>();

            UZEL = new VU[3];
            UZEL[0] = new VU(this, "ВУ1");
            UZEL[1] = new VU(this, "ВУ2");
            UZEL[2] = new VU(this, "ВУ3");

            this.AddModelObject(UZEL[0]);
            this.AddModelObject(UZEL[1]);
            this.AddModelObject(UZEL[2]);

            KANAL = new KPD[3];
            KANAL[0] = new KPD(this, "КПД(1,2)");
            KANAL[1] = new KPD(this, "КПД(1,3)");
            KANAL[2] = new KPD(this, "КПД(2,3)");

            this.AddModelObject(KANAL[0]);
            this.AddModelObject(KANAL[1]);
            this.AddModelObject(KANAL[2]);

            KANAL[0].VU_1 = UZEL[0];
            KANAL[0].VU_2 = UZEL[1];
            KANAL[1].VU_1 = UZEL[0];
            KANAL[1].VU_2 = UZEL[2];
            KANAL[2].VU_1 = UZEL[1];
            KANAL[2].VU_2 = UZEL[2];
            #endregion

            #region Инициализация сборщиков статистики

            Variance_TOZ = InitModelObject<Variance<Double>>();   //создаем сборщик
            Variance_TOZ.ConnectOnSet(TOZ);              //подключаем сборщик к переменной

            Min_TOZ = InitModelObject<Min<double>>();   //создаем сборщик
            Min_TOZ.ConnectOnSet(TOZ);                  //подключаем сборщик к переменной

            Max_TOZ = InitModelObject<Max<double>>();   //создаем сборщик
            Max_TOZ.ConnectOnSet(TOZ);              //подключаем сборщик к переменной

            His_TOZ = InitModelObject<DynamicHistogram>();
            His_TOZ.ConnectOnSet(TOZ);

            //--------------------------------------------------
            allValuesTest = InitModelObject<AllValues<int>>("Сборщик полной статистики");
            dhTest = InitModelObject<DynamicHistogram>("Динамическая гистограмма");
            testAV = InitModelObject<TIntVar>("Тестовая переменная 1");
            testDH = InitModelObject<TRealVar>("Тестовая переменная 2");
            testAV.AddCollectors_OnSet(allValuesTest);
            testDH.AddCollectors_OnSet(dhTest);
            //--------------------------------------------------
            #endregion

            /*Tracer.AddAutoTabModel(this);
            UZEL.ToList().ForEach(u => Tracer.AddAutoTabModel(u));
            KANAL.ToList().ForEach(k => Tracer.AddAutoTabModel(k));*/
        }
Пример #6
0
        public SmoModel(Model parent, string name) : base(parent, name)
        {
            #region Инициализация переменных состояния модели
            Shops = new Shop[N];
            for (int i = 0; i < N; i++)
            {
                Shops[i] = new Shop();
                Shops[i].ProductAmountCurrent      = InitModelObject <TIntVar>("Текущий объем товара в(во) " + i + "-ом магазине ");
                Shops[i].ProductDemandCurrent      = InitModelObject <TIntVar>("Текущий объем спроса на товар в(во) " + i + "-ом магазине ");
                Shops[i].ProductUnmetDemandCurrent = InitModelObject <TRealVar>("Текущий объем неудовлетворенного спроса в(во) " + i + "-ом магазине ");
                Shops[i].ProductUnrealizedCurrent  = InitModelObject <TRealVar>("Текущий объем пролежанного товара в(во) " + i + "-ом магазине ");
                Shops[i].HasSendRequest            = InitModelObject <TIntVar>("Идентификатор подачи заявки в(во) " + i + "-ом магазине ");
                Shops[i].RequestsTotalCountCurrent = InitModelObject <TRealVar>("Текцщее количество поданных заявок на пополнение товара  в(во) " + i + "-ом магазине ");
                Shops[i].RequestsTotalCountAll     = InitModelObject <TRealVar>("Суммарное количество поданных заявок на пополнение товара  в(во) " + i + "-ом магазине ");
                Shops[i].ProductDemandAll          = InitModelObject <TIntVar>("Суммарный объем спроса на товар в(во) " + i + "-ом магазине ");
                Shops[i].ProductUnmetDemandAll     = InitModelObject <TRealVar>("Суммарный объем неудовлетворенного спроса в(во) " + i + "-ом магазине ");
                Shops[i].ProductUnrealizedAll      = InitModelObject <TRealVar>("Суммарный объем пролежанного товара в(во) " + i + "-ом магазине ");
            }

            SVST  = InitModelObject <TRealVar>("текущий суммарный объем спроса на товар (за день)");
            SVSTP = InitModelObject <TRealVar>("Cуммарный объем спроса на товар (за все время)");

            // Ряд распределения для времени восстановления товарного запаса в первом магазине
            ZR_TV_ValueGenerator1       = InitModelObject <DiscreteStream <double> >("Генератор 'Ряд распределения для времени восстановления товарного запаса в первом магазине': ");
            ZR_TV_ValueGenerator1.Table = new Dictionary <double, double>();

            // Ряд распределения для времени восстановления товарного запаса во втором магазине
            ZR_TV_ValueGenerator2       = InitModelObject <DiscreteStream <double> >("Генератор 'Ряд распределения для времени восстановления товарного запаса во втором магазине': ");
            ZR_TV_ValueGenerator2.Table = new Dictionary <double, double>();

            #endregion

            #region Инициализация генераторов потоков

            NormalGenerator_VDS1    = InitModelObject <NormalStream>("генератор потока 'объем дневного спроса в первом магазине'");
            NormalGenerator_VDS2    = InitModelObject <NormalStream>("генератор потока 'объем дневного спроса во втором магазине'");
            UniformGenerator_TVost1 = InitModelObject <UniformStream>("генератор потока 'время восстановления товарного запаса в первом магазине'");
            UniformGenerator_TVost2 = InitModelObject <UniformStream>("генератор потока 'время восстановления товарного запаса во втором магазине'");

            #endregion

            #region Инициализация сборщиков статистики и подключение их к переменным

            //хранение пролеживаемого товара
            Variance_SDP_PP = InitModelObjectArray <Variance <double> >(N, "Сборщик статистики: средние дневные потери от пролеживания товара в i-том магазине");
            Variance_SDP_PP[0].ConnectOnSet(Shops[0].ProductUnrealizedCurrent);
            Variance_SDP_PP[1].ConnectOnSet(Shops[1].ProductUnrealizedCurrent);
            Max_SDP_PP = InitModelObjectArray <Max <double> >(N, "Максимум потерь от пролеживания товара в i-том магазине");
            Max_SDP_PP[0].ConnectOnSet(Shops[0].ProductUnrealizedCurrent);
            Max_SDP_PP[1].ConnectOnSet(Shops[1].ProductUnrealizedCurrent);
            Min_SDP_PP = InitModelObjectArray <Min <double> >(N, "Минимум потерь от пролеживания товара в i-том магазине");
            Min_SDP_PP[0].ConnectOnSet(Shops[0].ProductUnrealizedCurrent);
            Min_SDP_PP[1].ConnectOnSet(Shops[1].ProductUnrealizedCurrent);

            //нереализованная прибыль от неудовлетворенного спроса
            Variance_SDP_PNP = InitModelObjectArray <Variance <double> >(N, "Сборщик статистики: средние дневные потери от неудовлетворенного спроса в i-том магазине");
            Variance_SDP_PNP[0].ConnectOnSet(Shops[0].ProductUnmetDemandCurrent);
            Variance_SDP_PNP[1].ConnectOnSet(Shops[1].ProductUnmetDemandCurrent);
            Max_SDP_PNP = InitModelObjectArray <Max <double> >(N, "Максимум потерь от нереализованной прибыли в i-том магазине");
            Max_SDP_PNP[0].ConnectOnSet(Shops[0].ProductUnmetDemandCurrent);
            Max_SDP_PNP[1].ConnectOnSet(Shops[1].ProductUnmetDemandCurrent);
            Min_SDP_PNP = InitModelObjectArray <Min <double> >(N, "Минимум потерь от нереализованной прибыли в i-том магазине");
            Min_SDP_PNP[0].ConnectOnSet(Shops[0].ProductUnmetDemandCurrent);
            Min_SDP_PNP[1].ConnectOnSet(Shops[1].ProductUnmetDemandCurrent);

            //потери от подачи заявок
            Variance_SDP_PPZ = InitModelObjectArray <Variance <double> >(N, "Сборщик статистики: средние дневные потери от подачи заявок в i-том магазине");
            Variance_SDP_PPZ[0].ConnectOnSet(Shops[0].RequestsTotalCountCurrent);
            Variance_SDP_PPZ[1].ConnectOnSet(Shops[1].RequestsTotalCountCurrent);
            Max_SDP_PPZ = InitModelObjectArray <Max <double> >(N, "Максимум потерь от подачи заявок в i-том магазине");
            Max_SDP_PPZ[0].ConnectOnSet(Shops[0].RequestsTotalCountCurrent);
            Max_SDP_PPZ[1].ConnectOnSet(Shops[1].RequestsTotalCountCurrent);
            Min_SDP_PPZ = InitModelObjectArray <Min <double> >(N, "Минимум потерь от подачи заявок в i-том магазине");
            Min_SDP_PPZ[0].ConnectOnSet(Shops[0].RequestsTotalCountCurrent);
            Min_SDP_PPZ[1].ConnectOnSet(Shops[1].RequestsTotalCountCurrent);

            // суммарные средние дневные потери торговой системы
            Variance_SSDS = InitModelObject <Variance <double> >("Сборщик статистики: суммарные средние дневные потери торговой системы");

            // SVSTP
            Variance_SVSTP = InitModelObject <Variance <double> >("Сборщик статистики: МО объема поставок со склада в магазины.");
            Variance_SVSTP.ConnectOnSet(SVSTP);
            Max_SVSTP = InitModelObject <Max <double> >("Максимум объема поставок со склада в магазины.");
            Max_SVSTP.ConnectOnSet(SVSTP);
            Min_SVSTP = InitModelObject <Min <double> >("Минимум объема поставок со склада в магазины.");
            Min_SVSTP.ConnectOnSet(SVSTP);
            #endregion
        }