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

📄 swarm.java

📁 连续型粒子群算法的java实现
💻 JAVA
字号:
package mtpso;

import java.util.Properties;
import java.io.FileInputStream;
import java.util.Random;

/**
* 粒子群的群体
*
* @author qingyun yang //yqy409@tom.com
*/
public abstract class Swarm {
	//最大迭代次数
	public long maxiteration;
	//迭代次数
	public long iteration = 0;
	//终止条件
	public double cutoff;
	//全局最优粒子的位置
	public int gbest = 0;
	//权重
	public double weight;
	//运行的次数
	public int run_no;
	//最大运行时间
	public double maxruntime = 0.0;
	
	//群体中粒子的个数
	public Particle[] particle;
	//群体大小
	public int popSize;
	
	//读取属性文件
	public Properties property = new Properties();
	//随机数产生器
	public static Random randGenerator = new Random();
	
	public Problem problem;
	
	public Swarm(String propertyFileName) {
		super();
		
		try{
			property.load(new FileInputStream(propertyFileName));
			
			loadPropertyValues();
			
			int dim = Integer.parseInt(property.getProperty("DIMENSION"));
			double maxv = Double.parseDouble(property.getProperty("MAXV"));
			double maxx = Double.parseDouble(property.getProperty("MAXX"));
			double l_range = Double.parseDouble(property.getProperty("LEFTRANGE"));
			double r_range = Double.parseDouble(property.getProperty("RIGHTRANGE"));
			
			particle = new Particle[popSize];
			for(int i = 0 ; i < popSize ; i++){
				particle[i] = newParticle(randGenerator, dim, l_range, r_range, maxv, maxx);
			}
		}
		catch(Exception e){
			e.printStackTrace();
			System.exit(-1);
		}
	}
	
	public abstract void solve();
	
	public void loadPropertyValues() {
		popSize = Integer.parseInt(property.getProperty("POPSIZE"));
		maxiteration = Long.parseLong(property.getProperty("MAXITERATION"));
		weight = Double.parseDouble(property.getProperty("WEIGHT"));
		cutoff = Double.parseDouble(property.getProperty("CUTOFF"));
		run_no = Integer.parseInt(property.getProperty("RUN_NO"));
		maxruntime = Double.parseDouble(property.getProperty("MAXRUNTIME"));
		
		String probClassName = property.getProperty("PROB_CLASS");
		try {
			problem = (Problem)Class.forName(probClassName).newInstance();
		}catch(Exception e){
			e.printStackTrace();
			
			System.exit(1);
		}
	}
	
	public abstract Particle newParticle(Random randGenerator, int dim, double l_range, double r_range, double maxv, double maxx);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -