Ejemplo n.º 1
0
        public void Otimizar(FObjetivo funcao, Extremo extremo = Extremo.Minimizar)
        {
            Console.WriteLine();
              Console.WriteLine("Quantidade variaveis: {0} Quantidade restricoes: {1}", funcao.Variaveis.Count, funcao.Restricoes.Count);
              Console.WriteLine();
              funcao.Extremo = extremo;

              if (!funcao.Normalizado)
              {
            _swNormalizacao = Stopwatch.StartNew();
            funcao.normalizar();
            _quadro = new Quadro(funcao);
            _swNormalizacao.Stop();
              }

              _qtdIteracoes = 1;
              _historico.Clear();

              //mostrar quadro apos a troca
              //Console.WriteLine(_quadro.ToString());

              _statusSimplex = StatusSimplex.PrimeiraEtapa;

              _swOtimizacao = Stopwatch.StartNew();
              _swtempoIteracao = Stopwatch.StartNew();

              while (_statusSimplex != StatusSimplex.SolucaoIlimitada &&
            _statusSimplex != StatusSimplex.SolucaoOtima &&
            _statusSimplex != StatusSimplex.SolucaoImpossivel)
              {

            _historico.Push(_statusSimplex);

            switch (_statusSimplex)
            {
              case StatusSimplex.PrimeiraEtapa:
            _statusSimplex = this.AlgoritmoPrimeiraEtapa();
            break;

              case StatusSimplex.SegundaEtapa:
            _statusSimplex = this.AlgoritmoSegundaEtapa();
            break;

              case StatusSimplex.AlgoritmoTroca:
            _swtempoIteracao.Stop();
            //if (_qtdIteracoes % 100 == 0)
              Console.WriteLine(string.Format("Linha: {0}\tColuna: {1}\tIteracoes: {2}\tTempo: {3}s", _linhaPerm, _colunaPerm, _qtdIteracoes, _swtempoIteracao.Elapsed.TotalSeconds));
            _swtempoIteracao = Stopwatch.StartNew();
            _statusSimplex = this.AlgoritmoTroca();
            _qtdIteracoes++;
            break;
            }
              }
              //fim otimizacao
              _swOtimizacao.Stop();

              _historico.Push(_statusSimplex);
        }
Ejemplo n.º 2
0
        public void Otimizar(FObjetivo funcao, Extremo extremo = Extremo.Minimizar)
        {
            Console.WriteLine();
            Console.WriteLine("Quantidade variaveis: {0} Quantidade restricoes: {1}", funcao.Variaveis.Count, funcao.Restricoes.Count);
            Console.WriteLine();
            funcao.Extremo = extremo;

            if (!funcao.Normalizado)
            {
                _swNormalizacao = Stopwatch.StartNew();
                funcao.normalizar();
                _quadro = new Quadro(funcao);
                _swNormalizacao.Stop();
            }

            _qtdIteracoes = 1;
            _historico.Clear();

            //mostrar quadro apos a troca
            //Console.WriteLine(_quadro.ToString());

            _statusSimplex = StatusSimplex.PrimeiraEtapa;

            _swOtimizacao    = Stopwatch.StartNew();
            _swtempoIteracao = Stopwatch.StartNew();

            while (_statusSimplex != StatusSimplex.SolucaoIlimitada &&
                   _statusSimplex != StatusSimplex.SolucaoOtima &&
                   _statusSimplex != StatusSimplex.SolucaoImpossivel)
            {
                _historico.Push(_statusSimplex);

                switch (_statusSimplex)
                {
                case StatusSimplex.PrimeiraEtapa:
                    _statusSimplex = this.AlgoritmoPrimeiraEtapa();
                    break;

                case StatusSimplex.SegundaEtapa:
                    _statusSimplex = this.AlgoritmoSegundaEtapa();
                    break;

                case StatusSimplex.AlgoritmoTroca:
                    _swtempoIteracao.Stop();
                    //if (_qtdIteracoes % 100 == 0)
                    Console.WriteLine(string.Format("Linha: {0}\tColuna: {1}\tIteracoes: {2}\tTempo: {3}s", _linhaPerm, _colunaPerm, _qtdIteracoes, _swtempoIteracao.Elapsed.TotalSeconds));
                    _swtempoIteracao = Stopwatch.StartNew();
                    _statusSimplex   = this.AlgoritmoTroca();
                    _qtdIteracoes++;
                    break;
                }
            }
            //fim otimizacao
            _swOtimizacao.Stop();

            _historico.Push(_statusSimplex);
        }
Ejemplo n.º 3
0
 public SimplexSolverCPU()
 {
     _statusSimplex = new StatusSimplex();
     _historico     = new Stack <StatusSimplex>();
 }
Ejemplo n.º 4
0
 public SimplexSolverCPU()
 {
     _statusSimplex = new StatusSimplex();
       _historico = new Stack<StatusSimplex>();
 }