From aaaf994c2f745c2277daebf102c24287a1145703 Mon Sep 17 00:00:00 2001 From: Niels Wouda Date: Sun, 16 Feb 2020 19:03:38 +0100 Subject: [PATCH] Heuristic skeleton (#2) * Heuristic skeleton * I/O, data structures * Data files (small instances) * Problem data, cost computation * Solution output, cost computation * Solution files in gitignore * Travis run small instances, check feasibility Co-authored-by: EmielK <42814879+EmielK@users.noreply.github.com> --- .gitignore | 6 +- .travis.yml | 3 +- Pipfile | 2 +- Pipfile.lock | 19 +----- README.md | 26 +++++++- data/input_file_structure.txt | 13 ++++ data/small_1.csv | 1 + data/small_10.csv | 1 + data/small_11.csv | 1 + data/small_12.csv | 1 + data/small_13.csv | 1 + data/small_14.csv | 1 + data/small_15.csv | 1 + data/small_16.csv | 1 + data/small_17.csv | 1 + data/small_18.csv | 1 + data/small_19.csv | 1 + data/small_2.csv | 1 + data/small_20.csv | 1 + data/small_21.csv | 1 + data/small_22.csv | 1 + data/small_23.csv | 1 + data/small_24.csv | 1 + data/small_25.csv | 1 + data/small_26.csv | 1 + data/small_27.csv | 1 + data/small_28.csv | 1 + data/small_29.csv | 1 + data/small_3.csv | 1 + data/small_30.csv | 1 + data/small_31.csv | 1 + data/small_32.csv | 1 + data/small_33.csv | 1 + data/small_34.csv | 1 + data/small_35.csv | 1 + data/small_36.csv | 1 + data/small_37.csv | 1 + data/small_38.csv | 1 + data/small_39.csv | 1 + data/small_4.csv | 1 + data/small_40.csv | 1 + data/small_41.csv | 1 + data/small_42.csv | 1 + data/small_43.csv | 1 + data/small_44.csv | 1 + data/small_45.csv | 1 + data/small_46.csv | 1 + data/small_47.csv | 1 + data/small_48.csv | 1 + data/small_5.csv | 1 + data/small_6.csv | 1 + data/small_7.csv | 1 + data/small_8.csv | 1 + data/small_9.csv | 1 + heuristic/__main__.py | 35 +++++++++++ heuristic/classes/Item.py | 43 +++++++++++++ heuristic/classes/Problem.py | 69 +++++++++++++++++++++ heuristic/classes/Route.py | 53 ++++++++++++++++ heuristic/classes/Solution.py | 82 +++++++++++++++++++++++++ heuristic/classes/Stack.py | 72 ++++++++++++++++++++++ heuristic/classes/Stacks.py | 73 ++++++++++++++++++++++ heuristic/classes/__init__.py | 6 ++ heuristic/constants.py | 2 + heuristic/destroy_operators/__init__.py | 9 +++ heuristic/initial_solution.py | 30 +++++++++ heuristic/repair_operators/__init__.py | 9 +++ scripts/run_small.sh | 1 + scripts/validate.sh | 1 + solutions/output_file_structure.txt | 16 +++++ validator/__main__.py | 6 ++ validator/rules/__init__.py | 5 ++ 71 files changed, 606 insertions(+), 23 deletions(-) create mode 100644 data/input_file_structure.txt create mode 100644 data/small_1.csv create mode 100644 data/small_10.csv create mode 100644 data/small_11.csv create mode 100644 data/small_12.csv create mode 100644 data/small_13.csv create mode 100644 data/small_14.csv create mode 100644 data/small_15.csv create mode 100644 data/small_16.csv create mode 100644 data/small_17.csv create mode 100644 data/small_18.csv create mode 100644 data/small_19.csv create mode 100644 data/small_2.csv create mode 100644 data/small_20.csv create mode 100644 data/small_21.csv create mode 100644 data/small_22.csv create mode 100644 data/small_23.csv create mode 100644 data/small_24.csv create mode 100644 data/small_25.csv create mode 100644 data/small_26.csv create mode 100644 data/small_27.csv create mode 100644 data/small_28.csv create mode 100644 data/small_29.csv create mode 100644 data/small_3.csv create mode 100644 data/small_30.csv create mode 100644 data/small_31.csv create mode 100644 data/small_32.csv create mode 100644 data/small_33.csv create mode 100644 data/small_34.csv create mode 100644 data/small_35.csv create mode 100644 data/small_36.csv create mode 100644 data/small_37.csv create mode 100644 data/small_38.csv create mode 100644 data/small_39.csv create mode 100644 data/small_4.csv create mode 100644 data/small_40.csv create mode 100644 data/small_41.csv create mode 100644 data/small_42.csv create mode 100644 data/small_43.csv create mode 100644 data/small_44.csv create mode 100644 data/small_45.csv create mode 100644 data/small_46.csv create mode 100644 data/small_47.csv create mode 100644 data/small_48.csv create mode 100644 data/small_5.csv create mode 100644 data/small_6.csv create mode 100644 data/small_7.csv create mode 100644 data/small_8.csv create mode 100644 data/small_9.csv create mode 100644 heuristic/classes/Item.py create mode 100644 heuristic/classes/Problem.py create mode 100644 heuristic/classes/Route.py create mode 100644 heuristic/classes/Solution.py create mode 100644 heuristic/classes/Stack.py create mode 100644 heuristic/classes/Stacks.py create mode 100644 heuristic/classes/__init__.py create mode 100644 heuristic/constants.py create mode 100644 heuristic/destroy_operators/__init__.py create mode 100644 heuristic/initial_solution.py create mode 100644 heuristic/repair_operators/__init__.py create mode 100755 scripts/run_small.sh create mode 100755 scripts/validate.sh create mode 100644 solutions/output_file_structure.txt create mode 100644 validator/rules/__init__.py diff --git a/.gitignore b/.gitignore index 447b833c..64cf147c 100644 --- a/.gitignore +++ b/.gitignore @@ -408,11 +408,11 @@ TSWLatexianTemp* # Compiled documents *.pdf -# Outputted CSV files -*.csv - # Code files for handing in *.zip # GNU plot sutff *.pgf-plot.* + +# Solution outputs +solutions/*.csv diff --git a/.travis.yml b/.travis.yml index 955fb2ea..1ef9c22b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,5 +19,6 @@ branches: # since the master branch is the only one where PRs are - master script: - - pytest # test runner + - scripts/run_small.sh # tests small instances + - scripts/validate.sh # and verifies feasibility - mypy ./ || true # static code analyser diff --git a/Pipfile b/Pipfile index 94aeac46..0d7bbdb8 100644 --- a/Pipfile +++ b/Pipfile @@ -14,4 +14,4 @@ numpy = ">=1.18" alns = ">=1.1" [requires] -python_version = "3.7" +python_version = ">=3.7" diff --git a/Pipfile.lock b/Pipfile.lock index 7d949f11..42e70699 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "3ced188f1a45af7b14bf36753026b5ddeddaf20d88db1b2513c2714e75a3acac" + "sha256": "5f961db7e5fd4d9e46d45a0f66378f7e84c8703bf5496360927a487f9d00cadd" }, "pipfile-spec": 6, "requires": { - "python_version": "3.7" + "python_version": ">=3.7" }, "sources": [ { @@ -240,14 +240,6 @@ ], "version": "==5.0.3" }, - "importlib-metadata": { - "hashes": [ - "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302", - "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b" - ], - "markers": "python_version < '3.8'", - "version": "==1.5.0" - }, "more-itertools": { "hashes": [ "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", @@ -373,13 +365,6 @@ "sha256:f28b3e8a6483e5d49e7f8949ac1a78314e740333ae305b4ba5defd3e74fb37a8" ], "version": "==0.1.8" - }, - "zipp": { - "hashes": [ - "sha256:ccc94ed0909b58ffe34430ea5451f07bc0c76467d7081619a454bf5c98b89e28", - "sha256:feae2f18633c32fc71f2de629bfb3bd3c9325cd4419642b1f1da42ee488d9b98" - ], - "version": "==2.1.0" } } } diff --git a/README.md b/README.md index d221778d..53a8623e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,29 @@ -# OR-Analysis +# VRPSPD-H (OR Analysis of Complex Systems) [![Build Status](https://travis-ci.com/N-Wouda/OR-Analysis.svg?branch=master)](https://travis-ci.com/N-Wouda/OR-Analysis) +We study the vehicle routing problem with simultaneous pickup and delivery and +handling costs. A fleet of vehicles operates from a single depot to service all +customers, which need a a delivery or a pickup, but usually both. All delivery +items originate from the depot, and all pickup items go to the depot. The items +on the vehicles are organized as linear stacks where only the last loaded item +of each stack is accessible (LIFO). Handling operations are required if the +delivery items are not the last loaded ones. + +We take exactly the situation as described in Hornstra et al. (2020). With one +exception: there are multiple linear stacks. The last item of each stack is +directly accessible from the rear of the truck, regardless of the length of this +stack and regardless the length of the other stacks. The truck capacity is Q, +and there are σ stacks, hence maximum length of a stack is Q/σ. When loading +items, it can be decided which stack(s) to put the item(s) in. Also when +reconfiguring, a choice of stack must be made. + +## How to use + TODO + +## References + +* Hornstra, Richard P., Allyson Silva, Kees Jan Roodbergen, and Leandro C. + Coelho. 2020. "The vehicle routing problem with simultaneous pickup and + delivery and handling costs". _Computers and Operations Research_. 115. diff --git a/data/input_file_structure.txt b/data/input_file_structure.txt new file mode 100644 index 00000000..7623053d --- /dev/null +++ b/data/input_file_structure.txt @@ -0,0 +1,13 @@ +In the input file, each line represents an instance and is formatted as follows: + +idx, Q, N, h, sigma, c00, ..., c0N, c10, ..., c1N, ..., cN0, ..., cNN, d1, p1, ..., dN, pN + +The variables have the following meaning: +idx Instance index +Q Vehicle capacity +N Number of customers +h Handling cost (h_p = h_d = h) +sigma Number of stacks +cij Cost to travel from node i to node j (Node 0 is the depot) +di Delivery demand of customer i +pi Pickup demand of customer i diff --git a/data/small_1.csv b/data/small_1.csv new file mode 100644 index 00000000..5fa52366 --- /dev/null +++ b/data/small_1.csv @@ -0,0 +1 @@ +1,823.6853,5,2.0,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343 diff --git a/data/small_10.csv b/data/small_10.csv new file mode 100644 index 00000000..7ff1e575 --- /dev/null +++ b/data/small_10.csv @@ -0,0 +1 @@ +10,823.6853,15,0.67,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,39.29497,52.73182,5.783396,42.95682,41.91922,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,24.06189,67.80252,20.37746,58.41801,39.02419,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,75.15034,33.67233,36.65318,20.63058,74.98923,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,77.53092,53.36174,48.47014,40.73839,89.03957,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,92.2929,12.58461,48.59612,10.42901,78.06541,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,12.91082,101.2347,54.22102,92.4635,50.76169,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,56.03117,38.2975,14.75512,26.7642,54.06221,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,70.37593,41.31034,35.48679,28.05489,75.45722,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,84.11639,8.830629,39.83695,12.99884,62.03414,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,89.26553,12.45924,45.56899,7.466078,75.44701,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,68.49499,30.39578,27.78137,29.64953,40.42069,39.29497,24.06189,75.15034,77.53092,92.2929,12.91082,56.03117,70.37593,84.11639,89.26553,68.49499,0.0,91.85694,44.41932,82.203,50.4694,52.73182,67.80252,33.67233,53.36174,12.58461,101.2347,38.2975,41.31034,8.830629,12.45924,30.39578,91.85694,0.0,47.43928,13.36524,70.81613,5.783396,20.37746,36.65318,48.47014,48.59612,54.22102,14.75512,35.48679,39.83695,45.56899,27.78137,44.41932,47.43928,0.0,38.26534,40.67843,42.95682,58.41801,20.63058,40.73839,10.42901,92.4635,26.7642,28.05489,12.99884,7.466078,29.64953,82.203,13.36524,38.26534,0.0,68.3121,41.91922,39.02419,74.98923,89.03957,78.06541,50.76169,54.06221,75.45722,62.03414,75.44701,40.42069,50.4694,70.81613,40.67843,68.3121,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996,55.82099,59.78159,34.89624,31.65805,89.47394,104.387,14.24304,16.80059,80.43044,108.8372 diff --git a/data/small_11.csv b/data/small_11.csv new file mode 100644 index 00000000..2ef9bb58 --- /dev/null +++ b/data/small_11.csv @@ -0,0 +1 @@ +11,823.6853,15,1.33,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,39.29497,52.73182,5.783396,42.95682,41.91922,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,24.06189,67.80252,20.37746,58.41801,39.02419,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,75.15034,33.67233,36.65318,20.63058,74.98923,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,77.53092,53.36174,48.47014,40.73839,89.03957,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,92.2929,12.58461,48.59612,10.42901,78.06541,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,12.91082,101.2347,54.22102,92.4635,50.76169,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,56.03117,38.2975,14.75512,26.7642,54.06221,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,70.37593,41.31034,35.48679,28.05489,75.45722,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,84.11639,8.830629,39.83695,12.99884,62.03414,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,89.26553,12.45924,45.56899,7.466078,75.44701,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,68.49499,30.39578,27.78137,29.64953,40.42069,39.29497,24.06189,75.15034,77.53092,92.2929,12.91082,56.03117,70.37593,84.11639,89.26553,68.49499,0.0,91.85694,44.41932,82.203,50.4694,52.73182,67.80252,33.67233,53.36174,12.58461,101.2347,38.2975,41.31034,8.830629,12.45924,30.39578,91.85694,0.0,47.43928,13.36524,70.81613,5.783396,20.37746,36.65318,48.47014,48.59612,54.22102,14.75512,35.48679,39.83695,45.56899,27.78137,44.41932,47.43928,0.0,38.26534,40.67843,42.95682,58.41801,20.63058,40.73839,10.42901,92.4635,26.7642,28.05489,12.99884,7.466078,29.64953,82.203,13.36524,38.26534,0.0,68.3121,41.91922,39.02419,74.98923,89.03957,78.06541,50.76169,54.06221,75.45722,62.03414,75.44701,40.42069,50.4694,70.81613,40.67843,68.3121,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996,55.82099,59.78159,34.89624,31.65805,89.47394,104.387,14.24304,16.80059,80.43044,108.8372 diff --git a/data/small_12.csv b/data/small_12.csv new file mode 100644 index 00000000..00bd064d --- /dev/null +++ b/data/small_12.csv @@ -0,0 +1 @@ +12,823.6853,15,1.33,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,39.29497,52.73182,5.783396,42.95682,41.91922,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,24.06189,67.80252,20.37746,58.41801,39.02419,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,75.15034,33.67233,36.65318,20.63058,74.98923,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,77.53092,53.36174,48.47014,40.73839,89.03957,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,92.2929,12.58461,48.59612,10.42901,78.06541,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,12.91082,101.2347,54.22102,92.4635,50.76169,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,56.03117,38.2975,14.75512,26.7642,54.06221,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,70.37593,41.31034,35.48679,28.05489,75.45722,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,84.11639,8.830629,39.83695,12.99884,62.03414,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,89.26553,12.45924,45.56899,7.466078,75.44701,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,68.49499,30.39578,27.78137,29.64953,40.42069,39.29497,24.06189,75.15034,77.53092,92.2929,12.91082,56.03117,70.37593,84.11639,89.26553,68.49499,0.0,91.85694,44.41932,82.203,50.4694,52.73182,67.80252,33.67233,53.36174,12.58461,101.2347,38.2975,41.31034,8.830629,12.45924,30.39578,91.85694,0.0,47.43928,13.36524,70.81613,5.783396,20.37746,36.65318,48.47014,48.59612,54.22102,14.75512,35.48679,39.83695,45.56899,27.78137,44.41932,47.43928,0.0,38.26534,40.67843,42.95682,58.41801,20.63058,40.73839,10.42901,92.4635,26.7642,28.05489,12.99884,7.466078,29.64953,82.203,13.36524,38.26534,0.0,68.3121,41.91922,39.02419,74.98923,89.03957,78.06541,50.76169,54.06221,75.45722,62.03414,75.44701,40.42069,50.4694,70.81613,40.67843,68.3121,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996,55.82099,59.78159,34.89624,31.65805,89.47394,104.387,14.24304,16.80059,80.43044,108.8372 diff --git a/data/small_13.csv b/data/small_13.csv new file mode 100644 index 00000000..d198bb6e --- /dev/null +++ b/data/small_13.csv @@ -0,0 +1 @@ +13,289.6889,5,2.0,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204 diff --git a/data/small_14.csv b/data/small_14.csv new file mode 100644 index 00000000..128c2a0b --- /dev/null +++ b/data/small_14.csv @@ -0,0 +1 @@ +14,289.6889,5,2.0,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204 diff --git a/data/small_15.csv b/data/small_15.csv new file mode 100644 index 00000000..bb37d0d0 --- /dev/null +++ b/data/small_15.csv @@ -0,0 +1 @@ +15,289.6889,5,4.0,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204 diff --git a/data/small_16.csv b/data/small_16.csv new file mode 100644 index 00000000..d1a88244 --- /dev/null +++ b/data/small_16.csv @@ -0,0 +1 @@ +16,289.6889,5,4.0,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204 diff --git a/data/small_17.csv b/data/small_17.csv new file mode 100644 index 00000000..b95b8e31 --- /dev/null +++ b/data/small_17.csv @@ -0,0 +1 @@ +17,289.6889,10,1.0,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379 diff --git a/data/small_18.csv b/data/small_18.csv new file mode 100644 index 00000000..80ed4df5 --- /dev/null +++ b/data/small_18.csv @@ -0,0 +1 @@ +18,289.6889,10,1.0,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379 diff --git a/data/small_19.csv b/data/small_19.csv new file mode 100644 index 00000000..f7317eb5 --- /dev/null +++ b/data/small_19.csv @@ -0,0 +1 @@ +19,289.6889,10,2.0,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379 diff --git a/data/small_2.csv b/data/small_2.csv new file mode 100644 index 00000000..179c0cd4 --- /dev/null +++ b/data/small_2.csv @@ -0,0 +1 @@ +2,823.6853,5,2.0,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343 diff --git a/data/small_20.csv b/data/small_20.csv new file mode 100644 index 00000000..d3e89c79 --- /dev/null +++ b/data/small_20.csv @@ -0,0 +1 @@ +20,289.6889,10,2.0,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379 diff --git a/data/small_21.csv b/data/small_21.csv new file mode 100644 index 00000000..afd738b4 --- /dev/null +++ b/data/small_21.csv @@ -0,0 +1 @@ +21,289.6889,15,0.67,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,62.56392,27.79371,36.21957,65.6129,48.11826,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,42.58607,70.41884,64.23431,41.07992,95.96692,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,29.14667,61.80606,64.52066,31.53798,80.25231,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,8.968137,81.37206,84.8668,12.71415,96.89707,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,103.0467,34.28938,13.62187,104.2677,63.05278,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,86.25063,36.74168,57.7093,90.84241,23.07993,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,24.70062,79.20148,77.26091,22.81686,100.6656,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,16.69639,77.88753,78.74498,16.85199,96.66956,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,76.03257,43.72866,28.84058,76.35509,74.65391,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,11.67116,82.49362,88.0017,17.14815,95.3948,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,80.07781,28.44108,15.23269,81.43963,59.59771,62.56392,42.58607,29.14667,8.968137,103.0467,86.25063,24.70062,16.69639,76.03257,11.67116,80.07781,0.0,90.33997,93.58504,5.606254,105.4594,27.79371,70.41884,61.80606,81.37206,34.28938,36.74168,79.20148,77.88753,43.72866,82.49362,28.44108,90.33997,0.0,21.50943,93.27466,31.35843,36.21957,64.23431,64.52066,84.8668,13.62187,57.7093,77.26091,78.74498,28.84058,88.0017,15.23269,93.58504,21.50943,0.0,95.35499,51.89618,65.6129,41.07992,31.53798,12.71415,104.2677,90.84241,22.81686,16.85199,76.35509,17.14815,81.43963,5.606254,93.27466,95.35499,0.0,109.5773,48.11826,95.96692,80.25231,96.89707,63.05278,23.07993,100.6656,96.66956,74.65391,95.3948,59.59771,105.4594,31.35843,51.89618,109.5773,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379,84.54607,83.52561,15.64283,17.49808,37.42681,49.08234,10.31011,10.61161,94.85464,127.4955 diff --git a/data/small_22.csv b/data/small_22.csv new file mode 100644 index 00000000..35eb9375 --- /dev/null +++ b/data/small_22.csv @@ -0,0 +1 @@ +22,289.6889,15,0.67,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,62.56392,27.79371,36.21957,65.6129,48.11826,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,42.58607,70.41884,64.23431,41.07992,95.96692,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,29.14667,61.80606,64.52066,31.53798,80.25231,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,8.968137,81.37206,84.8668,12.71415,96.89707,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,103.0467,34.28938,13.62187,104.2677,63.05278,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,86.25063,36.74168,57.7093,90.84241,23.07993,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,24.70062,79.20148,77.26091,22.81686,100.6656,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,16.69639,77.88753,78.74498,16.85199,96.66956,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,76.03257,43.72866,28.84058,76.35509,74.65391,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,11.67116,82.49362,88.0017,17.14815,95.3948,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,80.07781,28.44108,15.23269,81.43963,59.59771,62.56392,42.58607,29.14667,8.968137,103.0467,86.25063,24.70062,16.69639,76.03257,11.67116,80.07781,0.0,90.33997,93.58504,5.606254,105.4594,27.79371,70.41884,61.80606,81.37206,34.28938,36.74168,79.20148,77.88753,43.72866,82.49362,28.44108,90.33997,0.0,21.50943,93.27466,31.35843,36.21957,64.23431,64.52066,84.8668,13.62187,57.7093,77.26091,78.74498,28.84058,88.0017,15.23269,93.58504,21.50943,0.0,95.35499,51.89618,65.6129,41.07992,31.53798,12.71415,104.2677,90.84241,22.81686,16.85199,76.35509,17.14815,81.43963,5.606254,93.27466,95.35499,0.0,109.5773,48.11826,95.96692,80.25231,96.89707,63.05278,23.07993,100.6656,96.66956,74.65391,95.3948,59.59771,105.4594,31.35843,51.89618,109.5773,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379,84.54607,83.52561,15.64283,17.49808,37.42681,49.08234,10.31011,10.61161,94.85464,127.4955 diff --git a/data/small_23.csv b/data/small_23.csv new file mode 100644 index 00000000..11ed531a --- /dev/null +++ b/data/small_23.csv @@ -0,0 +1 @@ +23,289.6889,15,1.33,1,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,62.56392,27.79371,36.21957,65.6129,48.11826,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,42.58607,70.41884,64.23431,41.07992,95.96692,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,29.14667,61.80606,64.52066,31.53798,80.25231,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,8.968137,81.37206,84.8668,12.71415,96.89707,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,103.0467,34.28938,13.62187,104.2677,63.05278,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,86.25063,36.74168,57.7093,90.84241,23.07993,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,24.70062,79.20148,77.26091,22.81686,100.6656,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,16.69639,77.88753,78.74498,16.85199,96.66956,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,76.03257,43.72866,28.84058,76.35509,74.65391,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,11.67116,82.49362,88.0017,17.14815,95.3948,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,80.07781,28.44108,15.23269,81.43963,59.59771,62.56392,42.58607,29.14667,8.968137,103.0467,86.25063,24.70062,16.69639,76.03257,11.67116,80.07781,0.0,90.33997,93.58504,5.606254,105.4594,27.79371,70.41884,61.80606,81.37206,34.28938,36.74168,79.20148,77.88753,43.72866,82.49362,28.44108,90.33997,0.0,21.50943,93.27466,31.35843,36.21957,64.23431,64.52066,84.8668,13.62187,57.7093,77.26091,78.74498,28.84058,88.0017,15.23269,93.58504,21.50943,0.0,95.35499,51.89618,65.6129,41.07992,31.53798,12.71415,104.2677,90.84241,22.81686,16.85199,76.35509,17.14815,81.43963,5.606254,93.27466,95.35499,0.0,109.5773,48.11826,95.96692,80.25231,96.89707,63.05278,23.07993,100.6656,96.66956,74.65391,95.3948,59.59771,105.4594,31.35843,51.89618,109.5773,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379,84.54607,83.52561,15.64283,17.49808,37.42681,49.08234,10.31011,10.61161,94.85464,127.4955 diff --git a/data/small_24.csv b/data/small_24.csv new file mode 100644 index 00000000..d7c7358a --- /dev/null +++ b/data/small_24.csv @@ -0,0 +1 @@ +24,289.6889,15,1.33,2,0.0,48.03687,34.31213,53.59784,48.96599,37.7846,53.17813,50.65894,37.75134,54.80382,28.90492,62.56392,27.79371,36.21957,65.6129,48.11826,48.03687,0.0,27.39653,37.31229,69.68199,84.42676,18.27571,26.40792,39.0707,44.98622,49.01825,42.58607,70.41884,64.23431,41.07992,95.96692,34.31213,27.39653,0.0,20.34896,74.43166,64.0299,21.53931,16.49811,49.43645,24.33503,51.40165,29.14667,61.80606,64.52066,31.53798,80.25231,53.59784,37.31229,20.34896,0.0,94.59122,78.16093,20.97801,11.0608,68.28461,8.33583,71.57875,8.968137,81.37206,84.8668,12.71415,96.89707,48.96599,69.68199,74.43166,94.59122,0.0,70.92557,84.6214,87.44151,31.01253,98.48151,23.03002,103.0467,34.28938,13.62187,104.2677,63.05278,37.7846,84.42676,64.0299,78.16093,70.92557,0.0,85.42098,79.78117,72.66467,75.47737,59.63433,86.25063,36.74168,57.7093,90.84241,23.07993,53.17813,18.27571,21.53931,20.97801,84.6214,85.42098,0.0,10.18566,55.1982,29.2479,62.49644,24.70062,79.20148,77.26091,22.81686,100.6656,50.65894,26.40792,16.49811,11.0608,87.44151,79.78117,10.18566,0.0,59.61308,19.18117,64.66199,16.69639,77.88753,78.74498,16.85199,96.66956,37.75134,39.0707,49.43645,68.28461,31.01253,72.66467,55.1982,59.61308,0.0,73.6393,15.40298,76.03257,43.72866,28.84058,76.35509,74.65391,54.80382,44.98622,24.33503,8.33583,98.48151,75.47737,29.2479,19.18117,73.6393,0.0,75.47855,11.67116,82.49362,88.0017,17.14815,95.3948,28.90492,49.01825,51.40165,71.57875,23.03002,59.63433,62.49644,64.66199,15.40298,75.47855,0.0,80.07781,28.44108,15.23269,81.43963,59.59771,62.56392,42.58607,29.14667,8.968137,103.0467,86.25063,24.70062,16.69639,76.03257,11.67116,80.07781,0.0,90.33997,93.58504,5.606254,105.4594,27.79371,70.41884,61.80606,81.37206,34.28938,36.74168,79.20148,77.88753,43.72866,82.49362,28.44108,90.33997,0.0,21.50943,93.27466,31.35843,36.21957,64.23431,64.52066,84.8668,13.62187,57.7093,77.26091,78.74498,28.84058,88.0017,15.23269,93.58504,21.50943,0.0,95.35499,51.89618,65.6129,41.07992,31.53798,12.71415,104.2677,90.84241,22.81686,16.85199,76.35509,17.14815,81.43963,5.606254,93.27466,95.35499,0.0,109.5773,48.11826,95.96692,80.25231,96.89707,63.05278,23.07993,100.6656,96.66956,74.65391,95.3948,59.59771,105.4594,31.35843,51.89618,109.5773,0.0,37.07571,36.57474,31.66177,34.42017,12.79368,7.240257,9.56191,10.46242,9.444851,9.867204,38.65257,42.69785,40.60799,41.19757,30.72554,24.06957,65.85502,65.53876,73.50328,41.94379,84.54607,83.52561,15.64283,17.49808,37.42681,49.08234,10.31011,10.61161,94.85464,127.4955 diff --git a/data/small_25.csv b/data/small_25.csv new file mode 100644 index 00000000..3516feec --- /dev/null +++ b/data/small_25.csv @@ -0,0 +1 @@ +25,808.0987,5,2.0,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119 diff --git a/data/small_26.csv b/data/small_26.csv new file mode 100644 index 00000000..f645b074 --- /dev/null +++ b/data/small_26.csv @@ -0,0 +1 @@ +26,808.0987,5,2.0,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119 diff --git a/data/small_27.csv b/data/small_27.csv new file mode 100644 index 00000000..1c537dcc --- /dev/null +++ b/data/small_27.csv @@ -0,0 +1 @@ +27,808.0987,5,4.0,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119 diff --git a/data/small_28.csv b/data/small_28.csv new file mode 100644 index 00000000..71517cc9 --- /dev/null +++ b/data/small_28.csv @@ -0,0 +1 @@ +28,808.0987,5,4.0,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119 diff --git a/data/small_29.csv b/data/small_29.csv new file mode 100644 index 00000000..c3bec8d1 --- /dev/null +++ b/data/small_29.csv @@ -0,0 +1 @@ +29,808.0987,10,1.0,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352 diff --git a/data/small_3.csv b/data/small_3.csv new file mode 100644 index 00000000..9ecfe6bc --- /dev/null +++ b/data/small_3.csv @@ -0,0 +1 @@ +3,823.6853,5,4.0,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343 diff --git a/data/small_30.csv b/data/small_30.csv new file mode 100644 index 00000000..979c2338 --- /dev/null +++ b/data/small_30.csv @@ -0,0 +1 @@ +30,808.0987,10,1.0,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352 diff --git a/data/small_31.csv b/data/small_31.csv new file mode 100644 index 00000000..79882e87 --- /dev/null +++ b/data/small_31.csv @@ -0,0 +1 @@ +31,808.0987,10,2.0,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352 diff --git a/data/small_32.csv b/data/small_32.csv new file mode 100644 index 00000000..30a29f54 --- /dev/null +++ b/data/small_32.csv @@ -0,0 +1 @@ +32,808.0987,10,2.0,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352 diff --git a/data/small_33.csv b/data/small_33.csv new file mode 100644 index 00000000..8c9b980b --- /dev/null +++ b/data/small_33.csv @@ -0,0 +1 @@ +33,808.0987,15,0.67,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,51.57557,6.735546,53.41043,18.03637,12.32111,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,46.04941,14.91151,70.83686,33.74937,12.66129,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,34.33632,39.49088,96.0515,56.6188,41.61,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,13.56908,56.16583,93.77201,60.36991,69.07897,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,34.73874,10.15963,63.36718,23.81444,23.29997,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,58.95939,18.57887,39.07459,9.689996,24.81982,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,97.82821,55.69638,77.33324,63.22076,41.40882,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,14.56343,31.87886,81.4358,42.75722,42.51878,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,74.88283,54.97208,106.2535,73.11993,43.84158,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,46.32915,6.107328,61.85551,24.66548,10.90043,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,68.36517,57.01157,36.19572,39.5845,69.80054,51.57557,46.04941,34.33632,13.56908,34.73874,58.95939,97.82821,14.56343,74.88283,46.32915,68.36517,0.0,44.86737,88.66514,52.22909,56.71333,6.735546,14.91151,39.49088,56.16583,10.15963,18.57887,55.69638,31.87886,54.97208,6.107328,57.01157,44.86737,0.0,57.08189,18.90435,15.38225,53.41043,70.83686,96.0515,93.77201,63.36718,39.07459,77.33324,81.4358,106.2535,61.85551,36.19572,88.66514,57.08189,0.0,39.56807,62.88482,18.03637,33.74937,56.6188,60.36991,23.81444,9.689996,63.22076,42.75722,73.11993,24.66548,39.5845,52.22909,18.90435,39.56807,0.0,30.23215,12.32111,12.66129,41.61,69.07897,23.29997,24.81982,41.40882,42.51878,43.84158,10.90043,69.80054,56.71333,15.38225,62.88482,30.23215,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352,84.5396,74.98933,66.19061,75.16824,76.0132,60.56189,85.75143,55.89478,86.88721,69.88777 diff --git a/data/small_34.csv b/data/small_34.csv new file mode 100644 index 00000000..620d6a2e --- /dev/null +++ b/data/small_34.csv @@ -0,0 +1 @@ +34,808.0987,15,0.67,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,51.57557,6.735546,53.41043,18.03637,12.32111,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,46.04941,14.91151,70.83686,33.74937,12.66129,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,34.33632,39.49088,96.0515,56.6188,41.61,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,13.56908,56.16583,93.77201,60.36991,69.07897,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,34.73874,10.15963,63.36718,23.81444,23.29997,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,58.95939,18.57887,39.07459,9.689996,24.81982,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,97.82821,55.69638,77.33324,63.22076,41.40882,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,14.56343,31.87886,81.4358,42.75722,42.51878,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,74.88283,54.97208,106.2535,73.11993,43.84158,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,46.32915,6.107328,61.85551,24.66548,10.90043,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,68.36517,57.01157,36.19572,39.5845,69.80054,51.57557,46.04941,34.33632,13.56908,34.73874,58.95939,97.82821,14.56343,74.88283,46.32915,68.36517,0.0,44.86737,88.66514,52.22909,56.71333,6.735546,14.91151,39.49088,56.16583,10.15963,18.57887,55.69638,31.87886,54.97208,6.107328,57.01157,44.86737,0.0,57.08189,18.90435,15.38225,53.41043,70.83686,96.0515,93.77201,63.36718,39.07459,77.33324,81.4358,106.2535,61.85551,36.19572,88.66514,57.08189,0.0,39.56807,62.88482,18.03637,33.74937,56.6188,60.36991,23.81444,9.689996,63.22076,42.75722,73.11993,24.66548,39.5845,52.22909,18.90435,39.56807,0.0,30.23215,12.32111,12.66129,41.61,69.07897,23.29997,24.81982,41.40882,42.51878,43.84158,10.90043,69.80054,56.71333,15.38225,62.88482,30.23215,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352,84.5396,74.98933,66.19061,75.16824,76.0132,60.56189,85.75143,55.89478,86.88721,69.88777 diff --git a/data/small_35.csv b/data/small_35.csv new file mode 100644 index 00000000..94c36fdd --- /dev/null +++ b/data/small_35.csv @@ -0,0 +1 @@ +35,808.0987,15,1.33,1,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,51.57557,6.735546,53.41043,18.03637,12.32111,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,46.04941,14.91151,70.83686,33.74937,12.66129,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,34.33632,39.49088,96.0515,56.6188,41.61,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,13.56908,56.16583,93.77201,60.36991,69.07897,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,34.73874,10.15963,63.36718,23.81444,23.29997,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,58.95939,18.57887,39.07459,9.689996,24.81982,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,97.82821,55.69638,77.33324,63.22076,41.40882,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,14.56343,31.87886,81.4358,42.75722,42.51878,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,74.88283,54.97208,106.2535,73.11993,43.84158,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,46.32915,6.107328,61.85551,24.66548,10.90043,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,68.36517,57.01157,36.19572,39.5845,69.80054,51.57557,46.04941,34.33632,13.56908,34.73874,58.95939,97.82821,14.56343,74.88283,46.32915,68.36517,0.0,44.86737,88.66514,52.22909,56.71333,6.735546,14.91151,39.49088,56.16583,10.15963,18.57887,55.69638,31.87886,54.97208,6.107328,57.01157,44.86737,0.0,57.08189,18.90435,15.38225,53.41043,70.83686,96.0515,93.77201,63.36718,39.07459,77.33324,81.4358,106.2535,61.85551,36.19572,88.66514,57.08189,0.0,39.56807,62.88482,18.03637,33.74937,56.6188,60.36991,23.81444,9.689996,63.22076,42.75722,73.11993,24.66548,39.5845,52.22909,18.90435,39.56807,0.0,30.23215,12.32111,12.66129,41.61,69.07897,23.29997,24.81982,41.40882,42.51878,43.84158,10.90043,69.80054,56.71333,15.38225,62.88482,30.23215,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352,84.5396,74.98933,66.19061,75.16824,76.0132,60.56189,85.75143,55.89478,86.88721,69.88777 diff --git a/data/small_36.csv b/data/small_36.csv new file mode 100644 index 00000000..fbf09947 --- /dev/null +++ b/data/small_36.csv @@ -0,0 +1 @@ +36,808.0987,15,1.33,2,0.0,17.44136,44.72597,62.71933,16.8936,14.33801,50.14551,38.59761,55.25169,8.725719,57.534,51.57557,6.735546,53.41043,18.03637,12.32111,17.44136,0.0,29.12606,59.02419,16.69979,31.76399,51.97672,31.5257,40.47557,9.150531,71.6836,46.04941,14.91151,70.83686,33.74937,12.66129,44.72597,29.12606,0.0,47.3243,32.88431,58.06947,76.42145,24.05675,41.73466,36.10697,88.07724,34.33632,39.49088,96.0515,56.6188,41.61,62.71933,59.02419,47.3243,0.0,46.30035,68.20903,110.4288,27.86459,88.32099,58.40858,68.74253,13.56908,56.16583,93.77201,60.36991,69.07897,16.8936,16.69979,32.88431,46.30035,0.0,26.83613,64.62595,21.80223,56.376,12.40219,57.44028,34.73874,10.15963,63.36718,23.81444,23.29997,14.33801,31.76399,58.06947,68.20903,26.83613,0.0,53.90695,47.91853,68.65307,22.83772,46.88432,58.95939,18.57887,39.07459,9.689996,24.81982,50.14551,51.97672,76.42145,110.4288,64.62595,53.90695,0.0,83.40601,52.28973,52.24557,99.31638,97.82821,55.69638,77.33324,63.22076,41.40882,38.59761,31.5257,24.05675,27.86459,21.80223,47.91853,83.40601,0.0,61.92493,32.46881,66.93673,14.56343,31.87886,81.4358,42.75722,42.51878,55.25169,40.47557,41.73466,88.32099,56.376,68.65307,52.28973,61.92493,0.0,48.87703,111.9836,74.88283,54.97208,106.2535,73.11993,43.84158,8.725719,9.150531,36.10697,58.40858,12.40219,22.83772,52.24557,32.46881,48.87703,0.0,63.10878,46.32915,6.107328,61.85551,24.66548,10.90043,57.534,71.6836,88.07724,68.74253,57.44028,46.88432,99.31638,66.93673,111.9836,63.10878,0.0,68.36517,57.01157,36.19572,39.5845,69.80054,51.57557,46.04941,34.33632,13.56908,34.73874,58.95939,97.82821,14.56343,74.88283,46.32915,68.36517,0.0,44.86737,88.66514,52.22909,56.71333,6.735546,14.91151,39.49088,56.16583,10.15963,18.57887,55.69638,31.87886,54.97208,6.107328,57.01157,44.86737,0.0,57.08189,18.90435,15.38225,53.41043,70.83686,96.0515,93.77201,63.36718,39.07459,77.33324,81.4358,106.2535,61.85551,36.19572,88.66514,57.08189,0.0,39.56807,62.88482,18.03637,33.74937,56.6188,60.36991,23.81444,9.689996,63.22076,42.75722,73.11993,24.66548,39.5845,52.22909,18.90435,39.56807,0.0,30.23215,12.32111,12.66129,41.61,69.07897,23.29997,24.81982,41.40882,42.51878,43.84158,10.90043,69.80054,56.71333,15.38225,62.88482,30.23215,0.0,10.15547,10.9447,26.83548,20.25645,47.91611,55.00193,71.69137,105.6808,77.76962,69.02119,48.85396,64.16681,93.31793,53.28531,50.34029,63.07117,95.5915,75.18895,18.84607,10.27352,84.5396,74.98933,66.19061,75.16824,76.0132,60.56189,85.75143,55.89478,86.88721,69.88777 diff --git a/data/small_37.csv b/data/small_37.csv new file mode 100644 index 00000000..88e5517a --- /dev/null +++ b/data/small_37.csv @@ -0,0 +1 @@ +37,347.3465,5,2.0,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067 diff --git a/data/small_38.csv b/data/small_38.csv new file mode 100644 index 00000000..05c8ba6a --- /dev/null +++ b/data/small_38.csv @@ -0,0 +1 @@ +38,347.3465,5,2.0,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067 diff --git a/data/small_39.csv b/data/small_39.csv new file mode 100644 index 00000000..b60ddc88 --- /dev/null +++ b/data/small_39.csv @@ -0,0 +1 @@ +39,347.3465,5,4.0,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067 diff --git a/data/small_4.csv b/data/small_4.csv new file mode 100644 index 00000000..d9cdcbde --- /dev/null +++ b/data/small_4.csv @@ -0,0 +1 @@ +4,823.6853,5,4.0,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343 diff --git a/data/small_40.csv b/data/small_40.csv new file mode 100644 index 00000000..392f1063 --- /dev/null +++ b/data/small_40.csv @@ -0,0 +1 @@ +40,347.3465,5,4.0,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067 diff --git a/data/small_41.csv b/data/small_41.csv new file mode 100644 index 00000000..7e404879 --- /dev/null +++ b/data/small_41.csv @@ -0,0 +1 @@ +41,347.3465,10,1.0,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144 diff --git a/data/small_42.csv b/data/small_42.csv new file mode 100644 index 00000000..ba1a935c --- /dev/null +++ b/data/small_42.csv @@ -0,0 +1 @@ +42,347.3465,10,1.0,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144 diff --git a/data/small_43.csv b/data/small_43.csv new file mode 100644 index 00000000..3c52d21b --- /dev/null +++ b/data/small_43.csv @@ -0,0 +1 @@ +43,347.3465,10,2.0,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144 diff --git a/data/small_44.csv b/data/small_44.csv new file mode 100644 index 00000000..201c1d41 --- /dev/null +++ b/data/small_44.csv @@ -0,0 +1 @@ +44,347.3465,10,2.0,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144 diff --git a/data/small_45.csv b/data/small_45.csv new file mode 100644 index 00000000..345083fb --- /dev/null +++ b/data/small_45.csv @@ -0,0 +1 @@ +45,347.3465,15,0.67,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,51.41854,19.90795,53.06004,8.571544,15.64953,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,49.40606,23.27838,58.5544,3.832434,9.736508,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,54.20083,17.27884,55.40211,9.931534,14.29659,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,60.78123,21.39548,70.95996,17.05557,7.267771,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,59.05708,17.34464,44.53204,21.566,27.96776,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,9.573469,78.71648,73.26232,52.28975,59.07797,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,34.18153,37.78692,56.049,11.3991,20.61883,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,83.13995,28.32844,88.14822,39.50586,29.62094,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,56.24072,24.4414,69.64866,13.63809,2.642842,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,64.96228,30.87767,81.72354,25.68424,14.1976,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,53.29732,23.39383,40.5462,20.11539,28.80864,51.41854,49.40606,54.20083,60.78123,59.05708,9.573469,34.18153,83.13995,56.24072,64.96228,53.29732,0.0,71.322,63.85014,45.57932,53.59936,19.90795,23.27838,17.27884,21.39548,17.34464,78.71648,37.78692,28.32844,24.4414,30.87767,23.39383,71.322,0.0,60.79187,26.89477,25.74804,53.06004,58.5544,55.40211,70.95996,44.53204,73.26232,56.049,88.14822,69.64866,81.72354,40.5462,63.85014,60.79187,0.0,57.67822,68.2832,8.571544,3.832434,9.931534,17.05557,21.566,52.28975,11.3991,39.50586,13.63809,25.68424,20.11539,45.57932,26.89477,57.67822,0.0,11.48664,15.64953,9.736508,14.29659,7.267771,27.96776,59.07797,20.61883,29.62094,2.642842,14.1976,28.80864,53.59936,25.74804,68.2832,11.48664,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144,64.02087,33.97729,24.25502,29.11428,79.0285,100.3182,88.93688,119.0366,46.41061,56.28747 diff --git a/data/small_46.csv b/data/small_46.csv new file mode 100644 index 00000000..f9e2f8f2 --- /dev/null +++ b/data/small_46.csv @@ -0,0 +1 @@ +46,347.3465,15,0.67,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,51.41854,19.90795,53.06004,8.571544,15.64953,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,49.40606,23.27838,58.5544,3.832434,9.736508,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,54.20083,17.27884,55.40211,9.931534,14.29659,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,60.78123,21.39548,70.95996,17.05557,7.267771,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,59.05708,17.34464,44.53204,21.566,27.96776,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,9.573469,78.71648,73.26232,52.28975,59.07797,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,34.18153,37.78692,56.049,11.3991,20.61883,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,83.13995,28.32844,88.14822,39.50586,29.62094,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,56.24072,24.4414,69.64866,13.63809,2.642842,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,64.96228,30.87767,81.72354,25.68424,14.1976,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,53.29732,23.39383,40.5462,20.11539,28.80864,51.41854,49.40606,54.20083,60.78123,59.05708,9.573469,34.18153,83.13995,56.24072,64.96228,53.29732,0.0,71.322,63.85014,45.57932,53.59936,19.90795,23.27838,17.27884,21.39548,17.34464,78.71648,37.78692,28.32844,24.4414,30.87767,23.39383,71.322,0.0,60.79187,26.89477,25.74804,53.06004,58.5544,55.40211,70.95996,44.53204,73.26232,56.049,88.14822,69.64866,81.72354,40.5462,63.85014,60.79187,0.0,57.67822,68.2832,8.571544,3.832434,9.931534,17.05557,21.566,52.28975,11.3991,39.50586,13.63809,25.68424,20.11539,45.57932,26.89477,57.67822,0.0,11.48664,15.64953,9.736508,14.29659,7.267771,27.96776,59.07797,20.61883,29.62094,2.642842,14.1976,28.80864,53.59936,25.74804,68.2832,11.48664,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144,64.02087,33.97729,24.25502,29.11428,79.0285,100.3182,88.93688,119.0366,46.41061,56.28747 diff --git a/data/small_47.csv b/data/small_47.csv new file mode 100644 index 00000000..9e979ae5 --- /dev/null +++ b/data/small_47.csv @@ -0,0 +1 @@ +47,347.3465,15,1.33,1,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,51.41854,19.90795,53.06004,8.571544,15.64953,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,49.40606,23.27838,58.5544,3.832434,9.736508,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,54.20083,17.27884,55.40211,9.931534,14.29659,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,60.78123,21.39548,70.95996,17.05557,7.267771,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,59.05708,17.34464,44.53204,21.566,27.96776,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,9.573469,78.71648,73.26232,52.28975,59.07797,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,34.18153,37.78692,56.049,11.3991,20.61883,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,83.13995,28.32844,88.14822,39.50586,29.62094,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,56.24072,24.4414,69.64866,13.63809,2.642842,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,64.96228,30.87767,81.72354,25.68424,14.1976,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,53.29732,23.39383,40.5462,20.11539,28.80864,51.41854,49.40606,54.20083,60.78123,59.05708,9.573469,34.18153,83.13995,56.24072,64.96228,53.29732,0.0,71.322,63.85014,45.57932,53.59936,19.90795,23.27838,17.27884,21.39548,17.34464,78.71648,37.78692,28.32844,24.4414,30.87767,23.39383,71.322,0.0,60.79187,26.89477,25.74804,53.06004,58.5544,55.40211,70.95996,44.53204,73.26232,56.049,88.14822,69.64866,81.72354,40.5462,63.85014,60.79187,0.0,57.67822,68.2832,8.571544,3.832434,9.931534,17.05557,21.566,52.28975,11.3991,39.50586,13.63809,25.68424,20.11539,45.57932,26.89477,57.67822,0.0,11.48664,15.64953,9.736508,14.29659,7.267771,27.96776,59.07797,20.61883,29.62094,2.642842,14.1976,28.80864,53.59936,25.74804,68.2832,11.48664,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144,64.02087,33.97729,24.25502,29.11428,79.0285,100.3182,88.93688,119.0366,46.41061,56.28747 diff --git a/data/small_48.csv b/data/small_48.csv new file mode 100644 index 00000000..4e827866 --- /dev/null +++ b/data/small_48.csv @@ -0,0 +1 @@ +48,347.3465,15,1.33,2,0.0,6.624678,3.214052,18.04194,13.22504,58.86161,18.12924,38.27056,16.67247,28.66357,13.15932,51.41854,19.90795,53.06004,8.571544,15.64953,6.624678,0.0,6.859384,14.07625,19.80426,56.10983,15.2288,36.16227,11.36952,23.63314,19.50998,49.40606,23.27838,58.5544,3.832434,9.736508,3.214052,6.859384,0.0,15.55966,13.68942,61.45244,20.5096,35.15538,14.86061,26.45618,15.02332,54.20083,17.27884,55.40211,9.931534,14.29659,18.04194,14.07625,15.55966,0.0,28.1274,66.34383,27.38169,22.66426,4.705612,11.1045,30.53638,60.78123,21.39548,70.95996,17.05557,7.267771,13.22504,19.80426,13.68942,28.1274,0.0,67.44586,28.93197,43.62707,28.32833,39.23173,6.487398,59.05708,17.34464,44.53204,21.566,27.96776,58.86161,56.10983,61.45244,66.34383,67.44586,0.0,41.00757,88.17141,61.68262,69.19916,61.91884,9.573469,78.71648,73.26232,52.28975,59.07797,18.12924,15.2288,20.5096,27.38169,28.93197,41.00757,0.0,50.04472,23.19629,33.97804,25.1024,34.18153,37.78692,56.049,11.3991,20.61883,38.27056,36.16227,35.15538,22.66426,43.62707,88.17141,50.04472,0.0,26.98289,19.94404,48.29123,83.13995,28.32844,88.14822,39.50586,29.62094,16.67247,11.36952,14.86061,4.705612,28.32833,61.68262,23.19629,26.98289,0.0,12.26399,29.73939,56.24072,24.4414,69.64866,13.63809,2.642842,28.66357,23.63314,26.45618,11.1045,39.23173,69.19916,33.97804,19.94404,12.26399,0.0,41.47938,64.96228,30.87767,81.72354,25.68424,14.1976,13.15932,19.50998,15.02332,30.53638,6.487398,61.91884,25.1024,48.29123,29.73939,41.47938,0.0,53.29732,23.39383,40.5462,20.11539,28.80864,51.41854,49.40606,54.20083,60.78123,59.05708,9.573469,34.18153,83.13995,56.24072,64.96228,53.29732,0.0,71.322,63.85014,45.57932,53.59936,19.90795,23.27838,17.27884,21.39548,17.34464,78.71648,37.78692,28.32844,24.4414,30.87767,23.39383,71.322,0.0,60.79187,26.89477,25.74804,53.06004,58.5544,55.40211,70.95996,44.53204,73.26232,56.049,88.14822,69.64866,81.72354,40.5462,63.85014,60.79187,0.0,57.67822,68.2832,8.571544,3.832434,9.931534,17.05557,21.566,52.28975,11.3991,39.50586,13.63809,25.68424,20.11539,45.57932,26.89477,57.67822,0.0,11.48664,15.64953,9.736508,14.29659,7.267771,27.96776,59.07797,20.61883,29.62094,2.642842,14.1976,28.80864,53.59936,25.74804,68.2832,11.48664,0.0,7.241583,10.22205,81.34039,67.28905,92.98482,74.09253,81.38979,90.10991,42.72776,51.62067,55.53522,42.96984,37.24316,48.99646,17.62033,25.59488,24.17425,31.02955,95.36549,139.7144,64.02087,33.97729,24.25502,29.11428,79.0285,100.3182,88.93688,119.0366,46.41061,56.28747 diff --git a/data/small_5.csv b/data/small_5.csv new file mode 100644 index 00000000..b137bbbc --- /dev/null +++ b/data/small_5.csv @@ -0,0 +1 @@ +5,823.6853,10,1.0,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996 diff --git a/data/small_6.csv b/data/small_6.csv new file mode 100644 index 00000000..9adbf0f5 --- /dev/null +++ b/data/small_6.csv @@ -0,0 +1 @@ +6,823.6853,10,1.0,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996 diff --git a/data/small_7.csv b/data/small_7.csv new file mode 100644 index 00000000..c90fe89e --- /dev/null +++ b/data/small_7.csv @@ -0,0 +1 @@ +7,823.6853,10,2.0,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996 diff --git a/data/small_8.csv b/data/small_8.csv new file mode 100644 index 00000000..f5ce86ef --- /dev/null +++ b/data/small_8.csv @@ -0,0 +1 @@ +8,823.6853,10,2.0,2,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996 diff --git a/data/small_9.csv b/data/small_9.csv new file mode 100644 index 00000000..ecaca684 --- /dev/null +++ b/data/small_9.csv @@ -0,0 +1 @@ +9,823.6853,15,0.67,1,0.0,15.4923,39.00072,48.53779,53.14806,49.63669,17.63541,36.66686,45.33789,50.11533,33.45835,39.29497,52.73182,5.783396,42.95682,41.91922,15.4923,0.0,53.49316,59.98425,68.6358,34.15617,32.88582,50.02892,60.06674,65.60292,45.3532,24.06189,67.80252,20.37746,58.41801,39.02419,39.00072,53.49316,0.0,20.3253,24.88437,86.9514,21.89965,8.026745,32.99437,22.79882,42.88869,75.15034,33.67233,36.65318,20.63058,74.98923,48.53779,59.98425,20.3253,0.0,43.01102,90.25063,35.39941,14.85486,53.30251,41.58337,61.73368,77.53092,53.36174,48.47014,40.73839,89.03957,53.14806,68.6358,24.88437,43.01102,0.0,102.7387,36.45583,32.90744,18.21997,3.032909,38.46906,92.2929,12.58461,48.59612,10.42901,78.06541,49.63669,34.15617,86.9514,90.25063,102.7387,0.0,66.98562,82.57484,93.11477,99.7063,75.74423,12.91082,101.2347,54.22102,92.4635,50.76169,17.63541,32.88582,21.89965,35.39941,36.45583,66.98562,0.0,21.39755,32.44934,33.45517,29.48356,56.03117,38.2975,14.75512,26.7642,54.06221,36.66686,50.02892,8.026745,14.85486,32.90744,82.57484,21.39755,0.0,39.83136,30.77749,46.88399,70.37593,41.31034,35.48679,28.05489,75.45722,45.33789,60.06674,32.99437,53.30251,18.21997,93.11477,32.44934,39.83136,0.0,16.65485,21.62948,84.11639,8.830629,39.83695,12.99884,62.03414,50.11533,65.60292,22.79882,41.58337,3.032909,99.7063,33.45517,30.77749,16.65485,0.0,36.13574,89.26553,12.45924,45.56899,7.466078,75.44701,33.45835,45.3532,42.88869,61.73368,38.46906,75.74423,29.48356,46.88399,21.62948,36.13574,0.0,68.49499,30.39578,27.78137,29.64953,40.42069,39.29497,24.06189,75.15034,77.53092,92.2929,12.91082,56.03117,70.37593,84.11639,89.26553,68.49499,0.0,91.85694,44.41932,82.203,50.4694,52.73182,67.80252,33.67233,53.36174,12.58461,101.2347,38.2975,41.31034,8.830629,12.45924,30.39578,91.85694,0.0,47.43928,13.36524,70.81613,5.783396,20.37746,36.65318,48.47014,48.59612,54.22102,14.75512,35.48679,39.83695,45.56899,27.78137,44.41932,47.43928,0.0,38.26534,40.67843,42.95682,58.41801,20.63058,40.73839,10.42901,92.4635,26.7642,28.05489,12.99884,7.466078,29.64953,82.203,13.36524,38.26534,0.0,68.3121,41.91922,39.02419,74.98923,89.03957,78.06541,50.76169,54.06221,75.45722,62.03414,75.44701,40.42069,50.4694,70.81613,40.67843,68.3121,0.0,1.844858,1.100997,58.94037,36.43464,85.31265,88.69901,1.620435,1.069723,46.34676,40.48343,63.19033,79.22836,12.79139,17.15291,31.2427,32.58068,57.22572,83.8866,9.145314,4.958996,55.82099,59.78159,34.89624,31.65805,89.47394,104.387,14.24304,16.80059,80.43044,108.8372 diff --git a/heuristic/__main__.py b/heuristic/__main__.py index e69de29b..5cb41ca9 100644 --- a/heuristic/__main__.py +++ b/heuristic/__main__.py @@ -0,0 +1,35 @@ +import sys + +from alns import ALNS +from alns.criteria import HillClimbing +from numpy.random import RandomState + +from .classes import Problem +from .initial_solution import initial_solution +from .destroy_operators import D_OPERATORS +from .repair_operators import R_OPERATORS + + +def main(): + if len(sys.argv) < 2: + raise ValueError(f"{sys.argv[0]}: expected file location.") + + problem = Problem.from_file(sys.argv[1], delimiter=',') + init = initial_solution(problem) + + alns = ALNS(RandomState(problem.instance)) + + for d_op in D_OPERATORS: + alns.add_destroy_operator(d_op) + + for r_op in R_OPERATORS: + alns.add_repair_operator(r_op) + + # result = alns.iterate(init, [25, 5, 1, 1], 0.8, HillClimbing()) + # TODO post-processing? + + init.to_file(f"solutions/oracs_{problem.instance}.csv") + + +if __name__ == "__main__": + main() diff --git a/heuristic/classes/Item.py b/heuristic/classes/Item.py new file mode 100644 index 00000000..c9ee2d8b --- /dev/null +++ b/heuristic/classes/Item.py @@ -0,0 +1,43 @@ +from __future__ import annotations + +from heuristic.constants import DEPOT + + +class Item: + volume: float + origin: int + destination: int + + def __init__(self, volume: float, origin: int, destination: int): + """ + Creates an item with a volume, origin and destination. A pickup item + will have destination DEPOT. A delivery item will have origin DEPOT. + """ + self.volume = volume + self.origin = origin + self.destination = destination + + def __eq__(self, other) -> bool: + return isinstance(other, Item) \ + and self.volume == other.volume \ + and self.origin == other.origin \ + and self.destination == other.destination + + def __hash__(self) -> int: + return hash((self.volume, self.origin, self.destination)) + + def is_pickup(self) -> bool: + return self.destination == DEPOT + + def is_delivery(self) -> bool: + return self.origin == DEPOT + + def __str__(self): + assert self.is_pickup() or self.is_delivery() + + if self.is_pickup(): + # Pick-up item, so this came from a customer. + return "p" + str(self.origin + 1) + + # Delivery item, so this is going to a customer. + return "d" + str(self.destination + 1) diff --git a/heuristic/classes/Problem.py b/heuristic/classes/Problem.py new file mode 100644 index 00000000..7852baef --- /dev/null +++ b/heuristic/classes/Problem.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +import numpy as np + + +class Problem: + instance: int + + capacity: float + handling_cost: float + + num_customers: int + num_stacks: int + + distances: np.ndarray + demands: np.ndarray + pickups: np.ndarray + + @property + def stack_capacity(self): + return self.capacity / self.num_stacks + + @classmethod + def from_file(cls, location: str, **kwargs) -> Problem: + """ + Sets-up a problem instance from the passed-in data file location. Any + additional arguments are passed to ``numpy.genfromtxt``. For the assumed + file format, see the data in `/data` - in particular the text file. + + Parameters + ---------- + location + Data file location. + kwargs + Additional arguments. + + Returns + ------- + Problem + Problem instance for the data file. + """ + data = np.genfromtxt(location, **kwargs) + + problem = cls() + + problem.instance = int(data[0]) + + problem.capacity = data[1] + problem.handling_cost = data[3] + + problem.num_customers = int(data[2]) + problem.num_stacks = int(data[4]) + + # Distances include depot, so customers + 1 + distances = data[5:5 + (problem.num_customers + 1) ** 2] + problem.distances = distances.reshape((problem.num_customers + 1, + problem.num_customers + 1)) + + demands = np.empty(problem.num_customers) + pickups = np.empty(problem.num_customers) + + for idx in range(problem.num_customers): + demands[idx] = data[-2 * problem.num_customers + 2 * idx] + pickups[idx] = data[-2 * problem.num_customers + 2 * idx + 1] + + problem.demands = demands + problem.pickups = pickups + + return problem diff --git a/heuristic/classes/Route.py b/heuristic/classes/Route.py new file mode 100644 index 00000000..cc7dc605 --- /dev/null +++ b/heuristic/classes/Route.py @@ -0,0 +1,53 @@ +from typing import List + +import numpy as np + +from heuristic.constants import DEPOT +from .Problem import Problem +from .Stacks import Stacks + + +class Route: + customers: List[int] # customers visited, in order (indices) + plan: List[Stacks] # loading plan + + def __init__(self, customers: List[int], plan: List[Stacks]): + self.customers = customers + self.plan = plan + + def cost(self, problem: Problem) -> float: + """ + Computes the cost (objective) value of this route, based on the + distance and handling costs. + """ + return self._route_cost(problem) + self._plan_cost(problem) + + def _route_cost(self, problem: Problem) -> float: + """ + Determines the route cost connecting the passed-in customers. Assumes + the DEPOT is excluded in the customers list; it will be added here. + O(|customers|). + """ + customers = np.array([DEPOT, *self.customers, DEPOT]) + customers += 1 + + return sum(problem.distances[first, second] + for first, second in zip(customers, customers[1:])) + + def _plan_cost(self, problem: Problem) -> float: + """ + Computes the handling cost of the current loading plan. This is done + by determining the cost of the mutations at each customer. Runs in + about O(|customers| * |num_stacks| * n), where n is the number of items + in a stack. + """ + assert len(self.customers) + 1 == len(self.plan) + + cost = 0. + + for idx, customer in enumerate(self.customers): + # Stack lay-outs before and after the current customer. + before, after = self.plan[idx:idx + 2] + cost += Stacks.cost(customer, problem, before, after) + + return cost diff --git a/heuristic/classes/Solution.py b/heuristic/classes/Solution.py new file mode 100644 index 00000000..8da9b2ff --- /dev/null +++ b/heuristic/classes/Solution.py @@ -0,0 +1,82 @@ +from __future__ import annotations + +from copy import deepcopy +from typing import List + +import matplotlib.pyplot as plt +import numpy as np +from alns import State + +from heuristic.constants import DEPOT, TEAM_NUMBER +from .Problem import Problem +from .Route import Route + + +class Solution(State): + problem: Problem + routes: List[Route] + + unassigned: List[int] + + def copy(self) -> Solution: + """ + Returns a copy of the current Solution object. + """ + solution = Solution() + solution.problem = self.problem + solution.routes = deepcopy(self.routes) + solution.unassigned = deepcopy(self.unassigned) + + return solution + + @classmethod + def empty(cls, problem: Problem) -> Solution: + """ + Creates an empty Solution object, with the passed-in Problem instance. + """ + solution = cls() + solution.problem = problem + solution.routes = [] + solution.unassigned = [] + + return solution + + def objective(self) -> float: + """ + Evaluates the current solution. + """ + return sum(route.cost(self.problem) for route in self.routes) + + def plot(self): + """ + Plots the current solution state. + """ + # TODO + plt.draw_if_interactive() + + @classmethod + def from_file(cls, problem: Problem, location: str) -> Solution: + """ + Reads a solution to the passed-in problem from the file system. + """ + pass # TODO + + def to_file(self, location: str): + """ + Writes this solution to the file system. + """ + file = open(location, 'w+') + + print(TEAM_NUMBER, file=file) + print(self.problem.instance, file=file) + print(len(self.routes), file=file) + + for idx_route, route in enumerate(self.routes, 1): + legs = np.array([DEPOT, *route.customers]) + legs += 1 + + for idx_leg, leg in enumerate(legs): + for idx_stack, stack in enumerate(route.plan[idx_leg], 1): + print(f"V{idx_route},{leg},S{idx_stack},{stack}", file=file) + + file.close() diff --git a/heuristic/classes/Stack.py b/heuristic/classes/Stack.py new file mode 100644 index 00000000..6a06fb85 --- /dev/null +++ b/heuristic/classes/Stack.py @@ -0,0 +1,72 @@ +from __future__ import annotations + +from collections import deque +from typing import Deque, Set + +from .Item import Item + + +class Stack: + """ + Wrapper class for a stack of items, maintained as a deque of Items. Such + a stack represents a single stack of a truck, from the rear (left) to the + front (right). + """ + stack: Deque[Item] + _set: Set[Item] + + def __init__(self): + self.stack = deque() + self._set = set() + + def __contains__(self, item: Item) -> bool: + """ + Tests if this stack contains the passed-in item. O(1). + """ + return item in self._set + + def insert_volume(self, at: int) -> float: + """ + Computes the volume that needs to be moved in order to insert an item at + the given index. Does not actually change the stack lay-out. O(n), where + n is the number of stack items. + """ + return sum(self.stack[idx].volume + for idx in range(min(at, len(self.stack)))) + + def remove_volume(self, item: Item) -> float: + """ + Computes the (excess) volume that needs to be moved to remove the + passed-in item. Does not actually change the stack lay-out. O(n), where + n is the number of stack items. + """ + assert item in self + at = self.stack.index(item) + + return sum(self.stack[idx].volume for idx in range(at)) + + def push_front(self, item: Item): + """ + Places the item in the front of the truck (right). O(1). + """ + self._set.add(item) + self.stack.append(item) + + def push_rear(self, item: Item): + """ + Adds item to the rear of the truck (left). O(1). + """ + self.stack.appendleft(item) + self._set.add(item) + + def volume(self) -> float: + return sum(self.stack[idx].volume + for idx in range(len(self.stack))) + + def __str__(self): + """ + Prints a comma-separated representation of this stack's contents, from + front (first item) to rear (last). O(n), where n is the number of stack + items. + """ + return ",".join(str(item) for item in reversed(self.stack)) diff --git a/heuristic/classes/Stacks.py b/heuristic/classes/Stacks.py new file mode 100644 index 00000000..236497d5 --- /dev/null +++ b/heuristic/classes/Stacks.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from typing import Callable, List + +from heuristic.constants import DEPOT +from .Item import Item +from .Problem import Problem +from .Stack import Stack + + +class Stacks: + _stacks: List[Stack] + + def __init__(self, num_stacks: int): + self._stacks = [Stack() for _ in range(num_stacks)] + + def __len__(self): + return len(self._stacks) + + def __iter__(self): + yield from self._stacks + + @staticmethod + def cost(customer: int, + problem: Problem, + before: Stacks, + after: Stacks) -> float: + """ + Determines the cost of the mutations made between the before and after + ``Stacks``. This is in O(|num_stacks| * n), where n is the number of + items in a stack. + """ + delivery = Item(problem.demands[customer], DEPOT, customer) + pickup = Item(problem.pickups[customer], customer, DEPOT) + + volume = before.find_stack(delivery).remove_volume(delivery) + volume += after.find_stack(pickup).remove_volume(pickup) + + return problem.handling_cost * volume + + def shortest_stack(self) -> Stack: + """ + Returns the shortest stack, that is, the stack that has the smallest + capacity in use. O(|num_stacks|). + """ + return self._first_stack(min) + + def longest_stack(self) -> Stack: + """ + Returns the shortest stack, that is, the stack that has the largest + capacity in use. O(|num_stacks|). + """ + return self._first_stack(max) + + def used_capacity(self) -> float: + """ + Total volume used by all stacks. O(|num_stacks|). + """ + return sum(stack.volume() for stack in self._stacks) + + def find_stack(self, item: Item) -> Stack: + """ + Finds the stack the given item is stored in. Raises a ValueError when + the item is not in any stacks. O(|num_stacks|). + """ + for stack in self._stacks: + if item in stack: + return stack + + raise ValueError(f"Item {item} not in any stacks.") + + def _first_stack(self, criterion: Callable[..., Stack]) -> Stack: + return criterion(self._stacks, key=lambda stack: stack.volume()) diff --git a/heuristic/classes/__init__.py b/heuristic/classes/__init__.py new file mode 100644 index 00000000..2fbe5101 --- /dev/null +++ b/heuristic/classes/__init__.py @@ -0,0 +1,6 @@ +from .Item import Item +from .Problem import Problem +from .Route import Route +from .Solution import Solution +from .Stack import Stack +from .Stacks import Stacks diff --git a/heuristic/constants.py b/heuristic/constants.py new file mode 100644 index 00000000..0bac24a5 --- /dev/null +++ b/heuristic/constants.py @@ -0,0 +1,2 @@ +DEPOT = -1 +TEAM_NUMBER = 3 diff --git a/heuristic/destroy_operators/__init__.py b/heuristic/destroy_operators/__init__.py new file mode 100644 index 00000000..d4caa1d7 --- /dev/null +++ b/heuristic/destroy_operators/__init__.py @@ -0,0 +1,9 @@ +from typing import Callable, List + +from numpy.random import RandomState + +from heuristic.classes import Solution + +D_OPERATORS: List[Callable[[Solution, RandomState], Solution]] = [ + # TODO +] diff --git a/heuristic/initial_solution.py b/heuristic/initial_solution.py new file mode 100644 index 00000000..a7383070 --- /dev/null +++ b/heuristic/initial_solution.py @@ -0,0 +1,30 @@ +from heuristic.constants import DEPOT +from .classes import Item, Problem, Route, Solution, Stacks + + +def initial_solution(problem: Problem) -> Solution: + """ + Computes a dumb, initial solution to the passed-in problem instance. This + solution assigns each customer to their own route, as ``[DEPOT, customer, + DEPOT]``. + """ + sol = Solution.empty(problem) + + for customer in range(problem.num_customers): + delivery = Item(problem.demands[customer], DEPOT, customer) + pickup = Item(problem.pickups[customer], customer, DEPOT) + + # After depot, and after customer: two configurations in total. + stacks = [Stacks(problem.num_stacks) for _ in range(2)] + + # We place the deliveries and pickups in the shortest stack - this + # does not really matter much, as each stack is empty at this point + # anyway. + stacks[0].shortest_stack().push_rear(delivery) + stacks[1].shortest_stack().push_rear(pickup) + + sol.routes.append(Route([customer], stacks)) + + assert len(sol.routes) == problem.num_customers + + return sol diff --git a/heuristic/repair_operators/__init__.py b/heuristic/repair_operators/__init__.py new file mode 100644 index 00000000..46e5dd3e --- /dev/null +++ b/heuristic/repair_operators/__init__.py @@ -0,0 +1,9 @@ +from typing import Callable, List + +from numpy.random import RandomState + +from heuristic.classes import Solution + +R_OPERATORS: List[Callable[[Solution, RandomState], Solution]] = [ + # TODO +] diff --git a/scripts/run_small.sh b/scripts/run_small.sh new file mode 100755 index 00000000..f1f641af --- /dev/null +++ b/scripts/run_small.sh @@ -0,0 +1 @@ +#!/usr/bin/env bash diff --git a/scripts/validate.sh b/scripts/validate.sh new file mode 100755 index 00000000..f1f641af --- /dev/null +++ b/scripts/validate.sh @@ -0,0 +1 @@ +#!/usr/bin/env bash diff --git a/solutions/output_file_structure.txt b/solutions/output_file_structure.txt new file mode 100644 index 00000000..8a0cb62a --- /dev/null +++ b/solutions/output_file_structure.txt @@ -0,0 +1,16 @@ +The output file should be named "oracs_i.csv", where i should be replaced by the right instance number. Hence, the solution of each instance is stored in a separate file. It should be formatted as follows: + +On the first line: Your group number +On the second line: The instance number +On the third line: Number of vehicles used + +Then, for every vehicle, every node visited by that vehicle, and every stack of that vehicle, you should print the following comma-separated line: +Vehicle index, Node, Stack index, Stack content (front to rear) upon leaving the node + +NOTES: +1. No comma at the end of each line +2. No spaces before or after commas +3. Vehicles are indexed as "Vi", where i is the vehicle number +4. Stacks are indexed as "Si", where i is the stack number +5. Stack content must be represented as "di", to represent deliveries to customer i, or "pj", to represent pickups from customer j. +6. Stack content must be ordered from front of the vehicle to the rear. diff --git a/validator/__main__.py b/validator/__main__.py index e69de29b..2c8d7f90 100644 --- a/validator/__main__.py +++ b/validator/__main__.py @@ -0,0 +1,6 @@ +def main(): + pass # TODO + + +if __name__ == "__main__": + main() diff --git a/validator/rules/__init__.py b/validator/rules/__init__.py new file mode 100644 index 00000000..96c6c1cb --- /dev/null +++ b/validator/rules/__init__.py @@ -0,0 +1,5 @@ +from typing import Callable, List, Tuple + +RULES: List[Callable[..., Tuple[bool, str]]] = [ # TODO complete type + # TODO +]