Parameters container
Inheritance: LeanEngine.Entity.EntityBase
Ejemplo n.º 1
0
        public void SetUp()
        {
            engine = new Engine();

            flow = new Flow();
            flow.FlowStrategy = new FlowStrategy();

            itemFlow = new ItemFlow();
            itemFlow.Item = new Item();
            itemFlow.Flow = flow;
            itemFlow.Item.ItemCode = "Item";
            itemFlow.LocFrom = "LocFrom";
            itemFlow.LocTo = "LocTo";

            ItemFlows = new List<ItemFlow>();
            ItemFlows.Add(itemFlow);

            container = new EngineContainer();
            container.ItemFlows = ItemFlows;
        }
Ejemplo n.º 2
0
        public void TellMeDemands(EngineContainer container)
        {
            if (container == null || container.ItemFlows == null || container.ItemFlows.Count == 0)
                return;

            #region Container param
            List<ItemFlow> ItemFlows = container.ItemFlows;
            List<Plans> Plans = container.Plans;
            List<InvBalance> InvBalances = container.InvBalances;
            List<DemandChain> DemandChains = container.DemandChains;
            List<RestTime> RestTimes = container.RestTimes;
            #endregion

            #region Initialize
            kb = new KB(Plans, InvBalances, DemandChains, RestTimes);
            kb2 = new KB2(Plans, InvBalances, DemandChains, RestTimes);
            jit = new JIT(Plans, InvBalances, DemandChains, RestTimes);
            jit2 = new JIT2(Plans, InvBalances, DemandChains, RestTimes);
            odp = new ODP(Plans, InvBalances, DemandChains, RestTimes);

            this.RestTimes = container.RestTimes;
            #endregion

            #region Process time
            List<Flow> flows = ItemFlows.Select(s => s.Flow).Distinct().ToList<Flow>();
            this.ProcessTime(flows);
            #endregion

            #region Process ReqQty
            Parallel.ForEach(ItemFlows, (itemFlow) =>
            //foreach (var itemFlow in ItemFlows)
            {
                this.DataValidCheck(itemFlow);
                this.SetFlowProperty(itemFlow, flows);

                this.ProcessReqQty(itemFlow);
            }
            );
            #endregion
        }
Ejemplo n.º 3
0
        public void SetUp()
        {
            itemCode = "RM_A";
            locFrom = null;
            locTo = "RM";

            engine = new Engine();
            container = new EngineContainer();
            flow = new Flow();
            item = new Item();
            itemFlow = new ItemFlow();
            ItemFlows = new List<ItemFlow>();
            invBalance = new InvBalance();
            invBalances = new List<InvBalance>();
            plans = new List<Plans>();

            flow.FlowStrategy = new FlowStrategy();
            flow.FlowStrategy.Strategy = Enumerators.Strategy.KB;
            itemFlow.Flow = flow;
            item.ItemCode = itemCode;
            itemFlow.Item = item;
            itemFlow.LocFrom = locFrom;
            itemFlow.LocTo = locTo;
            itemFlow.MaxInv = 400;
            itemFlow.SafeInv = 200;
            itemFlow.UC = 50;
            ItemFlows.Add(itemFlow);

            string[] winTimes = new string[] { "11:00" };
            flow.FlowStrategy.MonWinTime = winTimes;
            flow.FlowStrategy.TueWinTime = winTimes;
            flow.FlowStrategy.WedWinTime = winTimes;
            flow.FlowStrategy.ThuWinTime = winTimes;
            flow.FlowStrategy.FriWinTime = winTimes;
            flow.FlowStrategy.SatWinTime = winTimes;
            flow.FlowStrategy.SunWinTime = winTimes;
            flow.WindowTime = DateTime.Parse(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 11:00");
            flow.NextOrderTime = null;

            invBalance.Item = item;
            invBalance.Loc = locTo;
            invBalance.Qty = 300;
            invBalances.Add(invBalance);

            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now.AddDays(-1);
            plan.OrderedQty = 100;
            plan.FinishedQty = 80;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now;
            plan.OrderedQty = 50;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now.AddDays(2);
            plan.OrderedQty = 500;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now;
            plan.OrderedQty = 500;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Plans;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now;
            plan.OrderedQty = 450;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.ISS;
            plans.Add(plan);

            container.ItemFlows = ItemFlows;
            container.InvBalances = invBalances;
            container.Plans = plans;
        }
Ejemplo n.º 4
0
        public void SetUp()
        {
            itemCode = "RM_A";
            locFrom = null;
            locTo = "RM";

            engine = new Engine();
            container = new EngineContainer();
            flow = new Flow();
            item = new Item();
            itemFlow = new ItemFlow();
            ItemFlows = new List<ItemFlow>();
            invBalance = new InvBalance();
            invBalances = new List<InvBalance>();
            plans = new List<Plans>();
            demandChains = new List<DemandChain>();

            flow.Code = "Flow01";
            item.ItemCode = itemCode;
            flow.FlowStrategy = new FlowStrategy();
            flow.FlowStrategy.Strategy = Enumerators.Strategy.JIT;
            itemFlow.Flow = flow;
            itemFlow.Item = item;
            itemFlow.LocFrom = locFrom;
            itemFlow.LocTo = locTo;
            itemFlow.MaxInv = 0;
            itemFlow.SafeInv = 50;
            ItemFlows.Add(itemFlow);

            time = DateTime.Parse(DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH") + ":00");
            string[] winTimes = new string[] { "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00", "09:00",
                "10:00","11:00", "12:00","13:00", "14:00","15:00", "16:00","17:00", "18:00","19:00", "20:00","21:00", "22:00","23:00" };
            flow.FlowStrategy.MonWinTime = winTimes;
            flow.FlowStrategy.TueWinTime = winTimes;
            flow.FlowStrategy.WedWinTime = winTimes;
            flow.FlowStrategy.ThuWinTime = winTimes;
            flow.FlowStrategy.FriWinTime = winTimes;
            flow.FlowStrategy.SatWinTime = winTimes;
            flow.FlowStrategy.SunWinTime = winTimes;
            flow.WindowTime = time;
            flow.OrderTime = DateTime.Now;
            flow.NextOrderTime = null;
            flow.FlowStrategy.LeadTime = 0.5;

            invBalance.Item = item;
            invBalance.Loc = locTo;
            invBalance.Qty = 100;
            invBalances.Add(invBalance);

            //RCT:20
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now.AddDays(-1);
            plan.OrderedQty = 100;
            plan.FinishedQty = 80;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            //RCT:50
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now;
            plan.OrderedQty = 50;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            //RCT:30(Ignore)
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = time;
            plan.OrderedQty = 30;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.RCT;
            plans.Add(plan);

            //ISS:120
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = DateTime.Now;
            plan.OrderedQty = 120;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.ISS;
            plans.Add(plan);

            //ISS:500(Ignore)
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = time.AddHours(1);
            plan.OrderedQty = 500;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.ISS;
            plans.Add(plan);

            //ISS:450(Demand)
            plan = new Plans();
            plan.Loc = locTo;
            plan.Item = item;
            plan.ReqTime = time;
            plan.OrderedQty = 450;
            plan.FinishedQty = 0;
            plan.PlanType = Enumerators.PlanType.Orders;
            plan.IRType = Enumerators.IRType.ISS;
            plans.Add(plan);

            container.ItemFlows = ItemFlows;
            container.InvBalances = invBalances;
            container.Plans = plans;
            container.DemandChains = demandChains;
        }