⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaluation.java

📁 这是用遗传编程算法来拟合曲线的一个经典程序
💻 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 + -