예제 #1
0
        public GeneratedProduct()
        {
            GeneratorType = GeneratorType.Normal;   //CGeneratedElement
            fA = 2.0;             //CGeneratedElement
            fB = 1.0;             //CGeneratedElement

            Index = 0;
            Time = 0;
            Materials = new MaterialCluster();

            Modify = new GeneratedElement();
            Modify.GeneratorType = GeneratorType.Normal;
            Modify.fA = 2.0;
            Modify.fB = 1.0;
        }
예제 #2
0
        /// <summary>
        /// инициализация начальных параметров
        /// </summary>
        /// <returns></returns>
        public static bool Initialization()
        {
            if (Initialized) //если параметры уже инициализированы, ничего не делать
                return false;

            UseFakeServices = false; // НЕ использовать фиктивные внешние сервисы

            WORKDAY_MINUTES_NUMBER = 1440;  //рабочее время в минутах

            ModelingDayToWork = 20;      //время работы моделирования до остановки

            MATERIALS_NUMBER = 12;        //количество типов материалов

            PRODUCTS_NUMBER = 3;            //количество типов продуктов

            DELIVERY_PERIOD = 1;            //период в днях между получением заказов на поставки материалов

            Action<GeneratedProduct, int[]> assignMaterialsCount = (product, materialsCount) =>
            {
                for (var materialIndex = 0; materialIndex < 12; materialIndex++)
                {
                    product.Materials.AddMaterial(
                        materialIndex + 1,
                        materialsCount[materialIndex]
                    );
                }
            };

            Products = new Dictionary<int, GeneratedProduct>();

            GeneratedProduct product1 = new GeneratedProduct()
            {
                Time = 26,
                Index = 1,
                GeneratorType = GeneratorType.Normal,
                fA = 5.0,
                fB = 2.0,
                Modify = new GeneratedElement
                {
                    GeneratorType = GeneratorType.Normal,
                    fA = 0.0,
                    fB = 3.0
                }
            };

            // Denis Bykov: да, это тоже плохо, посмотрим, что можно будет сделать впоследствии
            assignMaterialsCount(product1, new[] { 6, 2, 3, 0, 2, 4, 5, 0, 3, 8, 2, 1 });

            Products.Add(1, product1);

            GeneratedProduct product2 = new GeneratedProduct()
            {
                Time = 72,
                Index = 2,
                GeneratorType = GeneratorType.Normal,
                fA = 5.0,
                fB = 2.0,
                Modify = new GeneratedElement
                {
                    GeneratorType = GeneratorType.Normal,
                    fA = 0.0,
                    fB = 3.0
                }
            };

            assignMaterialsCount(product2, new[] { 0, 0, 1, 4, 5, 1, 2, 4, 7, 8, 8, 3 });

            Products.Add(2, product2);

            GeneratedProduct product3 = new GeneratedProduct()
            {
                Time = 49,
                Index = 3,
                GeneratorType = GeneratorType.Normal,
                fA = 5.0,
                fB = 2.0,
                Modify = new GeneratedElement
                {
                    GeneratorType = GeneratorType.Normal,
                    fA = 0.0,
                    fB = 3.0
                }
            };

            assignMaterialsCount(product3, new[] { 2, 6, 5, 3, 1, 6, 9, 2, 1, 3, 0, 4 });

            Products.Add(3, product3);

            Materials = new Dictionary<int, Material>();
            for (var materialIndex = 1; materialIndex <= 12; materialIndex++)
            {
                Materials.Add(
                    materialIndex,
                    new Material { Index = materialIndex, GeneratorType = GeneratorType.Normal, fA = 3.0, fB = 4.0 }
                );
            }

            RetargetTimes = new int[] { 68, 39, 95 }; // время на перенастройку оборудования

            GeneratorDemandsTime = new GeneratedElement()    //генератор поступления заявок
            {
                GeneratorType = GeneratorType.Exponential,
                fA = 636.0,
                fB = 0.0
            };

            fUrgencyPropabilityDemand = 0.3;      //вероятность срочности заявки

            fRefusePropabilityDemand = 0.07;      //вероятность отказа от заявки

            DeliveryDelayGenerator = new GeneratedElement()
            //генератор времени задержки поставки материалов
            {
                GeneratorType = GeneratorType.Exponential,
                fA = 12.0,
                fB = 0.0
            };

            DemandModifyTime = new GeneratedElement()
            //генератор времени изменения заявки
            {
                GeneratorType = GeneratorType.Exponential,
                fA = 1281.0,
                fB = 0.0
            };

            UgrToStandModify = new GeneratedElement()
            //генератор ???
            {
                GeneratorType = GeneratorType.Rayleigh,
                fA = 3000.0,
                fB = 0.0
            };

            StandToUrgModify = new GeneratedElement()
            //генератор ???
            {
                GeneratorType = GeneratorType.Rayleigh,
                fA = 3000.0,
                fB = 0.0
            };

            ArticlesModify = new GeneratedElement()
            //генератор ???
            {
                GeneratorType = GeneratorType.Exponential,
                fA = 9.0,
                fB = 30.0
            };

            Initialized = true;  //параметры моделирования инициализированы
            return true;
        }