📄 swarm.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 + -