/** * */ package iamrescue.routing.costs; import iamrescue.belief.IAMWorldModel; import iamrescue.execution.command.IPath.BlockedState; import iamrescue.util.PositionXY; import rescuecore2.standard.entities.Area; /** * @author Sebastian * */ public class PassableRoutingCostFunction extends AbstractRoutingCostFunction { /* * public static final PassableRoadCostFunction DEFAULT_TEST_INSTANCE = new * PassableRoadCostFunction( 0, 1, Double.POSITIVE_INFINITY); */ public static final double DEFAULT_FREE_COST = 0d; public static final double DEFAULT_UNKNOWN_COST = 1d; public static final double DEFAULT_BLOCKED_COST = Double.POSITIVE_INFINITY; private double freeCost; private double unknownCost; private double blockedCost; private IAMWorldModel worldModel; //private boolean pessimistic; public PassableRoutingCostFunction(IAMWorldModel worldModel) { this(DEFAULT_FREE_COST, DEFAULT_UNKNOWN_COST, DEFAULT_BLOCKED_COST, worldModel);//, false); } public PassableRoutingCostFunction(double freeCost, double unknownCost, double blockedCost, IAMWorldModel worldModel){//, boolean pessimistic) { super(); this.worldModel = worldModel; this.freeCost = freeCost; this.unknownCost = unknownCost; this.blockedCost = blockedCost; //this.pessimistic = pessimistic; } @Override public double getTravelCost(Area area, PositionXY from, PositionXY to) { BlockedState state = BlockCheckerUtil.getBlockedState(area, worldModel, from, to); if (state.equals(BlockedState.BLOCKED)) { return blockedCost; } else if (state.equals(BlockedState.UNKNOWN)) { return unknownCost; } else { return freeCost; } } }