public Population.Generation GenerationMedium(Population.Generation a, Population.Generation b) { Population.Generation retorno = new Population.Generation(); retorno.Quantidade = (a.Quantidade + b.Quantidade) / 2; retorno.Velocidade = (a.Velocidade + b.Velocidade) / 2; retorno.VontadeDeAcasalamento = (a.VontadeDeAcasalamento + b.VontadeDeAcasalamento) / 2; retorno.Inteligencia = (a.Inteligencia + b.Inteligencia) / 2; retorno.Visao = (a.Visao + b.Visao) / 2; retorno.Saude = (a.Saude + b.Saude) / 2; retorno.R = (a.R + b.R) / 2; retorno.G = (a.G + b.G) / 2; retorno.B = (a.B + b.B) / 2; return(retorno); }
public void UpdateHistorico() { Population.Generation currentGenCriaturas = GetCurrentGenerationMedians(ParentCriaturas); Population.Generation currentGenPredadores = GetCurrentGenerationMedians(ParentPredadores); lastUpdatedTime = lastUpdatedTime + MeasureDelay; AddToJson(currentGenCriaturas, currentGenPredadores); if (manager.DeveReiniciar(currentGenCriaturas.Quantidade, currentGenPredadores.Quantidade)) { SetBestHistorico(); } else { Invoke("UpdateHistorico", MeasureDelay); } }
void AddToJson(Population.Generation GeracaoCriaturas, Population.Generation GeracaoPredadores) { Population populacao = JsonUtility.FromJson <Population>(File.ReadAllText(Path_historico)); populacao.listaCriaturas.Add(GeracaoCriaturas); populacao.listaPredadores.Add(GeracaoPredadores); if (TamanhoDoHistorico(populacao) >= MaxGraphDots) { //Simplificar o histórico MeasureDelay *= 2; populacao = SimplifyInHalf(populacao); populacao.EscalaDeTempo = MeasureDelay; } File.WriteAllText(Path_historico, JsonUtility.ToJson(populacao)); }
public Population.Generation GetCurrentGenerationMedians(Transform Parent) { Criatura[] criaturas = Parent.GetComponentsInChildren <Criatura>(); int velocidade = 0, visao = 0, vontadeDeAcasalamento = 0, inteligencia = 0, saude = 0, R = 0, G = 0, B = 0; int quantidade = criaturas.Length; for (int i = 0; i < quantidade; i++) { velocidade += criaturas[i].Genes.Velocidade; visao += criaturas[i].Genes.Visao; vontadeDeAcasalamento += criaturas[i].Genes.VontadeDeAcasalamento; inteligencia += criaturas[i].Genes.Inteligencia; saude += criaturas[i].Genes.Saude; R += criaturas[i].Genes.Red; G += criaturas[i].Genes.Green; B += criaturas[i].Genes.Blue; } Population.Generation geracao = new Population.Generation(); if (quantidade != 0) { geracao.Velocidade = velocidade / quantidade; geracao.Visao = visao / quantidade; geracao.VontadeDeAcasalamento = vontadeDeAcasalamento / quantidade; geracao.Inteligencia = inteligencia / quantidade; geracao.Saude = saude / quantidade; geracao.Quantidade = quantidade; geracao.R = R / quantidade; geracao.G = G / quantidade; geracao.B = B / quantidade; } else { geracao.Velocidade = 0; geracao.Visao = 0; geracao.VontadeDeAcasalamento = 0; geracao.Inteligencia = 0; geracao.Saude = 0; geracao.Quantidade = 0; geracao.R = 0; geracao.G = 0; geracao.B = 0; } return(geracao); }