Skip to content

Commit

Permalink
fix path of calibration file for local calibration
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaspayette committed Jul 23, 2024
1 parent 339bdf8 commit f88a3b8
Showing 1 changed file with 44 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,41 @@ public static void main(final String[] args) {
new TwoPunchCalibration().run(args);
}

static List<HardEdgeOptimizationParameter> makeLocalParameters(
final Collection<? extends HardEdgeOptimizationParameter> originalParameters,
final double[] solution,
final double proportionOfGlobalRange
) {
checkArgument(solution.length == originalParameters.size());
return mapWithIndex(
originalParameters.stream(),
(originalParameter, i) -> {
final double optimalValue =
originalParameter.computeNumericValue(solution[(int) i]);
final double localRange =
(originalParameter.getHardMaximum() - originalParameter.getHardMinimum()) *
proportionOfGlobalRange;
final HardEdgeOptimizationParameter newParameter =
new HardEdgeOptimizationParameter(
originalParameter.getAddressToModify(),
optimalValue - localRange / 2.0,
optimalValue + localRange / 2.0,
originalParameter.isRawNumber(),
originalParameter.getHardMinimum(),
originalParameter.getHardMaximum()
);
if (newParameter.getMinimum() < newParameter.getHardMinimum()) {
newParameter.setMinimum(newParameter.getHardMinimum());
newParameter.setMaximum(newParameter.getHardMinimum() + localRange);
} else if (newParameter.getMaximum() > newParameter.getHardMaximum()) {
newParameter.setMinimum(newParameter.getHardMaximum() - localRange);
newParameter.setMaximum(newParameter.getHardMaximum());
}
return newParameter;
}
).collect(toImmutableList());
}

@SuppressWarnings("unused")
public Path getRootCalibrationFolder() {
return rootCalibrationFolder;
Expand Down Expand Up @@ -113,6 +148,7 @@ public void setCalibrationFile(final Path calibrationFile) {

@Override
public void run() {
final Path calibrationFilePath = rootCalibrationFolder.resolve(calibrationFile);
final Calibrator.Result globalCalibratorResult =
new Calibrator(
"global",
Expand All @@ -122,13 +158,17 @@ public void run() {
parallelThreads,
false,
rootCalibrationFolder,
rootCalibrationFolder.resolve(calibrationFile),
calibrationFilePath,
seedScenarios,
new Calibrator.ClusterBasedNichingEAInitializer()
).calibrate();

final GenericOptimization localCalibrationProblem =
buildLocalCalibrationProblem(globalCalibratorResult.getSolution(), 0.1);
buildLocalCalibrationProblem(
globalCalibratorResult.getSolution(),
calibrationFilePath,
0.1
);
localCalibrationProblem.setRunsPerSetting(2);

final Calibrator.Result localCalibratorResult = new Calibrator(
Expand All @@ -152,14 +192,15 @@ public void run() {

public GenericOptimization buildLocalCalibrationProblem(
final double[] solution,
final Path calibrationFilePath,
final double proportionOfGlobalRange
) {

checkArgument(proportionOfGlobalRange > 0);
checkArgument(proportionOfGlobalRange <= 1);

final GenericOptimization genericOptimization =
GenericOptimization.fromFile(calibrationFile);
GenericOptimization.fromFile(calibrationFilePath);

genericOptimization.setParameters(
makeLocalParameters(
Expand All @@ -176,39 +217,4 @@ public GenericOptimization buildLocalCalibrationProblem(
return genericOptimization;
}

static List<HardEdgeOptimizationParameter> makeLocalParameters(
final Collection<? extends HardEdgeOptimizationParameter> originalParameters,
final double[] solution,
final double proportionOfGlobalRange
) {
checkArgument(solution.length == originalParameters.size());
return mapWithIndex(
originalParameters.stream(),
(originalParameter, i) -> {
final double optimalValue =
originalParameter.computeNumericValue(solution[(int) i]);
final double localRange =
(originalParameter.getHardMaximum() - originalParameter.getHardMinimum()) *
proportionOfGlobalRange;
final HardEdgeOptimizationParameter newParameter =
new HardEdgeOptimizationParameter(
originalParameter.getAddressToModify(),
optimalValue - localRange / 2.0,
optimalValue + localRange / 2.0,
originalParameter.isRawNumber(),
originalParameter.getHardMinimum(),
originalParameter.getHardMaximum()
);
if (newParameter.getMinimum() < newParameter.getHardMinimum()) {
newParameter.setMinimum(newParameter.getHardMinimum());
newParameter.setMaximum(newParameter.getHardMinimum() + localRange);
} else if (newParameter.getMaximum() > newParameter.getHardMaximum()) {
newParameter.setMinimum(newParameter.getHardMaximum() - localRange);
newParameter.setMaximum(newParameter.getHardMaximum());
}
return newParameter;
}
).collect(toImmutableList());
}

}

0 comments on commit f88a3b8

Please sign in to comment.