1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

internale experiments with insertionCalc

This commit is contained in:
Stefan Schroeder 2013-08-22 17:34:19 +02:00
parent 922f360fe4
commit f7ff7aeeca
16 changed files with 1541 additions and 6 deletions

View file

@ -0,0 +1,97 @@
package algorithms;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import util.Solutions;
import algorithms.HardConstraints.HardActivityLevelConstraint;
import algorithms.acceptors.AcceptNewIfBetterThanWorst;
import algorithms.selectors.SelectBest;
import basics.VehicleRoutingAlgorithm;
import basics.VehicleRoutingProblem;
import basics.VehicleRoutingProblemSolution;
import basics.algo.IterationStartsListener;
import basics.algo.SearchStrategy;
import basics.algo.SearchStrategyManager;
import basics.io.VrpXMLReader;
import basics.route.TourActivity;
public class BuildFastCVRPAlgoTest {
VehicleRoutingProblem vrp;
VehicleRoutingAlgorithm vra;
@Before
public void setup(){
VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
new VrpXMLReader(builder).read("src/test/resources/vrpnc1-jsprit.xml");
vrp = builder.build();
final StateManagerImpl stateManager = new StateManagerImpl();
HardActivityLevelConstraint hardActLevelConstraint = new HardActivityLevelConstraint() {
@Override
public boolean fulfilled(InsertionFacts iFacts, TourActivity act, double arrTime) {
return true;
}
};
MarginalsCalculus marginalCalculus = new MarginalsCalculusTriangleInequality(vrp.getTransportCosts(), vrp.getActivityCosts(), hardActLevelConstraint);
CalculatesServiceInsertion serviceInsertion = new CalculatesServiceInsertion(marginalCalculus, new HardConstraints.HardLoadConstraint(stateManager));
VehicleFleetManager fleetManager = new InfiniteVehicles(vrp.getVehicles());
JobInsertionCalculator finalServiceInsertion = new CalculatesVehTypeDepServiceInsertion(fleetManager, serviceInsertion);
// UpdateStates stateUpdater = new UpdateStates(stateManager, vrp.getTransportCosts(), vrp.getActivityCosts());
BestInsertion bestInsertion = new BestInsertion(finalServiceInsertion);
RuinRadial radial = new RuinRadial(vrp, 0.3, new JobDistanceAvgCosts(vrp.getTransportCosts()));
RuinRandom random = new RuinRandom(vrp, 0.5);
SearchStrategy randomStrategy = new SearchStrategy(new SelectBest(), new AcceptNewIfBetterThanWorst(1));
RuinAndRecreateModule randomModule = new RuinAndRecreateModule("randomRuin_bestInsertion", bestInsertion, random);
randomStrategy.addModule(randomModule);
SearchStrategy radialStrategy = new SearchStrategy(new SelectBest(), new AcceptNewIfBetterThanWorst(1));
RuinAndRecreateModule radialModule = new RuinAndRecreateModule("radialRuin_bestInsertion", bestInsertion, radial);
radialStrategy.addModule(radialModule);
SearchStrategyManager strategyManager = new SearchStrategyManager();
strategyManager.addStrategy(radialStrategy, 0.5);
strategyManager.addStrategy(randomStrategy, 0.5);
vra = new VehicleRoutingAlgorithm(vrp, strategyManager);
//listeners
IterationStartsListener clearStateManager = new IterationStartsListener() {
@Override
public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection<VehicleRoutingProblemSolution> solutions) {
stateManager.clear();
}
};
vra.getAlgorithmListeners().addListener(clearStateManager);
vra.getSearchStrategyManager().addSearchStrategyModuleListener(new RemoveEmptyVehicles(fleetManager));
vra.getSearchStrategyManager().addSearchStrategyModuleListener(new UdateCostsAtRouteLevel(stateManager, vrp.getTransportCosts(), vrp.getActivityCosts()));
vra.getSearchStrategyManager().addSearchStrategyModuleListener(new UpdateLoadAtRouteLevel(stateManager));
VehicleRoutingProblemSolution iniSolution = new CreateInitialSolution(bestInsertion).createInitialSolution(vrp);
System.out.println("ini: costs="+iniSolution.getCost()+";#routes="+iniSolution.getRoutes().size());
vra.addInitialSolution(iniSolution);
vra.setNuOfIterations(1000);
vra.setPrematureBreak(200);
}
@Test
public void testVRA(){
Collection<VehicleRoutingProblemSolution> solutions = vra.searchSolutions();
System.out.println("costs="+Solutions.getBest(solutions).getCost()+";#routes="+Solutions.getBest(solutions).getRoutes().size());
}
}

View file

