Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        /// <param name="entity"/>
        /// <param name="now"/>
        /// <param name="target"/>
        /// <param name="factor"/>
        /// <param name="ctx"/>
        /// <returns/>
        public WeightValue LAYER_BALANCE_FOR_PHOTO(Mozart.Simulation.Engine.ISimEntity entity, DateTime now, Mozart.Simulation.Engine.ActiveObject target, Mozart.SeePlan.DataModel.WeightFactor factor, Mozart.SeePlan.Simulation.IDispatchContext ctx)
        {
            if (factor.Factor == 0)
            {
                return(new WeightValue(0));
            }

            FabLot lot = entity as FabLot;

            int checkStepCount = (int)factor.Criteria[0];

            if (checkStepCount == 0)
            {
                checkStepCount = 10;
            }

            var currentStep = lot.CurrentFabStep;
            var currentProd = lot.FabProduct;

            FabStep nextPhoto = currentStep.GetNextPhotoNearByMe(currentProd, checkStepCount, out _);

            LayerStats sts = WeightHelper.GetLayerBalacne(nextPhoto.StdStep.DspEqpGroup);

            if (sts == null)
            {
                AoEquipment aeqp = null;
                foreach (var eqp in nextPhoto.StdStep.AllEqps)
                {
                    aeqp = AoFactory.Current.GetEquipment(eqp.EqpID);
                    if (aeqp != null)
                    {
                        break;
                    }
                }

                if (aeqp == null)
                {
                    return(new WeightValue(0));
                }

                sts = WeightHelper.CalcLayerBalance(aeqp);
            }


            LayerStats.StepWipStat wipStat = sts.GetWipStat(nextPhoto.StdStepID);

            string desc  = string.Empty;
            float  score = 0f;

            if (wipStat != null)
            {
                score = sts.GetLayerBalanceScore(wipStat, out desc);
            }


            return(new WeightValue(score * factor.Factor, desc));
        }
Ejemplo n.º 2
0
        private void RefreshChart()
        {
            LayerStats stats    = currentStats[listBox1.SelectedIndex];
            var        strList  = new List <string>();
            var        dataList = new List <int>();
            var        iters    = new List <int>();

            for (int i = 0; i < 10; i++)
            {
                switch (CurrentChartMode)
                {
                case ChartMode.Normal:
                    if (stats.NormalCounts[i] > 0)
                    {
                        strList.Add(GetButtonString(i));
                        dataList.Add(stats.NormalCounts[i]);
                        iters.Add(i);
                    }
                    break;

                case ChartMode.Long:
                    if (stats.LongCounts[i] > 0)
                    {
                        strList.Add(GetButtonString(i));
                        dataList.Add(stats.LongCounts[i]);
                        iters.Add(i);
                    }
                    break;

                case ChartMode.Both:
                    if (stats.NormalCounts[i] + stats.LongCounts[i] > 0)
                    {
                        strList.Add(GetButtonString(i));
                        dataList.Add(stats.NormalCounts[i] + stats.LongCounts[i]);
                        iters.Add(i);
                    }
                    break;
                }
            }

            chart1.Series["Default"].Points.DataBindXY(strList, dataList);
            chart1.Series["Default"].Label = "#VALX (#PERCENT)";
            int iter = 0;

            foreach (DataPoint p in chart1.Series["Default"].Points)
            {
                p.Color = Color.FromArgb(200, colorDict[(ButtonType)iters[iter]]);
                iter++;
            }
        }
Ejemplo n.º 3
0
        private void RefreshDifficultyChart()
        {
            LayerStats stats  = currentStats[listBox1.SelectedIndex];
            var        times  = new List <int>();
            var        points = new List <float>();

            chart2.ChartAreas[0].AxisX.LabelStyle.Format = "MyAxisXCustomFormat";
            for (int i = (int)Math.Floor(WindowUtility.IniFileWriter.StartTime); i <= (int)Math.Ceiling(WindowUtility.IniFileWriter.EndTime); i++)
            {
                times.Add(i);
                points.Add(stats.Result.Data.ContainsKey(i) ? stats.Result.Data[i] : 0);
            }
            chart2.Series["Default"].Points.DataBindXY(times, points);
        }
Ejemplo n.º 4
0
        private void RefreshData()
        {
            dataGridView1.Rows.Clear();

            LayerStats stats = currentStats[listBox1.SelectedIndex];

            foreach (var i in WindowUtility.TimeLineForm.RowManager.OrderedVisibleRows)
            {
                dataGridView1.Rows.Add(String.Format("{0}({1}+{2})", GetButtonString(i), Utility.Language["NormalMark"], Utility.Language["LongMark"]),
                                       String.Format("{0}({1}+{2})", stats.NormalCounts[i] + stats.LongCounts[i], stats.NormalCounts[i], stats.LongCounts[i]));
            }
            dataGridView1.Rows.Add(Utility.Language["NormalMark"], stats.AllNormalCounts);
            dataGridView1.Rows.Add(Utility.Language["LongMark"], stats.AllLongCounts);
            dataGridView1.Rows.Add(Utility.Language["Sum"], stats.AllCounts);
            dataGridView1.Rows.Add(Utility.Language["Difficulty(Average)"], stats.Result.Average);
            dataGridView1.Rows.Add(Utility.Language["Difficulty(Peak)"], stats.Result.Peak);
        }
