All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.routing.algorithm.transferoptimization.services.TransferOptimizedFilterFactory Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version
package org.opentripplanner.routing.algorithm.transferoptimization.services;

import java.util.ArrayList;
import java.util.List;
import java.util.function.ToIntFunction;
import org.opentripplanner.routing.algorithm.transferoptimization.model.MinCostFilterChain;
import org.opentripplanner.routing.algorithm.transferoptimization.model.OptimizedPathTail;
import org.opentripplanner.transit.raptor.api.transit.RaptorTripSchedule;

public class TransferOptimizedFilterFactory {

    public static  MinCostFilterChain> filter(
            boolean transferPriority,
            boolean optimizeWaitTime
    ) {
        return new TransferOptimizedFilterFactory().create(transferPriority, optimizeWaitTime);
    }

    private MinCostFilterChain> create(
            boolean transferPriority, boolean optimizeWaitTime
    ) {
        List>> filters = new ArrayList<>(3);

        if(transferPriority) {
            filters.add(OptimizedPathTail::transferPriorityCost);
        }

        if(optimizeWaitTime) {
            filters.add(OptimizedPathTail::generalizedCostWaitTimeOptimized);
        }
        else {
            filters.add(OptimizedPathTail::generalizedCost);
        }

        filters.add(OptimizedPathTail::breakTieCost);

        return new MinCostFilterChain<>(filters);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy