Exemple #1
0
        /// <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]);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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();
        }