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); }
public void Otimizar(ILPReader reader, Extremo extremo = Extremo.Minimizar) { if (reader == null) throw new ArgumentException("reader"); _swLeituraFuncao = Stopwatch.StartNew(); var funcao = reader.LerFuncaoObjetivo(); _swLeituraFuncao.Stop(); Otimizar(funcao, extremo); }
public void Otimizar(ILPReader reader, Extremo extremo = Extremo.Minimizar) { if (reader == null) { throw new ArgumentException("reader"); } _swLeituraFuncao = Stopwatch.StartNew(); var funcao = reader.LerFuncaoObjetivo(); _swLeituraFuncao.Stop(); Otimizar(funcao, extremo); }