private void btnLeerModelo_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); Modelo = new ModeloPL(); Modelo.Leer(openFileDialog1.FileName); CargarEnPantalla(); }
private void CargarModelo() { int NroVariables = int.Parse(txtNroVariables.Text); int NroRestricciones = int.Parse(txtNroRestricciones.Text); double[] c = new double[NroVariables]; double[] b = new double[NroRestricciones]; double[,] A = new double[NroRestricciones, NroVariables]; for (int i = 0; i < NroVariables; i++) { c[i] = double.Parse(dGVc[i, 0].Value.ToString()); } for (int i = 0; i < NroRestricciones; i++) { b[i] = double.Parse(dGVAb[NroVariables, i].Value.ToString()); } for (int i = 0; i < NroRestricciones; i++) { for (int j = 0; j < NroVariables; j++) { A[i, j] = double.Parse(dGVAb[j, i].Value.ToString()); } } Modelo = new ModeloPL(txtNombre.Text,txtArchivo.Text, c, b, A); }
public void InformeCompleto(ModeloPL Modelo) { this.toolStripStatusLabel1.Text = "Modelo " + Modelo.Nombre; Simplex lp = new Simplex(Modelo); txtResultado.Text = "Resultado : \r\n"; txtResultado.Text = txtResultado.Text + "-------------------------------------------------------------------------\r\n"; txtResultado.Text = txtResultado.Text + "Optimo = " + lp.valueopt().ToString() + "\r\n"; double[] x = lp.primal(); txtResultado.Text = txtResultado.Text + "Primal : \r\n"; for (int i = 0; i < x.Length; i++) { txtResultado.Text = txtResultado.Text + "x[" + i + "] = " + x[i].ToString() + "\r\n"; } double[] y = lp.dual(); txtResultado.Text = txtResultado.Text + "Dual : \r\n"; for (int j = 0; j < y.Length; j++) { txtResultado.Text = txtResultado.Text + "y[" + j + "] = " + y[j].ToString() + "\r\n"; } lp.show(); txtResultado.Text = txtResultado.Text + lp.Resultado; }
public void Mostrar(ref ModeloPL pModelo) { if (pModelo != null) { Modelo = pModelo; CargarEnPantalla(); } this.ShowDialog(); pModelo= Modelo; }
// Establecer la matriz (tableaux) inicial del Simplex a partir de objeto modelo public Simplex(ModeloPL Modelo) { M = Modelo.NroRestricciones; N = Modelo.NroVariables; a = new double[M + 1, N + M + 1]; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { a[i, j] = Modelo.A[i, j]; } } for (int i = 0; i < M; i++) { a[i, N + i] = 1.0; } for (int j = 0; j < N; j++) { a[M, j] = Modelo.c[j]; } for (int i = 0; i < M; i++) { a[i, M + N] = Modelo.b[i]; } basis = new int[M]; for (int i = 0; i < M; i++) { basis[i] = N + i; } _PasoAPaso = ""; _PasoAPaso = _PasoAPaso + "-------------------------------------------------------------------------\r\n"; _PasoAPaso = _PasoAPaso + "Matriz Simplex inicial: \r\n"; _PasoAPaso = _PasoAPaso + "Colum." + "\t"; for (int j = 0; j <= M + N; j++) { _PasoAPaso = _PasoAPaso + (j == M + N ? "Sol." : (j >= N && j < M + N ? "s" : "x") + j.ToString()) + "\t"; } _PasoAPaso = _PasoAPaso + "\r\n"; for (int i = 0; i <= M; i++) { _PasoAPaso = _PasoAPaso + (i == M ? "Z" : "f" + i.ToString() + " " + (basis[i] < N ? "x" : "s") + basis[i].ToString()) + "\t"; for (int j = 0; j <= M + N; j++) { _PasoAPaso = _PasoAPaso + a[i, j].ToString("F3") + "\t"; } _PasoAPaso = _PasoAPaso + "\r\n"; } solve(); }
// No acotada public void InformeCompleto3() { double[] c = { 2.0, 3.0, -1.0, -12.0 }; double[] b = { 3.0, 2.0 }; double[,] A = { { -2.0, -9.0, 1.0, 9.0 }, { 1.0, 1.0, -1.0, -2.0 }, }; Modelo = new ModeloPL("Ejemplo2", "-", c, b, A); InformeCompleto(Modelo); }
// x0 = 12, x1 = 28, opt = 800 public void InformeCompleto2() { double[] c = { 13.0, 23.0 }; double[] b = { 480.0, 160.0, 1190.0 }; double[,] A = { { 5.0, 15.0 }, { 4.0, 4.0 }, { 35.0, 20.0 }, }; Modelo = new ModeloPL("Ejemplo2", "-", c, b, A); InformeCompleto(Modelo); }
// Degeneración - Se hace un ciclo si se elige el coeficiente mas positivo public void InformeCompleto4() { double[] c = { 10.0, -57.0, -9.0, -24.0 }; double[] b = { 0.0, 0.0, 1.0 }; double[,] A = { { 0.5, -5.5, -2.5, 9.0 }, { 0.5, -1.5, -0.5, 1.0 }, { 1.0, 0.0, 0.0, 0.0 }, }; Modelo = new ModeloPL("Degeneración", "-", c, b, A); InformeCompleto(Modelo); }
public void ReddyMikks() { double[] c = { 5.0, 4.0 }; double[] b = { 24.0, 6.0, 1.0, 2.0 }; double[,] A = { { 6.0, 4.0 }, { 1.0, 2.0 }, { -1.0, 1.0 }, { 0.0, 1.0 } }; Modelo = new ModeloPL("Reddy Mikks", "-", c, b, A); InformeCompleto(Modelo); }
public void InformeCompleto1() { double[,] A = { { -1, 1, 0 }, { 1, 4, 0 }, { 2, 1, 0 }, { 3, -4, 0 }, { 0, 0, 1 }, }; double[] c = { 1, 1, 1 }; double[] b = { 5, 45, 27, 24, 4 }; Modelo = new ModeloPL("Ejemplo1", "-", c, b, A); InformeCompleto(Modelo); }