1. 仿真例子简介
我们仿真许多学生或者教职工在操场之内漫游的例子。
2. 增加操场和静态的学生
现在建立一个操场,并且随机放置一些静态的学生,若不把这些Agents加入到Schedule中,他们是不会进行运动的。
import sim.engine.*;
import sim.util.*;
import sim.field.continuous.*;
public class Students extends SimState {
private static final long serialVersionUID = 1L;
public Continuous2D yard = new Continuous2D(1.0, 100, 100);
public int numStudents = 50;
public Students(long seed) {
super(seed);
}
public void start() {
super.start();
// clear the yard
yard.clear();
// add some students to the yard
for (int i = 0; i < numStudents; i++) {
Student student = new Student();
yard.setObjectLocation(student, new Double2D(yard.getWidth() * 0.5
+ random.nextDouble() - 0.5, yard.getHeight() * 0.5
+ random.nextDouble() - 0.5));
}
}
public static void main(String[] args) {
doLoop(Students.class, args);
System.exit(0);
}
}
学生类:
public class Student {
}
空间表示:在GUI中被称为Fields,有一些内置的fields我们可以使用。
例如: Continuous2D定义了由实数值表示的2维环境,我们可以限定边界和范围,也可以不限定。它能存储许多对象,并且把对象与其2维坐标(Double2D)联系起来。
PS. Point2D.Double是可变的,不如Double2D安全。
我们增加了Start方法,用于初始化Simulation。
在本例中我们在start中清理所有对象,然后随机放置学生,仿真开始后立刻就终止了。