@ -151,7 +151,7 @@ public class GendreauPostOptTest {
activityCosts = new ExampleActivityCostFunction();
CalculatesServiceInsertion standardServiceInsertion = new CalculatesServiceInsertion(new MarginalsCalculusDefault(cost, activityCosts, new HardConstraints.HardTimeWindowConstraint(states)), new HardConstraints.HardLoadConstraint(states));
CalculatesServiceInsertion standardServiceInsertion = new CalculatesServiceInsertion(new MarginalsCalculusTriangleInequality(cost, activityCosts, new HardConstraints.HardTimeWindowConstraint(states)), new HardConstraints.HardLoadConstraint(states));
CalculatesServiceInsertionConsideringFixCost withFixCost = new CalculatesServiceInsertionConsideringFixCost(standardServiceInsertion, states);
withFixCost.setWeightOfFixCost(1.2);

View file

@ -175,6 +175,18 @@ public class TestAlgorithmReader {
// TODO Auto-generated method stub
}
@Override
public void removeListener(RuinListener ruinListener) {
// TODO Auto-generated method stub
}
@Override
public Collection<RuinListener> getListeners() {
// TODO Auto-generated method stub
return null;
}
};

View file

@ -156,7 +156,7 @@ public class TestCalculatesServiceInsertion {
ExampleActivityCostFunction activityCosts = new ExampleActivityCostFunction();
serviceInsertion = new CalculatesServiceInsertion(new MarginalsCalculusDefault(costs, activityCosts, new HardConstraints.HardTimeWindowConstraint(states)), new HardConstraints.HardLoadConstraint(states));
serviceInsertion = new CalculatesServiceInsertion(new MarginalsCalculusTriangleInequality(costs, activityCosts, new HardConstraints.HardTimeWindowConstraint(states)), new HardConstraints.HardLoadConstraint(states));
stateUpdater = new UpdateStates(states, costs, activityCosts);

View file

@ -0,0 +1,635 @@
<?xml version="1.0" encoding="UTF-8"?>
<problem xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com vrp_xml_schema.xsd">
<problemType>
<fleetSize>INFINITE</fleetSize>
<fleetComposition>HOMOGENEOUS</fleetComposition>
</problemType>
<vehicles>
<vehicle>
<id>christophidesVehicle</id>
<typeId>christophidesType</typeId>
<location>
<id>[x=30.0][y=40.0]</id>
<coord x="30.0" y="40.0"/>
</location>
<timeSchedule>
<start>0.0</start>
<end>999999.0</end>
</timeSchedule>
</vehicle>
</vehicles>
<vehicleTypes>
<type>
<id>christophidesType</id>
<capacity>160</capacity>
<costs>
<fixed>0.0</fixed>
<distance>1.0</distance>
<time>0.0</time>
</costs>
</type>
</vehicleTypes>
<services>
<service id="35" type="service">
<locationId>[x=62.0][y=63.0]</locationId>
<coord x="62.0" y="63.0"/>
<capacity-demand>17</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="36" type="service">
<locationId>[x=63.0][y=69.0]</locationId>
<coord x="63.0" y="69.0"/>
<capacity-demand>6</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="33" type="service">
<locationId>[x=46.0][y=10.0]</locationId>
<coord x="46.0" y="10.0"/>
<capacity-demand>23</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="34" type="service">
<locationId>[x=61.0][y=33.0]</locationId>
<coord x="61.0" y="33.0"/>
<capacity-demand>26</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="39" type="service">
<locationId>[x=59.0][y=15.0]</locationId>
<coord x="59.0" y="15.0"/>
<capacity-demand>14</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="37" type="service">
<locationId>[x=32.0][y=22.0]</locationId>
<coord x="32.0" y="22.0"/>
<capacity-demand>9</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="38" type="service">
<locationId>[x=45.0][y=35.0]</locationId>
<coord x="45.0" y="35.0"/>
<capacity-demand>15</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="43" type="service">
<locationId>[x=5.0][y=64.0]</locationId>
<coord x="5.0" y="64.0"/>
<capacity-demand>11</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="42" type="service">
<locationId>[x=21.0][y=10.0]</locationId>
<coord x="21.0" y="10.0"/>
<capacity-demand>13</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="41" type="service">
<locationId>[x=10.0][y=17.0]</locationId>
<coord x="10.0" y="17.0"/>
<capacity-demand>27</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="40" type="service">
<locationId>[x=5.0][y=6.0]</locationId>
<coord x="5.0" y="6.0"/>
<capacity-demand>7</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="22" type="service">
<locationId>[x=42.0][y=57.0]</locationId>
<coord x="42.0" y="57.0"/>
<capacity-demand>8</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="23" type="service">
<locationId>[x=16.0][y=57.0]</locationId>
<coord x="16.0" y="57.0"/>
<capacity-demand>16</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="24" type="service">
<locationId>[x=8.0][y=52.0]</locationId>
<coord x="8.0" y="52.0"/>
<capacity-demand>10</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="25" type="service">
<locationId>[x=7.0][y=38.0]</locationId>
<coord x="7.0" y="38.0"/>
<capacity-demand>28</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="26" type="service">
<locationId>[x=27.0][y=68.0]</locationId>
<coord x="27.0" y="68.0"/>
<capacity-demand>7</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="27" type="service">
<locationId>[x=30.0][y=48.0]</locationId>
<coord x="30.0" y="48.0"/>
<capacity-demand>15</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="28" type="service">
<locationId>[x=43.0][y=67.0]</locationId>
<coord x="43.0" y="67.0"/>
<capacity-demand>14</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="29" type="service">
<locationId>[x=58.0][y=48.0]</locationId>
<coord x="58.0" y="48.0"/>
<capacity-demand>6</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="3" type="service">
<locationId>[x=52.0][y=64.0]</locationId>
<coord x="52.0" y="64.0"/>
<capacity-demand>16</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="2" type="service">
<locationId>[x=49.0][y=49.0]</locationId>
<coord x="49.0" y="49.0"/>
<capacity-demand>30</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="1" type="service">
<locationId>[x=37.0][y=52.0]</locationId>
<coord x="37.0" y="52.0"/>
<capacity-demand>7</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="7" type="service">
<locationId>[x=17.0][y=63.0]</locationId>
<coord x="17.0" y="63.0"/>
<capacity-demand>19</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="30" type="service">
<locationId>[x=58.0][y=27.0]</locationId>
<coord x="58.0" y="27.0"/>
<capacity-demand>19</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="6" type="service">
<locationId>[x=21.0][y=47.0]</locationId>
<coord x="21.0" y="47.0"/>
<capacity-demand>15</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="5" type="service">
<locationId>[x=40.0][y=30.0]</locationId>
<coord x="40.0" y="30.0"/>
<capacity-demand>21</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="32" type="service">
<locationId>[x=38.0][y=46.0]</locationId>
<coord x="38.0" y="46.0"/>
<capacity-demand>12</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="4" type="service">
<locationId>[x=20.0][y=26.0]</locationId>
<coord x="20.0" y="26.0"/>
<capacity-demand>9</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="31" type="service">
<locationId>[x=37.0][y=69.0]</locationId>
<coord x="37.0" y="69.0"/>
<capacity-demand>11</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="9" type="service">
<locationId>[x=52.0][y=33.0]</locationId>
<coord x="52.0" y="33.0"/>
<capacity-demand>11</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="8" type="service">
<locationId>[x=31.0][y=62.0]</locationId>
<coord x="31.0" y="62.0"/>
<capacity-demand>23</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="19" type="service">
<locationId>[x=13.0][y=13.0]</locationId>
<coord x="13.0" y="13.0"/>
<capacity-demand>9</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="17" type="service">
<locationId>[x=27.0][y=23.0]</locationId>
<coord x="27.0" y="23.0"/>
<capacity-demand>3</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="18" type="service">
<locationId>[x=17.0][y=33.0]</locationId>
<coord x="17.0" y="33.0"/>
<capacity-demand>41</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="15" type="service">
<locationId>[x=36.0][y=16.0]</locationId>
<coord x="36.0" y="16.0"/>
<capacity-demand>10</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="16" type="service">
<locationId>[x=52.0][y=41.0]</locationId>
<coord x="52.0" y="41.0"/>
<capacity-demand>15</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="13" type="service">
<locationId>[x=5.0][y=25.0]</locationId>
<coord x="5.0" y="25.0"/>
<capacity-demand>23</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="14" type="service">
<locationId>[x=12.0][y=42.0]</locationId>
<coord x="12.0" y="42.0"/>
<capacity-demand>21</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="11" type="service">
<locationId>[x=42.0][y=41.0]</locationId>
<coord x="42.0" y="41.0"/>
<capacity-demand>19</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="12" type="service">
<locationId>[x=31.0][y=32.0]</locationId>
<coord x="31.0" y="32.0"/>
<capacity-demand>29</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="21" type="service">
<locationId>[x=62.0][y=42.0]</locationId>
<coord x="62.0" y="42.0"/>
<capacity-demand>8</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="20" type="service">
<locationId>[x=57.0][y=58.0]</locationId>
<coord x="57.0" y="58.0"/>
<capacity-demand>28</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="49" type="service">
<locationId>[x=48.0][y=28.0]</locationId>
<coord x="48.0" y="28.0"/>
<capacity-demand>18</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="48" type="service">
<locationId>[x=25.0][y=55.0]</locationId>
<coord x="25.0" y="55.0"/>
<capacity-demand>17</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="45" type="service">
<locationId>[x=39.0][y=10.0]</locationId>
<coord x="39.0" y="10.0"/>
<capacity-demand>10</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="44" type="service">
<locationId>[x=30.0][y=15.0]</locationId>
<coord x="30.0" y="15.0"/>
<capacity-demand>16</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="47" type="service">
<locationId>[x=25.0][y=32.0]</locationId>
<coord x="25.0" y="32.0"/>
<capacity-demand>25</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="46" type="service">
<locationId>[x=32.0][y=39.0]</locationId>
<coord x="32.0" y="39.0"/>
<capacity-demand>5</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="10" type="service">
<locationId>[x=51.0][y=21.0]</locationId>
<coord x="51.0" y="21.0"/>
<capacity-demand>5</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
<service id="50" type="service">
<locationId>[x=56.0][y=37.0]</locationId>
<coord x="56.0" y="37.0"/>
<capacity-demand>10</capacity-demand>
<duration>0.0</duration>
<timeWindows>
<timeWindow>
<start>0.0</start>
<end>1.7976931348623157E308</end>
</timeWindow>
</timeWindows>
</service>
</services>
</problem>