/// <summary> /// Searches and returns pair based on token otherwise null /// </summary> /// <param name="token"></param> /// <returns></returns> public string GetPair(int token) { if (!OrderPair.ContainsKey(token)) { return(null); } return(this.OrderPair[token]); }
/// <summary> /// Searches and returns token based on oterwise -1 /// </summary> /// <param name="pair"></param> /// <returns></returns> public int GetToken(string pair) { if (!OrderPair.ContainsValue(pair)) { return(-1); } foreach (KeyValuePair <int, string> KVP in OrderPair) { if (KVP.Value == pair) { return(KVP.Key); } } return(-1); }
private void lbxOrderDetails_DoubleClick(object sender, EventArgs e) { int ind = lbxOrderDetails.SelectedIndex; if (ind == -1) { return; } OrderForm sForm = new OrderForm(order[ind].Detail, order[ind].Num); DialogResult dr = sForm.ShowDialog(); if (dr != System.Windows.Forms.DialogResult.OK) { return; } int c = sForm.Count; lbxOrderDetails.Items[ind] = ("Detail_" + ind.ToString() + " num:" + c.ToString()); order[ind] = new OrderPair(sForm.Detail, sForm.Count); pgrdOrderDetail.SelectedObject = order[ind].Detail; }
private void fillTableCutAndSimplexMethod(Task task) { dgvAllCuts.Rows.Clear(); dgvAllCuts.Columns.Clear(); dgvAllCuts.Columns.Add("det", "det"); dgvAllCuts.Columns[0].DefaultCellStyle.BackColor = Color.LightGray; for (int i = 0; i < task.AllCuts.Count; i++) { dgvAllCuts.Columns.Add((i + 1).ToString(), (i + 1).ToString()); } dgvAllCuts.Columns.Add("num", "num"); String[] str = new String[task.AllCuts.Count + 2]; str[0] = "det"; for (int i = 0; i < task.AllCuts.Count; i++) { str[i + 1] = (i + 1).ToString(); } str[task.AllCuts.Count + 1] = "num"; dgvAllCuts.Rows.Add(str); dgvAllCuts.Rows[0].DefaultCellStyle.BackColor = Color.LightGray; List <src.SMethod.Limitation> limits = new List <src.SMethod.Limitation>(); OrderPair pair = task.order.First(); while (pair != null) { str[0] = pair.Detail.Volume.ToString(); str[task.AllCuts.Count + 1] = pair.Num.ToString(); limits.Add(new src.SMethod.Limitation(new double[] { }, pair.Num, src.SMethod.Limitation.Type.Equal)); for (int i = 0; i < task.AllCuts.Count; i++) { str[i + 1] = task.AllCuts[i].CountOf(pair.Detail).ToString(); limits.Last().equaLine.koeffs.Add(task.AllCuts[i].CountOf(pair.Detail)); } dgvAllCuts.Rows.Add(str); pair = task.GetNextOrderPair(pair); } String[] str2 = new String[task.AllCuts.Count + 2]; dgvAllCuts.Rows.Add(str2); str[0] = "left"; str[task.AllCuts.Count + 1] = ""; src.SMethod.EquaLine equa = new src.SMethod.EquaLine(new double[] { }, 0.0); for (int i = 0; i < task.AllCuts.Count; i++) { str[i + 1] = Math.Round(task.AllCuts[i].Left, 3).ToString().Replace(',', '.'); equa.koeffs.Add(task.AllCuts[i].Left); } src.SMethod.Task sTask = new src.SMethod.Task(equa); foreach (src.SMethod.Limitation limit in limits) { sTask.limitations.Add(limit); } solver = new src.SMethod.SimplexMethodSolver(sTask); dgvAllCuts.Rows.Add(str); solver.calculateOptimalPlan(); }