Ejemplo n.º 5
0
        private void データ更新ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var statsList = new List <LayerStats>();

            foreach (LayerDisplay ld in WindowUtility.LayerManager.AllLayerDisplay)
            {
                var markDatas = ld.PPDData.GetSortedDataAsMarkData();
                var stats     = new LayerStats(ld.DisplayName,
                                               ScoreDifficultyMeasure.Measure(markDatas));
                for (int i = 0; i < 10; i++)
                {
                    foreach (KeyValuePair <float, Mark> kvp in ld.PPDData.Data[i])
                    {
                        if (kvp.Value is ExMark)
                        {
                            stats.LongCounts[i]++;
                        }
                        else
                        {
                            stats.NormalCounts[i]++;
                        }
                    }
                }
                statsList.Add(stats);
            }

            var allMarkDatas = WindowUtility.LayerManager.GetAllData(true);
            var allStats     = new LayerStats(Utility.Language["AllLayers"],
                                              ScoreDifficultyMeasure.Measure(allMarkDatas));

            for (int i = 0; i < 10; i++)
            {
                allStats.NormalCounts[i] = statsList.Sum(stats => stats.NormalCounts[i]);
                allStats.LongCounts[i]   = statsList.Sum(stats => stats.LongCounts[i]);
            }
            statsList.Insert(0, allStats);
            currentStats = statsList.ToArray();

            listBox1.Items.Clear();
            foreach (LayerStats stats in currentStats)
            {
                listBox1.Items.Add(stats.Name);
            }

            listBox1.SelectedIndex = 0;
        }
Ejemplo n.º 6
0
    void AssignSpecialConditions(int pieces, bool rubber)
    {
        for (int i = 0; i < pieces; i++)
        {
            GameObject obj   = null;
            LayerStats stats = null;

            while (obj == null || obj.tag == Tags.core || stats.rubber || stats.iron)
            {
                obj   = transform.GetChild(Random.Range(0, transform.childCount)).gameObject;
                stats = obj.GetComponent <LayerStats>();
            }

            if (rubber)
            {
                if (obj.tag == Tags.outerLayer)
                {
                    stats.rubber = true;
                }
                else if (obj.tag == Tags.middleLayer)
                {
                    stats.rubber = true;
                }
                else if (obj.tag == Tags.finalLayer)
                {
                    stats.rubber = true;
                }
            }
            else
            {
                if (obj.tag == Tags.outerLayer)
                {
                    stats.iron = true;
                }
                else if (obj.tag == Tags.middleLayer)
                {
                    stats.iron = true;
                }
                else if (obj.tag == Tags.finalLayer)
                {
                    stats.iron = true;
                }
            }
        }
    }
Ejemplo n.º 7
0
        /// <summary>
        /// </summary>
        /// <param name="dc"/>
        /// <param name="aeqp"/>
        /// <param name="wips"/>
        /// <param name="handled"/>
        public void UPDATE_CONTEXT0(IDispatchContext dc, AoEquipment aeqp, IList <IHandlingBatch> wips, ref bool handled)
        {
            //////20161122075408
            //if (aeqp.EqpID == "8APPH02" && aeqp.NowDT == new DateTime(2016, 12, 12, 8, 42, 14))
            //    Console.WriteLine("T");

            List <JobFilterInfo> joblist = dc.Get <List <JobFilterInfo> >(Constants.JobGroup, null);

            if (aeqp.Preset == null)
            {
                return;
            }

            double maxRequireEqp;

            if (WeightHelper.TryGetMaxRequiredEqp(aeqp, joblist, out maxRequireEqp))
            {
                dc.Set(Constants.WF_MAX_REQUIRED_EQP_COUNT, maxRequireEqp);
            }

            LayerStats sts = WeightHelper.CalcLayerBalance(aeqp);

            dc.Set(Constants.WF_LAYER_BALANCE_PRIORITY, sts);

            //투입을 위한 waiting wip infomation(unpack 설비 )
            Dictionary <string, WaitingWipInfo> waitingInfos = WeightHelper.SetWatingWipInfo(aeqp, joblist);

            dc.Set(Constants.WF_WAITING_WIP_INFO, waitingInfos);

            dc.Set(Constants.WF_MINMAX_VALUE_INFOS, WeightHelper.SetMinMaxVaule_WF(aeqp, joblist));

            if (wips.Count > 0)
            {
                dc.Set(Constants.WF_LOT_PRIORITY, wips.Max(x => x.ToFabLot().Priority));
            }

            DispatchLogHelper.InitLotLogDetail(wips);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// </summary>
        /// <param name="entity"/>
        /// <param name="now"/>
        /// <param name="target"/>
        /// <param name="factor"/>
        /// <param name="ctx"/>
        /// <returns/>
        public WeightValue LAYER_BALANCE_PRIORITY(Mozart.Simulation.Engine.ISimEntity entity, DateTime now, Mozart.Simulation.Engine.ActiveObject target, Mozart.SeePlan.DataModel.WeightFactor factor, Mozart.SeePlan.Simulation.IDispatchContext ctx)
        {
            if (factor.Factor == 0)
            {
                return(new WeightValue(0));
            }

            FabAoEquipment eqp = target as FabAoEquipment;
            FabLot         lot = entity as FabLot;

            LayerStats sts = ctx.Get(Constants.WF_LAYER_BALANCE_PRIORITY, default(LayerStats));

            LayerStats.StepWipStat wipStat = sts.GetWipStat(lot.CurrentStep.StdStepID);

            string desc  = string.Empty;
            float  score = 0f;

            if (wipStat != null)
            {
                score = sts.GetLayerBalanceScore(wipStat, out desc);
            }

            return(new WeightValue(score * factor.Factor, desc));
        }
Ejemplo n.º 9
0
 // Use this for initialization
 void Start()
 {
     stats    = GetComponent <LayerStats>();
     initialX = -1000;
 }