// Path: heuristicsearch/src/main/java/xyz/thepathfinder/routing/domain/CommodityAction.java
// @PlanningEntity(difficultyComparatorClass = NaiveDifficultyComparator.class)
// public abstract class CommodityAction implements RouteAction {
//     Transport transport;
//     CommodityAction nextCommodityAction;
//     RouteAction previousRouteAction;
//     Map<RouteAction, Long> distances = new HashMap<>();
//     Map<String, Integer> capacities;
//     int id;
// 
//     @Override
//     @AnchorShadowVariable(sourceVariableName = "previousRouteAction")
//     public Transport getTransport() {
//         return transport;
//     }
// 
//     public void setTransport(Transport transport) {
//         this.transport = transport;
//     }
// 
//     @Override
//     public CommodityAction getNextCommodityAction() {
//         return nextCommodityAction;
//     }
// 
//     @Override
//     public void setNextCommodityAction(CommodityAction commodityAction) {
//         nextCommodityAction = commodityAction;
//     }
// 
//     @PlanningVariable(valueRangeProviderRefs = {"transportRange", "commodityActionRange"},
//         graphType = PlanningVariableGraphType.CHAINED)
//     public RouteAction getPreviousRouteAction() {
//         return previousRouteAction;
//     }
// 
//     public void setPreviousRouteAction(RouteAction routeAction) {
//         previousRouteAction = routeAction;
//     }
// 
//     @Override
//     public long distanceTo(RouteAction routeAction) {
//         return distances.getOrDefault(routeAction, Long.MAX_VALUE);
//     }
// 
//     @Override
//     public void setDistance(RouteAction routeAction, long distance) {
//         distances.put(routeAction, distance);
//     }
// 
//     @Override
//     public int id() {
//         return id;
//     }
// 
//     @Override
//     public int getCapacity(String key) {
//         return capacities.getOrDefault(key, 0);
//     }
// }
// 
// Path: simulatedannealing/src/main/java/xyz/thepathfinder/routing/domain/Transport.java
// public class Transport implements CommodityStart {
//     final String name;
// 
//     public Transport(String name) {
//         this.name = name;
//     }
// 
//     @Override
//     public String getName() {
//         return name;
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// }


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import xyz.thepathfinder.routing.domain.CommodityAction;
import xyz.thepathfinder.routing.domain.Transport;
package xyz.thepathfinder.routing.service;



public class ProblemSolution {
    private List<List<Integer>> routes;

    public ProblemSolution() { }

    public static ProblemSolution create(Map<Transport, List<CommodityAction>> routes) {
// Path: heuristicsearch/src/main/java/xyz/thepathfinder/routing/domain/CommodityAction.java
// @PlanningEntity(difficultyComparatorClass = NaiveDifficultyComparator.class)
// public abstract class CommodityAction implements RouteAction {
//     Transport transport;
//     CommodityAction nextCommodityAction;
//     RouteAction previousRouteAction;
//     Map<RouteAction, Long> distances = new HashMap<>();
//     Map<String, Integer> capacities;
//     int id;
// 
//     @Override
//     @AnchorShadowVariable(sourceVariableName = "previousRouteAction")
//     public Transport getTransport() {
//         return transport;
//     }
// 
//     public void setTransport(Transport transport) {
//         this.transport = transport;
//     }
// 
//     @Override
//     public CommodityAction getNextCommodityAction() {
//         return nextCommodityAction;
//     }
// 
//     @Override
//     public void setNextCommodityAction(CommodityAction commodityAction) {
//         nextCommodityAction = commodityAction;
//     }
// 
//     @PlanningVariable(valueRangeProviderRefs = {"transportRange", "commodityActionRange"},
//         graphType = PlanningVariableGraphType.CHAINED)
//     public RouteAction getPreviousRouteAction() {
//         return previousRouteAction;
//     }
// 
//     public void setPreviousRouteAction(RouteAction routeAction) {
//         previousRouteAction = routeAction;
//     }
// 
//     @Override
//     public long distanceTo(RouteAction routeAction) {
//         return distances.getOrDefault(routeAction, Long.MAX_VALUE);
//     }
// 
//     @Override
//     public void setDistance(RouteAction routeAction, long distance) {
//         distances.put(routeAction, distance);
//     }
// 
//     @Override
//     public int id() {
//         return id;
//     }
// 
//     @Override
//     public int getCapacity(String key) {
//         return capacities.getOrDefault(key, 0);
//     }
// }
// 
// Path: simulatedannealing/src/main/java/xyz/thepathfinder/routing/domain/Transport.java
// public class Transport implements CommodityStart {
//     final String name;
// 
//     public Transport(String name) {
//         this.name = name;
//     }
// 
//     @Override
//     public String getName() {
//         return name;
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// }


// Path: simulatedannealing/src/main/java/xyz/thepathfinder/routing/service/ProblemSolution.java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import xyz.thepathfinder.routing.domain.CommodityAction;
import xyz.thepathfinder.routing.domain.Transport;

package xyz.thepathfinder.routing.service;



public class ProblemSolution {
    private List<List<Integer>> routes;

    public ProblemSolution() { }

    public static ProblemSolution create(Map<Transport, List<CommodityAction>> routes) {
        List<List<Integer>> integerRoutes = new ArrayList<>();