Харон написал(а):насколько я понял, можно сделать примерно так:
private double fitness = Double.NEGATIVE_INFINITY;
public double standardFitness(){
if(fitness == Double.NEGATIVE_INFINITY){
fitness = StandardFitness.getInstance().calk(new Mover(...));
}
return fitness;
}
Соответственно, Mover заменить на свою реализацию.
StandardFitness -- класс из пакета laboratory.plugin.task.ant (для задачи про муравья) или laboratory.plugin.task.extendedant (для муравья-3)
А что, где-то надо брать заранее заданное поле? Почему бы не генерить его самому?
В 23 варианте автор делает так:
public double fitness() {
if (fitness == Double.NEGATIVE_INFINITY) {
fitness = 0;
for (int j = 0; j < Ant23Factory.attempts; j++) {
State s = state[initialState];
ExtendedAnt ant = new ExtendedAnt(mu);
for (int i = 0; i < Ant.NUMBER_STEPS; i++) {
s = move(s, ant);
}
fitness += cf;
cf = 0;
}
fitness /= Ant23Factory.attempts;
}
return fitness;
}
и
import task.ant.extended.ExtendedAnt
public State move(State s, ExtendedAnt ant) {
boolean[] variables = ant.F();
...
}
Кстати, у нас действительно нет класса ExtendedAnt. Правда в папке с вирт. лабораторией в ...\plugin\tasks лежат какие-то муравьи.
Но это все же дополнения. По идее можно и без них все сделать - главное реализовать соответствующие интерфейсы из common.jar .
Отредактировано Dehors (2009-11-14 00:30:45)