void Update() { if (Input.GetKey("space")) { AlgoritmoGenetico.AvanzarGeneracion(); } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Context.User.Identity.GetUserId() != null) { System.Diagnostics.Debug.WriteLine("Iniciando"); List <Cancion> lst = new List <Cancion>(); using (DBManualConnection db = new DBManualConnection()) { lst = db.getCanciones(idUsuario: Context.User.Identity.GetUserId()); } if (lst.Count != 0) { AlgoritmoGenetico ag = new AlgoritmoGenetico(lst); ag.calcularAptitudPoblacionInicial(); List <List <Tag> > lstTagsHijos = new List <List <Tag> >(); lstTagsHijos = ag.generarParejas(); //Conversion para desplagar los tags en web /* * List<String> tagsCancionesHijas = new List<String>(); * String renglonTag = ""; * foreach (List<Tag> lstTag in lstTagsHijos) * { * renglonTag = ""; * foreach (Tag tag in lstTag) * { * renglonTag += tag.Nombre + ", "; * } * tagsCancionesHijas.Add(renglonTag); * } * grd1.DataSource = tagsCancionesHijas; * grd1.DataBind(); */ //Obteniendo canciones recomendadas por los tags creados List <Cancion> lstCancionesRecomendadas = new List <Cancion>(); foreach (List <Tag> lstTag in lstTagsHijos) { using (DBManualConnection db = new DBManualConnection()) { lstCancionesRecomendadas.AddRange(db.obtenerListaCancionesRecomendadas(lstTag)); } } List <Cancion> lstCancionesRecomendadasSinRepetir = lstCancionesRecomendadas.GroupBy(x => x.Id).Select(x => x.First()).ToList(); //grd2.DataSource = lstCancionesRecomendadasSinRepetir; //grd2.DataBind(); rep1.DataSource = lstCancionesRecomendadasSinRepetir; rep1.DataBind(); } } } string strGUID = Context.User.Identity.GetUserId(); }
void Awake() //Ponemos acá todas las funciones de inicialización { Ayudante.Inicializar(); AlgoritmoGenetico.Inicializar(); GameObject.Find("FraseModelo").GetComponent <FraseModelo>().Inicializar(); GameObject.Find("populationN").GetComponent <Text>().text = "N° de pobladores: " + Config.nPobladores; GameObject.Find("mutation%").GetComponent <Text>().text = "% de mutación: " + Config.mutationRate; }
/** * Abaixa a prioridade da câmera e fala pro * algoritmo genético para morrer. */ public void Morrer() { if (!morto) { cameraCinemachine.Priority = 0; CancelInvoke(); AlgoritmoGenetico alg = FindObjectOfType <AlgoritmoGenetico>(); alg.MatarIndividuo(this); } }
void Awake() { this.AlgoritmoGenetico = new AlgoritmoGenetico(); AlgoritmoGenetico.TxtVelocidad = txtVelocidad; AlgoritmoGenetico.TxtGeneracion = txtGeneracion; AlgoritmoGenetico.TxtIndividuo = txtIndividuo; AlgoritmoGenetico.TxtRotacion = txtRotacion; AlgoritmoGenetico.TxtMatriz = txtMatriz; this.AlgoritmoGenetico.Evolucionar(); }
private void btnInicializar_Click(object sender, EventArgs e) { int tamanhoPopulacao = Convert.ToInt32(txtQuantidadePopulacao.Text); double taxaDeMutacao = Convert.ToDouble(txtTaxaDeMutacao.Text); int maximoDeGeracoes = Convert.ToInt32(txtMaximoDeGeracoes.Text); AlgoritmoGenetico algoritmoGenetico = new AlgoritmoGenetico(tamanhoPopulacao, taxaDeMutacao, maximoDeGeracoes); algoritmoGenetico.Evolucao(); txtGeracoes.Text = algoritmoGenetico.QuantidadeDeGeracoes.ToString(); int[] populacao = algoritmoGenetico.Populacao; PreencheListBox(populacao); }
public List <Vehiculo> getSolution() { List <Linea> lineas = obtenerListaLineas(); List <Vehiculo> vehiculos = obtenerListaVehiculos(); AlgoritmoGenetico AG = new AlgoritmoGenetico(vehiculos, lineas); Individuo solucion = AG.IniciarGenetico(); Debug.Log("GENERACION #" + AG.getGeneracionActual() + "\n"); Debug.Log(solucion.PrintStringIndividuo()); // Vehiculos a la linea a la que pertenecen. List <Vehiculo> lista = solucion.GetVehiculos(); return(lista); }
private void btnExecutar_Click(object sender, EventArgs e) { buttonCriarPop.Enabled = false; int torneio = int.Parse(labelTamannhoTorneio.Text); evolucoes += int.Parse(labelEvolucao.Text); positivoInfinito = double.PositiveInfinity; Configuracao.numeroCompetidores = torneio; Configuracao.Tipo tipo = Configuracao.Tipo.FIXO; if (rbDHM_ILC.Checked) { tipo = Configuracao.Tipo.DHM_ILC; } else if (rbILM_DHC.Checked) { tipo = Configuracao.Tipo.ILM_DHC; } Configuracao.tipo = tipo; AlgoritmoGenetico algoritmoGenetico = new AlgoritmoGenetico(); algoritmoGenetico.aptidao = new AptidaoDistancia(mapa); algoritmoGenetico.selecao = new SelecaoTorneio(Configuracao.numeroCompetidores, Configuracao.aleatorio); algoritmoGenetico.mutacao = mutacao = new MutacaoDoisGenes(Configuracao.taxaMutacao, Configuracao.aleatorio); algoritmoGenetico.solucao = new SolucaoLimiteGeracao(evolucoes); algoritmoGenetico.crossover = crossover = new CrossoverPmx(Configuracao.aleatorio, Configuracao.taxaCrossover); algoritmoGenetico.substituicao = new SubstituicaoTotal(); algoritmoGenetico.observadores.Add(this); algoritmoGenetico.execute(populacao); g.Clear(Color.White); desenharLinhas(populacao, Color.Blue); desenharPontos(); botaoExportarMelhorIndiv.Enabled = true; }
void Start() { AlgoritmoGenetico.GenerarPoblacion(); }
// Use this for initialization void Start() { algGen = FindObjectOfType <AlgoritmoGenetico>(); }
private void BtnExecutar_Click(object sender, EventArgs e) { count_exec++; #region Desativar os botões enquanto executa btnDicas.Enabled = false; btnInformacao.Enabled = false; btnGrafico.Enabled = false; btnDicas.Enabled = false; btnCriarPop.Enabled = false; btnExecutar.Enabled = false; btnSair.Enabled = false; btnConfiguracao.Enabled = false; btnLimpar.Enabled = false; btnInserir.Enabled = false; btnImportar.Enabled = false; btnSalvar.Enabled = false; #endregion var deuErro = false; //Valida se o campo esta nulo txtTamPop.Text = txtTamPop.Text.Equals("") ? "1" : txtTamPop.Text; //Altera o tamanho da população sem a necessida de pressionar o botão criar pop if (popTamAux != int.Parse(txtTamPop.Text)) { ConfigurationGA.tamPopulacao = int.Parse(txtTamPop.Text); //Caso a população esteja em 0 ou Nulla é setada como 1 if (ConfigurationGA.tamPopulacao == 0) { ConfigurationGA.tamPopulacao = 1; txtTamPop.Text = "1"; } popTamAux = int.Parse(txtTamPop.Text); pop = new Population(); } #region Configuração do AG // Tratamento de entrada de dados nos campos //Configurar AG txtTaxaMutacao.Text = txtTaxaMutacao.Text.Equals(" ,") ? "0" : txtTaxaMutacao.Text; float taxaMutacao = float.Parse(txtTaxaMutacao.Text); txtTaxaCrossover.Text = txtTaxaCrossover.Text.Equals(" ,") ? "0" : txtTaxaCrossover.Text; float taxaCrossover = float.Parse(txtTaxaCrossover.Text); txtQtdeTorneio.Text = txtQtdeTorneio.Text.Equals("") ? "0" : txtQtdeTorneio.Text; int torneio = int.Parse(txtQtdeTorneio.Text); txtEvolucao.Text = txtEvolucao.Text.Equals("") ? "1" : txtEvolucao.Text; evolucoes += int.Parse(txtEvolucao.Text); ConfigurationGA.taxaCruzamento = taxaCrossover; ConfigurationGA.taxaMutacao = taxaMutacao; ConfigurationGA.numCompetidor = torneio; ConfigurationGA.Mutation mutacao = ConfigurationGA.Mutation.NovoInd; #endregion //Verifica o tipo de mutação selecionado if (rbNovoIndividuo.Checked) { mutacao = ConfigurationGA.Mutation.NovoInd; } else if (rbPopulacao.Checked) { mutacao = ConfigurationGA.Mutation.NaPopulacao; } ConfigurationGA.mutationType = mutacao; //Verifica se o elitismo foi checkado if (checkElitismoo.Checked) { ConfigurationGA.elitismo = true; txtQtdeelitismoo.Text = txtQtdeelitismoo.Text.Equals("") ? "0" : txtQtdeelitismoo.Text; ConfigurationGA.tamElitismo = int.Parse(txtQtdeelitismoo.Text); } else { ConfigurationGA.elitismo = false; } //Inicia uma instancia do AG (Metodo responsavel por aplicar o ciclo de evolução) AlgoritmoGenetico AG = new AlgoritmoGenetico(); for (i = iTemp; i < evolucoes; i++) { iTemp++; lbEvolucoes.Text = i.ToString(); lbEvolucoes.Refresh(); try { //Recebe a população evoluida pop = AG.ExecuteGA(pop); } catch (IndexOutOfRangeException) { //Mostra a mensagem de erro apenas uma vez if (deuErro == false) { MessageBox.Show("Favor, adicionar mais que uma cidade", "AG - TSP"); deuErro = true; } //Limpa o necessario para recomeçar ForcarLimpeza(); break; } //Pega o individuo com o melhor fitness pop.GetBest().CalcFitness(); //Verifica se o usario optou pelo 2opt if (twoOptCheck.Checked) { Utils.TwoOpt(pop.GetBest()); } //Ápos o 2opt pega o melhor individuo novamente, pois o 2opt fez uma nova melhoria pop.GetBest().CalcFitness(); //Limpa o grafico da media da população zedMedia.GraphPane.CurveList.Clear(); zedMedia.GraphPane.GraphObjList.Clear(); //Fazemos o calcula da media do fitness da população e jogamos no grafico double mediaPop = pop.GetMediaPop(); mediaPopulacao.Add(i, mediaPop); //Pegamos o fitness do melhor individuo double bestFitness = pop.GetBest().GetFitness(); //Desenha no grafico LineItem media = paneMedia.AddCurve("Média", mediaPopulacao, Color.Red, SymbolType.None); //Print linhas a cada 6 evolucoes, entra no if apenas quando o individuo da evolução corrente for melhor do que os individuos das evoluções anteriores if (bestFitness < bestAux) { bestAux = bestFitness; g.Clear(Color.White); PlotLines(pop, Color.Blue); PlotPoints(); //Atualiza laber com a distancia do melhor individuo lbMenorDistancia.Text = bestFitness.ToString("0.0"); lbMenorDistancia.Refresh(); lbMenorDistancia2.Text = bestFitness.ToString("0.0"); lbMenorDistancia2.Refresh(); } //Redesenhamos o grafico zedMedia.AxisChange(); zedMedia.Invalidate(); zedMedia.Refresh(); } #region Ativa os botoes novamente btnDicas.Enabled = true; btnInformacao.Enabled = true; btnGrafico.Enabled = true; btnDicas.Enabled = true; btnExecutar.Enabled = true; btnSair.Enabled = true; btnConfiguracao.Enabled = true; btnLimpar.Enabled = true; btnInserir.Enabled = true; btnImportar.Enabled = true; btnSalvar.Enabled = true; #endregion }
private void iniciarEvolucion(object sender, EventArgs e) { List <Imagen> imagenesFinales = new List <Imagen>(); if (!validateInput()) { MessageBox.Show("Por favor inserte parámetros correctos.", "Error en las configuraciones", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } button1.Text = "Detener"; SingletonCache singleton = SingletonCache.Instance; singleton.DistGChecked = DistanciaGCheck.Checked; singleton.DistManChecked = DistanciaManCheck.Checked; singleton.histColorChecked = histColorCheck.Checked; singleton.histFormaChecked = histFormaCheck.Checked; singleton.tamPoblacion = Int32.Parse(entryPoblacion.Text); singleton.porcCruses = float.Parse(entryCruces.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.porcMenosApt = float.Parse(entryMenosApt.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.porcMutacion = float.Parse(entryMutacion.Text, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); singleton.cantidadItereaciones = Int32.Parse(entryIteraciones.Text); SingletonCache.crearEstadisticas(); AlgoritmoGenetico.primeraGeneracion(pixel); imagenGenerada.Image = singleton.poblacion[0].image; singleton.indMenosAptoHist = singleton.poblacion[singleton.tamPoblacion - 1]; singleton.indMasAptoHist = singleton.poblacion[0]; updateStatistics(); singleton.objetivo.calcularDiferencia(singleton.objetivo); Console.WriteLine(singleton.objetivo.diferencia); bool trampa = conTrampaCheck.Checked; if (trampa) { for (int i = 1; i < SingletonCache.Instance.cantidadItereaciones; i++) { if (continuar) { trampa = false; if (i % 10 == 0) { trampa = true; } AlgoritmoGenetico.siguienteGeneracion(trampa); SingletonCache.Instance.numGeneracion++; updateStatistics(); if ((i - 1) % (SingletonCache.Instance.cantidadItereaciones / 10) == 0) { imagenesFinales.Add(SingletonCache.Instance.indMasAptoGen); SingletonCache.agregarGeneracion(); } } else { break; } } } else { int boosts = (SingletonCache.Instance.cantidadItereaciones / 5); for (int i = 1; i < SingletonCache.Instance.cantidadItereaciones; i++) { if (continuar) { trampa = false; if (i % boosts == 0) { trampa = true; } AlgoritmoGenetico.siguienteGeneracion(trampa); SingletonCache.Instance.numGeneracion++; updateStatistics(); if ((i - 1) % (SingletonCache.Instance.cantidadItereaciones / 10) == 0) { imagenesFinales.Add(SingletonCache.Instance.indMasAptoGen); SingletonCache.agregarGeneracion(); } } else { break; } } } if (continuar) { Form2 muestraResultados = new Form2(this); singleton.imagenesFinales = imagenesFinales; muestraResultados.pictureBox1.Image = (imagenesFinales[0].image); muestraResultados.pictureBox2.Image = (imagenesFinales[1].image); muestraResultados.pictureBox3.Image = (imagenesFinales[2].image); muestraResultados.pictureBox4.Image = (imagenesFinales[3].image); muestraResultados.pictureBox5.Image = (imagenesFinales[4].image); muestraResultados.pictureBox6.Image = (imagenesFinales[5].image); muestraResultados.pictureBox7.Image = (imagenesFinales[6].image); muestraResultados.pictureBox8.Image = (imagenesFinales[7].image); muestraResultados.pictureBox9.Image = (imagenesFinales[8].image); muestraResultados.pictureBox10.Image = (imagenesFinales[9].image); muestraResultados.Visible = true; Visible = false; } else { MessageBox.Show("Se ha detenido el programa", "Detención manual", MessageBoxButtons.OK, MessageBoxIcon.Information); Restablecer(); } }
public JsonResult EjecutaOperaciones(string hora, int[] operaciones, string ciclo, string excel, string hoja) { //-empalmes -preasignacion -otrosSemestres -algoritmo string res = "<strong>Asignacion Fallida</strong>\n"; string detalles = ""; try { Conexion c = new Conexion(Conexion.datosConexion, Server.MapPath("~/Archivos/" + excel), ciclo); ListaVariables grupos = new ListaVariables(c.Grupos_EmpiezanA(ciclo, Convert.ToInt32(hora), false)); ListaSalones salones = new ListaSalones(c, c.Salones(), Convert.ToInt32(hora)); salones.SetHorarios(c, Ciclo); int numero_Operacion = 0; IOperacion operacion = null; foreach (int op in operaciones) { numero_Operacion++; switch ((byte)op) //Fabrica abstracta { case (byte)EOperaciones.algoritmoGenetico: operacion = new AlgoritmoGenetico(grupos, salones, Convert.ToInt32(hora), 100, 1000); break; case (byte)EOperaciones.empalmes: operacion = new RevisionEmpalmes(grupos, salones); break; case (byte)EOperaciones.otrosSemestres: operacion = new AsignacionOtrosSemestres(grupos, salones); break; case (byte)EOperaciones.preasignacion: operacion = new AsignacionPreferencial(grupos, salones); break; } if (operacion != null) { operacion.Ejecuta(); if (operacion.Resultado.Count != 0) { grupos.Actualiza(operacion.Resultado); detalles += Grupos2Table(operacion.Resultado.OrderBy(g => g.Cve_espacio).ToList(), operacion.NombreOperacion); } else { detalles += string.Format("{0} sin grupos modificados", operacion.NombreOperacion); } detalles += "<br>"; } } c.Grupos_Carga(grupos, hoja, c.Materias_AsDictionary(), c.Profesores_AsDicctionary()); res = string.Format("Asignacion de {0} completada<br>{1}", hora, detalles); } catch (Exception ex) { res += "\n" + ex.Message; } return(new JsonResult() { Data = res, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }