public static void fixGeneratorActiveLimits(Network network, HistoDbClient histoDbClient, Interval interval) throws IOException, InterruptedException { // replace strange pmin, pmax by historical limits Set<HistoDbAttributeId> attributeIds = new LinkedHashSet<>(); for (Generator g : network.getGenerators()) { if (hasInconsistenceActiveLimits(g)) { attributeIds.add(new HistoDbNetworkAttributeId(g.getId(), HistoDbAttr.P)); } } if (attributeIds.size() > 0) { HistoDbStats stats = histoDbClient.queryStats(attributeIds, interval, HistoDbHorizon.SN, true); for (Generator g : network.getGenerators()) { if (hasInconsistenceActiveLimits(g)) { HistoDbNetworkAttributeId attributeId = new HistoDbNetworkAttributeId(g.getId(), HistoDbAttr.P); double newMinP = -stats.getValue(HistoDbStatsType.MAX, attributeId, Float.NaN); double newMaxP = -stats.getValue(HistoDbStatsType.MIN, attributeId, Float.NaN); if (!Double.isNaN(newMinP) && !Double.isNaN(newMaxP)) { LOGGER.debug("Fix active power limits of generator {}: [{}, {}] -> [{}, {}]", g.getId(), g.getMinP(), g.getMaxP(), newMinP, newMaxP); g.setMinP(newMinP); g.setMaxP(newMaxP); } } } } } }