diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index abdee7d..1c7ae3b 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - run: python -m pip install -e '.[dev]' + - run: python -m pip install -e '.[dev,benchmark]' - run: python -m pytest - run: ruff check . - run: ruff format --check . diff --git a/.gitignore b/.gitignore index 6f596e1..51f5ed7 100644 --- a/.gitignore +++ b/.gitignore @@ -218,3 +218,6 @@ __marimo__/ # Streamlit .streamlit/secrets.toml + +# Default local benchmark output; reference results live in benchmarks/default. +benchmark-results/ diff --git a/README.md b/README.md index 2c0f095..6da910c 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,13 @@ A lightweight Python project for experimenting with adaptive background job scheduling. Includes a discrete-time, single-worker simulator, FIFO, SPT, EDF, Priority, and seeded Random baselines, and a tabular Q-Learning meta-scheduler. -Requires Python 3.10 or newer. There are no runtime dependencies. +Requires Python 3.10 or newer. Simulation and learning have no runtime +dependencies; benchmark figures use the optional Matplotlib extra. ```sh python -m venv .venv source .venv/bin/activate -python -m pip install -e '.[dev]' +python -m pip install -e '.[dev,benchmark]' ``` Run an episode with 60 jobs: @@ -35,6 +36,17 @@ Evaluation defaults to seeds following the saved training range, with exploratio disabled. Use `--seed` to choose a different disjoint range. Both commands accept the workload options below; `train --help` lists learning and exploration settings. +Run the fixed paired benchmark (three independently trained models and all five +baselines, across three workloads and 30 evaluation seeds): + +```sh +adaptivequeue benchmark --output-dir benchmark-results +``` + +Models are cached in the output directory; `--retrain` regenerates them. +See [experimental results and reproduction details](docs/experiments.md) for +the observed comparisons and CSV definitions. + ```sh python -m adaptivequeue --workload bursty --policy spt --seed 7 \ --jobs 60 --arrival-rate 0.3 --deadline-factor 3 @@ -46,5 +58,5 @@ mypy See [simulation rules and parameters](docs/simulation.md) or run `adaptivequeue --help`. The Python API also exposes per-job execution records. -The current scope is simulation, classical baselines, and CPU-only tabular -Q-Learning; no additional runtime dependencies are needed. +The current scope is simulation, classical baselines, CPU-only tabular +Q-Learning, and reproducible benchmarking. diff --git a/benchmarks/default/action_distribution.csv b/benchmarks/default/action_distribution.csv new file mode 100644 index 0000000..f7817c0 --- /dev/null +++ b/benchmarks/default/action_distribution.csv @@ -0,0 +1,37 @@ +workload,training_seed,action,policy,selections,fraction,contended_selections,contended_fraction +stable,42,0,fifo,191,0.10611111111111111,73,0.05615384615384615 +stable,42,1,spt,677,0.3761111111111111,590,0.45384615384615384 +stable,42,2,edf,263,0.1461111111111111,222,0.17076923076923076 +stable,42,3,priority,669,0.37166666666666665,415,0.3192307692307692 +stable,2042,0,fifo,202,0.11222222222222222,141,0.10854503464203233 +stable,2042,1,spt,377,0.20944444444444443,358,0.27559661277906083 +stable,2042,2,edf,818,0.45444444444444443,481,0.37028483448806776 +stable,2042,3,priority,403,0.2238888888888889,319,0.2455735180908391 +stable,4042,0,fifo,197,0.10944444444444444,184,0.1399239543726236 +stable,4042,1,spt,545,0.30277777777777776,522,0.39695817490494295 +stable,4042,2,edf,533,0.2961111111111111,266,0.20228136882129277 +stable,4042,3,priority,525,0.2916666666666667,343,0.26083650190114066 +bursty,42,0,fifo,36,0.02,30,0.018115942028985508 +bursty,42,1,spt,969,0.5383333333333333,949,0.5730676328502415 +bursty,42,2,edf,316,0.17555555555555555,231,0.13949275362318841 +bursty,42,3,priority,479,0.26611111111111113,446,0.2693236714975845 +bursty,2042,0,fifo,329,0.1827777777777778,256,0.15440289505428226 +bursty,2042,1,spt,741,0.4116666666666667,730,0.44028950542822676 +bursty,2042,2,edf,428,0.23777777777777778,395,0.2382388419782871 +bursty,2042,3,priority,302,0.16777777777777778,277,0.16706875753920386 +bursty,4042,0,fifo,148,0.08222222222222222,142,0.08559373116335142 +bursty,4042,1,spt,826,0.4588888888888889,768,0.4629294755877034 +bursty,4042,2,edf,338,0.18777777777777777,289,0.17420132610006028 +bursty,4042,3,priority,488,0.27111111111111114,460,0.27727546714888485 +mixed,42,0,fifo,190,0.10555555555555556,130,0.09537784299339692 +mixed,42,1,spt,642,0.3566666666666667,549,0.4027879677182685 +mixed,42,2,edf,209,0.11611111111111111,164,0.12032281731474688 +mixed,42,3,priority,759,0.4216666666666667,520,0.3815113719735877 +mixed,2042,0,fifo,261,0.145,155,0.1151560178306092 +mixed,2042,1,spt,517,0.2872222222222222,478,0.3551263001485884 +mixed,2042,2,edf,640,0.35555555555555557,401,0.29791976225854383 +mixed,2042,3,priority,382,0.21222222222222223,312,0.23179791976225855 +mixed,4042,0,fifo,240,0.13333333333333333,237,0.17400881057268722 +mixed,4042,1,spt,452,0.2511111111111111,441,0.3237885462555066 +mixed,4042,2,edf,683,0.3794444444444444,382,0.28046989720998533 +mixed,4042,3,priority,425,0.2361111111111111,302,0.22173274596182085 diff --git a/benchmarks/default/figures/deadline_miss_rate.png b/benchmarks/default/figures/deadline_miss_rate.png new file mode 100644 index 0000000..67bc592 Binary files /dev/null and b/benchmarks/default/figures/deadline_miss_rate.png differ diff --git a/benchmarks/default/figures/scheduling_cost.png b/benchmarks/default/figures/scheduling_cost.png new file mode 100644 index 0000000..8e5401b Binary files /dev/null and b/benchmarks/default/figures/scheduling_cost.png differ diff --git a/benchmarks/default/models/qlearning_seed_2042.json b/benchmarks/default/models/qlearning_seed_2042.json new file mode 100644 index 0000000..086b299 --- /dev/null +++ b/benchmarks/default/models/qlearning_seed_2042.json @@ -0,0 +1,1153 @@ +{ + "version": 1, + "actions": [ + "fifo", + "spt", + "edf", + "priority" + ], + "state_encoding": { + "fields": [ + "queue_length_bucket", + "min_slack_bucket", + "short_proportion_bucket", + "high_priority" + ], + "queue_length_upper_bounds": [ + 1, + 3, + 7 + ], + "slack": "deadline - current_time - duration", + "slack_upper_bounds": [ + -1, + 2, + 6 + ], + "short_duration_max": 2, + "short_proportion_boundaries": [ + "1/3", + "2/3" + ], + "high_priority_min": 4 + }, + "reward": "-priority_weight * (tardiness + 0.1 * flow_time)", + "seed": 2042, + "learning_config": { + "learning_rate": 0.1, + "gamma": 1.0, + "epsilon_start": 1.0, + "epsilon_end": 0.05, + "epsilon_decay": 0.995 + }, + "training": { + "workload": "mixed", + "workload_config": { + "num_jobs": 60, + "arrival_rate": 0.28, + "deadline_factor": 4.0, + "duration_range": [ + 1, + 6 + ], + "burst_size": 6, + "burst_window": 3 + }, + "episodes": 1000, + "seed": 2042 + }, + "q_table": [ + { + "state": [ + 0, + 0, + 0, + false + ], + "values": [ + -78.90925537072907, + -87.9156537531457, + -88.70965894177145, + -90.90441669025829 + ] + }, + { + "state": [ + 0, + 0, + 0, + true + ], + "values": [ + -120.47707048185885, + -143.348146303263, + -139.34026039363727, + -156.2483560411036 + ] + }, + { + "state": [ + 0, + 0, + 2, + false + ], + "values": [ + -82.96925852472835, + -91.5174424230376, + -92.96778044784038, + -92.94218861026489 + ] + }, + { + "state": [ + 0, + 0, + 2, + true + ], + "values": [ + -114.8213428790319, + -111.90023798506923, + -115.9692595601912, + -117.91524972828643 + ] + }, + { + "state": [ + 0, + 1, + 0, + false + ], + "values": [ + -85.2827967756776, + -80.8908351800139, + -87.1247743837816, + -89.72457455898542 + ] + }, + { + "state": [ + 0, + 1, + 0, + true + ], + "values": [ + -153.36821257801378, + -141.5438080616149, + -142.74499341394824, + -140.87182624749488 + ] + }, + { + "state": [ + 0, + 1, + 2, + false + ], + "values": [ + -123.27471474811998, + -122.29448110617383, + -122.29084462500711, + -122.73724558524454 + ] + }, + { + "state": [ + 0, + 1, + 2, + true + ], + "values": [ + -132.1990754759524, + -132.0432331421096, + -133.58467778252867, + -135.85542740975336 + ] + }, + { + "state": [ + 0, + 2, + 0, + false + ], + "values": [ + -117.14706726453342, + -123.5511498356945, + -119.97317902816921, + -117.04224984080525 + ] + }, + { + "state": [ + 0, + 2, + 0, + true + ], + "values": [ + -149.33583824790796, + -156.78986850977395, + -150.48537671327628, + -153.74525782964002 + ] + }, + { + "state": [ + 0, + 2, + 2, + false + ], + "values": [ + -137.32173783618907, + -136.7940489825399, + -137.22171238324432, + -136.20173875051776 + ] + }, + { + "state": [ + 0, + 2, + 2, + true + ], + "values": [ + -116.09664138914421, + -115.46565674283585, + -114.45853305806769, + -114.97249676163788 + ] + }, + { + "state": [ + 0, + 3, + 0, + false + ], + "values": [ + -156.1702392172696, + -165.47648604444444, + -149.09660456205165, + -163.1756595213837 + ] + }, + { + "state": [ + 0, + 3, + 0, + true + ], + "values": [ + -149.03965397686468, + -142.6751648896952, + -141.4772416239459, + -145.68613762418659 + ] + }, + { + "state": [ + 0, + 3, + 2, + false + ], + "values": [ + -133.42371087465023, + -134.3509024557286, + -133.42637273120468, + -134.98397568239417 + ] + }, + { + "state": [ + 1, + 0, + 0, + false + ], + "values": [ + -184.6187682827866, + -205.0904862674081, + -215.4517361319594, + -228.2678509030399 + ] + }, + { + "state": [ + 1, + 0, + 0, + true + ], + "values": [ + -248.0633723688799, + -187.86359276224428, + -254.54650998705097, + -264.2737302913511 + ] + }, + { + "state": [ + 1, + 0, + 1, + false + ], + "values": [ + -177.95721222652625, + -165.62159963959493, + -181.34500074348722, + -179.19319942924182 + ] + }, + { + "state": [ + 1, + 0, + 1, + true + ], + "values": [ + -200.04139385251472, + -191.99136432259715, + -192.60528157621968, + -182.82546890268515 + ] + }, + { + "state": [ + 1, + 0, + 2, + false + ], + "values": [ + -143.20524979310176, + -139.2642241674604, + -140.59359981923544, + -139.395541675091 + ] + }, + { + "state": [ + 1, + 0, + 2, + true + ], + "values": [ + -166.76217047903896, + -162.45336302245312, + -161.83467516634818, + -146.89167213844593 + ] + }, + { + "state": [ + 1, + 1, + 0, + false + ], + "values": [ + -169.58581007549728, + -169.4585905530491, + -164.25606633696424, + -172.21737567867254 + ] + }, + { + "state": [ + 1, + 1, + 0, + true + ], + "values": [ + -200.81512573684358, + -199.74606427658875, + -203.53702363782034, + -177.29019554942113 + ] + }, + { + "state": [ + 1, + 1, + 1, + false + ], + "values": [ + -163.1963402594364, + -153.95347156338352, + -154.91497528559552, + -166.55086956623464 + ] + }, + { + "state": [ + 1, + 1, + 1, + true + ], + "values": [ + -179.3753077831774, + -176.7280492967287, + -162.95608768186736, + -179.40783879971778 + ] + }, + { + "state": [ + 1, + 1, + 2, + false + ], + "values": [ + -109.3659142085312, + -108.8624223570572, + -111.07572454355069, + -107.59834958611584 + ] + }, + { + "state": [ + 1, + 1, + 2, + true + ], + "values": [ + -134.66162326402682, + -136.98717530991823, + -136.240169712126, + -134.6360274357516 + ] + }, + { + "state": [ + 1, + 2, + 0, + false + ], + "values": [ + -173.96569886361053, + -179.7628699650526, + -167.2007158119028, + -182.9116180514188 + ] + }, + { + "state": [ + 1, + 2, + 0, + true + ], + "values": [ + -188.39607065011936, + -193.71854520655882, + -176.57944181933996, + -183.90985381475636 + ] + }, + { + "state": [ + 1, + 2, + 1, + false + ], + "values": [ + -158.9752875551549, + -150.5040162910811, + -161.65176848831587, + -160.211907757194 + ] + }, + { + "state": [ + 1, + 2, + 1, + true + ], + "values": [ + -157.07756533462168, + -158.145544523589, + -156.6812191730981, + -164.29239396116836 + ] + }, + { + "state": [ + 1, + 2, + 2, + false + ], + "values": [ + -114.24224111909015, + -114.83209343820387, + -115.508670092077, + -115.42404588387512 + ] + }, + { + "state": [ + 1, + 2, + 2, + true + ], + "values": [ + -77.10104360401306, + -78.47875824709239, + -74.13726909733364, + -73.5722472181468 + ] + }, + { + "state": [ + 1, + 3, + 0, + false + ], + "values": [ + -173.84355750990022, + -160.312136494003, + -175.25826782623477, + -186.81281851286758 + ] + }, + { + "state": [ + 1, + 3, + 0, + true + ], + "values": [ + -140.05186255588762, + -137.68580162791702, + -140.68250007056088, + -136.84331593926458 + ] + }, + { + "state": [ + 1, + 3, + 1, + false + ], + "values": [ + -149.18532435398402, + -148.0372988217469, + -148.8725156821639, + -148.87979536325378 + ] + }, + { + "state": [ + 1, + 3, + 1, + true + ], + "values": [ + -56.31013404312489, + -51.34944514383351, + -55.206862556782504, + -46.123668005259155 + ] + }, + { + "state": [ + 1, + 3, + 2, + false + ], + "values": [ + -70.63016648517147, + -72.49289074377828, + -71.69273704304834, + -68.41490372620251 + ] + }, + { + "state": [ + 1, + 3, + 2, + true + ], + "values": [ + -6.025426237635848, + -14.935576344941271, + 0.0, + 0.0 + ] + }, + { + "state": [ + 2, + 0, + 0, + false + ], + "values": [ + -347.94122955662084, + -327.2592472737121, + -254.45814433330597, + -310.7025645154729 + ] + }, + { + "state": [ + 2, + 0, + 0, + true + ], + "values": [ + -355.0597027228998, + -351.4144000691974, + -364.99449962346824, + -291.7187252814013 + ] + }, + { + "state": [ + 2, + 0, + 1, + false + ], + "values": [ + -262.39738161621926, + -213.9801606011374, + -266.4835448479596, + -258.67100803402127 + ] + }, + { + "state": [ + 2, + 0, + 1, + true + ], + "values": [ + -286.6503851790265, + -287.26643078676886, + -247.57482653267874, + -288.4937898641366 + ] + }, + { + "state": [ + 2, + 0, + 2, + false + ], + "values": [ + -153.63111957129533, + -158.378711145511, + -148.0210040957508, + -149.8072450083411 + ] + }, + { + "state": [ + 2, + 0, + 2, + true + ], + "values": [ + -184.04705836580615, + -188.35906633056288, + -181.44076208650085, + -178.7677364684336 + ] + }, + { + "state": [ + 2, + 1, + 0, + false + ], + "values": [ + -237.42919741093357, + -228.5147714363678, + -236.21598636005115, + -237.66941424372976 + ] + }, + { + "state": [ + 2, + 1, + 0, + true + ], + "values": [ + -261.38119481040826, + -274.61118845274166, + -270.57451482399665, + -271.6719350932001 + ] + }, + { + "state": [ + 2, + 1, + 1, + false + ], + "values": [ + -182.66224057776847, + -179.2811802146375, + -178.43127809838194, + -186.92320669371773 + ] + }, + { + "state": [ + 2, + 1, + 1, + true + ], + "values": [ + -212.58193768595856, + -212.4905681001523, + -198.76587435706543, + -209.30141064941506 + ] + }, + { + "state": [ + 2, + 1, + 2, + false + ], + "values": [ + -42.10009944437809, + -39.318046028475614, + -31.638065776551713, + -32.95993131184143 + ] + }, + { + "state": [ + 2, + 1, + 2, + true + ], + "values": [ + -97.81161302607735, + -100.23603704388047, + -103.81374937349105, + -94.86230537766566 + ] + }, + { + "state": [ + 2, + 2, + 0, + false + ], + "values": [ + -209.85762530005871, + -207.5150868167947, + -220.5593727970931, + -208.05554982754438 + ] + }, + { + "state": [ + 2, + 2, + 0, + true + ], + "values": [ + -225.10124597976002, + -220.49569668983247, + -213.53511406579457, + -237.67762248467244 + ] + }, + { + "state": [ + 2, + 2, + 1, + false + ], + "values": [ + -118.46907109219843, + -126.58939282126745, + -130.64405536102484, + -133.37867772486757 + ] + }, + { + "state": [ + 2, + 2, + 1, + true + ], + "values": [ + -119.06279019889533, + -113.09862195148385, + -103.79931526363805, + -104.0611563165642 + ] + }, + { + "state": [ + 2, + 2, + 2, + false + ], + "values": [ + -17.323395480392136, + -29.730454549816322, + -18.42494562235249, + -19.80117899857311 + ] + }, + { + "state": [ + 2, + 2, + 2, + true + ], + "values": [ + -7.477615450557552, + 0.0, + 0.0, + -3.7496862729114713 + ] + }, + { + "state": [ + 2, + 3, + 0, + false + ], + "values": [ + -194.80722722493, + -198.24071355094623, + -204.40268085775355, + -188.49664268380073 + ] + }, + { + "state": [ + 2, + 3, + 0, + true + ], + "values": [ + -82.86018617142211, + -83.8327448217861, + -90.24717440427777, + -80.09636840974284 + ] + }, + { + "state": [ + 2, + 3, + 1, + false + ], + "values": [ + -60.95464870878166, + -77.16781045545024, + -63.90871133005348, + -66.72209921721067 + ] + }, + { + "state": [ + 2, + 3, + 1, + true + ], + "values": [ + -2.314079882650884, + -0.1, + -17.787912763824593, + 0.0 + ] + }, + { + "state": [ + 2, + 3, + 2, + false + ], + "values": [ + -0.6171203802370865, + 0.0, + 0.0, + 0.0 + ] + }, + { + "state": [ + 3, + 0, + 0, + false + ], + "values": [ + -349.10369019445494, + -309.5612010461615, + -359.2592088480332, + -343.5531752078422 + ] + }, + { + "state": [ + 3, + 0, + 0, + true + ], + "values": [ + -491.037645918993, + -448.3731593569824, + -514.1214998158429, + -511.1473436632785 + ] + }, + { + "state": [ + 3, + 0, + 1, + false + ], + "values": [ + -339.0404581682902, + -333.07277369744963, + -328.43037742733844, + -328.76300356347457 + ] + }, + { + "state": [ + 3, + 0, + 1, + true + ], + "values": [ + -320.8612220327759, + -329.22167310624525, + -334.24264727742684, + -321.5871263916067 + ] + }, + { + "state": [ + 3, + 0, + 2, + false + ], + "values": [ + -48.87954205702215, + -42.05242251031967, + -46.574980997456066, + -33.62220565134553 + ] + }, + { + "state": [ + 3, + 0, + 2, + true + ], + "values": [ + -97.70318154819346, + -79.46506283377506, + -95.18496144890281, + -86.16143662201176 + ] + }, + { + "state": [ + 3, + 1, + 0, + false + ], + "values": [ + -104.13199213780973, + -123.90000376699155, + -110.87146864096637, + -120.97695560761655 + ] + }, + { + "state": [ + 3, + 1, + 0, + true + ], + "values": [ + -227.12211687992297, + -199.68339703581384, + -214.5033793150981, + -223.15817441379602 + ] + }, + { + "state": [ + 3, + 1, + 1, + false + ], + "values": [ + -11.619111449023842, + -12.501980740263836, + -36.657376862509956, + -28.899347400746848 + ] + }, + { + "state": [ + 3, + 1, + 1, + true + ], + "values": [ + -54.981164504770234, + -47.27534516472547, + -38.248666709581634, + -61.29195334894963 + ] + }, + { + "state": [ + 3, + 2, + 0, + false + ], + "values": [ + -36.955007993336764, + -43.40369131534267, + -30.799378731555592, + -29.790691056025377 + ] + }, + { + "state": [ + 3, + 2, + 0, + true + ], + "values": [ + -53.30367658574981, + -55.47815330137852, + -38.85347330148666, + -50.703693157326256 + ] + }, + { + "state": [ + 3, + 2, + 1, + false + ], + "values": [ + -0.758, + -16.307287601462942, + 0.0, + 0.0 + ] + }, + { + "state": [ + 3, + 2, + 1, + true + ], + "values": [ + -0.6539565229303822, + 0.0, + 0.0, + 0.0 + ] + }, + { + "state": [ + 3, + 3, + 0, + false + ], + "values": [ + -4.962726665779457, + -3.494857361554904, + -0.6879096337669093, + -15.49222643837237 + ] + }, + { + "state": [ + 3, + 3, + 0, + true + ], + "values": [ + -6.3086898529032105, + 0.0, + 0.0, + 0.0 + ] + } + ] +} diff --git a/benchmarks/default/models/qlearning_seed_4042.json b/benchmarks/default/models/qlearning_seed_4042.json new file mode 100644 index 0000000..18db662 --- /dev/null +++ b/benchmarks/default/models/qlearning_seed_4042.json @@ -0,0 +1,1125 @@ +{ + "version": 1, + "actions": [ + "fifo", + "spt", + "edf", + "priority" + ], + "state_encoding": { + "fields": [ + "queue_length_bucket", + "min_slack_bucket", + "short_proportion_bucket", + "high_priority" + ], + "queue_length_upper_bounds": [ + 1, + 3, + 7 + ], + "slack": "deadline - current_time - duration", + "slack_upper_bounds": [ + -1, + 2, + 6 + ], + "short_duration_max": 2, + "short_proportion_boundaries": [ + "1/3", + "2/3" + ], + "high_priority_min": 4 + }, + "reward": "-priority_weight * (tardiness + 0.1 * flow_time)", + "seed": 4042, + "learning_config": { + "learning_rate": 0.1, + "gamma": 1.0, + "epsilon_start": 1.0, + "epsilon_end": 0.05, + "epsilon_decay": 0.995 + }, + "training": { + "workload": "mixed", + "workload_config": { + "num_jobs": 60, + "arrival_rate": 0.28, + "deadline_factor": 4.0, + "duration_range": [ + 1, + 6 + ], + "burst_size": 6, + "burst_window": 3 + }, + "episodes": 1000, + "seed": 4042 + }, + "q_table": [ + { + "state": [ + 0, + 0, + 0, + false + ], + "values": [ + -93.24210416239174, + -69.38673377552931, + -107.38078148798397, + -89.44194496355566 + ] + }, + { + "state": [ + 0, + 0, + 0, + true + ], + "values": [ + -164.28169262190303, + -166.33030713036294, + -165.9822612605413, + -165.41144588194885 + ] + }, + { + "state": [ + 0, + 0, + 2, + false + ], + "values": [ + -99.15663995259493, + -96.88825551759804, + -95.28935962708731, + -94.83013713827853 + ] + }, + { + "state": [ + 0, + 0, + 2, + true + ], + "values": [ + -131.54772718695676, + -134.69701662010522, + -130.04233773450161, + -129.38503834531394 + ] + }, + { + "state": [ + 0, + 1, + 0, + false + ], + "values": [ + -80.51105441656337, + -75.35852084996922, + -59.08233125510597, + -75.85516455633216 + ] + }, + { + "state": [ + 0, + 1, + 0, + true + ], + "values": [ + -143.39564194966795, + -143.90737488180378, + -142.60677942639404, + -142.6437709214561 + ] + }, + { + "state": [ + 0, + 1, + 2, + false + ], + "values": [ + -128.2963613226426, + -127.85924976021342, + -127.68012265279722, + -117.9247252273725 + ] + }, + { + "state": [ + 0, + 1, + 2, + true + ], + "values": [ + -149.37732769777026, + -148.6062232289986, + -146.18878331697206, + -146.4803208619769 + ] + }, + { + "state": [ + 0, + 2, + 0, + false + ], + "values": [ + -133.6494920776252, + -127.61675986293999, + -122.1165908248355, + -128.7314355221431 + ] + }, + { + "state": [ + 0, + 2, + 0, + true + ], + "values": [ + -168.14659359002098, + -163.9985513950631, + -169.29681340863436, + -142.78747004535728 + ] + }, + { + "state": [ + 0, + 2, + 2, + false + ], + "values": [ + -144.71392958541583, + -144.41346948242438, + -144.0436154507046, + -143.52895670467785 + ] + }, + { + "state": [ + 0, + 2, + 2, + true + ], + "values": [ + -124.19101252094967, + -125.28576711551352, + -124.77421933903068, + -123.65825700588671 + ] + }, + { + "state": [ + 0, + 3, + 0, + false + ], + "values": [ + -165.13001163354062, + -166.39973490985665, + -154.87346846213464, + -166.75051391751592 + ] + }, + { + "state": [ + 0, + 3, + 0, + true + ], + "values": [ + -149.76269567859677, + -151.56058817227395, + -151.6595301060169, + -149.61350311963622 + ] + }, + { + "state": [ + 0, + 3, + 2, + false + ], + "values": [ + -148.1634982726464, + -148.0933354021186, + -144.55680977142083, + -149.38631739059863 + ] + }, + { + "state": [ + 1, + 0, + 0, + false + ], + "values": [ + -270.18027163829515, + -271.1541234068784, + -231.28093093342872, + -262.2151366744053 + ] + }, + { + "state": [ + 1, + 0, + 0, + true + ], + "values": [ + -293.6314853814245, + -284.67644986438904, + -206.5516153609176, + -278.7170645242964 + ] + }, + { + "state": [ + 1, + 0, + 1, + false + ], + "values": [ + -172.38822908575418, + -182.9686847705634, + -187.23063991020692, + -183.05686832423208 + ] + }, + { + "state": [ + 1, + 0, + 1, + true + ], + "values": [ + -213.08824885776917, + -203.6449434466947, + -208.0148068804042, + -189.3552078766188 + ] + }, + { + "state": [ + 1, + 0, + 2, + false + ], + "values": [ + -143.50279239307278, + -137.06989180010643, + -139.41396440327998, + -137.5272152083597 + ] + }, + { + "state": [ + 1, + 0, + 2, + true + ], + "values": [ + -161.80109555176406, + -186.32771246622724, + -166.04999178397438, + -168.78276753859765 + ] + }, + { + "state": [ + 1, + 1, + 0, + false + ], + "values": [ + -202.2790227311968, + -150.0642888162003, + -192.07216282273828, + -194.15358999529732 + ] + }, + { + "state": [ + 1, + 1, + 0, + true + ], + "values": [ + -204.42846196531718, + -211.57420172085983, + -186.44541686419598, + -213.67475562583903 + ] + }, + { + "state": [ + 1, + 1, + 1, + false + ], + "values": [ + -173.51891964159162, + -163.43243003609084, + -165.04316691674927, + -164.2030677466111 + ] + }, + { + "state": [ + 1, + 1, + 1, + true + ], + "values": [ + -187.7778143784893, + -173.8904512761842, + -185.28544722984412, + -186.38243167580586 + ] + }, + { + "state": [ + 1, + 1, + 2, + false + ], + "values": [ + -120.64635001188587, + -121.4455216029237, + -119.602598174149, + -119.5943245750237 + ] + }, + { + "state": [ + 1, + 1, + 2, + true + ], + "values": [ + -142.76647281003432, + -146.3832091657156, + -140.11104887432742, + -140.87545451881005 + ] + }, + { + "state": [ + 1, + 2, + 0, + false + ], + "values": [ + -188.91561791875978, + -182.53170830652218, + -186.11099284448915, + -197.62629970432516 + ] + }, + { + "state": [ + 1, + 2, + 0, + true + ], + "values": [ + -212.64924913685942, + -210.12724106995927, + -176.3259015368935, + -215.30553260971882 + ] + }, + { + "state": [ + 1, + 2, + 1, + false + ], + "values": [ + -164.1666420007281, + -157.00712427479047, + -165.74692985104983, + -172.16905559422145 + ] + }, + { + "state": [ + 1, + 2, + 1, + true + ], + "values": [ + -170.37992352597763, + -162.83684796115222, + -164.9726038377916, + -157.86193549931366 + ] + }, + { + "state": [ + 1, + 2, + 2, + false + ], + "values": [ + -125.68315239407946, + -124.85459840588591, + -126.9715310969168, + -127.34761790240256 + ] + }, + { + "state": [ + 1, + 2, + 2, + true + ], + "values": [ + -59.04635926347709, + -68.58492550236085, + -64.71960253857107, + -75.3725501571163 + ] + }, + { + "state": [ + 1, + 3, + 0, + false + ], + "values": [ + -192.9116240349175, + -193.98152525156073, + -173.16944243856585, + -195.45706520485743 + ] + }, + { + "state": [ + 1, + 3, + 0, + true + ], + "values": [ + -157.4906362755216, + -158.23831307385834, + -155.83118317175786, + -153.64310138684664 + ] + }, + { + "state": [ + 1, + 3, + 1, + false + ], + "values": [ + -157.51451509858364, + -164.86864647215063, + -166.00930242129414, + -163.02013315506335 + ] + }, + { + "state": [ + 1, + 3, + 1, + true + ], + "values": [ + -51.564464668024655, + -60.13513119099793, + -56.842126092554395, + -54.07683148419755 + ] + }, + { + "state": [ + 1, + 3, + 2, + false + ], + "values": [ + -96.05127683953059, + -97.77580434584314, + -94.46894511539966, + -97.6084600469657 + ] + }, + { + "state": [ + 1, + 3, + 2, + true + ], + "values": [ + -0.914861480801426, + -0.9149233584498555, + 0.0, + 0.0 + ] + }, + { + "state": [ + 2, + 0, + 0, + false + ], + "values": [ + -374.13403056316724, + -337.136342777478, + -369.64794764989017, + -363.47827809894085 + ] + }, + { + "state": [ + 2, + 0, + 0, + true + ], + "values": [ + -427.5819724006517, + -409.634532728714, + -426.3201187246346, + -334.2908559390192 + ] + }, + { + "state": [ + 2, + 0, + 1, + false + ], + "values": [ + -279.8387810565015, + -282.60375523281, + -281.3788630912377, + -256.2512637858278 + ] + }, + { + "state": [ + 2, + 0, + 1, + true + ], + "values": [ + -286.80718054903025, + -305.4773820143472, + -313.33756279530405, + -309.1128206818425 + ] + }, + { + "state": [ + 2, + 0, + 2, + false + ], + "values": [ + -103.08958544685558, + -93.86146478102326, + -108.5052037690399, + -96.73488138068727 + ] + }, + { + "state": [ + 2, + 0, + 2, + true + ], + "values": [ + -210.75268919962548, + -211.3338546877145, + -211.93422047774968, + -207.9628200108858 + ] + }, + { + "state": [ + 2, + 1, + 0, + false + ], + "values": [ + -241.83859300481367, + -242.23184534152176, + -209.8468509112524, + -247.08382721180348 + ] + }, + { + "state": [ + 2, + 1, + 0, + true + ], + "values": [ + -290.34274565787837, + -284.2945969131996, + -276.1789539182802, + -283.84040371893775 + ] + }, + { + "state": [ + 2, + 1, + 1, + false + ], + "values": [ + -192.04461675457395, + -186.07590082911562, + -191.90665975999005, + -190.08569223818589 + ] + }, + { + "state": [ + 2, + 1, + 1, + true + ], + "values": [ + -216.69712337660442, + -233.90326869496354, + -235.17618596175197, + -231.44436248993406 + ] + }, + { + "state": [ + 2, + 1, + 2, + false + ], + "values": [ + -27.234000769462273, + -35.35884057039689, + -33.0389786533966, + -30.680403168505393 + ] + }, + { + "state": [ + 2, + 1, + 2, + true + ], + "values": [ + -96.1169872561303, + -95.0729441222692, + -92.82834633610233, + -102.3599270766442 + ] + }, + { + "state": [ + 2, + 2, + 0, + false + ], + "values": [ + -228.36527677156153, + -227.5654503183752, + -220.97077010601103, + -236.6607208640241 + ] + }, + { + "state": [ + 2, + 2, + 0, + true + ], + "values": [ + -226.40448392925117, + -222.61649187281233, + -236.56722973061738, + -230.16325166523708 + ] + }, + { + "state": [ + 2, + 2, + 1, + false + ], + "values": [ + -139.07337632050002, + -144.47594195056993, + -140.0149451042895, + -154.32386431088483 + ] + }, + { + "state": [ + 2, + 2, + 1, + true + ], + "values": [ + -146.36958494876004, + -144.95878275731377, + -147.66183438022472, + -143.0490299831073 + ] + }, + { + "state": [ + 2, + 2, + 2, + false + ], + "values": [ + -12.54094837250941, + -16.582291565718695, + -20.62952724170675, + -14.68801795063973 + ] + }, + { + "state": [ + 2, + 2, + 2, + true + ], + "values": [ + -11.455249731440606, + -8.249219103464979, + -25.12380453048709, + -7.924482067470445 + ] + }, + { + "state": [ + 2, + 3, + 0, + false + ], + "values": [ + -215.49466356169955, + -217.391605712194, + -220.37505105403318, + -215.7357580192837 + ] + }, + { + "state": [ + 2, + 3, + 0, + true + ], + "values": [ + -124.95700672234723, + -123.58661779725894, + -136.8634072610545, + -124.37288788495727 + ] + }, + { + "state": [ + 2, + 3, + 1, + false + ], + "values": [ + -57.201513977170094, + -54.26096448448499, + -56.09892707331528, + -46.93414750502438 + ] + }, + { + "state": [ + 2, + 3, + 1, + true + ], + "values": [ + -18.674986349961014, + 0.0, + 0.0, + 0.0 + ] + }, + { + "state": [ + 2, + 3, + 2, + false + ], + "values": [ + -7.7654617579965395, + 0.0, + 0.0, + 0.0 + ] + }, + { + "state": [ + 3, + 0, + 0, + false + ], + "values": [ + -443.4418859220007, + -424.69151459777754, + -436.7337551792191, + -439.2251383987968 + ] + }, + { + "state": [ + 3, + 0, + 0, + true + ], + "values": [ + -488.4965442056502, + -467.7873749638938, + -522.0921666586928, + -400.1185016591569 + ] + }, + { + "state": [ + 3, + 0, + 1, + false + ], + "values": [ + -275.97062798070556, + -281.98919088299715, + -274.81090954363873, + -266.84597288244123 + ] + }, + { + "state": [ + 3, + 0, + 1, + true + ], + "values": [ + -418.499327765725, + -375.6133940419792, + -420.75534974381577, + -418.4643837701856 + ] + }, + { + "state": [ + 3, + 0, + 2, + false + ], + "values": [ + -4.0, + -24.3897298155145, + 0.0, + -4.664948699187369 + ] + }, + { + "state": [ + 3, + 0, + 2, + true + ], + "values": [ + -37.74637590213225, + -67.46362425942307, + -96.15312519182153, + -57.88550725929504 + ] + }, + { + "state": [ + 3, + 1, + 0, + false + ], + "values": [ + -58.894318448706485, + -60.35469290397574, + -61.616465683686485, + -61.70271342060719 + ] + }, + { + "state": [ + 3, + 1, + 0, + true + ], + "values": [ + -221.4077152574809, + -220.68748034835295, + -227.3733090311826, + -231.95888450769377 + ] + }, + { + "state": [ + 3, + 1, + 1, + false + ], + "values": [ + -0.794420050043757, + -0.6807774952823404, + -21.25111854775357, + -16.49599714576326 + ] + }, + { + "state": [ + 3, + 1, + 1, + true + ], + "values": [ + -57.199587649537506, + -32.474030119160616, + -57.872255451284566, + -31.084165222914507 + ] + }, + { + "state": [ + 3, + 2, + 0, + false + ], + "values": [ + -16.87195435769929, + -24.437079455300392, + -7.367194678966243, + -27.084232215497813 + ] + }, + { + "state": [ + 3, + 2, + 0, + true + ], + "values": [ + -39.950812036816274, + -21.926431494492714, + -20.505654858804377, + -49.346754007746966 + ] + }, + { + "state": [ + 3, + 2, + 1, + false + ], + "values": [ + 0.0, + -2.1090381527348248, + 0.0, + -9.77089095578484 + ] + }, + { + "state": [ + 3, + 3, + 0, + false + ], + "values": [ + -20.484751019463072, + -1.074593492704743, + 0.0, + 0.0 + ] + } + ] +} diff --git a/benchmarks/default/models/qlearning_seed_42.json b/benchmarks/default/models/qlearning_seed_42.json new file mode 100644 index 0000000..3ebaf64 --- /dev/null +++ b/benchmarks/default/models/qlearning_seed_42.json @@ -0,0 +1,1125 @@ +{ + "version": 1, + "actions": [ + "fifo", + "spt", + "edf", + "priority" + ], + "state_encoding": { + "fields": [ + "queue_length_bucket", + "min_slack_bucket", + "short_proportion_bucket", + "high_priority" + ], + "queue_length_upper_bounds": [ + 1, + 3, + 7 + ], + "slack": "deadline - current_time - duration", + "slack_upper_bounds": [ + -1, + 2, + 6 + ], + "short_duration_max": 2, + "short_proportion_boundaries": [ + "1/3", + "2/3" + ], + "high_priority_min": 4 + }, + "reward": "-priority_weight * (tardiness + 0.1 * flow_time)", + "seed": 42, + "learning_config": { + "learning_rate": 0.1, + "gamma": 1.0, + "epsilon_start": 1.0, + "epsilon_end": 0.05, + "epsilon_decay": 0.995 + }, + "training": { + "workload": "mixed", + "workload_config": { + "num_jobs": 60, + "arrival_rate": 0.28, + "deadline_factor": 4.0, + "duration_range": [ + 1, + 6 + ], + "burst_size": 6, + "burst_window": 3 + }, + "episodes": 1000, + "seed": 42 + }, + "q_table": [ + { + "state": [ + 0, + 0, + 0, + false + ], + "values": [ + -87.26046039571492, + -92.52198775252134, + -59.90601787446777, + -84.60349728711913 + ] + }, + { + "state": [ + 0, + 0, + 0, + true + ], + "values": [ + -164.72202944510582, + -161.07432054059373, + -160.9480209535389, + -165.65378268466466 + ] + }, + { + "state": [ + 0, + 0, + 2, + false + ], + "values": [ + -78.58727026568289, + -76.70589995191492, + -78.23254056734332, + -91.59477383556965 + ] + }, + { + "state": [ + 0, + 0, + 2, + true + ], + "values": [ + -130.209366049569, + -127.3607190042609, + -115.52211206749008, + -128.12156537372397 + ] + }, + { + "state": [ + 0, + 1, + 0, + false + ], + "values": [ + -88.40359303681075, + -80.25939568190114, + -56.0370952871921, + -96.63971054272558 + ] + }, + { + "state": [ + 0, + 1, + 0, + true + ], + "values": [ + -152.4968708499179, + -158.66202743011866, + -149.9041053330593, + -153.28848833955774 + ] + }, + { + "state": [ + 0, + 1, + 2, + false + ], + "values": [ + -119.6991811976293, + -121.80596643096764, + -121.97252444359567, + -119.60918510382152 + ] + }, + { + "state": [ + 0, + 1, + 2, + true + ], + "values": [ + -143.89440709267305, + -145.97570355640735, + -144.02237537030868, + -143.29980340457814 + ] + }, + { + "state": [ + 0, + 2, + 0, + false + ], + "values": [ + -140.22977297218006, + -141.9366363578591, + -145.20028004120348, + -139.66249147120595 + ] + }, + { + "state": [ + 0, + 2, + 0, + true + ], + "values": [ + -152.49077368149497, + -160.94475562663018, + -159.97931018015825, + -159.77677453101953 + ] + }, + { + "state": [ + 0, + 2, + 2, + false + ], + "values": [ + -146.86643358833322, + -146.10916712343027, + -147.7810497381891, + -148.86640997521764 + ] + }, + { + "state": [ + 0, + 2, + 2, + true + ], + "values": [ + -124.33812190655006, + -120.01712898278342, + -124.68611225694372, + -122.24086617549003 + ] + }, + { + "state": [ + 0, + 3, + 0, + false + ], + "values": [ + -171.58334135532002, + -175.69616509080015, + -169.5913009845929, + -165.35292147386065 + ] + }, + { + "state": [ + 0, + 3, + 0, + true + ], + "values": [ + -142.04552445286942, + -146.56495471704164, + -156.54048145060239, + -144.9563972391757 + ] + }, + { + "state": [ + 0, + 3, + 2, + false + ], + "values": [ + -149.43809527588908, + -147.70617519855435, + -149.77896859842153, + -148.28478058349944 + ] + }, + { + "state": [ + 1, + 0, + 0, + false + ], + "values": [ + -234.75171174619453, + -234.26249683529167, + -239.8253002446295, + -228.19822836598803 + ] + }, + { + "state": [ + 1, + 0, + 0, + true + ], + "values": [ + -303.16379305178634, + -225.79107549409323, + -309.9794569157871, + -298.86246497111347 + ] + }, + { + "state": [ + 1, + 0, + 1, + false + ], + "values": [ + -187.37213033614233, + -178.51187844742336, + -183.5418806483113, + -168.56542338985005 + ] + }, + { + "state": [ + 1, + 0, + 1, + true + ], + "values": [ + -215.6296680217136, + -216.23987768847292, + -224.66376403800805, + -217.8942947034199 + ] + }, + { + "state": [ + 1, + 0, + 2, + false + ], + "values": [ + -132.27790693109188, + -127.5777743262773, + -129.67439443395202, + -129.42657181562885 + ] + }, + { + "state": [ + 1, + 0, + 2, + true + ], + "values": [ + -171.88904702835498, + -170.65436562673017, + -169.5792825227247, + -160.73356350666916 + ] + }, + { + "state": [ + 1, + 1, + 0, + false + ], + "values": [ + -198.55756899633792, + -179.346173630707, + -169.41458739424783, + -182.39326778617675 + ] + }, + { + "state": [ + 1, + 1, + 0, + true + ], + "values": [ + -238.43783624740263, + -220.90189625146917, + -222.40121121750505, + -199.2175347244955 + ] + }, + { + "state": [ + 1, + 1, + 1, + false + ], + "values": [ + -171.06937460481478, + -161.99151725474903, + -166.74532550074628, + -162.53924706513124 + ] + }, + { + "state": [ + 1, + 1, + 1, + true + ], + "values": [ + -194.21334053679436, + -176.8177287210282, + -184.34946184133588, + -192.17043082973163 + ] + }, + { + "state": [ + 1, + 1, + 2, + false + ], + "values": [ + -126.91632082999723, + -116.01547828324216, + -119.39107001518947, + -117.13511389704274 + ] + }, + { + "state": [ + 1, + 1, + 2, + true + ], + "values": [ + -140.69712782506886, + -140.27295768021688, + -141.79682459527749, + -141.4734551226015 + ] + }, + { + "state": [ + 1, + 2, + 0, + false + ], + "values": [ + -210.74198698762262, + -185.9114871643113, + -201.1385962640329, + -203.1882899410218 + ] + }, + { + "state": [ + 1, + 2, + 0, + true + ], + "values": [ + -201.79276875478868, + -205.63241918635885, + -204.66557533649652, + -189.58200377388758 + ] + }, + { + "state": [ + 1, + 2, + 1, + false + ], + "values": [ + -183.45208312792735, + -171.5989431593277, + -165.84074037325797, + -171.22256581865557 + ] + }, + { + "state": [ + 1, + 2, + 1, + true + ], + "values": [ + -165.4201457346595, + -163.49788641485762, + -144.77615391783436, + -169.83208190789279 + ] + }, + { + "state": [ + 1, + 2, + 2, + false + ], + "values": [ + -142.05192263179316, + -127.68975460585061, + -130.33237203776926, + -130.4375924886511 + ] + }, + { + "state": [ + 1, + 2, + 2, + true + ], + "values": [ + -73.70924469003639, + -65.72529975335327, + -62.67237437087786, + -64.1406731257272 + ] + }, + { + "state": [ + 1, + 3, + 0, + false + ], + "values": [ + -190.912027575323, + -183.2370810521364, + -183.28602555140648, + -182.8627777688162 + ] + }, + { + "state": [ + 1, + 3, + 0, + true + ], + "values": [ + -153.55968773228267, + -150.23568852315006, + -150.90719047448914, + -159.79320519865044 + ] + }, + { + "state": [ + 1, + 3, + 1, + false + ], + "values": [ + -159.4212203011541, + -159.8305895246455, + -168.14061111249242, + -159.81634658463247 + ] + }, + { + "state": [ + 1, + 3, + 1, + true + ], + "values": [ + -44.804724545125985, + -40.05847374858424, + -43.595331562662004, + -40.57442365610858 + ] + }, + { + "state": [ + 1, + 3, + 2, + false + ], + "values": [ + -72.46248592910524, + -77.7843754548805, + -68.78395196033321, + -71.00111308685139 + ] + }, + { + "state": [ + 1, + 3, + 2, + true + ], + "values": [ + -12.47991472378987, + -3.0591847267299066, + -12.958809455005081, + 0.0 + ] + }, + { + "state": [ + 2, + 0, + 0, + false + ], + "values": [ + -361.9211029031837, + -312.19179899326366, + -333.57104131417947, + -352.05468954486776 + ] + }, + { + "state": [ + 2, + 0, + 0, + true + ], + "values": [ + -432.61020357545283, + -418.05813072511876, + -427.79217785850085, + -329.5354458769364 + ] + }, + { + "state": [ + 2, + 0, + 1, + false + ], + "values": [ + -282.3766940712245, + -284.0177452496084, + -285.85481634414, + -285.7998932209346 + ] + }, + { + "state": [ + 2, + 0, + 1, + true + ], + "values": [ + -309.6420727415176, + -319.8460717492544, + -306.2352296360572, + -282.23280556300716 + ] + }, + { + "state": [ + 2, + 0, + 2, + false + ], + "values": [ + -133.90565473743536, + -150.72022065979016, + -133.66835889480254, + -144.93050289391041 + ] + }, + { + "state": [ + 2, + 0, + 2, + true + ], + "values": [ + -186.8467131227804, + -169.61293789042196, + -201.35595943887324, + -199.92076642789323 + ] + }, + { + "state": [ + 2, + 1, + 0, + false + ], + "values": [ + -248.3952424422638, + -253.48085700851044, + -242.41517411151807, + -246.22514938990875 + ] + }, + { + "state": [ + 2, + 1, + 0, + true + ], + "values": [ + -320.60335183218905, + -269.51605803392357, + -302.48794069737244, + -312.1722102533813 + ] + }, + { + "state": [ + 2, + 1, + 1, + false + ], + "values": [ + -214.59805370044378, + -206.70040791813105, + -185.6129819741067, + -204.4173093043339 + ] + }, + { + "state": [ + 2, + 1, + 1, + true + ], + "values": [ + -218.86946492284295, + -224.76405048977915, + -218.66227905786783, + -200.75549195070658 + ] + }, + { + "state": [ + 2, + 1, + 2, + false + ], + "values": [ + -28.102130327217523, + -24.36344889732563, + -27.721653561511385, + -30.891575361369092 + ] + }, + { + "state": [ + 2, + 1, + 2, + true + ], + "values": [ + -79.66830937774373, + -83.77261717803695, + -75.12422619036514, + -78.42627951372737 + ] + }, + { + "state": [ + 2, + 2, + 0, + false + ], + "values": [ + -232.05941984870242, + -226.81170762147906, + -221.92469360622712, + -232.67116145228906 + ] + }, + { + "state": [ + 2, + 2, + 0, + true + ], + "values": [ + -251.3217332282622, + -235.02486458524945, + -219.16917456786217, + -254.16561366416187 + ] + }, + { + "state": [ + 2, + 2, + 1, + false + ], + "values": [ + -148.587840500518, + -136.6222890724347, + -145.82938379320973, + -140.4918777011726 + ] + }, + { + "state": [ + 2, + 2, + 1, + true + ], + "values": [ + -157.89347463599768, + -136.4828162244361, + -136.52947113735058, + -143.32886982632405 + ] + }, + { + "state": [ + 2, + 2, + 2, + false + ], + "values": [ + -17.35891606444929, + -18.536975305088667, + -10.722047997854329, + -16.20389942337404 + ] + }, + { + "state": [ + 2, + 2, + 2, + true + ], + "values": [ + -16.840300309286857, + 0.0, + -0.020000000000000004, + -0.24000000000000005 + ] + }, + { + "state": [ + 2, + 3, + 0, + false + ], + "values": [ + -198.16540512448367, + -197.96202947821087, + -198.77494175504265, + -208.15162439151865 + ] + }, + { + "state": [ + 2, + 3, + 0, + true + ], + "values": [ + -99.15828874407012, + -108.6956864254096, + -95.73055396039118, + -106.25476320945839 + ] + }, + { + "state": [ + 2, + 3, + 1, + false + ], + "values": [ + -59.71750431516857, + -54.141250847460306, + -63.912465142200745, + -77.94105248238792 + ] + }, + { + "state": [ + 2, + 3, + 1, + true + ], + "values": [ + -12.890401903392444, + -6.649941316970867, + -14.618289549210282, + -14.460619951151827 + ] + }, + { + "state": [ + 2, + 3, + 2, + false + ], + "values": [ + -11.675356880720985, + -9.5268516115346, + -10.363201806957042, + -5.404300436821014 + ] + }, + { + "state": [ + 3, + 0, + 0, + false + ], + "values": [ + -366.5416036723508, + -354.25244394734295, + -377.376209416539, + -375.9111112045807 + ] + }, + { + "state": [ + 3, + 0, + 0, + true + ], + "values": [ + -514.0354076557509, + -415.5366989341555, + -555.3527384013474, + -561.1813288596328 + ] + }, + { + "state": [ + 3, + 0, + 1, + false + ], + "values": [ + -306.764500528315, + -302.4091628910368, + -306.43816926044974, + -304.84047118545885 + ] + }, + { + "state": [ + 3, + 0, + 1, + true + ], + "values": [ + -373.8273180090825, + -379.16513290174373, + -371.5567922440158, + -354.95468601370476 + ] + }, + { + "state": [ + 3, + 0, + 2, + false + ], + "values": [ + -10.415409328871517, + -7.8794093288715175, + -38.23785498960261, + -17.00639950542643 + ] + }, + { + "state": [ + 3, + 0, + 2, + true + ], + "values": [ + -72.2007122985984, + -80.53286551186903, + -73.26904758044995, + -69.13735132396403 + ] + }, + { + "state": [ + 3, + 1, + 0, + false + ], + "values": [ + -85.83847748949799, + -70.280782199133, + -62.92079278291575, + -79.16265679462798 + ] + }, + { + "state": [ + 3, + 1, + 0, + true + ], + "values": [ + -222.1130843775262, + -200.32612439674645, + -213.49621269536794, + -203.91183119369626 + ] + }, + { + "state": [ + 3, + 1, + 1, + false + ], + "values": [ + -0.9416432564652741, + -3.0408854053570455, + -3.112924501243601, + -30.40188191920319 + ] + }, + { + "state": [ + 3, + 1, + 1, + true + ], + "values": [ + -32.13905750206531, + -29.169245012436008, + -35.146820684222874, + -64.64804085141219 + ] + }, + { + "state": [ + 3, + 2, + 0, + false + ], + "values": [ + -21.688086890702014, + -36.46452483250017, + -41.15838463838554, + -16.803593658831787 + ] + }, + { + "state": [ + 3, + 2, + 0, + true + ], + "values": [ + -54.65340896055227, + -22.60811646756259, + -20.454724648798454, + -29.26162187441171 + ] + }, + { + "state": [ + 3, + 2, + 1, + false + ], + "values": [ + -0.4600000000000001, + 0.0, + 0.0, + 0.0 + ] + }, + { + "state": [ + 3, + 3, + 0, + false + ], + "values": [ + -8.07561244357042, + -1.9773187475001774, + -1.777265784822824, + -11.522504239387146 + ] + } + ] +} diff --git a/benchmarks/default/per_episode.csv b/benchmarks/default/per_episode.csv new file mode 100644 index 0000000..1966d08 --- /dev/null +++ b/benchmarks/default/per_episode.csv @@ -0,0 +1,721 @@ +workload,evaluation_seed,policy,training_seed,primary_cost,deadline_miss_rate,average_waiting_time,p95_waiting_time,average_flow_time +stable,20000,fifo,,2.015,0.08333333333333333,3.283333333333333,8.049999999999997,6.733333333333333 +stable,20000,spt,,1.5016666666666667,0.016666666666666666,2.6666666666666665,9.0,6.116666666666666 +stable,20000,edf,,1.495,0.016666666666666666,2.683333333333333,9.0,6.133333333333334 +stable,20000,priority,,2.466666666666667,0.1,3.6333333333333333,9.499999999999972,7.083333333333333 +stable,20000,random,,3.9733333333333336,0.11666666666666667,3.683333333333333,16.049999999999997,7.133333333333334 +stable,20000,qlearning,42,1.9766666666666668,0.06666666666666667,3.0833333333333335,10.149999999999991,6.533333333333333 +stable,20000,qlearning,2042,1.4800000000000002,0.016666666666666666,2.783333333333333,8.049999999999997,6.233333333333333 +stable,20000,qlearning,4042,1.525,0.03333333333333333,2.9,8.049999999999997,6.35 +stable,20001,fifo,,5.403333333333333,0.26666666666666666,4.933333333333334,13.099999999999994,8.0 +stable,20001,spt,,2.315,0.1,3.25,14.149999999999991,6.316666666666666 +stable,20001,edf,,1.8283333333333334,0.06666666666666667,3.433333333333333,11.0,6.5 +stable,20001,priority,,4.075,0.25,4.85,16.19999999999999,7.916666666666667 +stable,20001,random,,8.146666666666667,0.2833333333333333,5.25,18.299999999999983,8.316666666666666 +stable,20001,qlearning,42,2.8383333333333334,0.08333333333333333,3.9833333333333334,16.0,7.05 +stable,20001,qlearning,2042,2.066666666666667,0.08333333333333333,3.6,11.099999999999994,6.666666666666667 +stable,20001,qlearning,4042,2.89,0.16666666666666666,3.9833333333333334,16.19999999999999,7.05 +stable,20002,fifo,,3.0483333333333333,0.16666666666666666,4.516666666666667,11.099999999999994,7.783333333333333 +stable,20002,spt,,1.896666666666667,0.05,3.6,11.149999999999991,6.866666666666666 +stable,20002,edf,,1.7800000000000002,0.05,3.6666666666666665,13.0,6.933333333333334 +stable,20002,priority,,4.456666666666667,0.2,5.716666666666667,17.0,8.983333333333333 +stable,20002,random,,8.316666666666666,0.23333333333333334,5.416666666666667,21.14999999999999,8.683333333333334 +stable,20002,qlearning,42,3.618333333333333,0.16666666666666666,4.75,15.149999999999991,8.016666666666667 +stable,20002,qlearning,2042,1.8550000000000002,0.08333333333333333,3.816666666666667,13.0,7.083333333333333 +stable,20002,qlearning,4042,2.5283333333333338,0.15,4.266666666666667,15.049999999999997,7.533333333333333 +stable,20003,fifo,,17.251666666666665,0.4166666666666667,12.016666666666667,33.14999999999999,15.783333333333333 +stable,20003,spt,,9.67,0.23333333333333334,8.733333333333333,48.39999999999998,12.5 +stable,20003,edf,,10.536666666666667,0.3,10.1,31.049999999999997,13.866666666666667 +stable,20003,priority,,8.998333333333333,0.3333333333333333,10.983333333333333,46.249999999999986,14.75 +stable,20003,random,,10.931666666666667,0.3,10.483333333333333,41.099999999999994,14.25 +stable,20003,qlearning,42,7.576666666666667,0.23333333333333334,9.583333333333334,34.149999999999935,13.35 +stable,20003,qlearning,2042,9.358333333333333,0.3,10.15,31.69999999999996,13.916666666666666 +stable,20003,qlearning,4042,11.196666666666665,0.38333333333333336,10.7,34.14999999999999,14.466666666666667 +stable,20004,fifo,,26.19333333333333,0.75,18.183333333333334,30.0,21.716666666666665 +stable,20004,spt,,19.441666666666666,0.23333333333333334,11.816666666666666,59.449999999999974,15.35 +stable,20004,edf,,19.133333333333333,0.6833333333333333,15.6,32.05,19.133333333333333 +stable,20004,priority,,15.756666666666666,0.4166666666666667,17.166666666666668,60.29999999999998,20.7 +stable,20004,random,,30.373333333333335,0.55,18.933333333333334,55.14999999999999,22.466666666666665 +stable,20004,qlearning,42,15.071666666666665,0.35,13.05,52.34999999999998,16.583333333333332 +stable,20004,qlearning,2042,21.473333333333336,0.6666666666666666,16.4,31.14999999999999,19.933333333333334 +stable,20004,qlearning,4042,15.696666666666665,0.36666666666666664,13.233333333333333,52.34999999999998,16.766666666666666 +stable,20005,fifo,,9.425,0.25,6.916666666666667,21.049999999999997,10.233333333333333 +stable,20005,spt,,5.128333333333333,0.06666666666666667,4.766666666666667,17.749999999999957,8.083333333333334 +stable,20005,edf,,5.911666666666666,0.2,5.9,24.0,9.216666666666667 +stable,20005,priority,,5.35,0.21666666666666667,6.366666666666666,35.39999999999998,9.683333333333334 +stable,20005,random,,8.493333333333334,0.26666666666666666,6.85,31.049999999999997,10.166666666666666 +stable,20005,qlearning,42,7.111666666666666,0.16666666666666666,6.683333333333334,35.0,10.0 +stable,20005,qlearning,2042,5.956666666666666,0.15,6.15,32.05,9.466666666666667 +stable,20005,qlearning,4042,5.566666666666666,0.15,5.783333333333333,24.099999999999994,9.1 +stable,20006,fifo,,2.731666666666667,0.13333333333333333,4.066666666666666,11.0,7.783333333333333 +stable,20006,spt,,1.7950000000000002,0.03333333333333333,3.316666666666667,11.199999999999989,7.033333333333333 +stable,20006,edf,,1.666666666666667,0.0,3.466666666666667,11.0,7.183333333333334 +stable,20006,priority,,2.4050000000000002,0.13333333333333333,4.116666666666666,17.099999999999994,7.833333333333333 +stable,20006,random,,3.5433333333333334,0.18333333333333332,3.966666666666667,15.099999999999994,7.683333333333334 +stable,20006,qlearning,42,1.7183333333333335,0.016666666666666666,3.566666666666667,11.099999999999994,7.283333333333333 +stable,20006,qlearning,2042,1.9733333333333334,0.06666666666666667,3.6166666666666667,12.049999999999997,7.333333333333333 +stable,20006,qlearning,4042,1.6416666666666666,0.016666666666666666,3.5166666666666666,11.049999999999997,7.233333333333333 +stable,20007,fifo,,10.506666666666666,0.38333333333333336,10.5,26.0,14.316666666666666 +stable,20007,spt,,7.568333333333333,0.16666666666666666,7.516666666666667,34.29999999999998,11.333333333333334 +stable,20007,edf,,7.361666666666666,0.3,8.75,27.049999999999997,12.566666666666666 +stable,20007,priority,,8.198333333333334,0.35,10.933333333333334,40.19999999999999,14.75 +stable,20007,random,,13.7,0.35,10.333333333333334,36.0,14.15 +stable,20007,qlearning,42,7.281666666666667,0.25,9.733333333333333,32.099999999999994,13.55 +stable,20007,qlearning,2042,6.338333333333334,0.3333333333333333,9.15,27.049999999999997,12.966666666666667 +stable,20007,qlearning,4042,7.696666666666667,0.3,9.55,27.0,13.366666666666667 +stable,20008,fifo,,26.196666666666665,0.5833333333333334,17.833333333333332,40.05,21.616666666666667 +stable,20008,spt,,15.255,0.25,12.016666666666667,54.19999999999999,15.8 +stable,20008,edf,,20.0,0.5,15.116666666666667,41.099999999999994,18.9 +stable,20008,priority,,16.258333333333333,0.38333333333333336,17.933333333333334,66.05,21.716666666666665 +stable,20008,random,,26.578333333333333,0.43333333333333335,19.283333333333335,73.1,23.066666666666666 +stable,20008,qlearning,42,11.46,0.2833333333333333,12.683333333333334,66.0,16.466666666666665 +stable,20008,qlearning,2042,12.93,0.36666666666666664,13.883333333333333,60.0,17.666666666666668 +stable,20008,qlearning,4042,12.878333333333334,0.35,13.633333333333333,60.29999999999998,17.416666666666668 +stable,20009,fifo,,6.801666666666667,0.26666666666666666,7.116666666666666,21.19999999999999,10.7 +stable,20009,spt,,3.2516666666666665,0.08333333333333333,5.616666666666666,21.19999999999999,9.2 +stable,20009,edf,,3.165,0.11666666666666667,5.966666666666667,24.0,9.55 +stable,20009,priority,,4.538333333333333,0.25,7.0,27.0,10.583333333333334 +stable,20009,random,,8.403333333333332,0.23333333333333334,7.516666666666667,31.049999999999997,11.1 +stable,20009,qlearning,42,3.3800000000000003,0.16666666666666666,6.116666666666666,24.049999999999997,9.7 +stable,20009,qlearning,2042,3.835,0.16666666666666666,6.15,21.14999999999999,9.733333333333333 +stable,20009,qlearning,4042,3.6233333333333335,0.15,6.266666666666667,19.299999999999983,9.85 +stable,20010,fifo,,7.548333333333334,0.35,7.616666666666666,18.0,11.016666666666667 +stable,20010,spt,,3.1016666666666666,0.08333333333333333,5.35,18.299999999999983,8.75 +stable,20010,edf,,4.213333333333334,0.23333333333333334,6.216666666666667,19.049999999999997,9.616666666666667 +stable,20010,priority,,4.88,0.2,7.416666666666667,34.05,10.816666666666666 +stable,20010,random,,8.15,0.25,6.933333333333334,25.249999999999986,10.333333333333334 +stable,20010,qlearning,42,3.3983333333333334,0.13333333333333333,5.916666666666667,23.049999999999997,9.316666666666666 +stable,20010,qlearning,2042,4.6433333333333335,0.26666666666666666,6.566666666666666,19.049999999999997,9.966666666666667 +stable,20010,qlearning,4042,5.466666666666667,0.23333333333333334,6.616666666666666,20.049999999999997,10.016666666666667 +stable,20011,fifo,,4.9350000000000005,0.26666666666666666,5.9,15.099999999999994,9.25 +stable,20011,spt,,4.15,0.1,4.25,17.249999999999986,7.6 +stable,20011,edf,,2.5116666666666663,0.1,4.516666666666667,14.049999999999997,7.866666666666666 +stable,20011,priority,,3.783333333333333,0.21666666666666667,5.916666666666667,18.54999999999997,9.266666666666667 +stable,20011,random,,5.694999999999999,0.23333333333333334,5.75,21.0,9.1 +stable,20011,qlearning,42,2.8516666666666666,0.15,4.883333333333334,19.049999999999997,8.233333333333333 +stable,20011,qlearning,2042,2.4783333333333335,0.11666666666666667,4.75,15.199999999999989,8.1 +stable,20011,qlearning,4042,3.185,0.16666666666666666,5.016666666666667,16.099999999999994,8.366666666666667 +stable,20012,fifo,,15.354999999999999,0.5333333333333333,11.816666666666666,30.14999999999999,15.4 +stable,20012,spt,,8.718333333333334,0.2,7.983333333333333,44.0,11.566666666666666 +stable,20012,edf,,8.881666666666666,0.45,9.666666666666666,25.0,13.25 +stable,20012,priority,,9.436666666666667,0.4166666666666667,11.116666666666667,31.49999999999997,14.7 +stable,20012,random,,14.945,0.4,10.833333333333334,28.099999999999994,14.416666666666666 +stable,20012,qlearning,42,8.53,0.3,9.333333333333334,32.099999999999994,12.916666666666666 +stable,20012,qlearning,2042,8.451666666666666,0.4166666666666667,9.683333333333334,29.0,13.266666666666667 +stable,20012,qlearning,4042,7.906666666666667,0.38333333333333336,9.283333333333333,31.34999999999998,12.866666666666667 +stable,20013,fifo,,15.811666666666667,0.5166666666666667,13.383333333333333,27.099999999999994,16.95 +stable,20013,spt,,10.986666666666668,0.25,9.25,40.05,12.816666666666666 +stable,20013,edf,,8.95,0.45,11.333333333333334,26.049999999999997,14.9 +stable,20013,priority,,9.383333333333333,0.36666666666666664,12.166666666666666,38.249999999999986,15.733333333333333 +stable,20013,random,,17.241666666666667,0.4,12.916666666666666,37.34999999999998,16.483333333333334 +stable,20013,qlearning,42,7.895,0.4,10.9,38.0,14.466666666666667 +stable,20013,qlearning,2042,9.205,0.4166666666666667,11.433333333333334,32.05,15.0 +stable,20013,qlearning,4042,8.523333333333333,0.38333333333333336,11.25,33.0,14.816666666666666 +stable,20014,fifo,,5.276666666666667,0.26666666666666666,6.066666666666666,17.0,9.383333333333333 +stable,20014,spt,,1.8850000000000002,0.08333333333333333,4.016666666666667,18.249999999999986,7.333333333333333 +stable,20014,edf,,2.0883333333333334,0.1,4.283333333333333,14.099999999999994,7.6 +stable,20014,priority,,3.7083333333333335,0.18333333333333332,5.533333333333333,22.099999999999994,8.85 +stable,20014,random,,7.265,0.26666666666666666,5.916666666666667,21.14999999999999,9.233333333333333 +stable,20014,qlearning,42,2.7083333333333335,0.1,4.633333333333334,19.0,7.95 +stable,20014,qlearning,2042,2.1599999999999997,0.1,4.416666666666667,19.0,7.733333333333333 +stable,20014,qlearning,4042,2.54,0.11666666666666667,4.433333333333334,18.049999999999997,7.75 +stable,20015,fifo,,17.511666666666667,0.5833333333333334,13.85,38.0,17.333333333333332 +stable,20015,spt,,15.5,0.21666666666666667,9.75,56.249999999999986,13.233333333333333 +stable,20015,edf,,13.283333333333333,0.4,11.866666666666667,36.099999999999994,15.35 +stable,20015,priority,,13.04,0.45,14.966666666666667,60.05,18.45 +stable,20015,random,,22.84,0.4,14.8,51.05,18.283333333333335 +stable,20015,qlearning,42,13.481666666666666,0.35,11.783333333333333,42.949999999999946,15.266666666666667 +stable,20015,qlearning,2042,13.264999999999999,0.4166666666666667,11.983333333333333,42.14999999999999,15.466666666666667 +stable,20015,qlearning,4042,13.871666666666666,0.38333333333333336,11.733333333333333,42.949999999999946,15.216666666666667 +stable,20016,fifo,,16.631666666666668,0.48333333333333334,12.55,27.0,15.9 +stable,20016,spt,,4.775,0.11666666666666667,7.583333333333333,30.449999999999918,10.933333333333334 +stable,20016,edf,,10.613333333333333,0.3,9.883333333333333,28.049999999999997,13.233333333333333 +stable,20016,priority,,8.478333333333333,0.3333333333333333,11.45,43.14999999999999,14.8 +stable,20016,random,,18.575,0.43333333333333335,12.666666666666666,43.05,16.016666666666666 +stable,20016,qlearning,42,5.881666666666666,0.21666666666666667,9.116666666666667,35.099999999999994,12.466666666666667 +stable,20016,qlearning,2042,11.295,0.36666666666666664,10.383333333333333,27.099999999999994,13.733333333333333 +stable,20016,qlearning,4042,8.02,0.3333333333333333,10.333333333333334,30.649999999999963,13.683333333333334 +stable,20017,fifo,,29.404999999999998,0.6166666666666667,19.9,35.05,23.716666666666665 +stable,20017,spt,,19.91166666666667,0.21666666666666667,13.083333333333334,65.05,16.9 +stable,20017,edf,,22.401666666666664,0.6,17.266666666666666,36.099999999999994,21.083333333333332 +stable,20017,priority,,16.57166666666667,0.4,18.716666666666665,68.05,22.533333333333335 +stable,20017,random,,35.830000000000005,0.48333333333333334,20.4,58.05,24.216666666666665 +stable,20017,qlearning,42,15.568333333333333,0.2833333333333333,14.333333333333334,61.19999999999999,18.15 +stable,20017,qlearning,2042,16.58833333333333,0.4666666666666667,15.933333333333334,42.64999999999996,19.75 +stable,20017,qlearning,4042,14.971666666666668,0.2833333333333333,15.016666666666667,65.1,18.833333333333332 +stable,20018,fifo,,27.48166666666667,0.48333333333333334,15.6,38.0,19.25 +stable,20018,spt,,19.053333333333335,0.15,10.1,54.19999999999999,13.75 +stable,20018,edf,,21.323333333333334,0.45,12.866666666666667,36.14999999999999,16.516666666666666 +stable,20018,priority,,20.898333333333333,0.3333333333333333,16.683333333333334,60.05,20.333333333333332 +stable,20018,random,,28.21333333333333,0.4166666666666667,15.55,49.89999999999995,19.2 +stable,20018,qlearning,42,15.213333333333333,0.25,11.616666666666667,69.39999999999998,15.266666666666667 +stable,20018,qlearning,2042,17.776666666666664,0.31666666666666665,13.45,63.19999999999999,17.1 +stable,20018,qlearning,4042,16.006666666666668,0.2833333333333333,12.15,63.69999999999996,15.8 +stable,20019,fifo,,2.7633333333333336,0.16666666666666666,4.783333333333333,14.199999999999989,8.316666666666666 +stable,20019,spt,,1.85,0.05,3.966666666666667,13.049999999999997,7.5 +stable,20019,edf,,1.8283333333333334,0.05,4.033333333333333,14.049999999999997,7.566666666666666 +stable,20019,priority,,2.2216666666666667,0.16666666666666666,4.566666666666666,13.049999999999997,8.1 +stable,20019,random,,3.5683333333333334,0.2,4.8,19.099999999999994,8.333333333333334 +stable,20019,qlearning,42,1.875,0.05,4.116666666666666,13.099999999999994,7.65 +stable,20019,qlearning,2042,1.7633333333333334,0.06666666666666667,4.066666666666666,14.249999999999986,7.6 +stable,20019,qlearning,4042,2.0133333333333336,0.1,4.25,14.049999999999997,7.783333333333333 +stable,20020,fifo,,21.483333333333334,0.6666666666666666,14.85,26.049999999999997,18.3 +stable,20020,spt,,12.075,0.2,9.233333333333333,39.099999999999994,12.683333333333334 +stable,20020,edf,,8.686666666666667,0.5,11.133333333333333,25.19999999999999,14.583333333333334 +stable,20020,priority,,10.675,0.4,13.233333333333333,42.05,16.683333333333334 +stable,20020,random,,18.125,0.43333333333333335,13.533333333333333,42.14999999999999,16.983333333333334 +stable,20020,qlearning,42,12.75,0.38333333333333336,13.133333333333333,34.29999999999998,16.583333333333332 +stable,20020,qlearning,2042,13.611666666666668,0.5,12.833333333333334,30.049999999999997,16.283333333333335 +stable,20020,qlearning,4042,11.788333333333332,0.4166666666666667,12.066666666666666,28.0,15.516666666666667 +stable,20021,fifo,,42.641666666666666,0.8666666666666667,24.433333333333334,41.05,27.933333333333334 +stable,20021,spt,,25.88,0.21666666666666667,15.266666666666667,66.34999999999981,18.766666666666666 +stable,20021,edf,,31.723333333333336,0.8833333333333333,21.283333333333335,42.0,24.783333333333335 +stable,20021,priority,,21.756666666666668,0.4666666666666667,22.366666666666667,66.14999999999999,25.866666666666667 +stable,20021,random,,46.541666666666664,0.6,25.216666666666665,78.05,28.716666666666665 +stable,20021,qlearning,42,23.538333333333334,0.4,18.633333333333333,64.09999999999994,22.133333333333333 +stable,20021,qlearning,2042,25.53166666666667,0.6166666666666667,20.133333333333333,53.19999999999999,23.633333333333333 +stable,20021,qlearning,4042,19.95,0.43333333333333335,17.366666666666667,63.249999999999986,20.866666666666667 +stable,20022,fifo,,4.905,0.21666666666666667,5.7,18.099999999999994,9.183333333333334 +stable,20022,spt,,3.1566666666666667,0.11666666666666667,4.133333333333334,15.249999999999986,7.616666666666666 +stable,20022,edf,,2.165,0.13333333333333333,4.516666666666667,16.14999999999999,8.0 +stable,20022,priority,,3.2533333333333334,0.21666666666666667,5.15,21.449999999999974,8.633333333333333 +stable,20022,random,,5.456666666666667,0.25,5.633333333333334,18.19999999999999,9.116666666666667 +stable,20022,qlearning,42,2.3,0.08333333333333333,4.283333333333333,11.599999999999966,7.766666666666667 +stable,20022,qlearning,2042,2.976666666666667,0.18333333333333332,4.833333333333333,15.049999999999997,8.316666666666666 +stable,20022,qlearning,4042,2.61,0.13333333333333333,4.45,18.049999999999997,7.933333333333334 +stable,20023,fifo,,6.996666666666667,0.35,7.633333333333334,15.099999999999994,11.4 +stable,20023,spt,,2.5483333333333333,0.06666666666666667,5.433333333333334,18.14999999999999,9.2 +stable,20023,edf,,2.4133333333333336,0.05,5.666666666666667,16.14999999999999,9.433333333333334 +stable,20023,priority,,4.433333333333334,0.23333333333333334,7.35,20.099999999999994,11.116666666666667 +stable,20023,random,,7.043333333333334,0.35,7.866666666666666,23.0,11.633333333333333 +stable,20023,qlearning,42,2.49,0.08333333333333333,5.616666666666666,18.14999999999999,9.383333333333333 +stable,20023,qlearning,2042,3.4533333333333336,0.13333333333333333,6.366666666666666,21.049999999999997,10.133333333333333 +stable,20023,qlearning,4042,4.173333333333334,0.15,6.45,18.049999999999997,10.216666666666667 +stable,20024,fifo,,47.031666666666666,0.75,26.0,49.05,29.916666666666668 +stable,20024,spt,,33.736666666666665,0.2833333333333333,18.516666666666666,107.19999999999999,22.433333333333334 +stable,20024,edf,,40.29666666666667,0.65,23.3,52.0,27.216666666666665 +stable,20024,priority,,25.293333333333333,0.48333333333333334,25.916666666666668,92.09999999999994,29.833333333333332 +stable,20024,random,,44.11666666666667,0.5333333333333333,25.466666666666665,85.34999999999998,29.383333333333333 +stable,20024,qlearning,42,26.065,0.43333333333333335,20.7,76.19999999999999,24.616666666666667 +stable,20024,qlearning,2042,25.21333333333333,0.4,20.333333333333332,75.24999999999999,24.25 +stable,20024,qlearning,4042,26.441666666666666,0.43333333333333335,20.483333333333334,70.34999999999998,24.4 +stable,20025,fifo,,57.943333333333335,0.8166666666666667,30.716666666666665,60.05,34.46666666666667 +stable,20025,spt,,40.89833333333333,0.2833333333333333,20.083333333333332,96.19999999999999,23.833333333333332 +stable,20025,edf,,50.343333333333334,0.75,27.683333333333334,61.05,31.433333333333334 +stable,20025,priority,,28.951666666666664,0.45,28.416666666666668,96.05,32.166666666666664 +stable,20025,random,,69.84833333333333,0.5833333333333334,31.85,102.19999999999999,35.6 +stable,20025,qlearning,42,38.6,0.36666666666666664,22.25,92.44999999999992,26.0 +stable,20025,qlearning,2042,40.76,0.45,22.616666666666667,91.94999999999995,26.366666666666667 +stable,20025,qlearning,4042,28.273333333333333,0.45,23.433333333333334,121.24999999999999,27.183333333333334 +stable,20026,fifo,,9.066666666666666,0.4,8.066666666666666,19.049999999999997,11.35 +stable,20026,spt,,3.5833333333333335,0.1,5.0,16.49999999999997,8.283333333333333 +stable,20026,edf,,3.911666666666667,0.23333333333333334,5.816666666666666,18.19999999999999,9.1 +stable,20026,priority,,4.631666666666667,0.2,6.733333333333333,32.0,10.016666666666667 +stable,20026,random,,7.996666666666667,0.26666666666666666,7.466666666666667,28.49999999999997,10.75 +stable,20026,qlearning,42,5.116666666666666,0.2,6.483333333333333,26.049999999999997,9.766666666666667 +stable,20026,qlearning,2042,4.2716666666666665,0.15,5.8,26.14999999999999,9.083333333333334 +stable,20026,qlearning,4042,5.593333333333334,0.23333333333333334,6.75,19.049999999999997,10.033333333333333 +stable,20027,fifo,,6.13,0.26666666666666666,6.966666666666667,16.0,10.55 +stable,20027,spt,,5.731666666666667,0.06666666666666667,5.1,17.749999999999957,8.683333333333334 +stable,20027,edf,,3.443333333333334,0.11666666666666667,5.65,17.049999999999997,9.233333333333333 +stable,20027,priority,,4.98,0.26666666666666666,6.933333333333334,26.099999999999994,10.516666666666667 +stable,20027,random,,5.455,0.2,6.35,22.049999999999997,9.933333333333334 +stable,20027,qlearning,42,3.3800000000000003,0.08333333333333333,5.383333333333334,19.049999999999997,8.966666666666667 +stable,20027,qlearning,2042,4.211666666666667,0.2,6.266666666666667,19.0,9.85 +stable,20027,qlearning,4042,3.776666666666667,0.15,6.033333333333333,17.049999999999997,9.616666666666667 +stable,20028,fifo,,10.641666666666667,0.43333333333333335,9.166666666666666,20.0,12.583333333333334 +stable,20028,spt,,6.8133333333333335,0.13333333333333333,6.55,30.049999999999997,9.966666666666667 +stable,20028,edf,,4.196666666666667,0.18333333333333332,7.233333333333333,21.049999999999997,10.65 +stable,20028,priority,,6.298333333333333,0.23333333333333334,8.466666666666667,34.949999999999946,11.883333333333333 +stable,20028,random,,13.483333333333333,0.3,9.933333333333334,35.29999999999998,13.35 +stable,20028,qlearning,42,5.845,0.25,7.9,27.049999999999997,11.316666666666666 +stable,20028,qlearning,2042,6.405,0.26666666666666666,7.983333333333333,23.19999999999999,11.4 +stable,20028,qlearning,4042,6.505,0.26666666666666666,7.716666666666667,24.299999999999983,11.133333333333333 +stable,20029,fifo,,36.78333333333333,0.8333333333333334,23.916666666666668,38.05,27.5 +stable,20029,spt,,20.258333333333333,0.31666666666666665,15.766666666666667,73.05,19.35 +stable,20029,edf,,27.086666666666666,0.7833333333333333,20.766666666666666,40.099999999999994,24.35 +stable,20029,priority,,20.381666666666668,0.35,22.216666666666665,99.0,25.8 +stable,20029,random,,56.56333333333334,0.5666666666666667,24.766666666666666,73.59999999999997,28.35 +stable,20029,qlearning,42,18.58833333333333,0.35,16.6,73.64999999999996,20.183333333333334 +stable,20029,qlearning,2042,23.598333333333336,0.5666666666666667,19.433333333333334,54.249999999999986,23.016666666666666 +stable,20029,qlearning,4042,19.433333333333334,0.38333333333333336,16.8,73.64999999999996,20.383333333333333 +bursty,20000,fifo,,51.19666666666667,0.6833333333333333,22.716666666666665,58.05,25.933333333333334 +bursty,20000,spt,,29.790000000000003,0.43333333333333335,15.3,62.14999999999999,18.516666666666666 +bursty,20000,edf,,39.50666666666667,0.5833333333333334,19.183333333333334,54.05,22.4 +bursty,20000,priority,,30.305,0.55,22.9,65.49999999999991,26.116666666666667 +bursty,20000,random,,50.333333333333336,0.5833333333333334,23.133333333333333,72.05,26.35 +bursty,20000,qlearning,42,25.65,0.4666666666666667,16.083333333333332,65.29999999999998,19.3 +bursty,20000,qlearning,2042,24.361666666666668,0.4666666666666667,16.016666666666666,65.29999999999998,19.233333333333334 +bursty,20000,qlearning,4042,27.891666666666666,0.5333333333333333,17.85,71.54999999999997,21.066666666666666 +bursty,20001,fifo,,45.830000000000005,0.85,24.216666666666665,44.0,27.283333333333335 +bursty,20001,spt,,21.833333333333332,0.35,13.733333333333333,61.69999999999996,16.8 +bursty,20001,edf,,33.36333333333333,0.7666666666666667,18.55,39.099999999999994,21.616666666666667 +bursty,20001,priority,,32.57833333333333,0.6333333333333333,27.083333333333332,109.0,30.15 +bursty,20001,random,,48.54333333333333,0.7,20.883333333333333,52.69999999999996,23.95 +bursty,20001,qlearning,42,26.55,0.55,18.7,82.1,21.766666666666666 +bursty,20001,qlearning,2042,38.97166666666667,0.7833333333333333,21.483333333333334,43.05,24.55 +bursty,20001,qlearning,4042,29.895,0.7333333333333333,19.083333333333332,46.19999999999999,22.15 +bursty,20002,fifo,,106.48166666666665,0.9,49.93333333333333,84.0,53.21666666666667 +bursty,20002,spt,,67.08833333333334,0.45,31.533333333333335,123.05,34.81666666666667 +bursty,20002,edf,,92.71499999999999,0.8333333333333334,44.06666666666667,81.0,47.35 +bursty,20002,priority,,74.77666666666667,0.6833333333333333,53.21666666666667,136.69999999999996,56.5 +bursty,20002,random,,127.72666666666667,0.8333333333333334,57.06666666666667,154.39999999999998,60.35 +bursty,20002,qlearning,42,70.08333333333333,0.4666666666666667,32.416666666666664,118.29999999999998,35.7 +bursty,20002,qlearning,2042,65.36333333333333,0.45,31.916666666666668,124.54999999999997,35.2 +bursty,20002,qlearning,4042,62.708333333333336,0.6166666666666667,38.68333333333333,125.14999999999999,41.96666666666667 +bursty,20003,fifo,,94.875,0.9166666666666666,42.03333333333333,67.05,45.7 +bursty,20003,spt,,53.473333333333336,0.4166666666666667,28.25,130.05,31.916666666666668 +bursty,20003,edf,,76.43333333333334,0.8166666666666667,36.3,68.05,39.96666666666667 +bursty,20003,priority,,41.50666666666667,0.6166666666666667,38.8,117.64999999999996,42.46666666666667 +bursty,20003,random,,108.875,0.8333333333333334,42.583333333333336,107.19999999999999,46.25 +bursty,20003,qlearning,42,42.975,0.45,28.75,155.2,32.416666666666664 +bursty,20003,qlearning,2042,43.215,0.4666666666666667,28.716666666666665,153.39999999999998,32.38333333333333 +bursty,20003,qlearning,4042,37.644999999999996,0.55,31.266666666666666,155.2,34.93333333333333 +bursty,20004,fifo,,70.80666666666666,0.85,35.15,59.0,38.71666666666667 +bursty,20004,spt,,47.27333333333333,0.36666666666666664,22.3,113.19999999999999,25.866666666666667 +bursty,20004,edf,,58.39666666666667,0.7833333333333333,30.55,58.0,34.11666666666667 +bursty,20004,priority,,38.88333333333333,0.65,34.46666666666667,106.14999999999999,38.03333333333333 +bursty,20004,random,,64.67333333333333,0.6833333333333333,35.25,86.19999999999999,38.81666666666667 +bursty,20004,qlearning,42,43.00333333333333,0.38333333333333336,22.666666666666668,87.29999999999998,26.233333333333334 +bursty,20004,qlearning,2042,50.01833333333333,0.43333333333333335,24.416666666666668,87.29999999999998,27.983333333333334 +bursty,20004,qlearning,4042,34.751666666666665,0.5833333333333334,26.266666666666666,92.34999999999998,29.833333333333332 +bursty,20005,fifo,,59.269999999999996,0.8166666666666667,30.916666666666668,70.14999999999999,34.233333333333334 +bursty,20005,spt,,31.976666666666667,0.43333333333333335,19.85,74.05,23.166666666666668 +bursty,20005,edf,,39.986666666666665,0.7,24.066666666666666,64.24999999999999,27.383333333333333 +bursty,20005,priority,,33.915,0.65,31.25,109.1,34.56666666666667 +bursty,20005,random,,68.99166666666666,0.6833333333333333,31.15,77.54999999999997,34.46666666666667 +bursty,20005,qlearning,42,24.243333333333332,0.4666666666666667,20.65,74.44999999999997,23.966666666666665 +bursty,20005,qlearning,2042,32.98,0.6,23.3,66.19999999999999,26.616666666666667 +bursty,20005,qlearning,4042,28.21333333333333,0.6333333333333333,25.6,76.74999999999996,28.916666666666668 +bursty,20006,fifo,,21.256666666666668,0.6666666666666666,15.616666666666667,30.049999999999997,19.133333333333333 +bursty,20006,spt,,12.293333333333333,0.31666666666666665,10.666666666666666,32.05,14.183333333333334 +bursty,20006,edf,,10.843333333333334,0.4666666666666667,11.9,28.14999999999999,15.416666666666666 +bursty,20006,priority,,16.48,0.6166666666666667,16.433333333333334,52.249999999999986,19.95 +bursty,20006,random,,23.34,0.6,15.05,42.099999999999994,18.566666666666666 +bursty,20006,qlearning,42,11.536666666666667,0.48333333333333334,12.15,33.05,15.666666666666666 +bursty,20006,qlearning,2042,11.876666666666667,0.5166666666666667,12.466666666666667,31.0,15.983333333333333 +bursty,20006,qlearning,4042,13.770000000000001,0.6,13.05,34.0,16.566666666666666 +bursty,20007,fifo,,24.35666666666667,0.5,17.716666666666665,50.099999999999994,21.333333333333332 +bursty,20007,spt,,16.061666666666664,0.2833333333333333,12.55,58.249999999999986,16.166666666666668 +bursty,20007,edf,,16.261666666666667,0.4166666666666667,14.116666666666667,51.14999999999999,17.733333333333334 +bursty,20007,priority,,15.341666666666667,0.48333333333333334,18.0,61.05,21.616666666666667 +bursty,20007,random,,24.446666666666665,0.5,16.916666666666668,51.49999999999997,20.533333333333335 +bursty,20007,qlearning,42,14.251666666666667,0.36666666666666664,13.433333333333334,50.19999999999999,17.05 +bursty,20007,qlearning,2042,14.093333333333334,0.3333333333333333,13.3,53.14999999999999,16.916666666666668 +bursty,20007,qlearning,4042,13.143333333333334,0.4166666666666667,14.85,54.099999999999994,18.466666666666665 +bursty,20008,fifo,,23.243333333333332,0.55,16.166666666666668,36.0,19.883333333333333 +bursty,20008,spt,,10.458333333333334,0.26666666666666666,11.166666666666666,36.0,14.883333333333333 +bursty,20008,edf,,10.075,0.3333333333333333,11.633333333333333,34.099999999999994,15.35 +bursty,20008,priority,,15.889999999999999,0.5166666666666667,17.2,51.05,20.916666666666668 +bursty,20008,random,,24.935,0.5166666666666667,16.283333333333335,43.0,20.0 +bursty,20008,qlearning,42,8.973333333333333,0.35,11.9,36.099999999999994,15.616666666666667 +bursty,20008,qlearning,2042,9.85,0.31666666666666665,12.216666666666667,38.099999999999994,15.933333333333334 +bursty,20008,qlearning,4042,11.528333333333334,0.36666666666666664,12.933333333333334,38.05,16.65 +bursty,20009,fifo,,19.985,0.6333333333333333,14.883333333333333,35.14999999999999,18.316666666666666 +bursty,20009,spt,,9.071666666666665,0.31666666666666665,10.65,36.249999999999986,14.083333333333334 +bursty,20009,edf,,9.343333333333334,0.38333333333333336,11.333333333333334,31.14999999999999,14.766666666666667 +bursty,20009,priority,,13.56,0.48333333333333334,15.3,45.54999999999997,18.733333333333334 +bursty,20009,random,,27.584999999999997,0.55,16.333333333333332,51.249999999999986,19.766666666666666 +bursty,20009,qlearning,42,11.443333333333333,0.43333333333333335,13.283333333333333,36.249999999999986,16.716666666666665 +bursty,20009,qlearning,2042,11.578333333333335,0.5166666666666667,12.716666666666667,32.19999999999999,16.15 +bursty,20009,qlearning,4042,12.35,0.43333333333333335,12.533333333333333,36.14999999999999,15.966666666666667 +bursty,20010,fifo,,55.44666666666667,0.7166666666666667,29.033333333333335,72.19999999999999,32.56666666666667 +bursty,20010,spt,,22.075,0.4,20.55,77.1,24.083333333333332 +bursty,20010,edf,,37.06333333333334,0.5833333333333334,24.466666666666665,63.29999999999998,28.0 +bursty,20010,priority,,24.195,0.5333333333333333,26.566666666666666,87.0,30.1 +bursty,20010,random,,53.42833333333333,0.6333333333333333,29.8,80.34999999999998,33.333333333333336 +bursty,20010,qlearning,42,22.091666666666665,0.4,20.6,77.1,24.133333333333333 +bursty,20010,qlearning,2042,24.753333333333334,0.5166666666666667,21.483333333333334,80.0,25.016666666666666 +bursty,20010,qlearning,4042,23.615000000000002,0.55,21.95,77.1,25.483333333333334 +bursty,20011,fifo,,19.83,0.6666666666666666,15.0,26.099999999999994,18.35 +bursty,20011,spt,,9.785,0.26666666666666666,10.383333333333333,30.199999999999932,13.733333333333333 +bursty,20011,edf,,9.863333333333333,0.6,11.933333333333334,27.14999999999999,15.283333333333333 +bursty,20011,priority,,12.138333333333334,0.5166666666666667,14.666666666666666,45.19999999999999,18.016666666666666 +bursty,20011,random,,19.878333333333334,0.6,14.916666666666666,36.19999999999999,18.266666666666666 +bursty,20011,qlearning,42,11.893333333333334,0.48333333333333334,13.216666666666667,30.049999999999997,16.566666666666666 +bursty,20011,qlearning,2042,12.361666666666668,0.5666666666666667,13.233333333333333,29.0,16.583333333333332 +bursty,20011,qlearning,4042,12.264999999999999,0.5333333333333333,13.166666666666666,30.049999999999997,16.516666666666666 +bursty,20012,fifo,,28.001666666666665,0.5833333333333334,17.216666666666665,37.05,20.716666666666665 +bursty,20012,spt,,11.981666666666666,0.3,11.916666666666666,42.099999999999994,15.416666666666666 +bursty,20012,edf,,14.45,0.4166666666666667,13.45,36.099999999999994,16.95 +bursty,20012,priority,,14.84,0.55,15.95,49.19999999999999,19.45 +bursty,20012,random,,26.326666666666664,0.5333333333333333,16.8,45.29999999999998,20.3 +bursty,20012,qlearning,42,11.258333333333333,0.38333333333333336,12.516666666666667,41.19999999999999,16.016666666666666 +bursty,20012,qlearning,2042,12.946666666666667,0.5166666666666667,13.55,38.19999999999999,17.05 +bursty,20012,qlearning,4042,11.805,0.43333333333333335,13.233333333333333,37.39999999999998,16.733333333333334 +bursty,20013,fifo,,20.85,0.4666666666666667,14.516666666666667,32.099999999999994,18.2 +bursty,20013,spt,,7.67,0.23333333333333334,10.083333333333334,28.19999999999999,13.766666666666667 +bursty,20013,edf,,6.596666666666667,0.25,10.383333333333333,28.19999999999999,14.066666666666666 +bursty,20013,priority,,10.733333333333333,0.48333333333333334,13.366666666666667,32.099999999999994,17.05 +bursty,20013,random,,18.708333333333332,0.4166666666666667,13.433333333333334,32.05,17.116666666666667 +bursty,20013,qlearning,42,6.763333333333334,0.2833333333333333,11.0,29.14999999999999,14.683333333333334 +bursty,20013,qlearning,2042,7.473333333333334,0.31666666666666665,11.116666666666667,30.099999999999994,14.8 +bursty,20013,qlearning,4042,6.6,0.2833333333333333,10.733333333333333,30.099999999999994,14.416666666666666 +bursty,20014,fifo,,17.73166666666667,0.5666666666666667,13.933333333333334,32.249999999999986,17.3 +bursty,20014,spt,,7.705,0.2833333333333333,9.716666666666667,42.099999999999994,13.083333333333334 +bursty,20014,edf,,8.361666666666666,0.35,10.666666666666666,33.19999999999999,14.033333333333333 +bursty,20014,priority,,9.615,0.4666666666666667,13.05,40.05,16.416666666666668 +bursty,20014,random,,16.971666666666668,0.43333333333333335,13.4,42.449999999999974,16.766666666666666 +bursty,20014,qlearning,42,7.24,0.3333333333333333,10.166666666666666,42.099999999999994,13.533333333333333 +bursty,20014,qlearning,2042,8.113333333333333,0.38333333333333336,10.866666666666667,35.14999999999999,14.233333333333333 +bursty,20014,qlearning,4042,10.333333333333334,0.6,11.95,29.49999999999997,15.316666666666666 +bursty,20015,fifo,,31.933333333333334,0.6333333333333333,19.883333333333333,46.05,23.266666666666666 +bursty,20015,spt,,21.15,0.23333333333333334,12.966666666666667,54.49999999999997,16.35 +bursty,20015,edf,,23.641666666666666,0.48333333333333334,15.933333333333334,42.099999999999994,19.316666666666666 +bursty,20015,priority,,25.598333333333336,0.5666666666666667,23.916666666666668,79.05,27.3 +bursty,20015,random,,30.701666666666664,0.5833333333333334,18.766666666666666,57.29999999999998,22.15 +bursty,20015,qlearning,42,20.13,0.45,18.15,55.64999999999996,21.533333333333335 +bursty,20015,qlearning,2042,24.528333333333332,0.5333333333333333,17.1,46.19999999999999,20.483333333333334 +bursty,20015,qlearning,4042,19.31,0.38333333333333336,16.366666666666667,55.34999999999998,19.75 +bursty,20016,fifo,,60.388333333333335,0.8166666666666667,34.31666666666667,62.19999999999999,37.766666666666666 +bursty,20016,spt,,30.779999999999998,0.36666666666666664,21.766666666666666,78.19999999999999,25.216666666666665 +bursty,20016,edf,,43.31166666666666,0.75,27.5,57.099999999999994,30.95 +bursty,20016,priority,,35.60166666666667,0.6666666666666666,33.81666666666667,85.19999999999999,37.266666666666666 +bursty,20016,random,,56.91,0.7666666666666667,32.666666666666664,76.0,36.11666666666667 +bursty,20016,qlearning,42,27.790000000000003,0.4166666666666667,21.883333333333333,78.19999999999999,25.333333333333332 +bursty,20016,qlearning,2042,27.64333333333333,0.48333333333333334,22.65,77.14999999999999,26.1 +bursty,20016,qlearning,4042,28.02,0.45,23.216666666666665,78.19999999999999,26.666666666666668 +bursty,20017,fifo,,57.335,0.7833333333333333,31.933333333333334,60.14999999999999,35.733333333333334 +bursty,20017,spt,,40.63166666666667,0.38333333333333336,22.4,93.19999999999999,26.2 +bursty,20017,edf,,47.891666666666666,0.8,28.8,58.14999999999999,32.6 +bursty,20017,priority,,33.54,0.65,31.866666666666667,94.1,35.666666666666664 +bursty,20017,random,,66.78333333333333,0.6833333333333333,33.53333333333333,98.14999999999999,37.333333333333336 +bursty,20017,qlearning,42,30.82,0.4666666666666667,24.25,86.0,28.05 +bursty,20017,qlearning,2042,32.83,0.5666666666666667,24.366666666666667,86.0,28.166666666666668 +bursty,20017,qlearning,4042,30.358333333333334,0.5666666666666667,25.683333333333334,86.29999999999998,29.483333333333334 +bursty,20018,fifo,,17.66,0.36666666666666664,11.55,31.099999999999994,15.383333333333333 +bursty,20018,spt,,6.9316666666666675,0.16666666666666666,8.516666666666667,28.049999999999997,12.35 +bursty,20018,edf,,6.043333333333334,0.18333333333333332,8.7,27.099999999999994,12.533333333333333 +bursty,20018,priority,,9.378333333333334,0.4,11.366666666666667,35.05,15.2 +bursty,20018,random,,15.971666666666666,0.48333333333333334,11.75,32.099999999999994,15.583333333333334 +bursty,20018,qlearning,42,6.4366666666666665,0.23333333333333334,9.0,26.34999999999998,12.833333333333334 +bursty,20018,qlearning,2042,7.138333333333334,0.25,9.983333333333333,29.099999999999994,13.816666666666666 +bursty,20018,qlearning,4042,7.335,0.25,9.55,29.049999999999997,13.383333333333333 +bursty,20019,fifo,,13.703333333333335,0.5333333333333333,10.633333333333333,25.19999999999999,14.066666666666666 +bursty,20019,spt,,4.44,0.16666666666666666,6.766666666666667,20.249999999999986,10.2 +bursty,20019,edf,,4.1866666666666665,0.15,6.916666666666667,20.249999999999986,10.35 +bursty,20019,priority,,9.108333333333333,0.4666666666666667,10.233333333333333,29.049999999999997,13.666666666666666 +bursty,20019,random,,9.34,0.48333333333333334,9.45,25.0,12.883333333333333 +bursty,20019,qlearning,42,8.493333333333334,0.3,8.633333333333333,24.049999999999997,12.066666666666666 +bursty,20019,qlearning,2042,6.0,0.18333333333333332,7.45,23.049999999999997,10.883333333333333 +bursty,20019,qlearning,4042,7.538333333333333,0.26666666666666666,8.483333333333333,24.049999999999997,11.916666666666666 +bursty,20020,fifo,,92.11833333333334,0.8833333333333333,42.766666666666666,82.24999999999999,46.06666666666667 +bursty,20020,spt,,65.785,0.45,28.166666666666668,125.05,31.466666666666665 +bursty,20020,edf,,77.21333333333334,0.8,36.7,79.0,40.0 +bursty,20020,priority,,57.995,0.7333333333333333,45.55,112.05,48.85 +bursty,20020,random,,105.64166666666667,0.75,42.6,132.45,45.9 +bursty,20020,qlearning,42,55.644999999999996,0.6833333333333333,38.71666666666667,116.39999999999998,42.016666666666666 +bursty,20020,qlearning,2042,81.33166666666666,0.75,34.96666666666667,104.14999999999999,38.266666666666666 +bursty,20020,qlearning,4042,49.605000000000004,0.6666666666666666,36.733333333333334,108.39999999999998,40.03333333333333 +bursty,20021,fifo,,54.57666666666667,0.7166666666666667,30.183333333333334,68.14999999999999,33.61666666666667 +bursty,20021,spt,,33.19833333333334,0.36666666666666664,20.65,78.6999999999999,24.083333333333332 +bursty,20021,edf,,43.945,0.7,26.983333333333334,64.1,30.416666666666668 +bursty,20021,priority,,30.709999999999997,0.6666666666666666,29.066666666666666,82.24999999999999,32.5 +bursty,20021,random,,70.88833333333334,0.7333333333333333,33.61666666666667,86.64999999999996,37.05 +bursty,20021,qlearning,42,30.273333333333333,0.5833333333333334,22.3,77.1,25.733333333333334 +bursty,20021,qlearning,2042,35.39666666666667,0.6166666666666667,24.383333333333333,78.29999999999998,27.816666666666666 +bursty,20021,qlearning,4042,30.185,0.5833333333333334,24.066666666666666,77.64999999999996,27.5 +bursty,20022,fifo,,74.85333333333332,0.8833333333333333,42.78333333333333,93.0,46.233333333333334 +bursty,20022,spt,,47.03333333333333,0.55,30.316666666666666,110.05,33.766666666666666 +bursty,20022,edf,,61.58833333333334,0.8333333333333334,36.666666666666664,89.24999999999999,40.11666666666667 +bursty,20022,priority,,46.67833333333333,0.65,43.46666666666667,116.05,46.916666666666664 +bursty,20022,random,,73.1,0.7,41.516666666666666,121.05,44.96666666666667 +bursty,20022,qlearning,42,43.848333333333336,0.5833333333333334,30.383333333333333,111.29999999999998,33.833333333333336 +bursty,20022,qlearning,2042,50.695,0.5833333333333334,32.11666666666667,99.14999999999999,35.56666666666667 +bursty,20022,qlearning,4042,48.60666666666667,0.6166666666666667,40.3,99.0,43.75 +bursty,20023,fifo,,43.358333333333334,0.75,30.333333333333332,79.1,34.233333333333334 +bursty,20023,spt,,33.71,0.43333333333333335,21.433333333333334,83.24999999999999,25.333333333333332 +bursty,20023,edf,,31.220000000000002,0.55,24.3,77.24999999999999,28.2 +bursty,20023,priority,,31.029999999999998,0.6,31.016666666666666,82.1,34.916666666666664 +bursty,20023,random,,48.973333333333336,0.6333333333333333,30.1,88.24999999999999,34.0 +bursty,20023,qlearning,42,30.125,0.55,23.0,77.69999999999996,26.9 +bursty,20023,qlearning,2042,30.391666666666666,0.5666666666666667,22.95,86.1,26.85 +bursty,20023,qlearning,4042,28.166666666666668,0.6,25.816666666666666,82.44999999999997,29.716666666666665 +bursty,20024,fifo,,66.86999999999999,0.8,33.8,63.05,37.63333333333333 +bursty,20024,spt,,47.61666666666667,0.43333333333333335,25.283333333333335,114.74999999999996,29.116666666666667 +bursty,20024,edf,,58.835,0.6833333333333333,30.816666666666666,64.1,34.65 +bursty,20024,priority,,36.365,0.6,36.45,130.05,40.28333333333333 +bursty,20024,random,,68.74666666666667,0.6666666666666666,34.833333333333336,99.0,38.666666666666664 +bursty,20024,qlearning,42,37.07166666666667,0.5166666666666667,26.266666666666666,83.54999999999986,30.1 +bursty,20024,qlearning,2042,37.22833333333333,0.55,26.366666666666667,83.54999999999986,30.2 +bursty,20024,qlearning,4042,36.88166666666667,0.5833333333333334,27.666666666666668,94.94999999999989,31.5 +bursty,20025,fifo,,154.0,0.9333333333333333,68.4,110.05,72.13333333333334 +bursty,20025,spt,,98.82166666666667,0.43333333333333335,43.7,146.1,47.43333333333333 +bursty,20025,edf,,140.82999999999998,0.8833333333333333,62.63333333333333,110.1,66.36666666666666 +bursty,20025,priority,,85.72666666666667,0.7,64.08333333333333,140.14999999999998,67.81666666666666 +bursty,20025,random,,172.79500000000002,0.8666666666666667,71.36666666666666,175.89999999999995,75.1 +bursty,20025,qlearning,42,94.5,0.5,44.21666666666667,149.89999999999995,47.95 +bursty,20025,qlearning,2042,94.5,0.5,44.21666666666667,149.89999999999995,47.95 +bursty,20025,qlearning,4042,70.96333333333334,0.65,49.666666666666664,168.2,53.4 +bursty,20026,fifo,,135.83,0.95,58.266666666666666,95.19999999999999,61.6 +bursty,20026,spt,,80.29666666666667,0.4166666666666667,34.36666666666667,133.34999999999997,37.7 +bursty,20026,edf,,117.18833333333333,0.9166666666666666,51.78333333333333,93.0,55.11666666666667 +bursty,20026,priority,,75.16166666666666,0.8166666666666667,54.86666666666667,140.1,58.2 +bursty,20026,random,,134.815,0.8,55.1,138.64999999999998,58.43333333333333 +bursty,20026,qlearning,42,84.81666666666666,0.48333333333333334,37.45,130.05,40.78333333333333 +bursty,20026,qlearning,2042,89.11666666666666,0.5333333333333333,38.53333333333333,127.1,41.86666666666667 +bursty,20026,qlearning,4042,66.63833333333334,0.8666666666666667,44.11666666666667,135.2,47.45 +bursty,20027,fifo,,17.436666666666667,0.5333333333333333,13.633333333333333,28.049999999999997,17.25 +bursty,20027,spt,,11.718333333333334,0.3333333333333333,10.033333333333333,36.0,13.65 +bursty,20027,edf,,9.871666666666666,0.45,11.083333333333334,26.19999999999999,14.7 +bursty,20027,priority,,12.185,0.43333333333333335,13.966666666666667,34.05,17.583333333333332 +bursty,20027,random,,17.654999999999998,0.55,13.683333333333334,37.05,17.3 +bursty,20027,qlearning,42,13.415,0.38333333333333336,13.783333333333333,32.05,17.4 +bursty,20027,qlearning,2042,11.588333333333333,0.45,12.583333333333334,30.0,16.2 +bursty,20027,qlearning,4042,10.908333333333333,0.4166666666666667,11.633333333333333,32.0,15.25 +bursty,20028,fifo,,59.95333333333333,0.8666666666666667,28.6,45.05,31.866666666666667 +bursty,20028,spt,,28.973333333333336,0.2833333333333333,17.483333333333334,74.24999999999999,20.75 +bursty,20028,edf,,44.89833333333333,0.8666666666666667,24.483333333333334,45.0,27.75 +bursty,20028,priority,,27.998333333333335,0.55,24.566666666666666,79.19999999999999,27.833333333333332 +bursty,20028,random,,70.82333333333332,0.6666666666666666,28.9,73.49999999999997,32.166666666666664 +bursty,20028,qlearning,42,23.708333333333332,0.4166666666666667,18.25,66.34999999999998,21.516666666666666 +bursty,20028,qlearning,2042,27.158333333333335,0.48333333333333334,20.016666666666666,57.449999999999974,23.283333333333335 +bursty,20028,qlearning,4042,25.936666666666667,0.6166666666666667,21.233333333333334,66.05,24.5 +bursty,20029,fifo,,43.144999999999996,0.65,24.233333333333334,73.14999999999999,27.9 +bursty,20029,spt,,20.903333333333332,0.36666666666666664,17.3,63.29999999999998,20.966666666666665 +bursty,20029,edf,,26.038333333333334,0.45,18.25,65.19999999999999,21.916666666666668 +bursty,20029,priority,,24.16166666666667,0.5166666666666667,22.966666666666665,69.14999999999999,26.633333333333333 +bursty,20029,random,,37.21333333333334,0.6,22.2,68.49999999999997,25.866666666666667 +bursty,20029,qlearning,42,19.1,0.35,17.35,65.19999999999999,21.016666666666666 +bursty,20029,qlearning,2042,20.63,0.45,18.05,70.1,21.716666666666665 +bursty,20029,qlearning,4042,16.94,0.31666666666666665,17.716666666666665,65.19999999999999,21.383333333333333 +mixed,20000,fifo,,2.7533333333333334,0.15,4.333333333333333,10.0,7.95 +mixed,20000,spt,,3.0349999999999997,0.06666666666666667,3.4,10.049999999999997,7.016666666666667 +mixed,20000,edf,,1.7683333333333335,0.03333333333333333,3.816666666666667,11.0,7.433333333333334 +mixed,20000,priority,,2.5266666666666664,0.15,4.816666666666666,12.249999999999986,8.433333333333334 +mixed,20000,random,,5.705,0.16666666666666666,4.316666666666666,17.0,7.933333333333334 +mixed,20000,qlearning,42,1.9466666666666668,0.05,3.95,11.049999999999997,7.566666666666666 +mixed,20000,qlearning,2042,1.9516666666666669,0.05,3.8833333333333333,11.0,7.5 +mixed,20000,qlearning,4042,1.8883333333333334,0.05,4.05,12.0,7.666666666666667 +mixed,20001,fifo,,13.088333333333335,0.35,8.033333333333333,20.0,11.533333333333333 +mixed,20001,spt,,6.186666666666667,0.16666666666666666,5.783333333333333,24.049999999999997,9.283333333333333 +mixed,20001,edf,,2.3633333333333337,0.11666666666666667,6.433333333333334,26.0,9.933333333333334 +mixed,20001,priority,,5.8066666666666675,0.23333333333333334,8.216666666666667,32.099999999999994,11.716666666666667 +mixed,20001,random,,11.548333333333334,0.26666666666666666,7.95,26.14999999999999,11.45 +mixed,20001,qlearning,42,3.5733333333333333,0.15,6.45,25.049999999999997,9.95 +mixed,20001,qlearning,2042,5.665,0.21666666666666667,6.866666666666666,23.099999999999994,10.366666666666667 +mixed,20001,qlearning,4042,2.49,0.1,6.433333333333334,25.049999999999997,9.933333333333334 +mixed,20002,fifo,,17.988333333333333,0.5166666666666667,11.95,24.099999999999994,15.533333333333333 +mixed,20002,spt,,10.948333333333332,0.26666666666666666,8.383333333333333,32.39999999999998,11.966666666666667 +mixed,20002,edf,,7.736666666666666,0.3333333333333333,10.316666666666666,31.299999999999983,13.9 +mixed,20002,priority,,8.888333333333332,0.35,12.333333333333334,50.14999999999999,15.916666666666666 +mixed,20002,random,,25.456666666666667,0.36666666666666664,10.983333333333333,32.34999999999998,14.566666666666666 +mixed,20002,qlearning,42,8.901666666666667,0.3,10.3,27.099999999999994,13.883333333333333 +mixed,20002,qlearning,2042,8.406666666666668,0.35,10.45,31.19999999999999,14.033333333333333 +mixed,20002,qlearning,4042,8.905000000000001,0.31666666666666665,10.183333333333334,33.19999999999999,13.766666666666667 +mixed,20003,fifo,,9.953333333333335,0.4166666666666667,7.266666666666667,20.099999999999994,10.9 +mixed,20003,spt,,6.568333333333333,0.25,5.283333333333333,21.049999999999997,8.916666666666666 +mixed,20003,edf,,3.2633333333333336,0.2,5.9,15.099999999999994,9.533333333333333 +mixed,20003,priority,,5.3933333333333335,0.26666666666666666,7.35,29.14999999999999,10.983333333333333 +mixed,20003,random,,14.308333333333334,0.4,7.333333333333333,23.0,10.966666666666667 +mixed,20003,qlearning,42,5.661666666666666,0.25,6.183333333333334,16.049999999999997,9.816666666666666 +mixed,20003,qlearning,2042,4.395,0.26666666666666666,5.816666666666666,16.049999999999997,9.45 +mixed,20003,qlearning,4042,5.743333333333334,0.31666666666666665,6.2,15.049999999999997,9.833333333333334 +mixed,20004,fifo,,29.265,0.6666666666666666,15.983333333333333,28.0,19.416666666666668 +mixed,20004,spt,,7.558333333333334,0.23333333333333334,9.55,44.449999999999974,12.983333333333333 +mixed,20004,edf,,7.461666666666667,0.48333333333333334,11.55,41.099999999999994,14.983333333333333 +mixed,20004,priority,,7.871666666666667,0.35,13.283333333333333,48.19999999999999,16.716666666666665 +mixed,20004,random,,24.57,0.55,15.733333333333333,46.05,19.166666666666668 +mixed,20004,qlearning,42,8.293333333333333,0.35,11.133333333333333,41.599999999999966,14.566666666666666 +mixed,20004,qlearning,2042,7.816666666666666,0.45,11.9,33.05,15.333333333333334 +mixed,20004,qlearning,4042,11.275,0.48333333333333334,12.983333333333333,29.299999999999983,16.416666666666668 +mixed,20005,fifo,,8.033333333333333,0.26666666666666666,6.566666666666666,16.0,9.816666666666666 +mixed,20005,spt,,4.093333333333333,0.16666666666666666,4.55,14.299999999999983,7.8 +mixed,20005,edf,,2.6933333333333334,0.16666666666666666,5.2,18.19999999999999,8.45 +mixed,20005,priority,,4.196666666666667,0.23333333333333334,6.516666666666667,30.399999999999977,9.766666666666667 +mixed,20005,random,,11.011666666666667,0.35,6.883333333333334,26.049999999999997,10.133333333333333 +mixed,20005,qlearning,42,3.1599999999999997,0.11666666666666667,5.383333333333334,17.299999999999983,8.633333333333333 +mixed,20005,qlearning,2042,3.5083333333333333,0.21666666666666667,5.133333333333334,20.0,8.383333333333333 +mixed,20005,qlearning,4042,3.6033333333333335,0.2,5.583333333333333,17.249999999999986,8.833333333333334 +mixed,20006,fifo,,6.1466666666666665,0.2,4.4,15.149999999999991,8.016666666666667 +mixed,20006,spt,,4.06,0.08333333333333333,3.1,12.299999999999983,6.716666666666667 +mixed,20006,edf,,1.8416666666666666,0.08333333333333333,3.55,13.049999999999997,7.166666666666667 +mixed,20006,priority,,2.4633333333333334,0.1,4.116666666666666,19.449999999999974,7.733333333333333 +mixed,20006,random,,6.971666666666667,0.2,4.216666666666667,17.049999999999997,7.833333333333333 +mixed,20006,qlearning,42,3.9433333333333334,0.15,4.366666666666666,21.099999999999994,7.983333333333333 +mixed,20006,qlearning,2042,2.4683333333333333,0.08333333333333333,3.433333333333333,11.649999999999963,7.05 +mixed,20006,qlearning,4042,4.208333333333333,0.11666666666666667,4.083333333333333,15.34999999999998,7.7 +mixed,20007,fifo,,6.661666666666666,0.2833333333333333,6.25,14.049999999999997,9.7 +mixed,20007,spt,,2.625,0.1,4.55,13.199999999999989,8.0 +mixed,20007,edf,,1.57,0.016666666666666666,5.0,18.14999999999999,8.45 +mixed,20007,priority,,2.7016666666666667,0.16666666666666666,6.066666666666666,23.0,9.516666666666667 +mixed,20007,random,,10.363333333333335,0.26666666666666666,6.483333333333333,20.0,9.933333333333334 +mixed,20007,qlearning,42,1.56,0.016666666666666666,4.95,21.049999999999997,8.4 +mixed,20007,qlearning,2042,3.1283333333333334,0.11666666666666667,5.283333333333333,19.0,8.733333333333333 +mixed,20007,qlearning,4042,1.725,0.06666666666666667,5.3,18.14999999999999,8.75 +mixed,20008,fifo,,22.366666666666667,0.5833333333333334,15.083333333333334,31.099999999999994,18.683333333333334 +mixed,20008,spt,,20.384999999999998,0.21666666666666667,9.816666666666666,49.0,13.416666666666666 +mixed,20008,edf,,16.081666666666667,0.5,14.15,34.0,17.75 +mixed,20008,priority,,16.42,0.45,17.016666666666666,41.649999999999906,20.616666666666667 +mixed,20008,random,,25.801666666666666,0.48333333333333334,15.783333333333333,55.49999999999997,19.383333333333333 +mixed,20008,qlearning,42,15.178333333333335,0.36666666666666664,12.4,48.05,16.0 +mixed,20008,qlearning,2042,15.698333333333332,0.4666666666666667,13.766666666666667,34.19999999999999,17.366666666666667 +mixed,20008,qlearning,4042,14.764999999999999,0.4166666666666667,13.116666666666667,48.05,16.716666666666665 +mixed,20009,fifo,,13.448333333333332,0.45,9.8,27.0,13.5 +mixed,20009,spt,,11.065,0.18333333333333332,6.933333333333334,35.14999999999999,10.633333333333333 +mixed,20009,edf,,5.3933333333333335,0.25,8.3,27.14999999999999,12.0 +mixed,20009,priority,,7.03,0.31666666666666665,10.416666666666666,36.14999999999999,14.116666666666667 +mixed,20009,random,,14.093333333333334,0.38333333333333336,9.8,31.099999999999994,13.5 +mixed,20009,qlearning,42,8.926666666666668,0.31666666666666665,8.283333333333333,30.099999999999994,11.983333333333333 +mixed,20009,qlearning,2042,9.31,0.38333333333333336,8.466666666666667,27.14999999999999,12.166666666666666 +mixed,20009,qlearning,4042,9.889999999999999,0.3,8.666666666666666,26.19999999999999,12.366666666666667 +mixed,20010,fifo,,5.901666666666667,0.35,6.033333333333333,13.049999999999997,9.166666666666666 +mixed,20010,spt,,3.836666666666667,0.13333333333333333,4.183333333333334,14.199999999999989,7.316666666666666 +mixed,20010,edf,,2.0333333333333337,0.11666666666666667,4.7,13.049999999999997,7.833333333333333 +mixed,20010,priority,,3.875,0.16666666666666666,6.083333333333333,21.0,9.216666666666667 +mixed,20010,random,,6.791666666666667,0.21666666666666667,5.55,18.099999999999994,8.683333333333334 +mixed,20010,qlearning,42,2.711666666666667,0.15,5.116666666666666,14.0,8.25 +mixed,20010,qlearning,2042,2.5733333333333333,0.13333333333333333,4.833333333333333,13.049999999999997,7.966666666666667 +mixed,20010,qlearning,4042,3.3666666666666667,0.15,5.1,20.0,8.233333333333333 +mixed,20011,fifo,,8.063333333333334,0.26666666666666666,6.366666666666666,16.049999999999997,9.916666666666666 +mixed,20011,spt,,6.701666666666667,0.13333333333333333,4.9,20.19999999999999,8.45 +mixed,20011,edf,,3.0016666666666665,0.13333333333333333,5.683333333333334,20.19999999999999,9.233333333333333 +mixed,20011,priority,,2.8066666666666666,0.15,6.3,26.049999999999997,9.85 +mixed,20011,random,,10.936666666666667,0.26666666666666666,7.0,25.249999999999986,10.55 +mixed,20011,qlearning,42,4.451666666666667,0.15,5.966666666666667,20.049999999999997,9.516666666666667 +mixed,20011,qlearning,2042,4.866666666666666,0.16666666666666666,5.75,20.0,9.3 +mixed,20011,qlearning,4042,3.415,0.15,5.85,18.099999999999994,9.4 +mixed,20012,fifo,,19.215,0.5,12.666666666666666,29.099999999999994,16.316666666666666 +mixed,20012,spt,,6.840000000000001,0.25,8.8,43.099999999999994,12.45 +mixed,20012,edf,,4.035,0.26666666666666666,9.616666666666667,39.099999999999994,13.266666666666667 +mixed,20012,priority,,5.991666666666666,0.31666666666666665,11.083333333333334,40.05,14.733333333333333 +mixed,20012,random,,22.779999999999998,0.45,12.533333333333333,38.05,16.183333333333334 +mixed,20012,qlearning,42,6.023333333333334,0.31666666666666665,10.033333333333333,45.19999999999999,13.683333333333334 +mixed,20012,qlearning,2042,5.739999999999999,0.36666666666666664,10.066666666666666,34.249999999999986,13.716666666666667 +mixed,20012,qlearning,4042,7.17,0.3333333333333333,10.4,39.099999999999994,14.05 +mixed,20013,fifo,,42.10666666666667,0.6666666666666666,19.966666666666665,36.0,23.9 +mixed,20013,spt,,23.833333333333332,0.2833333333333333,13.383333333333333,54.799999999999955,17.316666666666666 +mixed,20013,edf,,18.398333333333333,0.6666666666666666,16.183333333333334,48.249999999999986,20.116666666666667 +mixed,20013,priority,,17.121666666666666,0.5166666666666667,17.95,66.05,21.883333333333333 +mixed,20013,random,,47.01833333333333,0.5666666666666667,20.716666666666665,55.949999999999946,24.65 +mixed,20013,qlearning,42,16.898333333333333,0.36666666666666664,15.016666666666667,61.39999999999998,18.95 +mixed,20013,qlearning,2042,17.015,0.5166666666666667,16.016666666666666,53.249999999999986,19.95 +mixed,20013,qlearning,4042,15.598333333333333,0.4166666666666667,14.883333333333333,62.09999999999994,18.816666666666666 +mixed,20014,fifo,,11.183333333333334,0.45,7.65,18.099999999999994,11.1 +mixed,20014,spt,,6.746666666666667,0.2,5.233333333333333,27.14999999999999,8.683333333333334 +mixed,20014,edf,,2.415,0.11666666666666667,5.75,17.19999999999999,9.2 +mixed,20014,priority,,5.7733333333333325,0.25,7.916666666666667,34.099999999999994,11.366666666666667 +mixed,20014,random,,17.986666666666668,0.35,8.1,30.19999999999999,11.55 +mixed,20014,qlearning,42,4.0183333333333335,0.21666666666666667,6.233333333333333,20.649999999999963,9.683333333333334 +mixed,20014,qlearning,2042,4.91,0.25,6.216666666666667,21.099999999999994,9.666666666666666 +mixed,20014,qlearning,4042,5.461666666666667,0.25,6.633333333333334,21.0,10.083333333333334 +mixed,20015,fifo,,26.73,0.5833333333333334,16.366666666666667,35.05,19.716666666666665 +mixed,20015,spt,,19.261666666666667,0.2,9.883333333333333,53.89999999999995,13.233333333333333 +mixed,20015,edf,,14.178333333333335,0.55,13.383333333333333,32.29999999999998,16.733333333333334 +mixed,20015,priority,,15.228333333333333,0.48333333333333334,18.216666666666665,70.14999999999999,21.566666666666666 +mixed,20015,random,,22.89333333333333,0.45,14.083333333333334,40.05,17.433333333333334 +mixed,20015,qlearning,42,11.806666666666667,0.31666666666666665,11.866666666666667,49.249999999999986,15.216666666666667 +mixed,20015,qlearning,2042,18.316666666666666,0.5333333333333333,15.1,39.14999999999999,18.45 +mixed,20015,qlearning,4042,15.47,0.4,13.483333333333333,45.34999999999998,16.833333333333332 +mixed,20016,fifo,,23.305,0.6,14.733333333333333,28.14999999999999,18.2 +mixed,20016,spt,,11.69,0.31666666666666665,9.633333333333333,39.14999999999999,13.1 +mixed,20016,edf,,8.465,0.43333333333333335,11.833333333333334,35.19999999999999,15.3 +mixed,20016,priority,,12.336666666666668,0.45,16.033333333333335,54.69999999999996,19.5 +mixed,20016,random,,30.413333333333334,0.4666666666666667,14.516666666666667,48.099999999999994,17.983333333333334 +mixed,20016,qlearning,42,8.783333333333333,0.2833333333333333,10.483333333333333,39.14999999999999,13.95 +mixed,20016,qlearning,2042,13.025,0.4666666666666667,12.95,33.099999999999994,16.416666666666668 +mixed,20016,qlearning,4042,10.298333333333334,0.36666666666666664,11.116666666666667,42.05,14.583333333333334 +mixed,20017,fifo,,25.358333333333334,0.5666666666666667,16.266666666666666,27.049999999999997,19.85 +mixed,20017,spt,,18.415000000000003,0.23333333333333334,10.816666666666666,48.099999999999994,14.4 +mixed,20017,edf,,14.541666666666666,0.48333333333333334,13.966666666666667,36.0,17.55 +mixed,20017,priority,,11.043333333333333,0.3,16.066666666666666,75.1,19.65 +mixed,20017,random,,27.561666666666667,0.48333333333333334,18.166666666666668,54.099999999999994,21.75 +mixed,20017,qlearning,42,10.275,0.15,11.6,41.19999999999993,15.183333333333334 +mixed,20017,qlearning,2042,18.904999999999998,0.43333333333333335,15.233333333333333,31.099999999999994,18.816666666666666 +mixed,20017,qlearning,4042,13.536666666666667,0.31666666666666665,13.433333333333334,40.54999999999997,17.016666666666666 +mixed,20018,fifo,,22.103333333333335,0.4166666666666667,10.266666666666667,31.0,13.833333333333334 +mixed,20018,spt,,18.571666666666665,0.18333333333333332,7.583333333333333,41.39999999999998,11.15 +mixed,20018,edf,,15.403333333333334,0.45,9.733333333333333,29.34999999999998,13.3 +mixed,20018,priority,,13.066666666666666,0.3333333333333333,11.816666666666666,52.89999999999995,15.383333333333333 +mixed,20018,random,,23.301666666666666,0.35,10.266666666666667,46.29999999999998,13.833333333333334 +mixed,20018,qlearning,42,11.485000000000001,0.31666666666666665,9.616666666666667,42.49999999999997,13.183333333333334 +mixed,20018,qlearning,2042,12.8,0.36666666666666664,9.616666666666667,43.14999999999999,13.183333333333334 +mixed,20018,qlearning,4042,12.516666666666667,0.31666666666666665,9.616666666666667,37.74999999999996,13.183333333333334 +mixed,20019,fifo,,5.223333333333333,0.2,4.416666666666667,10.099999999999994,7.866666666666666 +mixed,20019,spt,,4.878333333333333,0.15,3.5166666666666666,13.0,6.966666666666667 +mixed,20019,edf,,3.186666666666667,0.16666666666666666,4.033333333333333,13.0,7.483333333333333 +mixed,20019,priority,,4.086666666666667,0.18333333333333332,4.616666666666666,13.149999999999991,8.066666666666666 +mixed,20019,random,,6.13,0.25,4.433333333333334,16.0,7.883333333333334 +mixed,20019,qlearning,42,4.276666666666667,0.13333333333333333,4.016666666666667,13.0,7.466666666666667 +mixed,20019,qlearning,2042,3.8316666666666666,0.13333333333333333,3.8833333333333333,13.0,7.333333333333333 +mixed,20019,qlearning,4042,3.615,0.15,4.216666666666667,13.0,7.666666666666667 +mixed,20020,fifo,,53.748333333333335,0.75,25.383333333333333,48.249999999999986,29.383333333333333 +mixed,20020,spt,,46.669999999999995,0.4,18.466666666666665,89.0,22.466666666666665 +mixed,20020,edf,,37.263333333333335,0.7666666666666667,23.55,53.05,27.55 +mixed,20020,priority,,27.243333333333332,0.5666666666666667,25.183333333333334,100.29999999999998,29.183333333333334 +mixed,20020,random,,55.605000000000004,0.55,24.533333333333335,63.24999999999993,28.533333333333335 +mixed,20020,qlearning,42,32.415,0.5,20.916666666666668,77.59999999999991,24.916666666666668 +mixed,20020,qlearning,2042,37.32333333333334,0.6166666666666667,21.05,64.39999999999998,25.05 +mixed,20020,qlearning,4042,30.685,0.55,21.45,78.54999999999991,25.45 +mixed,20021,fifo,,35.81666666666667,0.7,19.7,38.05,23.05 +mixed,20021,spt,,25.566666666666666,0.25,11.633333333333333,67.05,14.983333333333333 +mixed,20021,edf,,21.401666666666664,0.4666666666666667,16.5,43.099999999999994,19.85 +mixed,20021,priority,,14.076666666666666,0.43333333333333335,18.133333333333333,68.29999999999998,21.483333333333334 +mixed,20021,random,,41.57333333333334,0.5333333333333333,20.733333333333334,59.34999999999998,24.083333333333332 +mixed,20021,qlearning,42,16.544999999999998,0.36666666666666664,14.533333333333333,44.449999999999974,17.883333333333333 +mixed,20021,qlearning,2042,17.235,0.45,14.966666666666667,52.64999999999996,18.316666666666666 +mixed,20021,qlearning,4042,18.27,0.45,15.633333333333333,57.249999999999986,18.983333333333334 +mixed,20022,fifo,,6.248333333333333,0.21666666666666667,4.1,11.0,7.283333333333333 +mixed,20022,spt,,2.6266666666666665,0.11666666666666667,2.816666666666667,12.0,6.0 +mixed,20022,edf,,1.8883333333333332,0.08333333333333333,2.95,10.199999999999989,6.133333333333334 +mixed,20022,priority,,3.158333333333333,0.1,3.816666666666667,14.0,7.0 +mixed,20022,random,,5.66,0.18333333333333332,3.7333333333333334,15.0,6.916666666666667 +mixed,20022,qlearning,42,2.8,0.08333333333333333,3.283333333333333,11.149999999999991,6.466666666666667 +mixed,20022,qlearning,2042,2.925,0.11666666666666667,3.25,11.149999999999991,6.433333333333334 +mixed,20022,qlearning,4042,2.9633333333333334,0.1,3.4166666666666665,11.149999999999991,6.6 +mixed,20023,fifo,,8.92,0.3333333333333333,7.266666666666667,16.0,10.966666666666667 +mixed,20023,spt,,4.8983333333333325,0.21666666666666667,5.233333333333333,16.099999999999994,8.933333333333334 +mixed,20023,edf,,1.7800000000000002,0.03333333333333333,5.4,20.099999999999994,9.1 +mixed,20023,priority,,3.2583333333333333,0.15,6.733333333333333,20.099999999999994,10.433333333333334 +mixed,20023,random,,11.444999999999999,0.23333333333333334,7.433333333333334,22.0,11.133333333333333 +mixed,20023,qlearning,42,3.046666666666667,0.15,6.183333333333334,20.099999999999994,9.883333333333333 +mixed,20023,qlearning,2042,2.2216666666666667,0.06666666666666667,5.683333333333334,17.249999999999986,9.383333333333333 +mixed,20023,qlearning,4042,3.495,0.18333333333333332,6.233333333333333,17.249999999999986,9.933333333333334 +mixed,20024,fifo,,52.144999999999996,0.75,25.85,49.0,29.75 +mixed,20024,spt,,41.42833333333333,0.35,18.266666666666666,103.44999999999997,22.166666666666668 +mixed,20024,edf,,34.82,0.7333333333333333,23.416666666666668,54.05,27.316666666666666 +mixed,20024,priority,,27.703333333333333,0.5166666666666667,28.116666666666667,111.39999999999998,32.016666666666666 +mixed,20024,random,,54.358333333333334,0.6333333333333333,27.65,82.44999999999997,31.55 +mixed,20024,qlearning,42,35.535,0.48333333333333334,20.566666666666666,66.79999999999984,24.466666666666665 +mixed,20024,qlearning,2042,37.43833333333334,0.6333333333333333,21.516666666666666,56.04999999999994,25.416666666666668 +mixed,20024,qlearning,4042,30.656666666666663,0.5166666666666667,21.183333333333334,106.69999999999996,25.083333333333332 +mixed,20025,fifo,,19.404999999999998,0.5,12.266666666666667,29.249999999999986,15.483333333333333 +mixed,20025,spt,,11.985000000000001,0.21666666666666667,8.016666666666667,48.19999999999999,11.233333333333333 +mixed,20025,edf,,8.27,0.43333333333333335,10.066666666666666,34.099999999999994,13.283333333333333 +mixed,20025,priority,,9.395000000000001,0.35,13.55,57.05,16.766666666666666 +mixed,20025,random,,28.163333333333334,0.4166666666666667,13.183333333333334,52.0,16.4 +mixed,20025,qlearning,42,8.2,0.2833333333333333,9.7,47.29999999999998,12.916666666666666 +mixed,20025,qlearning,2042,11.155,0.38333333333333336,10.816666666666666,36.05,14.033333333333333 +mixed,20025,qlearning,4042,12.708333333333334,0.48333333333333334,12.066666666666666,38.19999999999999,15.283333333333333 +mixed,20026,fifo,,21.805,0.55,12.466666666666667,28.049999999999997,15.983333333333333 +mixed,20026,spt,,11.713333333333333,0.2833333333333333,8.433333333333334,38.0,11.95 +mixed,20026,edf,,7.258333333333334,0.48333333333333334,10.133333333333333,33.449999999999974,13.65 +mixed,20026,priority,,8.196666666666667,0.36666666666666664,11.566666666666666,50.0,15.083333333333334 +mixed,20026,random,,22.783333333333335,0.4166666666666667,11.283333333333333,44.05,14.8 +mixed,20026,qlearning,42,8.631666666666666,0.3333333333333333,9.65,41.249999999999986,13.166666666666666 +mixed,20026,qlearning,2042,9.120000000000001,0.43333333333333335,10.316666666666666,38.29999999999998,13.833333333333334 +mixed,20026,qlearning,4042,9.266666666666667,0.4166666666666667,10.183333333333334,35.54999999999997,13.7 +mixed,20027,fifo,,4.348333333333333,0.23333333333333334,5.566666666666666,13.0,8.983333333333333 +mixed,20027,spt,,3.56,0.11666666666666667,4.15,13.0,7.566666666666666 +mixed,20027,edf,,2.1666666666666665,0.08333333333333333,4.766666666666667,13.049999999999997,8.183333333333334 +mixed,20027,priority,,3.415,0.15,6.083333333333333,22.249999999999986,9.5 +mixed,20027,random,,4.173333333333334,0.15,5.366666666666666,18.099999999999994,8.783333333333333 +mixed,20027,qlearning,42,2.933333333333333,0.1,5.083333333333333,14.099999999999994,8.5 +mixed,20027,qlearning,2042,2.7849999999999997,0.1,4.716666666666667,13.0,8.133333333333333 +mixed,20027,qlearning,4042,3.036666666666667,0.15,5.266666666666667,16.0,8.683333333333334 +mixed,20028,fifo,,12.798333333333334,0.43333333333333335,9.066666666666666,20.099999999999994,12.416666666666666 +mixed,20028,spt,,9.2,0.2,6.333333333333333,28.49999999999997,9.683333333333334 +mixed,20028,edf,,4.943333333333333,0.25,7.3,25.19999999999999,10.65 +mixed,20028,priority,,5.953333333333333,0.35,8.766666666666667,28.249999999999986,12.116666666666667 +mixed,20028,random,,19.995,0.3333333333333333,9.583333333333334,44.14999999999999,12.933333333333334 +mixed,20028,qlearning,42,6.04,0.2,7.516666666666667,28.299999999999983,10.866666666666667 +mixed,20028,qlearning,2042,4.66,0.26666666666666666,7.1,21.649999999999963,10.45 +mixed,20028,qlearning,4042,9.756666666666666,0.38333333333333336,8.066666666666666,25.14999999999999,11.416666666666666 +mixed,20029,fifo,,46.68333333333333,0.7166666666666667,29.45,48.0,33.28333333333333 +mixed,20029,spt,,24.589999999999996,0.25,20.15,115.24999999999999,23.983333333333334 +mixed,20029,edf,,24.21,0.6333333333333333,24.666666666666668,57.14999999999999,28.5 +mixed,20029,priority,,19.334999999999997,0.35,27.5,108.0,31.333333333333332 +mixed,20029,random,,62.29833333333333,0.5166666666666667,31.916666666666668,115.19999999999993,35.75 +mixed,20029,qlearning,42,20.505,0.3,21.166666666666668,97.24999999999993,25.0 +mixed,20029,qlearning,2042,22.878333333333334,0.55,21.916666666666668,74.19999999999999,25.75 +mixed,20029,qlearning,4042,21.206666666666667,0.23333333333333334,20.466666666666665,120.05,24.3 diff --git a/benchmarks/default/protocol.json b/benchmarks/default/protocol.json new file mode 100644 index 0000000..d94112f --- /dev/null +++ b/benchmarks/default/protocol.json @@ -0,0 +1,67 @@ +{ + "training_workload": "mixed", + "training_episodes": 1000, + "training_seeds": [ + 42, + 2042, + 4042 + ], + "learning_config": { + "learning_rate": 0.1, + "gamma": 1.0, + "epsilon_start": 1.0, + "epsilon_end": 0.05, + "epsilon_decay": 0.995 + }, + "workload_config": { + "num_jobs": 60, + "arrival_rate": 0.28, + "deadline_factor": 4.0, + "duration_range": [ + 1, + 6 + ], + "burst_size": 6, + "burst_window": 3 + }, + "evaluation_workloads": [ + "stable", + "bursty", + "mixed" + ], + "evaluation_seeds": [ + 20000, + 20001, + 20002, + 20003, + 20004, + 20005, + 20006, + 20007, + 20008, + 20009, + 20010, + 20011, + 20012, + 20013, + 20014, + 20015, + 20016, + 20017, + 20018, + 20019, + 20020, + 20021, + 20022, + 20023, + 20024, + 20025, + 20026, + 20027, + 20028, + 20029 + ], + "random_policy_seed": "evaluation_seed", + "aggregation": "mean of episode metrics; sample standard deviation of episode cost", + "python_version": "3.12.14" +} diff --git a/benchmarks/default/summary.csv b/benchmarks/default/summary.csv new file mode 100644 index 0000000..d8a020b --- /dev/null +++ b/benchmarks/default/summary.csv @@ -0,0 +1,25 @@ +workload,policy,training_seed,episodes,mean_primary_cost,mean_deadline_miss_rate,mean_average_waiting_time,mean_p95_waiting_time,mean_average_flow_time,std_primary_cost,mean_cost_delta_vs_fifo,cost_win_rate_vs_fifo,mean_cost_delta_vs_spt,cost_win_rate_vs_spt,mean_cost_delta_vs_edf,cost_win_rate_vs_edf,mean_cost_delta_vs_priority,cost_win_rate_vs_priority,mean_cost_delta_vs_random,cost_win_rate_vs_random +stable,fifo,,30,16.530555555555555,0.4388888888888889,11.942777777777776,25.89333333333333,15.47888888888889,14.481569376156163,0.0,0.0,6.116,0.0,5.089222222222222,0.0,6.678555555555556,0.06666666666666667,-2.1165555555555557,0.7666666666666667 +stable,spt,,30,10.414555555555555,0.14944444444444444,8.123888888888889,37.241666666666646,11.66,10.098442758951053,-6.116,1.0,0.0,0.0,-1.0267777777777778,0.4666666666666667,0.5625555555555556,0.6,-8.232555555555555,0.9666666666666667 +stable,edf,,30,11.441333333333334,0.32166666666666666,9.988888888888889,26.029999999999994,13.525,12.492887650142398,-5.089222222222222,1.0,1.0267777777777778,0.5333333333333333,0.0,0.0,1.5893333333333333,0.6,-7.2057777777777785,1.0 +stable,priority,,30,9.852,0.3,11.467222222222222,41.79166666666665,15.003333333333334,7.498313378680849,-6.678555555555556,0.9333333333333333,-0.5625555555555556,0.4,-1.5893333333333333,0.4,0.0,0.0,-8.795111111111112,1.0 +stable,random,,30,18.64711111111111,0.35055555555555556,12.012222222222222,40.014999999999986,15.548333333333334,16.934774708618743,2.1165555555555557,0.23333333333333334,8.232555555555555,0.03333333333333333,7.2057777777777785,0.0,8.795111111111112,0.0,0.0,0.0 +stable,qlearning,42,30,9.270333333333333,0.22166666666666668,9.361666666666668,36.38666666666665,12.897777777777778,8.61291608273736,-7.260222222222223,0.9666666666666667,-1.1442222222222223,0.6333333333333333,-2.1710000000000003,0.5,-0.5816666666666668,0.7666666666666667,-9.376777777777779,1.0 +stable,qlearning,2042,30,10.164222222222223,0.28833333333333333,9.83222222222222,32.00333333333332,13.368333333333334,9.461273675661891,-6.366333333333333,1.0,-0.25033333333333346,0.6333333333333333,-1.277111111111111,0.4666666666666667,0.3122222222222222,0.6333333333333333,-8.482888888888889,1.0 +stable,qlearning,4042,30,9.209777777777779,0.2594444444444444,9.515555555555554,35.18499999999999,13.051666666666668,7.344206238565535,-7.320777777777778,1.0,-1.204777777777778,0.5666666666666667,-2.231555555555556,0.43333333333333335,-0.6422222222222224,0.7333333333333333,-9.437333333333333,0.9666666666666667 +bursty,fifo,,30,52.74411111111111,0.7155555555555555,28.012222222222224,56.49999999999999,31.52111111111111,35.67721371538108,0.0,0.0,21.726555555555553,0.0,12.745333333333333,0.0,21.877555555555556,0.0,-3.4266111111111104,0.5666666666666667 +bursty,spt,,30,31.017555555555553,0.35,18.66,72.84833333333331,22.16888888888889,23.74479349558863,-21.726555555555553,1.0,0.0,0.0,-8.981222222222222,0.7666666666666667,0.15100000000000038,0.6,-25.153166666666667,1.0 +bursty,edf,,30,39.99877777777778,0.5927777777777778,23.471666666666668,53.828333333333326,26.980555555555554,34.11466836269711,-12.745333333333333,1.0,8.981222222222222,0.23333333333333334,0.0,0.0,9.132222222222222,0.36666666666666664,-16.171944444444442,1.0 +bursty,priority,,30,30.866555555555557,0.5816666666666667,27.848333333333336,80.50499999999998,31.357222222222223,20.326316421311052,-21.877555555555556,1.0,-0.15100000000000038,0.4,-9.132222222222222,0.6333333333333333,0.0,0.0,-25.304166666666667,1.0 +bursty,random,,30,56.170722222222224,0.6355555555555555,28.102777777777778,76.12833333333332,31.611666666666668,40.186839362971966,3.4266111111111104,0.43333333333333335,25.153166666666667,0.0,16.171944444444442,0.0,25.304166666666667,0.0,0.0,0.0 +bursty,qlearning,42,30,28.804333333333332,0.44055555555555553,20.37222222222222,71.25666666666665,23.88111111111111,22.559516293624267,-23.93977777777778,1.0,-2.213222222222223,0.7333333333333333,-11.194444444444445,0.7666666666666667,-2.0622222222222226,0.8,-27.36638888888889,1.0 +bursty,qlearning,2042,30,31.47111111111111,0.48944444444444446,20.75111111111111,68.46666666666665,24.259999999999998,24.35496113453321,-21.273000000000003,1.0,0.4535555555555548,0.5,-8.527666666666667,0.6666666666666666,0.6045555555555552,0.6333333333333333,-24.69961111111111,1.0 +bursty,qlearning,4042,30,27.130277777777778,0.5233333333333333,22.18,71.18999999999998,25.688888888888886,17.832773361513084,-25.613833333333332,1.0,-3.887277777777778,0.6666666666666666,-12.8685,0.7,-3.7362777777777776,0.8666666666666667,-29.040444444444443,1.0 +mixed,fifo,,30,19.360444444444447,0.45555555555555555,11.850555555555555,24.994999999999997,15.383333333333333,14.44140312839201,0.0,0.0,6.709166666666667,0.03333333333333333,10.032666666666668,0.0,10.148333333333333,0.0,-3.0295,0.8333333333333334 +mixed,spt,,30,12.651277777777777,0.20722222222222222,8.092777777777778,38.04999999999998,11.625555555555556,11.050520737052418,-6.709166666666667,0.9666666666666667,0.0,0.0,3.3234999999999997,0.0,3.439166666666666,0.2,-9.738666666666667,1.0 +mixed,edf,,30,9.327777777777778,0.31777777777777777,9.928333333333335,28.738333333333326,13.46111111111111,9.707605644212709,-10.032666666666668,1.0,-3.3234999999999997,1.0,0.0,0.0,0.11566666666666683,0.7333333333333333,-13.062166666666666,1.0 +mixed,priority,,30,9.212111111111112,0.30333333333333334,11.855555555555556,45.179999999999986,15.388333333333332,6.942778766367459,-10.148333333333333,1.0,-3.439166666666666,0.8,-0.11566666666666683,0.26666666666666666,0.0,0.0,-13.177833333333334,1.0 +mixed,random,,30,22.389944444444446,0.375,12.008888888888889,39.396666666666654,15.541666666666666,15.845725576890123,3.0295,0.16666666666666666,9.738666666666667,0.0,13.062166666666666,0.0,13.177833333333334,0.0,0.0,0.0 +mixed,qlearning,42,30,9.28422222222222,0.24222222222222223,9.398333333333333,35.10499999999998,12.931111111111111,8.30007407451289,-10.076222222222222,1.0,-3.367055555555555,0.9333333333333333,-0.043555555555555785,0.3333333333333333,0.07211111111111106,0.5333333333333333,-13.105722222222223,1.0 +mixed,qlearning,2042,30,10.402444444444445,0.3194444444444445,9.866666666666667,30.40833333333332,13.399444444444445,9.442392371835844,-8.958,1.0,-2.2488333333333324,0.8333333333333334,1.0746666666666667,0.2,1.1903333333333337,0.5666666666666667,-11.9875,1.0 +mixed,qlearning,4042,30,9.899555555555557,0.28944444444444445,9.843333333333334,36.14833333333332,13.376111111111111,7.750913330601302,-9.460888888888888,1.0,-2.7517222222222215,0.8,0.5717777777777776,0.26666666666666666,0.6874444444444444,0.43333333333333335,-12.49038888888889,1.0 diff --git a/docs/experiments.md b/docs/experiments.md new file mode 100644 index 0000000..3a5bf48 --- /dev/null +++ b/docs/experiments.md @@ -0,0 +1,102 @@ +# Scheduling experiments + +## Setup and reproduction + +Three independent Q-Learning models train on `mixed` for 1,000 episodes each, +starting at seeds 42, 2042, and 4042 (workload seed ranges 42–1041, 2042–3041, +and 4042–5041). Learning defaults are unchanged: alpha=0.1, gamma=1, +epsilon=max(0.05, 0.995**episode). Each model is evaluated greedily with no +exploration, learning, or Q-table insertion. + +Evaluation uses `stable`, `bursty`, and `mixed`, each at seeds 20000–20029. +The generators produce 60 jobs with duration 1–6, weights 1/2/4, arrival rate +0.28, deadline factor 4, burst size 6, and burst window 3. Each workload/seed +is generated once and the same immutable job specifications go to all eight +policy instances: five baselines and three trained models. Random uses a separate +local RNG seeded with that episode's evaluation seed. + +Before the final run, seeds 7 and 42 were checked on all three workloads. All five +baselines produced distinct execution orders in each episode. On FIFO's queue +snapshots, 54–59 decisions had multiple jobs waiting and the deterministic +heuristics disagreed at 48–57 of them. The final protocol above was then kept fixed; +there was no hyperparameter tuning or selection of a preferred trained model. + +```sh +python -m pip install -e '.[benchmark]' +adaptivequeue benchmark --output-dir benchmark-results --retrain +``` + +Omit `--retrain` to reuse the three saved models. Cached models must match the +training seed, episode count, workload configuration, and learning settings. +The committed [reference outputs](../benchmarks/default) were generated with +Python 3.12.14 and Matplotlib 3.11.2. + +## Output definitions + +- `per_episode.csv`: 720 rows, with all five scheduling metrics for each + workload/evaluation-seed/policy/training-seed combination. Baselines have a + blank training seed and are evaluated once, not repeated for each RL run. +- `summary.csv`: 24 rows, one per workload/policy/training run. Metrics are + arithmetic means of the 30 **episode metrics**. In particular, mean P95 waiting + time averages episode percentiles; it is not a percentile over pooled jobs. + `std_primary_cost` is the sample standard deviation over evaluation episodes, + not training variability or a confidence interval. +- `mean_cost_delta_vs_*` is mean paired `J(policy) - J(baseline)` using matching + evaluation seeds; negative favors the policy. `cost_win_rate_vs_*` is the + fraction of those 30 paired episodes with strictly lower cost; ties are not wins. +- `action_distribution.csv`: 36 rows, counting each underlying action separately + for each workload and trained model. `fraction` covers all 1,800 decisions; + `contended_fraction` covers only decisions with at least two jobs waiting. +- `figures/scheduling_cost.png` and `figures/deadline_miss_rate.png`: episode + distributions, with median lines and mean triangles. Each panel uses its own + vertical scale. Models remain separate; 30 episodes per box. +- `models/` and `protocol.json`: the three Q-tables and complete experiment settings. + +## Observed results + +Mean primary cost J over the same 30 evaluation episodes; lower is better: + +| Policy / training seed | Stable | Bursty | Mixed | +| --- | ---: | ---: | ---: | +| FIFO | 16.531 | 52.744 | 19.360 | +| SPT | 10.415 | 31.018 | 12.651 | +| EDF | 11.441 | 39.999 | 9.328 | +| Priority | 9.852 | 30.867 | **9.212** | +| Random | 18.647 | 56.171 | 22.390 | +| Q-Learning / 42 | 9.270 | 28.804 | 9.284 | +| Q-Learning / 2042 | 10.164 | 31.471 | 10.402 | +| Q-Learning / 4042 | **9.210** | **27.130** | 9.900 | + +Priority has the lowest mean cost among the classical baselines in all three +workloads. Models 42 and 4042 improve on it in stable and bursty workloads: +their paired mean differences are -0.582/-0.642 on stable and -2.062/-3.736 on +bursty. They win 23/22 of 30 stable episodes and 24/26 bursty episodes respectively. +Model 2042 is worse than Priority in both means (+0.312 and +0.605), despite +winning 19/30 paired episodes in each. Mean improvement and win frequency answer +different questions when cost differences vary substantially between episodes. + +On `mixed`, the training workload, **all three models lose to Priority in mean +cost**: +0.072, +1.190, and +0.687 respectively. Model 42 narrowly beats EDF +in mean (-0.044), while models 2042 and 4042 lose to EDF (+1.075/+0.572). +Every model beats FIFO and Random in mean on every workload, but those comparisons +alone would overstate the value relative to stronger heuristics. + +SPT has the lowest mean deadline-miss rate in every workload: 14.94%, 35.00%, and +20.72%. The best RL miss rates are 22.17%, 44.06%, and 24.22%. J penalizes weighted +tardiness and flow time rather than the unweighted count of misses, so the cost +ranking does not imply the same ranking on deadline-miss rate or waiting time. +All secondary metrics are retained in the CSVs. + +Action mixes also differ across training runs. On bursty workloads, model 42 +selects FIFO/SPT/EDF/Priority for 2.0%/53.8%/17.6%/26.6% of all decisions; +model 2042 uses 18.3%/41.2%/23.8%/16.8%, and model 4042 uses +8.2%/45.9%/18.8%/27.1%. Choices at single-job queues cannot affect that dispatch; +the CSV includes contended-only frequencies to distinguish these cases. + +These runs show useful cost reductions for two training seeds on stable and +bursty loads, but no consistent advantage over a strong heuristic, even on mixed +loads. Three training seeds and one load/deadline setting do not establish broad +superiority. The models share the same 30 evaluation workloads per family, so their +results should not be pooled as 90 independent evaluation episodes. The coarse +state also maps different queues to the same observation; see the +[state design](simulation.md#tabular-q-learning-meta-scheduler). diff --git a/pyproject.toml b/pyproject.toml index 299c35b..2499b44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ dependencies = [] [project.optional-dependencies] dev = ["pytest>=8", "ruff>=0.9", "mypy>=1.14"] +benchmark = ["matplotlib>=3.8"] [project.scripts] adaptivequeue = "adaptivequeue.cli:main" diff --git a/src/adaptivequeue/benchmark.py b/src/adaptivequeue/benchmark.py new file mode 100644 index 0000000..49ee13a --- /dev/null +++ b/src/adaptivequeue/benchmark.py @@ -0,0 +1,280 @@ +"""Paired scheduling experiments with separate Q-Learning training runs.""" + +import csv +import json +import platform +from dataclasses import asdict, dataclass, fields +from pathlib import Path +from statistics import fmean, stdev +from typing import Sequence + +from adaptivequeue.metrics import Metrics +from adaptivequeue.models import Job +from adaptivequeue.policies import POLICY_NAMES, make_policy +from adaptivequeue.qlearning import ( + ACTION_NAMES, + ACTION_POLICIES, + LearningConfig, + QLearningAgent, + TrainingInfo, + encode_state, + train, +) +from adaptivequeue.simulation import simulate +from adaptivequeue.workloads import WORKLOADS, WorkloadConfig + +TRAINING_SEEDS = (42, 2042, 4042) +EVALUATION_SEEDS = tuple(range(20000, 20030)) +METRIC_NAMES = tuple(field.name for field in fields(Metrics)) + + +@dataclass(frozen=True) +class EpisodeResult: + workload: str + evaluation_seed: int + policy: str + training_seed: int | None + metrics: Metrics + + +def summarize(results: Sequence[EpisodeResult]) -> list[dict[str, object]]: + """Average episode metrics and compare paired costs, without pooling RL runs.""" + groups: dict[tuple[str, str, int | None], list[EpisodeResult]] = {} + baselines = { + (row.workload, row.evaluation_seed, row.policy): row.metrics.primary_cost + for row in results + if row.training_seed is None + } + for row in results: + groups.setdefault((row.workload, row.policy, row.training_seed), []).append(row) + summary = [] + for (workload, policy, training_seed), episodes in groups.items(): + row_data: dict[str, object] = { + "workload": workload, + "policy": policy, + "training_seed": training_seed, + "episodes": len(episodes), + } + row_data.update( + { + f"mean_{name}": fmean(getattr(episode.metrics, name) for episode in episodes) + for name in METRIC_NAMES + } + ) + row_data["std_primary_cost"] = ( + stdev(episode.metrics.primary_cost for episode in episodes) + if len(episodes) > 1 + else 0.0 + ) + for baseline in POLICY_NAMES: + differences = [ + episode.metrics.primary_cost + - baselines[(workload, episode.evaluation_seed, baseline)] + for episode in episodes + ] + row_data[f"mean_cost_delta_vs_{baseline}"] = fmean(differences) + row_data[f"cost_win_rate_vs_{baseline}"] = fmean(value < 0 for value in differences) + summary.append(row_data) + return summary + + +def _write_csv(path: Path, rows: Sequence[dict[str, object]]) -> None: + with path.open("w", newline="", encoding="utf-8") as stream: + writer = csv.DictWriter(stream, fieldnames=list(rows[0]), lineterminator="\n") + writer.writeheader() + writer.writerows(rows) + + +def _load_or_train( + directory: Path, seeds: Sequence[int], episodes: int, *, retrain: bool +) -> dict[int, QLearningAgent]: + directory.mkdir(parents=True, exist_ok=True) + agents = {} + for seed in seeds: + path = directory / f"qlearning_seed_{seed}.json" + if path.exists() and not retrain: + agent = QLearningAgent.load(path) + expected = TrainingInfo("mixed", WorkloadConfig(), episodes, seed) + if agent.training != expected or agent.config != LearningConfig() or agent.seed != seed: + raise ValueError(f"cached model configuration differs: {path}; use --retrain") + else: + agent = train( + workload="mixed", + episodes=episodes, + seed=seed, + workload_config=WorkloadConfig(), + learning_config=LearningConfig(), + ) + agent.save(path) + agents[seed] = agent + return agents + + +def _evaluate_agent( + agent: QLearningAgent, jobs: Sequence[Job] +) -> tuple[Metrics, list[int], list[int]]: + counts = [0] * len(ACTION_NAMES) + contended = [0] * len(ACTION_NAMES) + + def policy(waiting_jobs: Sequence[Job], current_time: int) -> Job: + action = agent.greedy_action(encode_state(waiting_jobs, current_time)) + counts[action] += 1 + contended[action] += len(waiting_jobs) > 1 + return ACTION_POLICIES[action](waiting_jobs, current_time) + + return simulate(jobs, policy).metrics, counts, contended + + +def plot_results(results: Sequence[EpisodeResult], output_dir: Path) -> None: + try: + import matplotlib + + matplotlib.use("Agg") + import matplotlib.pyplot as plt + except ImportError as error: + raise ValueError( + "plotting requires Matplotlib; install adaptivequeue[benchmark]" + ) from error + + output_dir.mkdir(parents=True, exist_ok=True) + workloads = list(dict.fromkeys(row.workload for row in results)) + series = list(dict.fromkeys((row.policy, row.training_seed) for row in results)) + labels = [name.upper() if seed is None else f"QL {seed}" for name, seed in series] + for metric, filename, label in ( + ("primary_cost", "scheduling_cost.png", "Scheduling cost J (lower is better)"), + ("deadline_miss_rate", "deadline_miss_rate.png", "Deadline miss rate"), + ): + figure, axes = plt.subplots( + 1, len(workloads), figsize=(5 * len(workloads), 4.8), squeeze=False + ) + for axis, workload in zip(axes[0], workloads): + values = [ + [ + getattr(row.metrics, metric) + for row in results + if row.workload == workload and (row.policy, row.training_seed) == key + ] + for key in series + ] + boxes = axis.boxplot(values, showmeans=True, patch_artist=True) + for index, box in enumerate(boxes["boxes"]): + box.set_facecolor(plt.get_cmap("tab10")(index)) + box.set_alpha(0.55) + axis.set_xticks(range(1, len(series) + 1), labels, rotation=45, ha="right") + axis.set_title(workload) + axis.set_ylabel(label) + axis.set_ylim(bottom=0) + axis.grid(axis="y", alpha=0.25) + figure.suptitle("Episode distributions; line = median, triangle = mean") + figure.tight_layout() + figure.savefig(output_dir / filename, dpi=150) + plt.close(figure) + + +def run_benchmark( + output_dir: str | Path, + *, + training_seeds: Sequence[int] = TRAINING_SEEDS, + training_episodes: int = 1000, + evaluation_seeds: Sequence[int] = EVALUATION_SEEDS, + workloads: Sequence[str] = ("stable", "bursty", "mixed"), + retrain: bool = False, + plots: bool = True, +) -> list[EpisodeResult]: + """Run the fixed protocol; smaller seed sets are useful for focused tests.""" + if training_episodes < 1 or not training_seeds or not evaluation_seeds or not workloads: + raise ValueError( + "benchmark needs positive training episodes and nonempty seed/workload sets" + ) + for seeds in (training_seeds, evaluation_seeds): + if len(set(seeds)) != len(seeds) or min(seeds) < 0: + raise ValueError("benchmark seeds must be unique and nonnegative") + if any(name not in WORKLOADS for name in workloads) or len(set(workloads)) != len(workloads): + raise ValueError("benchmark workloads must be unique registered workload names") + if any( + start <= seed < start + training_episodes + for start in training_seeds + for seed in evaluation_seeds + ): + raise ValueError("evaluation seeds must not overlap training seeds") + + directory = Path(output_dir) + agents = _load_or_train( + directory / "models", training_seeds, training_episodes, retrain=retrain + ) + results = [] + counts = { + (workload, seed): [0] * len(ACTION_NAMES) + for workload in workloads + for seed in training_seeds + } + contended = { + (workload, seed): [0] * len(ACTION_NAMES) + for workload in workloads + for seed in training_seeds + } + for workload in workloads: + for evaluation_seed in evaluation_seeds: + jobs = WORKLOADS[workload](evaluation_seed, WorkloadConfig()) + for name in POLICY_NAMES: + metrics = simulate(jobs, make_policy(name, seed=evaluation_seed)).metrics + results.append(EpisodeResult(workload, evaluation_seed, name, None, metrics)) + for training_seed, agent in agents.items(): + metrics, selections, choices = _evaluate_agent(agent, jobs) + results.append( + EpisodeResult(workload, evaluation_seed, "qlearning", training_seed, metrics) + ) + for action in range(len(ACTION_NAMES)): + counts[(workload, training_seed)][action] += selections[action] + contended[(workload, training_seed)][action] += choices[action] + + episode_rows = [ + { + "workload": row.workload, + "evaluation_seed": row.evaluation_seed, + "policy": row.policy, + "training_seed": row.training_seed, + **asdict(row.metrics), + } + for row in results + ] + action_rows: list[dict[str, object]] = [] + for (workload, seed), selections in counts.items(): + choices = contended[(workload, seed)] + total, total_contended = sum(selections), sum(choices) + for action, name in enumerate(ACTION_NAMES): + action_rows.append( + { + "workload": workload, + "training_seed": seed, + "action": action, + "policy": name, + "selections": selections[action], + "fraction": selections[action] / total if total else 0.0, + "contended_selections": choices[action], + "contended_fraction": choices[action] / total_contended + if total_contended + else 0.0, + } + ) + _write_csv(directory / "per_episode.csv", episode_rows) + _write_csv(directory / "summary.csv", summarize(results)) + _write_csv(directory / "action_distribution.csv", action_rows) + protocol = { + "training_workload": "mixed", + "training_episodes": training_episodes, + "training_seeds": list(training_seeds), + "learning_config": asdict(LearningConfig()), + "workload_config": asdict(WorkloadConfig()), + "evaluation_workloads": list(workloads), + "evaluation_seeds": list(evaluation_seeds), + "random_policy_seed": "evaluation_seed", + "aggregation": "mean of episode metrics; sample standard deviation of episode cost", + "python_version": platform.python_version(), + } + (directory / "protocol.json").write_text( + json.dumps(protocol, indent=2) + "\n", encoding="utf-8" + ) + if plots: + plot_results(results, directory / "figures") + return results diff --git a/src/adaptivequeue/cli.py b/src/adaptivequeue/cli.py index c4d050c..ab50d75 100644 --- a/src/adaptivequeue/cli.py +++ b/src/adaptivequeue/cli.py @@ -54,9 +54,22 @@ def main() -> None: _add_workload_arguments(evaluation, workload="mixed", seed=None) evaluation.add_argument("--episodes", type=int, default=20) evaluation.add_argument("--model", type=Path, required=True) + + benchmark = commands.add_parser("benchmark", help="Run the reproducible paired benchmark") + benchmark.add_argument("--output-dir", type=Path, default=Path("benchmark-results")) + benchmark.add_argument("--retrain", action="store_true", help="Replace cached benchmark models") args = parser.parse_args() try: + if args.command == "benchmark": + from adaptivequeue.benchmark import run_benchmark + + results = run_benchmark(args.output_dir, retrain=args.retrain) + print( + f"Saved {len(results)} per-episode results, " + f"summaries, and figures to {args.output_dir}" + ) + return config = WorkloadConfig( num_jobs=args.jobs, arrival_rate=args.arrival_rate, diff --git a/tests/test_benchmark.py b/tests/test_benchmark.py new file mode 100644 index 0000000..7b22a89 --- /dev/null +++ b/tests/test_benchmark.py @@ -0,0 +1,167 @@ +import copy +import csv +import json +import random +from pathlib import Path +from typing import Iterable + +import pytest + +from adaptivequeue import Job, Metrics, SimulationResult, WorkloadConfig, benchmark, simulate +from adaptivequeue.benchmark import EpisodeResult, run_benchmark, summarize +from adaptivequeue.policies import POLICY_NAMES, Policy +from adaptivequeue.qlearning import QLearningAgent, train +from adaptivequeue.workloads import WORKLOADS + + +def test_fresh_and_cached_benchmarks_are_reproducible( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + settings = { + "training_seeds": (42, 2042), + "training_episodes": 2, + "evaluation_seeds": (20000, 20001), + "workloads": ("stable", "mixed"), + "plots": False, + } + global_state = random.getstate() + first, second = tmp_path / "first", tmp_path / "second" + results = run_benchmark(first, **settings) + assert results == run_benchmark(second, **settings) + assert len(results) == 2 * 2 * (5 + 2) + for name in ("per_episode.csv", "summary.csv", "action_distribution.csv", "protocol.json"): + assert (first / name).read_bytes() == (second / name).read_bytes() + + def fail(**kwargs: object) -> QLearningAgent: + pytest.fail("a cached benchmark must not retrain") + + monkeypatch.setattr(benchmark, "train", fail) + assert run_benchmark(first, **settings) == results + assert random.getstate() == global_state + with (first / "action_distribution.csv").open() as stream: + actions = list(csv.DictReader(stream)) + assert len(actions) == 2 * 2 * 4 + for workload in settings["workloads"]: + for seed in settings["training_seeds"]: + rows = [ + r for r in actions if r["workload"] == workload and int(r["training_seed"]) == seed + ] + assert sum(int(r["selections"]) for r in rows) == 2 * 60 + assert sum(float(r["fraction"]) for r in rows) == pytest.approx(1.0) + assert sum(float(r["contended_fraction"]) for r in rows) == pytest.approx(1.0) + assert all(int(r["contended_selections"]) <= int(r["selections"]) for r in rows) + + +def test_every_policy_receives_the_same_generated_jobs( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + generated: dict[int, list[Job]] = {} + observed: list[tuple[Job, ...]] = [] + + def generate(seed: int, config: WorkloadConfig) -> list[Job]: + assert seed not in generated + generated[seed] = WORKLOADS["mixed"](seed, config) + return generated[seed] + + def observe(jobs: Iterable[Job], policy: Policy) -> SimulationResult: + assert jobs is generated[20000] + observed.append(tuple(jobs)) + return simulate(jobs, policy) + + monkeypatch.setattr(benchmark, "WORKLOADS", {"mixed": generate}) + monkeypatch.setattr(benchmark, "simulate", observe) + run_benchmark( + tmp_path, + training_seeds=(42,), + training_episodes=2, + evaluation_seeds=(20000,), + workloads=("mixed",), + plots=False, + ) + assert len(generated) == 1 + assert len(observed) == 6 + assert all(jobs == observed[0] for jobs in observed) + assert tuple(generated[20000]) == observed[0] + + +def test_aggregation_keeps_runs_separate_and_pairs_evaluation_seeds() -> None: + results = [] + for seed, cost in ((1, 10.0), (2, 20.0)): + for policy in POLICY_NAMES: + results.append(EpisodeResult("mixed", seed, policy, None, Metrics(cost, 0.2, 2, 4, 6))) + for training_seed, rl_cost in ((42, 8.0 if seed == 1 else 22.0), (2042, cost + 4)): + metrics = Metrics(rl_cost, 0.1 * seed, 2 * seed, 10 * seed, 5 * seed) + results.append(EpisodeResult("mixed", seed, "qlearning", training_seed, metrics)) + summary = summarize(results) + assert len(summary) == 7 + runs = {row["training_seed"]: row for row in summary if row["policy"] == "qlearning"} + assert runs[42]["episodes"] == 2 + assert runs[42]["mean_primary_cost"] == 15 + assert runs[42]["std_primary_cost"] == pytest.approx(98**0.5) + assert runs[42]["mean_cost_delta_vs_fifo"] == 0 + assert runs[42]["cost_win_rate_vs_fifo"] == 0.5 + assert runs[42]["mean_deadline_miss_rate"] == pytest.approx(0.15) + assert runs[42]["mean_p95_waiting_time"] == 15 + assert runs[2042]["mean_primary_cost"] == 19 + assert runs[2042]["mean_cost_delta_vs_fifo"] == 4 + assert runs[2042]["cost_win_rate_vs_fifo"] == 0 + + +def test_benchmark_evaluation_is_frozen_and_counts_greedy_actions( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + agent = train(episodes=2, seed=42) + table_before = copy.deepcopy(agent.q_table) + rng_before = agent._rng.getstate() + expected = simulate(WORKLOADS["mixed"](20000, WorkloadConfig()), agent.policy).metrics + + def fail(*args: object, **kwargs: object) -> None: + pytest.fail("benchmark evaluation must not explore or learn") + + monkeypatch.setattr(agent, "choose_action", fail) + monkeypatch.setattr(agent, "update", fail) + monkeypatch.setattr(benchmark, "_load_or_train", lambda *args, **kwargs: {42: agent}) + rows = run_benchmark( + tmp_path, + training_seeds=(42,), + training_episodes=2, + evaluation_seeds=(20000,), + workloads=("mixed",), + plots=False, + ) + assert rows[-1].metrics == expected + assert agent.q_table == table_before + assert agent._rng.getstate() == rng_before + with (tmp_path / "action_distribution.csv").open() as stream: + actions = list(csv.DictReader(stream)) + assert sum(int(row["selections"]) for row in actions) == 60 + + +def test_cached_model_configuration_must_match(tmp_path: Path) -> None: + settings = { + "training_seeds": (42,), + "training_episodes": 1, + "evaluation_seeds": (20000,), + "workloads": ("mixed",), + "plots": False, + } + run_benchmark(tmp_path, **settings) + path = tmp_path / "models" / "qlearning_seed_42.json" + data = json.loads(path.read_text()) + data["training"]["episodes"] = 999 + path.write_text(json.dumps(data)) + with pytest.raises(ValueError, match="cached model configuration"): + run_benchmark(tmp_path, **settings) + + +def test_plot_files_are_generated(tmp_path: Path) -> None: + pytest.importorskip("matplotlib") + run_benchmark( + tmp_path, + training_seeds=(42,), + training_episodes=1, + evaluation_seeds=(20000, 20001), + workloads=("mixed",), + ) + for name in ("scheduling_cost.png", "deadline_miss_rate.png"): + assert (tmp_path / "figures" / name).read_bytes().startswith(b"\x89PNG\r\n\x1a\n") diff --git a/tests/test_cli.py b/tests/test_cli.py index 8f60ad5..0effed7 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -2,6 +2,10 @@ import sys from pathlib import Path +import pytest + +from adaptivequeue.cli import main + def test_module_cli_displays_metrics() -> None: result = subprocess.run( @@ -93,3 +97,21 @@ def test_cli_training_and_evaluation(tmp_path: Path) -> None: assert "Policy: qlearning | Episodes: 2" in evaluation.stdout assert "Primary cost J" in evaluation.stdout assert "95th-percentile waiting time" in evaluation.stdout + + +def test_benchmark_cli_dispatch_preserves_output_directory( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str] +) -> None: + from adaptivequeue import benchmark + + called = [] + + def run(output_dir: Path, *, retrain: bool) -> list: + called.append((output_dir, retrain)) + return [] + + monkeypatch.setattr(benchmark, "run_benchmark", run) + monkeypatch.setattr(sys, "argv", ["adaptivequeue", "benchmark", "--output-dir", str(tmp_path)]) + main() + assert called == [(tmp_path, False)] + assert "per-episode results" in capsys.readouterr().out