Beispiel #1
0
        public void Preparo()
        {
            //Le agrego la función identidad y conformo los diferentes
            //vectores para completar el modelo
            //Creo todos los Y
            var listvari = ListoVariables();

            for (var i = 1; i <= Ecuaciones.Count; i++)
            {
                nuevoZ = "Y" + i.ToString();
                listTempTerminos.Add(new Termino(nuevoZ, 0));
            }
            // Agrego los Y a las ecuaciones, pero dejando en 1 el valor de la ecuación actual
            foreach (var ec in Ecuaciones)
            {
                // Agrego los X que falten
                foreach (var t in listvari)
                {
                    if (!ec.IsByVariable(t))
                    {
                        ec.Add(new Termino(t, 0));
                    }
                }
                // Agrego matrix identidad
                foreach (var nz in listTempTerminos)
                {
                    if (ec.NroEcu == _i)
                    {
                        ec.Add(new Termino(nz.Variable, 1));
                        ec.VariableBasica = nz.Variable;
                    }
                    else
                    {
                        ec.Add(nz);
                    }
                    _i++;
                }
                // Agrego los Z
                ec.Add(new Termino("Z", 0));
                _i = 1;
                // Marco la ecuación como preparada
                ec.Preparada = true;
            }
            //Preparo la función a Optimizar
            FuncionAOptimizar.Add(new Termino("Z", 1));
            FuncionAOptimizar.VariableBasica = "Z";
            foreach (var z in FuncionOriginal.ListoVariables())
            {
                FuncionAOptimizar.Add(new Termino(z, (FuncionOriginal.Get(z).Valor *-1)));
            }
            // Agrego las variables de la matriz identidad en la función a optimizar.
            foreach (var iltt in listTempTerminos)
            {
                FuncionAOptimizar.Add(new Termino(iltt.Variable, iltt.Valor * -1));
            }
        }