本文整理汇总了C#中Population.RunEpoch方法的典型用法代码示例。如果您正苦于以下问题:C# Population.RunEpoch方法的具体用法?C# Population.RunEpoch怎么用?C# Population.RunEpoch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Population
的用法示例。
在下文中一共展示了Population.RunEpoch方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SearchSolution
//.........这里部分代码省略.........
pred = 0.00;
double result = 0.0;
double resultgerado = 0.0;
// calculate best function
for (int j = 0; j < data.GetLength(0); j++)
{
double HIT_LEVEL = 0.01;
double PROBABLY_ZERO = 1.11E-15;
double BIG_NUMBER = 1.0e15;
System.Console.WriteLine("Valor de entrada: " + input[j]);
resultgerado = PolishGerExpression.Evaluate(bestFunction, input, j);
// fitness (atual - estimado) / atual
result = Math.Abs((output[j] - resultgerado) / output[j]);
if (!(result < BIG_NUMBER)) // *NOT* (input.x >= BIG_NUMBER)
result = BIG_NUMBER;
else if (result < PROBABLY_ZERO) // slightly off
result = 0.0;
if (result <= HIT_LEVEL) hits++; // whatever!
//Somatorio do erro
sum += result;
//Somatoria do pred com 25%
if ((resultgerado <= output[j] * 1.25) && (resultgerado >= output[j] * 0.75)) npred++;
//impressao dos dados gerados e esperados
System.Console.WriteLine(" Valor gerado: " + resultgerado + " resultado esperado: " + data[j, 0] + " erro relativo: " + result);
}
// calculate error MMRE
error = sum / data.GetLength(0);
//calculate Pred(25%)
pred = (((double) npred) / data.GetLength(0));
if (error < bestMMRE)
{
bestMMRE = error;
nomearq = "AnalisedeTempo" + ((geneticMethod == 0) ? "_GP_" : "_GEP_") + dataset + "_" + executions.ToString() + "_" + iterations.ToString();
saida.escreveArquivo(dataset + "\t" + ((geneticMethod == 0) ? "GP" : "GEP") + "\t" + i.ToString() + "\t" + bestMMRE.ToString() + "\r\n", nomearq, 0);
}
System.Console.WriteLine("Erro acumulado: " + sum);
System.Console.WriteLine("Erro Médio: " + error);
System.Console.WriteLine("Hits: " + hits);
System.Console.WriteLine("");
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
// increase current iteration/geracao
i++;
//
if ((iterations != 0) && (i > iterations))
//break;
needToStop = true;
else
population.RunEpoch();
}
// show solution
//System.Console.WriteLine(population.BestChromosome.ToString());
string expressao = population.BestChromosome.ToString().Trim();
string expressaosubst = PolishGerExpression.SubstituteVariables(expressao, input);
string expressaosimpl = PolishGerExpression.SimplifyExpression(expressaosubst);
string resultado = "";
resultado = "Expressão NPR gerada: " + expressao + "\r\n";
resultado = resultado + "Expressão formatada 1: " + (RPN2Infix.PostfixToInfix(expressao)) + "\r\n";
resultado = resultado + "Expressão formatada 2: " + (RPN2Infix.Parse(expressao.Replace(",", "."))) + "\r\n";
//resultado = resultado + "Expressão NPR com substitução: " + expressaosubst + "\r\n";
//resultado = resultado + "Expressão com substitução formatada: " + RPN2Infix.PostfixToInfix(expressaosubst) + "\r\n";
//resultado = resultado + "Expressão NPR com substitução simplificada: " + expressaosimpl + "\r\n";
resultado = resultado + "Expressão com substitução simplificada formatada: " + RPN2Infix.PostfixToInfix(expressaosimpl) + "\r\n";
resultado = resultado + "Resultado para a expressão: " + "\r\n"; // +testeexpressao + "\r\n";
resultado = resultado + "Erro acumulado: " + sum.ToString() + "\r\n";
resultado = resultado + "Erro Médio: " + error.ToString() + "\r\n";
resultado = resultado + "Pred(25): " + pred.ToString() + "\r\n";
resultado = resultado + "Hits: " + hits.ToString() + "\r\n";
resultado = resultado + "Geração: " + population.BestGeneration + "\r\n";
nomearq = "Resultado" + ((geneticMethod == 0) ? "_GP_" : "_GEP_") + dataset + "_" + executions.ToString() + "_";
saida.escreveArquivo(resultado, nomearq, 1);
nomearq = "Experimento" + ((geneticMethod == 0) ? "_GP_" : "_GEP_");
saida.escreveArquivo(dataset + "\t" + ((geneticMethod == 0) ? "GP" : "GEP") + "\t" + executions.ToString() + "\t" + error.ToString() + "\t" + pred.ToString() + "\r\n", nomearq, 0);
//System.Console.WriteLine("Fim do Programa");
}
示例2: searchSolution
void searchSolution(Bitmap rgb)
{
long start = DateTime.Now.Ticks / 10000;
Globals.FRAMES_PROCESSED_TRIANGULAR++;
int com_x_sum = 0, com_y_sum = 0, com_x_y_point_count = 0;
Globals.HARVEST_SIGN_ID++;
//if (redTestPoints == null)
// calculateRedTestPoints();
Bitmap bmp = sf.Apply(rgb);
GeoTransChromosome sampleChromosome = new GeoTransChromosome(bmp, sf, this, null);
Population tmpPopulation = new Population(Constants.GA_POPULATION_SIZE,
sampleChromosome,
sampleChromosome,
new EliteSelection()
);
tmpPopulation.MutationRate = Constants.GA_MUTATION_RATE;
tmpPopulation.CrossoverRate = Constants.GA_CROSSOVER_RATE;
if (population == null || population.BestChromosome == null || population.BestChromosome.Fitness < RS_THRESHOLD / 4)
{
// fresh population
}
else
{
// half from previous
for (int j = 0; j < tmpPopulation.Size / 2; j++)
{
((GeoTransChromosome)tmpPopulation[j]).copyContent((GeoTransChromosome)population[j]);
}
}
population = tmpPopulation;
Graphics gg = null;
/*
Bitmap bmp_x = null;
if (1!=1)
{
bmp_x = new Bitmap(Constants.IMAGE_WIDTH, Constants.IMAGE_HEIGHT * 2, PixelFormat.Format24bppRgb);
gg = Graphics.FromImage(bmp_x);
gg.DrawImage(bmp, 0, 0);
gg.DrawImage(rgb, 0, Constants.IMAGE_HEIGHT);
for (int x = 0; x < population.Size; x++)
{
GeoTransChromosome chromo = (GeoTransChromosome)population[x];
gg.DrawRectangle(Pens.Cyan, chromo.X, chromo.Y, 1, 1);
}
}
*/
int i = 0;
do
{
long start_epoch = DateTime.Now.Ticks / 10000;
Globals.FRAMES_PROCESSED_GA_RUNEPOCH++;
// run one epoch of genetic algorithm
population.RunEpoch();
if (Constants.EVALUATE_TIME_ENABLED)
{
int x = (int)(DateTime.Now.Ticks / 10000 - start_epoch);
if (x >= 0)
{
Globals.TIME_GA_RUNEPOCH_MIN = x < Globals.TIME_GA_RUNEPOCH_MIN ? x : Globals.TIME_GA_RUNEPOCH_MIN;
Globals.TIME_GA_RUNEPOCH_MAX = x > Globals.TIME_GA_RUNEPOCH_MAX ? x : Globals.TIME_GA_RUNEPOCH_MAX;
Globals.TIME_GA_RUNEPOCH_TOTAL += x;
}
}
i++;
} while (i < Constants.GA_NUMBER_ITERATIONS);
GeoTransChromosome bestChromo = null;
float rs = 0;
if (population.BestChromosome != null && population.BestChromosome.Fitness > RS_THRESHOLD)
{
bestChromo = (GeoTransChromosome)population.BestChromosome;
int rx = bestChromo.X, ry = bestChromo.Y, rr = bestChromo.Width;
rs = (float)bestChromo.Fitness;
if (Constants.HARVEST_TYPE == Constants.HarvestType.harvestAll || Constants.HARVEST_TYPE == Constants.HarvestType.harvestMisses)
{
rgb.Save(Constants.base_folder + "hasat\\" + Globals.HARVEST_SIGN_ID + "_0.bmp");
bmp.Save(Constants.base_folder + "hasat\\" + Globals.HARVEST_SIGN_ID + "_1.bmp");
}
// findTriangle(bestChromo.X, bestChromo.Y, bmp, ref rx, ref ry, ref rr, ref rs);
if (rs < RS_THRESHOLD || rr==0)
{
if (gg != null)
{
gg.DrawRectangle(Pens.Red, bestChromo.X - 1, bestChromo.Y - 1, 3, 3);
gg.DrawRectangle(Pens.Red, bestChromo.X - bestChromo.Width / 2, bestChromo.Y - bestChromo.Width / 2, bestChromo.Width, bestChromo.Width);
}
bestChromo = null;
}
//.........这里部分代码省略.........