예제 #1
0
        public bool EjecutarBasicSimplex(string nombreHojaProblema)
        {
            bool             siCorrecto = false;
            ConectorDatosApp conector   = new ConectorDatosApp();
            SimplexTService  service    = new SimplexTService();
            KeyValuePair <string, double> variableMinima = new KeyValuePair <string, double>();
            KeyValuePair <string, double> pivote         = new KeyValuePair <string, double>();

            if (conector.ExtraerDatosSimplex(Path, nombreHojaProblema, out Tableau tabla))
            {
                service.PivotarTSimplex(ref tabla, out variableMinima, out pivote);
                service.ReducirColumnas(ref tabla, pivote, variableMinima.Key);

                while (!service.ComprobarSiFinalizaSimplex(tabla.FuncionObjetivo))
                {
                    service.PivotarTSimplex(ref tabla, out variableMinima, out pivote);
                    service.ReducirColumnas(ref tabla, pivote, variableMinima.Key);
                }

                Trace.TrazaTextoConFecha(Constantes.TextoSiSolucion);
                Trace.TrazaTexto(Constantes.TextoValor);
                Trace.TrazaEcuacionVectorialVertical(tabla.FuncionObjetivo);
            }

            return(siCorrecto);
        }
예제 #2
0
        public void EstandarizarRestricciones()
        {
            SimplexTService stService = new SimplexTService();

            IEnumerable <StandardConstraint> result = stService.EstandarizarRestricciones(restricciones);

            result = stService.EstandarizarVector(result);

            if (stService.EstandarizarFuncionObjetivo(result, ref FO))
            {
                Tableau ts = new Tableau(FO, result);

                stService.PivotarTSimplex(ref ts, out KeyValuePair <string, double> variableMinima, out KeyValuePair <string, double> pivote);
                stService.ReducirColumnas(ref ts, pivote, variableMinima.Key);
            }
        }