📄 evaluation.java
字号:
/*作者:徐朝*/
/*keystonexu@yahoo.com.cn*/
package regression.function;
import kernel.*;
/**
* 这个类有曲线的测试样例,以及适应度评价函数,以及终止条件
*/
public class Evaluation implements Evaluate
{
int NrOfFitnessCases = 10;
double x[] = new double[NrOfFitnessCases];
double y[] = new double[NrOfFitnessCases];
public Evaluation()
{
MakeFitnessCases();
}
void MakeFitnessCases()
{
for (int i = 0; i < NrOfFitnessCases; i++)
{
x[i] = i * 0.1;
//y[i] = 1.0 + (-3.0)*x[i] + (3.0)*x[i]*x[i]*x[i]*x[i];; //这是测试函数
y[i] = 1.0 + (-3.0)*x[i] + (3.0)*x[i] * x[i] * x[i];
}
}
public double[] getData()
{
return y;
}
public double[] getData(Individual individual)
{
double[] y1 = new double[NrOfFitnessCases];
for(int i = 0; i < NrOfFitnessCases; i++)
{
x_value.x = x[i];
y1[i] = ((Double)(individual.program.eval())).doubleValue();
}
return y1;
}
//适应度评价函数,评价某个体的适应度。
public void Evaluate(Individual individual)
{
double raw_fitness;
double difference;
double y1;
raw_fitness = 0;
int hits = 0;
for (int i = 0; i < NrOfFitnessCases; i++)
{
x_value.x = x[i];
y1 = ((Double)(individual.program.eval())).doubleValue();
difference = Math.sqrt((y1 - y[i]) * (y1 - y[i]));
raw_fitness = raw_fitness + difference;
if( difference < 0.01)
hits++;
}
individual.hits = hits + 1;
individual.standardizedFitness = raw_fitness;
}
//评价终止条件
public boolean Termination_Criterion(Individual individual,int current_generation, double best_fitness)
{
if( current_generation >= Parameter.maximum_generations)
return true;
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -