/// <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)); }
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++; } }
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); }
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); }
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; }
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; } } } }
/// <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); }
/// <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)); }
// Use this for initialization void Start() { stats = GetComponent <LayerStats>(); initialX = -1000; }