Skip to content

Commit

Permalink
tweak FAD deactivation strategy
Browse files Browse the repository at this point in the history
nicolaspayette committed Mar 6, 2024
1 parent 829e8f9 commit f027d50
Showing 1 changed file with 18 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@
import uk.ac.ox.oxfish.fisher.purseseiner.regulations.ActiveFadLimits;
import uk.ac.ox.oxfish.model.FishState;
import uk.ac.ox.oxfish.model.FisherStartable;
import uk.ac.ox.poseidon.regulations.api.Regulations;

import java.util.Map;
import java.util.Optional;
@@ -34,14 +35,14 @@
import static uk.ac.ox.oxfish.model.StepOrder.FISHER_PHASE;

public class FadDeactivationStrategy implements FisherStartable, Steppable {
private static final long serialVersionUID = 718758206768136198L;
private FadManager fadManager;

@Override
public void start(
final FishState fishState,
final Fisher fisher
) {
System.out.println("Starting " + this + " for fisher " + fisher);
this.fadManager = FadManager.getFadManager(fisher);
// This is convoluted because we can't use FishState::scheduleEveryYear,
// which schedules stuff on December 31st. We need to wait for the first
@@ -60,17 +61,29 @@ public void start(
@SuppressWarnings("UnstableApiUsage")
@Override
public void step(final SimState simState) {
System.out.println(simState.schedule.getSteps() + " " + fadManager.getNumberOfActiveFads());
final FishState fishState = (FishState) simState;
final OptionalInt limit = fishState
.getRegulations()
final OptionalInt optionalLimit = extractActiveFadsLimit(
fishState.getRegulations(),
fishState.getCalendarYear()
);
stream(optionalLimit)
.filter(limit -> limit < fadManager.getNumberOfActiveFads())
.forEach(limit -> {}); // TODO
}

@SuppressWarnings("UnstableApiUsage")
private OptionalInt extractActiveFadsLimit(
final Regulations regulations,
final int calendarYear
) {
return regulations
.getSubRegulations()
.stream()
.filter(ActiveFadLimits.class::isInstance)
.map(ActiveFadLimits.class::cast)
.map(ActiveFadLimits::getLimitsPerYearAndClass)
.flatMapToInt(limits ->
stream(Optional.ofNullable(limits.get(fishState.getCalendarYear())))
stream(Optional.ofNullable(limits.get(calendarYear)))
.flatMap(yearlyLimits -> yearlyLimits.entrySet().stream())
.filter(classLimitEntry -> this.fadManager
.getFisher()
@@ -79,6 +92,5 @@ public void step(final SimState simState) {
.mapToInt(Map.Entry::getValue)
)
.min();
System.out.println(limit);
}
}

0 comments on commit f027d50

Please sign in to comment.