我正在尝试为当前Kaggle TSP challenge实现一个IncrementalScoreCalculator
。因此,我一直在查看docs,并且成功实现了一个EasyScoreCalacultor
并返回一个HardSoftScore
,其中hardscore
是每第10步要执行的位置数不是素数。
我的外观如下
@Override
public void beforeVariableChanged(Object o, String s) {
if (o instanceof Domicile) {
return;
}
switch (s) {
case "previousStandstill":
retract((Visit) o);
break;
case "position":
retractPosition((Visit) o);
break;
default:
throw new IllegalArgumentException("Unrecognized variable change " + s);
}
}
@Override
public void afterVariableChanged(Object o, String s) {
if (o instanceof Domicile) {
return;
}
switch (s) {
case "previousStandstill":
insert((Visit) o);
break;
case "position":
insertPosition((Visit) o);
break;
default:
throw new IllegalArgumentException("Unrecognized variable change " + s);
}
其中position
是阴影变量。
retractPosition
和insertPosition
如下所示:
private void retractPosition(Visit visit) {
Integer position = visit.getPosition();
if (position != null) {
if (visit.getLocation().getId() % 10 == 0) {
if (isPrime(position)) {
hardscore--;
}
}
}
}
private void insertPosition(Visit visit) {
Integer position = visit.getPosition();
if (position!= null) {
if (visit.getLocation().getId() % 10 == 0) {
if (isPrime(position)) {
hardscore++;
}
}
}
}
但是,这似乎无法正常工作,我似乎也无法将其包裹住。任何帮助深表感谢。