private void button1_Click(object sender, EventArgs e) { this.SimplexMatrixes.Clear(); List <List <object> > data = new List <List <object> >(); object[] req = new object[inputData.Last().GetUpperBound(0)]; object[] stocks = new object[inputData.Count - 1]; for (int i = 0; i < inputData.Count - 1; i++) { int tail = inputData[i].GetUpperBound(0) - 1; data.Add(new List <object>()); for (int j = 0; j < tail; j++) { data[i].Add(cell(i, j + 1)); } stocks[i] = cell(i, tail + 1); } for (int i = 0; i < inputData.Last().GetUpperBound(0); i++) { req[i] = cell(inputData.Count - 1, i + 1); } NorthWest nw = new NorthWest(data, req, stocks); LowCost lc = new LowCost(data, req, stocks); Vogel FliegtNachSüd = new Vogel(data, req, stocks); methods.Clear(); methods.Add(nw); methods.Add(lc); methods.Add(FliegtNachSüd); IRouteSolveMethod optimum = FliegtNachSüd; foreach (IRouteSolveMethod m in methods) { var table = DrawSimplexTable(m); this.SimplexMatrixes.Add(table); if ((double)m.BasisResult < (double)optimum.BasisResult) { optimum = m; } } AnswerLabel.Text = "Ответ: "; AnswerLabel.Text += optimum.BasisResult.ToString(); setVisibility(true); }
private DataGridView DrawSimplexTable(IRouteSolveMethod solution) { DataGridView table = new DataGridView(); table.Columns.Add("a", "Поставщики"); for (int i = 0; i < solution.Rows[0].CellCount; i++) { table.Columns.Add("B" + (i + 1).ToString(), "B" + (i + 1).ToString()); } for (int i = 0; i < solution.Rows.Length; i++) { object[] row = new object[solution.Rows[i].Cells.Length + 1]; row[0] = "A" + (i + 1).ToString(); for (int j = 0; j < solution.Rows[i].Cells.Length; j++) { row[j + 1] = solution.Rows[i].Cells[j].Value; } table.Rows.Add(row); } return(table); }