diff --git a/README.md b/README.md index 98587d9..61ad886 100644 --- a/README.md +++ b/README.md @@ -1 +1,23 @@ -# 20260116 美赛模拟 食物分发 +# 20260116 美赛模拟:食物分发(MFP) + +本仓库包含对 2019 年 MFP 站点数据的频次分配(任务一)与全年排班优化(任务二)脚本。 +核心数据文件:`prob/MFP Regular Sites 2019.xlsx`。 + +## Task 1: 频次分配(Visit Frequency Allocation) + +目标:在总车次约束下,为每个站点分配年度访问次数 `f_i`,并评估有效性/公平性(含最低10%平均、基尼系数等)。 + +- 运行:`python3 kmin_effectiveness.py` +- 输出(写入 `data/`): + - `data/kmin_effectiveness.png`:k_min 与指标曲线图 + - `data/kmin_effectiveness_data.csv`:每个 `k_min` 的汇总指标 + 各站点 `visits_01..visits_N` + - `data/kmin_effectiveness_sites.csv`:`visits_XX` 与站点名称/顺序映射 + +说明:`kmin_effectiveness.py` 当前使用 Monte Carlo(引入 `StDev(Demand per Visit)`)对有效性做多次模拟平均。 + +## Scheduling (Step 2) + +Optimize a 365-day schedule with at most 2 visits per day and minimum gap constraints: + +- `python3 scheduling_optimization.py --days 365 --daily-capacity 2 --gap-min 14` +- Outputs are written to `data/` (e.g., `data/schedule_optimized_kmin6.8_gap14.csv`), using `data/kmin_effectiveness_data.csv` as the frequency source. diff --git a/data/kmin_effectiveness.png b/data/kmin_effectiveness.png index e960552..3c5b0d0 100644 Binary files a/data/kmin_effectiveness.png and b/data/kmin_effectiveness.png differ diff --git a/data/kmin_effectiveness_data.csv b/data/kmin_effectiveness_data.csv index 6089440..25700d5 100644 --- a/data/kmin_effectiveness_data.csv +++ b/data/kmin_effectiveness_data.csv @@ -1,92 +1,92 @@ k_min,effectiveness,min_eff,bottom10_eff,gini_eff,std_eff,unmet,waste,total_served,total_demand,serve_ratio,visits_01,visits_02,visits_03,visits_04,visits_05,visits_06,visits_07,visits_08,visits_09,visits_10,visits_11,visits_12,visits_13,visits_14,visits_15,visits_16,visits_17,visits_18,visits_19,visits_20,visits_21,visits_22,visits_23,visits_24,visits_25,visits_26,visits_27,visits_28,visits_29,visits_30,visits_31,visits_32,visits_33,visits_34,visits_35,visits_36,visits_37,visits_38,visits_39,visits_40,visits_41,visits_42,visits_43,visits_44,visits_45,visits_46,visits_47,visits_48,visits_49,visits_50,visits_51,visits_52,visits_53,visits_54,visits_55,visits_56,visits_57,visits_58,visits_59,visits_60,visits_61,visits_62,visits_63,visits_64,visits_65,visits_66,visits_67,visits_68,visits_69,visits_70 -1.0,0.6341145571330261,0.0,0.0,0.3576469174594097,0.44121099409856696,7211.9349775511755,52958.89819394406,95261.06502244883,102473.0,0.9296211199286528,1,1,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,7,8,8,9,9,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,20,20,21,21,23,25,29 -1.1,0.631881646766723,0.0,0.0,0.3595928073033041,0.44071458493703186,7339.685342065542,52748.84063760984,95133.31465793446,102473.0,0.9283744465169798,1,1,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,7,8,8,9,9,9,10,10,10,11,11,11,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,16,16,16,16,20,21,21,22,24,26,29 -1.2000000000000002,0.6287203388568261,0.0,0.0,0.36192497743028307,0.4401312771373341,7408.3988763206435,52820.73192590341,95064.60112367936,102473.0,0.9277038939396657,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,7,7,8,9,9,9,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,15,16,16,16,16,17,17,17,20,20,21,21,23,26,30 -1.3000000000000003,0.625341285955271,0.0,0.0,0.36601171772562924,0.44375909970982375,7550.927051345476,52494.00979479516,94922.07294865453,102473.0,0.92631300877943,1,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,7,7,8,9,9,9,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,13,13,15,15,15,15,15,15,16,16,16,16,16,16,17,17,20,20,21,21,23,25,29 -1.4000000000000004,0.6265696005707148,0.0,0.0,0.3654665646918591,0.4447023695438366,7501.118967467812,52848.239886346324,94971.88103253218,102473.0,0.9267990693405305,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,7,7,8,9,9,9,10,10,10,11,11,11,11,11,12,12,13,13,13,14,14,14,14,15,15,15,15,15,15,15,15,15,16,16,16,16,16,20,20,21,21,23,25,29 -1.5000000000000004,0.6273784849051388,0.0,0.0,0.365603962742173,0.4457907186128677,7548.454665638993,52647.80885347686,94924.54533436101,102473.0,0.9263371359710462,1,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,7,7,8,8,9,9,10,10,10,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,20,20,21,21,23,25,28 -1.6000000000000005,0.6351745888908343,0.0,0.0,0.3583174145196568,0.44765752532432257,7157.600450378414,52929.82720279829,95315.39954962158,102473.0,0.9301513525477109,1,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,6,6,7,7,9,9,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,19,20,20,21,22,24,28 -1.7000000000000006,0.6456242859884709,0.0,0.0,0.3471226552522928,0.43861774016419797,6818.575651507843,53696.13656158148,95654.42434849216,102473.0,0.9334597830500928,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,6,6,6,7,7,8,8,9,9,9,10,10,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,19,19,20,20,22,24,29 -1.8000000000000007,0.6497067453511609,0.0,0.0,0.3429817305473586,0.4366951731325637,6634.194990693854,54326.7753900214,95838.80500930613,102473.0,0.9352590927298521,1,1,2,2,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,6,6,6,6,6,6,7,8,8,9,9,9,10,10,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,19,19,20,20,22,24,27 -1.9000000000000008,0.6479086942180893,0.0,1.8874178475584306e-06,0.3439427977054208,0.43422510675539777,6625.760124161231,55179.116128219976,95847.23987583877,102473.0,0.9353414057931237,1,2,2,2,2,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,8,8,8,9,9,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,19,19,20,20,22,24,27 -2.000000000000001,0.6450114362988062,0.0,7.002540308021955e-07,0.3443258020190607,0.4293116930939743,6544.538620188119,56364.45571260375,95928.46137981188,102473.0,0.9361340194959832,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,8,8,8,9,9,10,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,15,19,19,19,20,22,24,28 -2.100000000000001,0.6436543540132394,0.0,7.002540308021955e-07,0.3449664909747885,0.42836930389058037,6566.428277419522,56177.68784796532,95906.5717225805,102473.0,0.93592040559543,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,10,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,19,20,20,20,23,25,28 -2.200000000000001,0.640615443074095,0.0,0.0,0.34729636140039655,0.42745500295385896,6767.5375026086895,55856.20958482915,95705.46249739132,102473.0,0.9339578474075251,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,15,15,15,16,16,16,16,19,19,20,20,23,25,28 -2.300000000000001,0.6391013329876792,0.0,1.0242202730648707e-06,0.34867294623408696,0.4271995249335246,6905.077160433514,55592.77065358443,95567.92283956648,102473.0,0.9326156435311398,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,11,11,11,12,12,12,12,12,13,13,13,15,15,15,15,15,15,15,15,15,15,16,16,16,16,19,19,20,20,22,24,27 -2.4000000000000012,0.639803650595918,0.0,1.0242202730648707e-06,0.3487515336799809,0.42802622039076316,6932.664095262117,55715.21451516906,95540.33590473789,102473.0,0.9323464317892313,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,16,19,19,20,20,22,23,28 -2.5000000000000013,0.6442489623054904,0.0,1.0242202730648707e-06,0.34570884327343787,0.43035880554927297,6662.5040375645995,56116.90784451566,95810.4959624354,102473.0,0.9349828341361666,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,19,19,19,20,21,23,26 -2.6000000000000014,0.6491835835297891,0.0,1.0242202730648707e-06,0.34181447890974836,0.4336409043163825,6371.990180915909,56296.556302436664,96101.00981908411,102473.0,0.9378178624523934,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,18,19,19,19,21,23,27 -2.7000000000000015,0.6609465817980453,0.0,0.0,0.3299006772092712,0.42627196745848805,6040.884555252093,56870.683649712824,96432.11544474789,102473.0,0.9410490123715309,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,7,7,7,7,7,8,8,9,9,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,18,18,19,19,21,23,27 -2.8000000000000016,0.6602502925666722,0.0,8.213844609905636e-07,0.3286933930973204,0.4213906998087764,6045.176219552856,57330.752973745075,96427.82378044716,102473.0,0.9410071314438648,3,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,19,20,22,23,26 -2.9000000000000017,0.6659411249444852,0.0,1.4980286066269457e-06,0.3218974442032083,0.4160195392945425,5830.436156881196,58487.43375616116,96642.5638431188,102473.0,0.94310270845119,2,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,19,19,20,22,25 -3.0000000000000018,0.6641011063606157,0.0,1.1993630141609899e-05,0.3226762381404542,0.41435101002065494,5873.787918096625,58968.950172073186,96599.21208190337,102473.0,0.9426796530003354,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,18,19,20,22,25 -3.100000000000002,0.666831364628495,0.0,0.0022015391055339633,0.31803630855430987,0.40906228346688567,5784.401522965496,59577.74465380383,96688.59847703451,102473.0,0.9435519451663805,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,15,15,18,19,19,19,21,23,26 -3.200000000000002,0.6633233953109756,0.0,0.0022015391055339633,0.3210069673734737,0.40855905164027995,5987.992435432583,59569.10873999842,96485.00756456742,102473.0,0.9415651690159107,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,8,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,15,15,15,15,15,15,16,18,18,19,19,21,22,25 -3.300000000000002,0.6580043587555976,0.0,0.0022015391055339633,0.32589677061691713,0.409633968091643,6278.195307786394,59339.38960666879,96194.8046922136,102473.0,0.9387331754922136,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,11,11,12,12,12,13,13,13,14,14,14,14,14,14,15,15,15,15,15,15,15,15,18,18,19,19,20,22,25 -3.400000000000002,0.6606938285246241,0.0,0.001543791230764743,0.32478442980717737,0.41165702632438744,6189.2452730002815,59365.09125233717,96283.7547269997,102473.0,0.9396012093624633,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,18,18,19,19,20,22,25 -3.500000000000002,0.6612908675572927,0.0,0.0008337677151051152,0.326606218887306,0.41781552058996624,5985.129478415322,59321.46864709561,96487.87052158467,102473.0,0.9415931076633325,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,8,9,9,9,10,10,10,11,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,18,18,20,22,24 -3.6000000000000023,0.6669437575805018,0.0,1.168490953085006e-06,0.321586248093926,0.41856406474471325,5699.352658819076,59135.943229198914,96773.64734118093,102473.0,0.9443819088070119,3,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,8,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,17,18,18,18,20,21,24 -3.7000000000000024,0.6744779015099097,0.0,6.590543711507239e-06,0.3140246957764117,0.41321255649937455,5526.486590266524,59580.772071120875,96946.51340973348,102473.0,0.9460688514021595,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,9,9,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,15,15,15,17,17,18,18,19,21,24 -3.8000000000000025,0.681615495969978,0.0,0.0009221158077961178,0.3042263516502324,0.40348061080459563,5250.8764999393425,60913.85863351621,97222.12350006065,102473.0,0.9487584388088633,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,7,7,8,8,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,17,17,18,18,19,21,23 -3.9000000000000026,0.6853821766169409,3.30497610019623e-05,0.007932827219986203,0.2978931315589526,0.39680727593432125,5201.559752708698,61685.64913686827,97271.44024729129,102473.0,0.9492397045786821,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,17,17,17,18,20,22,24 -4.000000000000003,0.6914569650779431,0.014477187193806694,0.03640711330564476,0.2871798658562652,0.38334001402625417,5216.457200703124,62823.33648114507,97256.54279929689,102473.0,0.949094325327617,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,17,17,17,18,20,21,24 -4.100000000000003,0.6850659849402758,0.014477187193806694,0.028528765775422103,0.29243472824319183,0.38363786530657673,5424.008527466386,62136.42524042886,97048.99147253361,102473.0,0.9470689008083457,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,17,18,19,19,21,22,25 -4.200000000000003,0.6840718619194874,0.014477187193806694,0.028528765775422103,0.2928382753350951,0.38295853367504773,5472.7249288252415,62248.03595051339,97000.27507117476,102473.0,0.9465934936146572,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,14,15,15,15,15,17,17,18,18,20,22,24 -4.3000000000000025,0.6805992192285779,0.014477187193806694,0.028528765775422103,0.29719282140069625,0.3866556104078709,5586.201159642076,62187.08559152845,96886.79884035794,102473.0,0.9454861167366813,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,7,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,15,15,15,17,17,18,18,19,21,23 -4.400000000000003,0.6800617457783857,0.004505100763259419,0.01878612938068374,0.2996197566089933,0.38989880230343654,5604.944076419209,62119.597750029025,96868.05592358077,102473.0,0.945303210831934,4,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,11,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,15,15,17,17,17,18,19,20,23 -4.5000000000000036,0.6816629209607336,0.014477187193806694,0.028528765775422103,0.29773214235069423,0.3892791887269054,5515.7331481710935,62288.54317165098,96957.2668518289,102473.0,0.9461737906748987,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,8,8,8,9,9,9,10,10,10,11,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,17,17,17,17,20,21,23 -4.600000000000003,0.6884613577815473,0.014477187193806694,0.028528765775422103,0.2923334832928999,0.390155234231087,5156.478753919141,62635.828814680026,97316.52124608084,102473.0,0.9496796350851526,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,8,8,9,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,16,17,17,17,18,21,23 -4.700000000000003,0.6992711654105389,0.014477187193806694,0.028528765775422103,0.28196983142402976,0.38418806613546364,4802.168292736121,63568.508088769966,97670.83170726389,102473.0,0.9531372332932957,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,8,8,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,16,16,17,17,18,19,22 -4.800000000000003,0.709343056854343,0.004505100763259419,0.01878612938068374,0.26999421260821377,0.37217760692806867,4543.6102681953325,64352.12773565445,97929.38973180467,102473.0,0.9556604152489404,4,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,7,7,7,7,7,8,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,17,17,18,19,21 -4.900000000000004,0.7142827246508412,0.004505100763259419,0.06066984900885367,0.2586130693544262,0.35498388813882364,4692.959527929367,65221.81965025295,97780.04047207063,102473.0,0.9542029653866934,4,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,16,17,18,19,21 -5.0000000000000036,0.7259868623762766,0.0832493215512994,0.1168799727456342,0.2425715853567605,0.3387195747932674,4622.424440440173,66436.98183372286,97850.57555955982,102473.0,0.9548912938975127,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,16,16,16,16,17,19,21 -5.100000000000003,0.7208106938879523,0.0832493215512994,0.10980044215747,0.24664381568534255,0.3400097635691426,4820.138880379911,65828.26744186327,97652.86111962008,102473.0,0.9529618642922534,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,16,17,17,17,18,19,23 -5.200000000000004,0.7177875697235016,0.0832493215512994,0.10980044215747,0.24784697511274256,0.33855608622079,5025.939462776529,65728.27098137868,97447.06053722346,102473.0,0.950953524706249,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,14,14,14,14,14,14,14,16,16,17,17,19,20,22 -5.300000000000004,0.7142111171952614,0.07348441191132199,0.10000036160779545,0.253045651007741,0.34411011450034157,5108.17103936397,65532.66371302016,97364.82896063602,102473.0,0.9501510540399521,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,14,14,16,16,17,17,18,19,21 -5.400000000000004,0.7203895188484549,0.0832493215512994,0.10980044215747,0.248361620075485,0.34275400450461885,4802.36203119521,65928.34920714199,97670.63796880477,102473.0,0.9531353426639678,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,16,16,17,19,22 -5.5000000000000036,0.7196399650976707,0.07348441191132199,0.10000036160779545,0.251093269657265,0.34736063687163327,4730.956915071836,65933.6442361288,97742.04308492815,102473.0,0.9538321614954979,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,16,16,17,18,20 -5.600000000000004,0.7253016151099078,0.07348441191132199,0.10000036160779545,0.24769879669511008,0.35078105496647327,4410.597069975457,66144.82883707383,98062.40293002455,102473.0,0.9569584469082055,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,8,8,8,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,15,16,16,16,17,18,20 -5.700000000000005,0.7299551764183926,0.07348441191132199,0.10014393102439718,0.24204279509450788,0.3427191360387187,4261.257403164137,66715.89227930848,98211.74259683587,102473.0,0.9584158031563034,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,16,16,17,18,20 -5.800000000000004,0.7354459936439799,0.07348441191132199,0.115405341726701,0.2332737695306486,0.3308323044024175,4237.529019990446,67435.4809155012,98235.47098000956,102473.0,0.9586473605731223,5,5,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,16,17,18,19 -5.900000000000004,0.7509719239050769,0.13821333572534547,0.18812980173499994,0.21291983852227303,0.3073640537928038,4169.825734746329,68968.69980521659,98303.17426525368,102473.0,0.9593080544656024,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,19 -6.000000000000004,0.7587084085840446,0.2007652470176261,0.21525234804741264,0.20082531954159233,0.2898905802940388,4218.158380105238,69826.34855626158,98254.84161989475,102473.0,0.9588363922193627,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,15,15,15,15,16,17,19 -6.100000000000005,0.7507928383441442,0.07348441191132199,0.1950774221901012,0.2087261237351874,0.2977873892863632,4446.823689131523,69062.98332019962,98026.17631086847,102473.0,0.9566049233541368,5,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,15,16,16,16,17,18,20 -6.200000000000005,0.7473720194279226,0.07348441191132199,0.18716560156783743,0.21199997114070013,0.3005726175732655,4517.879768410358,68876.2291231841,97955.12023158965,102473.0,0.9559115106573405,5,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,15,15,16,16,17,18,19 -6.300000000000004,0.7505986121271847,0.07348441191132199,0.19495293674484174,0.20763770208546872,0.2945345169606789,4508.731844980599,69320.56981363284,97964.2681550194,102473.0,0.9560007822062337,5,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,16,16,17,19 -6.400000000000005,0.7477915407161522,0.07348441191132199,0.18716560156783743,0.21406499190804396,0.30494802636860674,4391.094640276807,68939.8874611163,98081.9053597232,102473.0,0.9571487646474993,5,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,19 -6.500000000000005,0.7469722291548991,0.07348441191132199,0.17506391629179285,0.21893776255174613,0.31544038385934325,4150.55483928604,68684.61225927786,98322.44516071396,102473.0,0.9594961127391016,5,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,18 -6.600000000000005,0.7558450997480074,0.07348441191132199,0.19495293674484174,0.20748683183566685,0.3020258332143076,4135.267241472138,69439.64473757535,98337.73275852785,102473.0,0.9596452993327789,5,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,15,15,15,16,17,18 -6.700000000000005,0.7631822174952849,0.07348441191132199,0.19495293674484174,0.2012032123470906,0.29742317474619256,3888.3675418251623,70190.35253111576,98584.63245817483,102473.0,0.962054711564752,5,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,9,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,15,15,15,16,18 -6.800000000000005,0.7742788983907305,0.2007652470176261,0.24623570627632324,0.18554563154777326,0.27601139028303695,3841.635680903716,71276.83665952102,98631.36431909628,102473.0,0.9625107522869075,6,6,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,15,16,17 -6.900000000000006,0.7768193089816157,0.07348441191132199,0.27769217064895646,0.17777191642901058,0.26126519459817593,3934.5825702802817,72004.61116336135,98538.41742971972,102473.0,0.9616037144391177,5,5,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,14,14,15,16,17 -7.000000000000005,0.7828676736759198,0.21141698653295748,0.30318262358092885,0.17045584225601118,0.25180980113185436,3959.173440620721,72578.12563516332,98513.82655937927,102473.0,0.961363740296266,6,6,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,15,16,17 -7.100000000000005,0.7807777178069581,0.21141698653295748,0.32195081552070076,0.16785773461899445,0.24354883233026034,4150.11479768182,72534.41225493529,98322.88520231818,102473.0,0.9595004069590837,6,6,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,15,15,16,16,18 -7.2000000000000055,0.775133038015558,0.21141698653295748,0.31567470470006054,0.17154505228418926,0.2459195189823457,4527.50268287182,72315.02421740451,97945.49731712817,102473.0,0.9558176038286005,6,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13,13,13,13,14,14,15,15,15,16,17 -7.300000000000006,0.775149176109478,0.21141698653295748,0.31567470470006054,0.1723551414769291,0.24751769515832298,4384.579605943557,72256.6828321812,98088.42039405645,102473.0,0.9572123427054585,6,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,15,16,17 -7.400000000000006,0.7809967621056142,0.32223829343894156,0.3375250156554298,0.16953488542508377,0.24698740844264155,4253.766638747558,72639.34173296284,98219.23336125245,102473.0,0.958488903040337,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,15,16,17 -7.500000000000005,0.7807882492930738,0.3216641490697723,0.33731899225641004,0.17121080778282716,0.25146308336613815,4108.402330564411,72509.7329469793,98364.59766943559,102473.0,0.9599074650828568,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,14,14,15,15,17 -7.600000000000006,0.7812780328980804,0.27237311875411147,0.3238652266861477,0.1728985774812395,0.25538139420337513,4105.99895450063,72568.95772318324,98367.00104549939,102473.0,0.9599309188322718,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,15,16,17 -7.700000000000006,0.7840365908187781,0.27237311875411147,0.3046885968094987,0.17005801309799184,0.25328828229302064,4279.983987143974,73130.08782085778,98193.01601285601,102473.0,0.9582330566379047,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,14,14,15,16 -7.800000000000006,0.788193311582141,0.27237311875411147,0.3144838028260904,0.16071153932230753,0.2387256959750916,4630.604035678342,73947.47170100175,97842.39596432167,102473.0,0.9548114719420888,7,7,7,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,16 -7.900000000000006,0.7933137365802887,0.27237311875411147,0.3583529811321033,0.1492237507538623,0.21953151585098715,5061.180514373063,75087.92247014942,97411.81948562694,102473.0,0.9506096189789207,7,7,7,7,7,7,7,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,15 -8.000000000000007,0.8016247595789884,0.4084848830732427,0.4336055829218711,0.13405656576443814,0.19532565244165145,5409.448055334993,76388.14137148118,97063.55194466501,102473.0,0.9472109916237937,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,15 -8.100000000000007,0.8011388458377203,0.36104155099913815,0.42002752321012,0.13697169655865005,0.20035133219756798,4817.179328912768,75900.80414480765,97655.82067108723,102473.0,0.9529907455728556,7,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,13,13,14,14,14,15,16 -8.200000000000006,0.797789485426574,0.32238893028292404,0.405182160600766,0.14328734655991404,0.20974884376314862,4657.859408037618,75264.12343995336,97815.14059196238,102473.0,0.954545495808285,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,13,14,14,14,15,15,16 -8.300000000000006,0.7968489277811575,0.32238893028292404,0.3875284242452703,0.14692101462480478,0.21570275402907024,4589.3735753210485,74851.65424082112,97883.62642467895,102473.0,0.9552138263218501,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,15,15,16 -8.400000000000006,0.7971388389146357,0.32238893028292404,0.3875284242452703,0.1476376657080356,0.21673847115774006,4807.958226935044,75025.2078102511,97665.04177306495,102473.0,0.9530807312469133,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,15,16 -8.500000000000007,0.795389677041941,0.32221457539316145,0.379132026007549,0.14841430581272874,0.218017881569985,5242.43269079732,75116.21940878025,97230.56730920268,102473.0,0.9488408391400923,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14 -8.600000000000007,0.7961233313622772,0.32238893028292404,0.3628581479882768,0.14874618504679993,0.22038636933275307,5016.824893755313,75061.32260905889,97456.17510624469,102473.0,0.9510424707605387,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,13,14,14,14,15 -8.700000000000006,0.7997451225721456,0.32238893028292404,0.3628581479882768,0.14305773674632682,0.21431662920577796,5095.537468064261,75751.34948835697,97377.46253193571,102473.0,0.9502743408696507,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,14,14,15 -8.800000000000008,0.8042745029967951,0.32238893028292404,0.3875284242452703,0.13533134943798308,0.20398423062017557,5339.828726794848,76606.6456004738,97133.17127320517,102473.0,0.947890383546936,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,13,14,14,15 -8.900000000000007,0.8079295192635825,0.4084848830732427,0.4405057331506766,0.12325627306650921,0.1818363729946722,6306.434137529574,77957.24091488871,96166.56586247042,102473.0,0.9384576021241734,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,14,14 -9.000000000000007,0.8117004237468507,0.446657061020355,0.4735032012756305,0.1156269997219812,0.16915541871571346,7080.438876922228,79088.05804725448,95392.56112307779,102473.0,0.9309043467359966,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13 -9.100000000000007,0.8126137972212444,0.4481856425545815,0.47877168436952156,0.11403013652829874,0.16715509550062319,5896.365121369083,78376.40379910794,96576.63487863091,102473.0,0.9424593295661385,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,13,13,14,15 -9.200000000000006,0.8089121744707536,0.4481856425545815,0.47877168436952156,0.11808973322099758,0.17086651846083545,6537.055327113591,78275.54888351755,95935.9446728864,102473.0,0.9362070464696691,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,14,14 -9.300000000000008,0.80564492750086,0.4481856425545815,0.47877168436952156,0.12165327501209289,0.1746249088197644,6433.224352916678,77837.39247678294,96039.77564708331,102473.0,0.9372202984891953,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14 -9.400000000000007,0.8077635212055309,0.4481856425545815,0.47877168436952156,0.12071585545211128,0.1743340901060208,6162.779757835198,77787.25398795617,96310.22024216481,102473.0,0.9398594775420336,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13,13,13,14 -9.500000000000007,0.808509439543914,0.4481856425545815,0.47877168436952156,0.12105094891620816,0.17550241878161524,6314.678106553784,77980.58279109478,96158.3218934462,102473.0,0.9383771519663346,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13,13,13,13 -9.600000000000009,0.8058655507276798,0.4481856425545815,0.47877168436952156,0.12049369150712552,0.17391165737453954,7302.774186657075,78520.5814117638,95170.22581334293,102473.0,0.9287346502331632,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13,13,13 -9.700000000000008,0.8064502387127079,0.4481856425545815,0.476547460056087,0.11902466475189621,0.17168055078562658,8239.454710509244,79354.63790836581,94233.54528949076,102473.0,0.9195938958505242,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12 -9.800000000000008,0.8076475189123503,0.44651479330912663,0.5113300841067435,0.11526170920813494,0.1650931019869161,8480.936845901337,79663.12310649859,93992.06315409867,102473.0,0.9172373518302251,8,8,8,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12 -9.900000000000007,0.8151751387260774,0.5312495689084592,0.5609390490568522,0.10130999409522201,0.14482812067158074,8775.800580810099,81091.12156669094,93697.1994191899,102473.0,0.9143598744956223,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12 -10.000000000000007,0.81413809378208,0.5312495689084592,0.5821711443660381,0.09482423393197092,0.13502169240796746,9127.088715300657,81781.01860973697,93345.91128469935,102473.0,0.9109317701706727,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,12,12,12,12,12,12,12,12,12,12 +1.0,0.6304788985660059,0.0,0.0,0.36296061835600923,0.44771705875232376,7058.330496105232,53916.88115528584,95414.66950389478,102473.0,0.9311200950874355,1,1,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,7,8,8,9,9,10,10,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,20,20,21,21,23,25,29 +1.1,0.6281375362117348,0.0,0.0,0.36447097676487017,0.4461820136208025,7218.331033621068,53120.00649112949,95254.66896637893,102473.0,0.9295587029400811,1,1,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,7,8,8,9,9,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,16,16,21,21,22,22,24,26,30 +1.2000000000000002,0.6257602886155129,0.0,0.0,0.36658271277414234,0.4457078443330301,7342.888958012256,53104.7224858568,95130.11104198775,102473.0,0.9283431834921174,1,1,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,7,8,8,9,9,9,10,10,10,11,11,11,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,16,16,16,17,17,17,17,20,21,21,22,24,26,30 +1.3000000000000003,0.6230163366971655,0.0,0.0,0.3686377342177378,0.4450365830503214,7403.691112113049,53318.26911689891,95069.30888788695,102473.0,0.9277498354482346,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,7,7,8,9,9,9,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,13,14,15,15,15,15,15,16,16,16,16,16,16,17,17,17,20,20,21,21,23,26,30 +1.4000000000000004,0.6214779650658719,0.0,0.0,0.3717652273178498,0.4500367078708817,7480.102908782241,53324.12313555293,94992.89709121776,102473.0,0.9270041580827902,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,7,7,8,9,9,9,10,10,10,11,11,11,12,12,12,12,13,13,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,16,16,17,17,20,20,21,21,23,25,29 +1.5000000000000004,0.6243157560860033,0.0,0.0,0.37001540899279717,0.45188562049920056,7368.479458186093,53435.15100634314,95104.52054181391,102473.0,0.9280934542934618,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,7,7,8,9,9,9,10,10,10,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,15,15,15,15,16,16,16,16,16,20,20,21,21,23,25,30 +1.6000000000000005,0.6320908709403554,0.0,0.0,0.3628053946346248,0.45368914129305016,7055.847460994812,53503.66716206102,95417.15253900518,102473.0,0.9311443262030504,1,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,7,7,9,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,20,20,21,21,23,25,28 +1.7000000000000006,0.6429187963819007,0.0,0.0,0.35097062050866,0.44369894537381427,6740.0263669325295,54083.33578248205,95732.97363306748,102473.0,0.9342263194506599,1,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,6,6,6,7,7,8,8,9,9,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,19,20,20,21,22,25,28 +1.8000000000000007,0.6462573659495465,0.0,0.0,0.3468144434909566,0.43928083474434604,6516.098296198914,55080.165849384335,95956.9017038011,102473.0,0.9364115591795018,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,6,6,6,6,6,7,7,8,8,9,9,9,10,10,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,19,19,20,20,22,25,29 +1.9000000000000008,0.6479265992363443,0.0,0.0,0.34477058977636466,0.4373609844719099,6372.01609420445,56095.05000698903,96100.98390579554,102473.0,0.9378176095732099,1,2,2,2,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,6,6,6,6,6,6,7,8,8,9,9,9,10,10,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,19,19,20,20,22,24,27 +2.000000000000001,0.6428128731469138,0.0,0.0,0.34944891919926313,0.43786878682009306,6437.058459688563,57032.21234649002,96035.94154031143,102473.0,0.9371828827136067,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,8,8,8,9,9,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,16,16,19,19,20,20,22,24,27 +2.100000000000001,0.6385823091386467,0.0,0.0,0.35191437491486255,0.4350257855952202,6545.97753565522,56570.23031505081,95927.02246434477,102473.0,0.9361199775974625,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,8,8,8,9,9,10,10,10,11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,20,20,20,21,22,25,29 +2.200000000000001,0.6369428207211785,0.0,0.0,0.35267075856971997,0.4338517182327658,6577.2870957166815,56529.771779831106,95895.71290428331,102473.0,0.935814437991308,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,10,10,10,10,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,15,15,16,16,16,16,16,19,20,20,20,23,25,29 +2.300000000000001,0.6340954510023943,0.0,0.0,0.3550267580114663,0.4331459139119212,6760.6194239515935,56309.4117541396,95712.38057604841,102473.0,0.9340253586412851,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,15,15,15,15,15,15,15,15,15,15,16,16,16,16,19,19,20,21,23,25,28 +2.4000000000000012,0.6363607635797497,0.0,0.0,0.35410297591286044,0.4350398492273503,6722.4589390118235,56313.808980468166,95750.5410609882,102473.0,0.9343977541497585,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,11,11,12,12,13,13,13,13,14,14,14,15,15,15,15,15,15,15,15,15,15,16,16,16,16,19,19,20,20,22,24,27 +2.5000000000000013,0.6375812346423028,0.0,0.0,0.35338681511448544,0.43580950250699924,6675.356850100706,56319.1072204115,95797.6431498993,102473.0,0.9348574078040002,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,8,9,9,9,10,10,10,11,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,16,19,19,20,20,22,24,28 +2.6000000000000014,0.6463502832199847,0.0,0.0,0.34586592378107084,0.4381803302685954,6255.802865836202,56862.157747022466,96217.1971341638,102473.0,0.938951695901982,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,8,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,19,19,19,20,21,23,27 +2.7000000000000015,0.6565743886713346,0.0,0.0,0.33533107914369986,0.431554156887141,5955.815215873919,57568.59348784657,96517.18478412608,102473.0,0.9418791758231542,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,7,7,7,7,7,8,8,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,16,18,19,19,19,21,23,26 +2.8000000000000016,0.6630690435537583,0.0,0.0,0.32771247344710264,0.4250680049997403,5735.314192815929,58283.37295819579,96737.68580718407,102473.0,0.94403097213104,3,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,7,8,8,9,9,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,18,18,19,19,21,23,27 +2.9000000000000017,0.65898669635438,0.0,0.0,0.3302496046585863,0.4226659103922301,5810.946793264402,58878.39131169989,96662.05320673561,102473.0,0.9432928986829273,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,20,20,22,23,26 +3.0000000000000018,0.6624302070994692,0.0,0.00031433991099175725,0.3256031105341326,0.41815093793732133,5637.828444923093,60328.88723212443,96835.1715550769,102473.0,0.9449823031928108,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,19,19,20,22,25 +3.100000000000002,0.6567193781206875,0.0,3.53824256055347e-05,0.3313770584138134,0.4209540125802175,5849.056972905701,59276.234049329905,96623.94302709428,102473.0,0.9429209940871672,3,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,19,19,19,20,21,23,26 +3.200000000000002,0.6593644590658838,0.0,0.00031433991099175725,0.3270962041541432,0.41617598050554694,5772.722439461996,59954.32871308293,96700.277560538,102473.0,0.943665917466435,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,14,15,15,15,15,16,16,16,18,19,19,19,21,23,26 +3.300000000000002,0.6563668153712506,0.0,0.00031433991099175725,0.33004477786716113,0.4162017636292743,5948.29091968251,59986.65147865133,96524.7090803175,102473.0,0.9419526029326505,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,8,8,8,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15,15,15,15,16,18,18,19,19,21,22,26 +3.400000000000002,0.6527166303439426,0.0,0.00031433991099175725,0.334404042943091,0.41890771059932375,6167.536804187676,59927.4081414725,96305.46319581234,102473.0,0.9398130551053676,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,11,12,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,18,18,19,19,20,22,26 +3.500000000000002,0.6573862290300704,0.0,0.00031433991099175725,0.3312649417335711,0.42119652714858646,5899.890946982473,60178.990132130966,96573.10905301753,102473.0,0.9424249222040687,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,8,9,9,9,10,10,10,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,18,18,19,19,20,22,25 +3.6000000000000023,0.6623105590500843,0.0,7.846553535428713e-05,0.32863243353130356,0.4270365010584526,5570.14749335929,60082.169327294825,96902.8525066407,102473.0,0.9456427791383164,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,8,8,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,18,18,18,19,20,22,24 +3.7000000000000024,0.6726958861809821,0.0,0.0,0.31717365821646815,0.4178908782999251,5282.727479626647,60507.91867554883,97190.27252037334,102473.0,0.9484476156682574,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,7,7,7,8,8,8,9,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,15,15,15,17,18,18,18,20,21,24 +3.8000000000000025,0.677939766608168,0.0,0.0,0.31029487297539493,0.41070871412525267,5176.838289106101,61053.13962694927,97296.1617108939,102473.0,0.9494809531378402,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,7,7,7,7,7,7,7,7,8,8,9,9,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,15,15,15,17,17,18,18,19,21,24 +3.9000000000000026,0.6815301653538041,0.0,0.0013673921965951946,0.3048653800269314,0.405619058815698,5024.661509473719,62491.145189751114,97448.3384905263,102473.0,0.950965995828426,3,3,4,4,4,4,4,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,15,15,17,17,18,18,19,21,23 +4.000000000000003,0.6870952336029414,0.001430322554040656,0.01837650852815975,0.29614366854698515,0.39625526804927375,4943.812322489912,63657.88989341017,97529.18767751008,102473.0,0.9517549762133448,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,9,9,9,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,17,17,17,18,19,21,24 +4.100000000000003,0.6810849056790796,0.001430322554040656,0.014533435836078676,0.3012143588672793,0.3965073152009711,5205.077219804026,63071.542574865474,97267.92278019596,102473.0,0.9492053787846161,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,9,9,9,9,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,18,18,18,18,20,21,25 +4.200000000000003,0.6744126503814205,0.001430322554040656,0.010193053843147639,0.3065714868402709,0.39615031965988257,5413.382763390048,62483.06484679207,97059.61723660995,102473.0,0.9471725941136685,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,15,15,15,15,17,19,19,19,21,22,25 +4.3000000000000025,0.674051986984732,0.001430322554040656,0.010193053843147639,0.30683827557860166,0.3959613380470413,5439.605194558454,62675.25779378015,97033.39480544154,102473.0,0.9469166981101513,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,15,15,15,15,17,17,18,19,20,22,24 +4.400000000000003,0.6731310866115663,0.001430322554040656,0.010193053843147639,0.31034203043523,0.40192922146739335,5434.824396435816,62773.21675991924,97038.17560356419,102473.0,0.9469633523324601,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,7,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,12,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,15,15,15,17,17,18,18,19,21,24 +4.5000000000000036,0.6745586146647239,0.001430322554040656,0.010193053843147639,0.30974921339505346,0.40324874511699343,5314.521971483555,62931.92708436023,97158.47802851645,102473.0,0.9481373437736422,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,8,8,9,9,9,9,10,10,10,11,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,15,15,17,17,17,18,19,20,23 +4.600000000000003,0.6792568583975235,0.001430322554040656,0.010193053843147639,0.3058185505050781,0.40406266841741395,5096.83890017141,63052.49352601227,97376.16109982859,102473.0,0.9502616406256145,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,8,8,9,10,10,10,11,11,11,11,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,17,17,17,17,20,21,23 +4.700000000000003,0.6890449207951035,0.001430322554040656,0.010193053843147639,0.2950538391766355,0.39626682918128636,4804.957793796984,63783.295248873765,97668.04220620301,102473.0,0.9531100114781749,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,8,8,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,16,17,17,17,19,21,23 +4.800000000000003,0.7009238979102164,0.001430322554040656,0.010988608796457636,0.2806211172476911,0.38217120113484276,4518.790773860123,64959.94753080125,97954.20922613988,102473.0,0.9559026204574852,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,7,7,7,7,7,8,8,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,16,16,17,17,18,20,22 +4.900000000000004,0.7106318514098839,0.0009164667458810554,0.03554314173063724,0.26796880215865615,0.370574296796516,4318.697536391584,65969.58072000589,98154.30246360842,102473.0,0.957855263958393,4,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,17,17,18,19,21 +5.0000000000000036,0.7182809347615361,0.04255555881240135,0.07842557309199613,0.2538942516024818,0.3518874523731348,4465.540668374532,67010.50169412671,98007.45933162546,102473.0,0.9564222705651778,5,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,16,17,18,19,21 +5.100000000000003,0.7134892691414931,0.041690771837253296,0.07807959419459769,0.2579465554646925,0.35422491019241703,4629.58882768733,66525.82110319551,97843.41117231266,102473.0,0.9548213790199629,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,17,17,17,17,18,20,23 +5.200000000000004,0.7108375425148112,0.041690771837253296,0.07255850528356178,0.2607457240632749,0.35614278021668905,4706.160551324656,66316.20702621098,97766.83944867534,102473.0,0.9540741409803103,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,14,14,14,14,14,16,17,17,17,18,19,23 +5.300000000000004,0.7074026565358316,0.041690771837253296,0.07255850528356178,0.26290939026799376,0.35513976379829665,4912.065793427123,66182.08336193439,97560.93420657289,102473.0,0.9520647800549694,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,14,14,14,14,16,16,17,18,19,20,22 +5.400000000000004,0.7089427530352979,0.04184821023861819,0.06496769748057338,0.26450401939033563,0.36019585030777995,4734.250029024069,66316.01011830266,97738.74997097593,102473.0,0.9538000250893008,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,12,12,12,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,16,16,17,17,18,19,21 +5.5000000000000036,0.7111393846293549,0.04184821023861819,0.06496769748057338,0.26425726000167415,0.3635926923697176,4540.102620631191,66443.0056598105,97932.8973793688,102473.0,0.9556946452174603,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,9,9,9,9,10,10,10,10,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,16,16,16,16,18,19,21 +5.600000000000004,0.7178182423960453,0.041690771837253296,0.07255850528356178,0.25790517952635095,0.3616163490348931,4316.334581993954,66914.05624453672,98156.66541800604,102473.0,0.9578783232461824,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,16,16,16,16,17,18,20 +5.700000000000005,0.7213369995996443,0.04064106671020986,0.06527541956236238,0.25505902608670916,0.3591434321016721,4085.625006872764,67191.52687184057,98387.37499312723,102473.0,0.960129741425812,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,15,16,16,16,17,18,20 +5.800000000000004,0.7334860677896146,0.04255555881240135,0.07842557309199613,0.24015357385653435,0.344010922882244,3964.0062324342875,68323.85887575333,98508.99376756573,102473.0,0.9613165786847826,5,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,16,16,17,18,20 +5.900000000000004,0.7370131773411464,0.04255555881240135,0.1331700904270147,0.2311649491694867,0.32793190221978663,4072.446323101189,69003.64589056816,98400.55367689881,102473.0,0.960258347827221,5,5,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,16,16,17,18,19 +6.000000000000004,0.7551039178441338,0.16128883579277442,0.18514572613097208,0.20862555855796416,0.30231714677193017,4022.682983538091,70571.76932478853,98450.31701646191,102473.0,0.9607439717434046,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,20 +6.100000000000005,0.7452150447287728,0.15878250633890414,0.17582735638547842,0.21628465122391338,0.3069756200528107,4262.392818456285,69782.00977044787,98210.6071815437,102473.0,0.9584047230152695,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,16,16,16,16,17,18,20 +6.200000000000005,0.7429285516227493,0.04255555881240135,0.15687267501620794,0.2192385953275271,0.3096416527269279,4398.432142790491,69640.86944284412,98074.5678572095,102473.0,0.957077160395514,5,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,14,14,14,14,15,16,16,16,17,18,20 +6.300000000000004,0.7377019972307123,0.04255555881240135,0.1483243139150625,0.22727476585640893,0.3206615838260572,4349.256067775803,69240.10407482211,98123.74393222418,102473.0,0.9575570533918611,5,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,13,13,13,13,13,13,13,13,13,13,14,14,14,14,15,15,16,16,17,18,19 +6.400000000000005,0.7471998182725953,0.04255555881240135,0.15687267501620794,0.21817385151095126,0.3122718386801279,4082.2855078864695,69972.60134533673,98390.71449211353,102473.0,0.960162330488163,5,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,15,15,15,16,16,17,19 +6.500000000000005,0.7443526460247648,0.04255555881240135,0.148535714758007,0.2224553520443946,0.3188134807714862,3997.133354602546,69725.77388779448,98475.86664539746,102473.0,0.9609933020932095,5,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,19 +6.600000000000005,0.7438904748100952,0.04255555881240135,0.1367296262862289,0.22761646966578697,0.33278703072637367,3784.4541262154376,69467.1659819953,98688.54587378458,102473.0,0.9630687681026668,5,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,15,15,16,17,18 +6.700000000000005,0.7542766721837395,0.04255555881240135,0.15681041488030142,0.213639030035792,0.31400563802497494,3785.9338941686815,70496.64014681967,98687.06610583133,102473.0,0.9630543275382913,5,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,9,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,14,15,15,15,16,17,18 +6.800000000000005,0.7668587027820833,0.16092762211381115,0.2088845974043958,0.19622318988023202,0.2904879821329161,3603.0101271086405,71816.40081342915,98869.98987289137,102473.0,0.9648394198753951,6,6,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14,15,15,15,16,18 +6.900000000000006,0.7717470706207281,0.04255555881240135,0.2444567163046851,0.18732328660712105,0.2756670863651425,3598.884103762482,72506.2462655456,98874.11589623752,102473.0,0.9648796843679557,5,5,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,15,15,16,18 +7.000000000000005,0.7858453128644177,0.17523832839729483,0.28916913195231875,0.16956838882884018,0.2526035535967339,3759.796492576738,73826.08834325465,98713.20350742327,102473.0,0.9633093937663899,6,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,14,14,15,16,17 +7.100000000000005,0.7761290058935297,0.17523832839729483,0.2824915843071436,0.17790697632514085,0.2605195430943895,3806.332794111868,72889.11408057174,98666.66720588812,102473.0,0.9628552614433863,6,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,15,15,15,15,16,17,18 +7.2000000000000055,0.7729548044469673,0.17523832839729483,0.28937021231742144,0.17778360710581698,0.256049612456592,4036.4077062403553,72902.10159219432,98436.59229375965,102473.0,0.9606100367292814,6,6,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,14,15,15,15,16,16,18 +7.300000000000006,0.7659812847457469,0.17523832839729483,0.26725056863607943,0.18826804810784203,0.2710590609954066,4095.016873724914,72374.36653341338,98377.98312627508,102473.0,0.9600380893140152,6,6,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,15,15,15,16,17 +7.400000000000006,0.7753687648714774,0.17523832839729483,0.2825402087159357,0.17912595709050216,0.2612790824411088,3840.1012022962796,73030.70962924142,98632.89879770372,102473.0,0.9625257267544008,6,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,15,16,17 +7.500000000000005,0.7801827838625416,0.2870875607951574,0.30543419531357807,0.1755032095117286,0.2594759592269525,3699.0092499162347,73325.27691400063,98773.99075008377,102473.0,0.9639025962944754,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,15,16,17 +7.600000000000006,0.7803725118233432,0.2870875607951574,0.30543419531357807,0.1753679648705717,0.26128556022389554,3971.6614486711974,73501.26564747635,98501.33855132881,102473.0,0.9612418739700097,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,14,14,14,14,15,15,16 +7.700000000000006,0.7843187617519664,0.23840950650143575,0.29118857881017896,0.17282706825250838,0.25984282373196443,3742.593718897417,73929.741328735,98730.40628110258,102473.0,0.9634772699257617,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,14,14,14,14,15,17 +7.800000000000006,0.7869729915540719,0.2380441070802428,0.28466220839403056,0.1678271101324369,0.2515280381951045,4018.3395388596578,74512.31162737861,98454.66046114035,102473.0,0.9607863579785928,7,7,7,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,14,14,14,15,16 +7.900000000000006,0.7922641169817896,0.23840950650143575,0.33142996749149434,0.15598154462403047,0.23193334991679843,4247.483726589307,75523.52270713531,98225.51627341071,102473.0,0.9585502158950232,7,7,7,7,7,7,7,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,15,16 +8.000000000000007,0.7992056545180783,0.3343509289333922,0.39606751285604574,0.14326607961724047,0.21108817768991742,4682.765189423684,76485.4109867131,97790.23481057632,102473.0,0.9543024485530464,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,15 +8.100000000000007,0.7980054188119924,0.3343509289333922,0.39600931919324184,0.1442605278169562,0.2113904938449651,4498.8550287345515,76372.030677603,97974.14497126543,102473.0,0.9560971667782286,7,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,14,14,14,14,14,15,16 +8.200000000000006,0.7965214414060366,0.3343509289333922,0.3963149302925041,0.14659483249617922,0.2149404608369158,4401.694593549738,75981.86821908933,98071.30540645026,102473.0,0.9570453232212414,7,7,7,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,13,13,13,13,13,14,14,14,14,15,16 +8.300000000000006,0.7952103867935202,0.28758813269853584,0.3788509466877924,0.1502375708704613,0.22131106262142783,4228.009073043851,75711.02580952058,98244.99092695615,102473.0,0.9587402625760556,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,14,14,15,15,15,16 +8.400000000000006,0.7969067253847036,0.28758813269853584,0.3597695775361197,0.15362685415452937,0.22918922759509094,4078.362120624356,75461.89368675055,98394.63787937564,102473.0,0.9602006175224268,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,14,14,14,15,15,16 +8.500000000000007,0.7969638189088815,0.28758813269853584,0.3597695775361197,0.15271723991727226,0.22731631640102465,4164.312249621347,75636.16402881038,98308.68775037865,102473.0,0.9593618587372152,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,15,16 +8.600000000000007,0.7956951965917238,0.28758813269853584,0.3597695775361197,0.15221877592754374,0.22614605043070332,4965.821681375555,76123.56417186503,97507.17831862444,102473.0,0.9515401941840723,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,14,14 +8.700000000000006,0.7975110764877453,0.28758813269853584,0.33253874979407744,0.1507408371291994,0.22706381291080607,4737.461744563475,76291.39419786866,97735.53825543652,102473.0,0.9537686830232014,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,14,14,14,15 +8.800000000000008,0.8020662973201697,0.28758813269853584,0.3597695775361197,0.14125109896881605,0.21274902638223545,4926.180584261835,77152.38810855703,97546.81941573817,102473.0,0.9519270384953906,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,15 +8.900000000000007,0.8083655298252023,0.38529244199208385,0.41694658668950974,0.12850371885141065,0.19169100761672123,5184.90551970348,78268.64048827358,97288.09448029652,102473.0,0.9494022277116559,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,13,14,14,15 +9.000000000000007,0.8142834353800696,0.41947948458735274,0.4551724598368109,0.11577659938250706,0.17192708685678376,5983.844440009705,79604.58635770518,96489.1555599903,102473.0,0.9416056479266762,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,13,14,14 +9.100000000000007,0.8130397585205981,0.42044341001350766,0.45017875722008366,0.12006848597839248,0.17761913283181413,5823.131328885486,79273.12984580806,96649.8686711145,102473.0,0.9431739938433977,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,13,13,14 +9.200000000000006,0.8120437694672932,0.41947948458735274,0.4551724598368109,0.1216278385238716,0.17894517909538757,5502.425249479324,78937.51132738634,96970.57475052068,102473.0,0.9463036580418323,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,13,13,13,14,15 +9.300000000000008,0.8080760011757453,0.41947948458735274,0.4551724598368109,0.12436841113011643,0.18148695825138322,5898.140559999913,78737.27826859486,96574.85944000009,102473.0,0.9424420036497427,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14 +9.400000000000007,0.8092759791794104,0.41947948458735274,0.4551724598368109,0.12481531043890293,0.18237892867643501,5537.24408357164,78484.85030605624,96935.75591642837,102473.0,0.9459638725950091,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14 +9.500000000000007,0.8079155462240324,0.41947948458735274,0.4551724598368109,0.12515016230934717,0.18243758342043997,5655.535080238967,78448.49549626806,96817.46491976103,102473.0,0.9448095100149407,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,13,13,13,13,13,13,13,14 +9.600000000000009,0.8065778956364986,0.41947948458735274,0.4551724598368109,0.127878627474715,0.18636502268756625,6125.897356725693,78763.60241470304,96347.10264327431,102473.0,0.9402194006545559,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,13,13,13,13 +9.700000000000008,0.8087566324704812,0.41947948458735274,0.4551724598368109,0.12055519550042382,0.17647696171146568,6798.770562921414,79688.06895664686,95674.22943707858,102473.0,0.933653054337031,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,13,13,13 +9.800000000000008,0.8104414824408857,0.41947948458735274,0.5009270959548467,0.11490574545184162,0.16588562880483207,7826.597212701517,80731.94381412039,94646.40278729849,102473.0,0.9236228351594907,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,13 +9.900000000000007,0.8138626685397029,0.49434905352523684,0.5310600925980664,0.10792771102384369,0.15529125954275722,8316.675841761717,81441.54087113205,94156.32415823828,102473.0,0.9188403204574696,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12 +10.000000000000007,0.8214410037077584,0.4082823181247332,0.5353553709807769,0.09794100465245026,0.14341100986331135,8684.998561608434,82920.7229506679,93788.00143839157,102473.0,0.9152459812671784,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 diff --git a/data/schedule_long_kmin6.8_gap14.csv b/data/schedule_long_kmin6.8_gap14.csv new file mode 100644 index 0000000..10a01d7 --- /dev/null +++ b/data/schedule_long_kmin6.8_gap14.csv @@ -0,0 +1,731 @@ +day,site_idx,site_name +1,58,MFP Windsor +1,69,MFP Avoca +2,34,MFP Saint Mary Recreation Center +2,35,MFP College Corning Community College +3,36,MFP College TC3 -College +3,52,MFP Owego VFW +4,51,MFP Woodhull +4,63,MFP Colesville +5,45,MFP Deposit +5,57,MFP American Legion - Binghamton +6,50,MFP Boys and Girls Club +6,56,MFP Reach for Christ Church Freeville +7,28,MFP Troupsburg +7,33,MFP Danby +8,37,MFP Montour Falls-Schuyler County Human Services Complex +8,40,MFP Birnie Transportation Services +9,11,MFP Senior - Conifer Village +9,65,MFP Rathbone +10,1,MFP Senior - Woodsedge Apartments +10,49,MFP Campbell +11,62,MFP Rehoboth Deliverance Ministry +11,67,MFP The Love Church +12,24,MFP Senior - Titus Towers +12,64,MFP Richford +13,44,MFP Conklin- Maines Community Center +13,59,MFP Whitney Point +14,38,MFP Millport +14,53,MFP Tuscarora +15,48,MFP Salvation Army Ithaca +15,54,MFP Van Etten +16,26,MFP Senior - Dayspring +16,41,MFP Prattsburgh +17,13,"MFP Senior - Elizabeth Square, Waverly" +17,60,MFP Redeemer Lutheran Church +18,3,MFP Senior - Cayuga Meadows +18,68,MFP Endwell United Methodist Church +19,22,MFP Senior - Corning Senior Center +19,70,MFP Waverly +20,39,MFP Beaver Dams +20,55,MFP Wayland +21,42,MFP First Assembly Of God Church +21,47,MFP Lansing +22,43,MFP Canisteo +22,66,MFP Bath +23,21,MFP Nichols-The Creamery +23,37,MFP Montour Falls-Schuyler County Human Services Complex +24,27,MFP Schuyler Outreach +24,56,MFP Reach for Christ Church Freeville +25,25,MFP Senior - Villa Serene +25,69,MFP Avoca +26,20,MFP Senior - Bragg +26,52,MFP Owego VFW +27,58,MFP Windsor +27,63,MFP Colesville +28,46,MFP Erin +28,57,MFP American Legion - Binghamton +29,38,MFP Millport +29,48,MFP Salvation Army Ithaca +30,65,MFP Rathbone +30,67,MFP The Love Church +31,30,MFP College Ithaca College +31,36,MFP College TC3 -College +32,51,MFP Woodhull +32,62,MFP Rehoboth Deliverance Ministry +33,34,MFP Saint Mary Recreation Center +33,45,MFP Deposit +34,31,MFP Lamphear Court +34,44,MFP Conklin- Maines Community Center +35,35,MFP College Corning Community College +35,49,MFP Campbell +36,50,MFP Boys and Girls Club +36,68,MFP Endwell United Methodist Church +37,60,MFP Redeemer Lutheran Church +37,70,MFP Waverly +38,29,MFP Senior - CFS Lakeview +38,47,MFP Lansing +39,33,MFP Danby +39,64,MFP Richford +40,43,MFP Canisteo +40,53,MFP Tuscarora +41,40,MFP Birnie Transportation Services +41,55,MFP Wayland +42,52,MFP Owego VFW +42,59,MFP Whitney Point +43,28,MFP Troupsburg +43,69,MFP Avoca +44,46,MFP Erin +44,67,MFP The Love Church +45,54,MFP Van Etten +45,61,MFP Lindley +46,51,MFP Woodhull +46,66,MFP Bath +47,9,MFP Senior - Springview Apartments +47,10,MFP Senior - Addison Place Apartments +48,23,MFP Senior - Flannery +48,39,MFP Beaver Dams +49,4,MFP Senior - Wells Apartments +49,32,MFP Bradford +50,24,MFP Senior - Titus Towers +50,68,MFP Endwell United Methodist Church +51,19,MFP Senior - Metro Plaza Apartments +51,41,MFP Prattsburgh +52,48,MFP Salvation Army Ithaca +52,63,MFP Colesville +53,42,MFP First Assembly Of God Church +53,56,MFP Reach for Christ Church Freeville +54,57,MFP American Legion - Binghamton +54,58,MFP Windsor +55,40,MFP Birnie Transportation Services +55,70,MFP Waverly +56,26,MFP Senior - Dayspring +56,45,MFP Deposit +57,37,MFP Montour Falls-Schuyler County Human Services Complex +57,55,MFP Wayland +58,22,MFP Senior - Corning Senior Center +58,65,MFP Rathbone +59,11,MFP Senior - Conifer Village +59,60,MFP Redeemer Lutheran Church +60,21,MFP Nichols-The Creamery +60,36,MFP College TC3 -College +61,28,MFP Troupsburg +61,46,MFP Erin +62,44,MFP Conklin- Maines Community Center +62,64,MFP Richford +63,27,MFP Schuyler Outreach +63,38,MFP Millport +64,1,MFP Senior - Woodsedge Apartments +64,50,MFP Boys and Girls Club +65,19,MFP Senior - Metro Plaza Apartments +65,25,MFP Senior - Villa Serene +66,49,MFP Campbell +66,59,MFP Whitney Point +67,61,MFP Lindley +67,66,MFP Bath +68,53,MFP Tuscarora +68,54,MFP Van Etten +69,51,MFP Woodhull +69,70,MFP Waverly +70,3,MFP Senior - Cayuga Meadows +70,20,MFP Senior - Bragg +71,35,MFP College Corning Community College +71,47,MFP Lansing +72,30,MFP College Ithaca College +72,34,MFP Saint Mary Recreation Center +73,52,MFP Owego VFW +73,67,MFP The Love Church +74,31,MFP Lamphear Court +74,33,MFP Danby +75,29,MFP Senior - CFS Lakeview +75,57,MFP American Legion - Binghamton +76,13,"MFP Senior - Elizabeth Square, Waverly" +76,68,MFP Endwell United Methodist Church +77,43,MFP Canisteo +77,63,MFP Colesville +78,41,MFP Prattsburgh +78,56,MFP Reach for Christ Church Freeville +79,42,MFP First Assembly Of God Church +79,55,MFP Wayland +80,22,MFP Senior - Corning Senior Center +80,60,MFP Redeemer Lutheran Church +81,5,MFP Senior - Lincoln Court +81,61,MFP Lindley +82,32,MFP Bradford +82,48,MFP Salvation Army Ithaca +83,39,MFP Beaver Dams +83,70,MFP Waverly +84,36,MFP College TC3 -College +84,54,MFP Van Etten +85,19,MFP Senior - Metro Plaza Apartments +85,65,MFP Rathbone +86,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +86,24,MFP Senior - Titus Towers +87,47,MFP Lansing +87,64,MFP Richford +88,40,MFP Birnie Transportation Services +88,62,MFP Rehoboth Deliverance Ministry +89,58,MFP Windsor +89,59,MFP Whitney Point +90,14,MFP Senior - North Shore Towers +90,66,MFP Bath +91,23,MFP Senior - Flannery +91,43,MFP Canisteo +92,50,MFP Boys and Girls Club +92,53,MFP Tuscarora +93,17,MFP Senior - East Hill Senior Living +93,46,MFP Erin +94,45,MFP Deposit +94,51,MFP Woodhull +95,44,MFP Conklin- Maines Community Center +95,61,MFP Lindley +96,38,MFP Millport +96,49,MFP Campbell +97,26,MFP Senior - Dayspring +97,70,MFP Waverly +98,10,MFP Senior - Addison Place Apartments +98,67,MFP The Love Church +99,9,MFP Senior - Springview Apartments +99,33,MFP Danby +100,12,MFP Senior - Carpenter Apartments +100,30,MFP College Ithaca College +101,8,MFP Senior - Jefferson Village +101,60,MFP Redeemer Lutheran Church +102,4,MFP Senior - Wells Apartments +102,68,MFP Endwell United Methodist Church +103,35,MFP College Corning Community College +103,37,MFP Montour Falls-Schuyler County Human Services Complex +104,21,MFP Nichols-The Creamery +104,52,MFP Owego VFW +105,27,MFP Schuyler Outreach +105,41,MFP Prattsburgh +106,42,MFP First Assembly Of God Church +106,63,MFP Colesville +107,29,MFP Senior - CFS Lakeview +107,34,MFP Saint Mary Recreation Center +108,31,MFP Lamphear Court +108,65,MFP Rathbone +109,7,MFP Senior - Ellis Hollow +109,62,MFP Rehoboth Deliverance Ministry +110,54,MFP Van Etten +110,55,MFP Wayland +111,64,MFP Richford +111,70,MFP Waverly +112,39,MFP Beaver Dams +112,48,MFP Salvation Army Ithaca +113,36,MFP College TC3 -College +113,66,MFP Bath +114,11,MFP Senior - Conifer Village +114,58,MFP Windsor +115,32,MFP Bradford +115,67,MFP The Love Church +116,20,MFP Senior - Bragg +116,59,MFP Whitney Point +117,9,MFP Senior - Springview Apartments +117,46,MFP Erin +118,47,MFP Lansing +118,53,MFP Tuscarora +119,15,MFP Senior - Village Square/Manor +119,50,MFP Boys and Girls Club +120,37,MFP Montour Falls-Schuyler County Human Services Complex +120,45,MFP Deposit +121,3,MFP Senior - Cayuga Meadows +121,25,MFP Senior - Villa Serene +122,38,MFP Millport +122,49,MFP Campbell +123,51,MFP Woodhull +123,61,MFP Lindley +124,65,MFP Rathbone +124,68,MFP Endwell United Methodist Church +125,22,MFP Senior - Corning Senior Center +125,70,MFP Waverly +126,55,MFP Wayland +126,69,MFP Avoca +127,27,MFP Schuyler Outreach +127,56,MFP Reach for Christ Church Freeville +128,23,MFP Senior - Flannery +128,33,MFP Danby +129,1,MFP Senior - Woodsedge Apartments +129,60,MFP Redeemer Lutheran Church +130,13,"MFP Senior - Elizabeth Square, Waverly" +130,64,MFP Richford +131,5,MFP Senior - Lincoln Court +131,44,MFP Conklin- Maines Community Center +132,19,MFP Senior - Metro Plaza Apartments +132,57,MFP American Legion - Binghamton +133,42,MFP First Assembly Of God Church +133,54,MFP Van Etten +134,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +134,67,MFP The Love Church +135,17,MFP Senior - East Hill Senior Living +135,30,MFP College Ithaca College +136,35,MFP College Corning Community College +136,62,MFP Rehoboth Deliverance Ministry +137,26,MFP Senior - Dayspring +137,41,MFP Prattsburgh +138,6,MFP Senior - Park Terrace Congregate Apartments +138,63,MFP Colesville +139,40,MFP Birnie Transportation Services +139,70,MFP Waverly +140,52,MFP Owego VFW +140,69,MFP Avoca +141,7,MFP Senior - Ellis Hollow +141,14,MFP Senior - North Shore Towers +142,31,MFP Lamphear Court +142,39,MFP Beaver Dams +143,29,MFP Senior - CFS Lakeview +143,34,MFP Saint Mary Recreation Center +144,48,MFP Salvation Army Ithaca +144,61,MFP Lindley +145,21,MFP Nichols-The Creamery +145,47,MFP Lansing +146,23,MFP Senior - Flannery +146,46,MFP Erin +147,16,MFP Senior - Long Meadow Senior Housing +147,28,MFP Troupsburg +148,32,MFP Bradford +148,45,MFP Deposit +149,24,MFP Senior - Titus Towers +149,68,MFP Endwell United Methodist Church +150,49,MFP Campbell +150,58,MFP Windsor +151,10,MFP Senior - Addison Place Apartments +151,37,MFP Montour Falls-Schuyler County Human Services Complex +152,12,MFP Senior - Carpenter Apartments +152,64,MFP Richford +153,8,MFP Senior - Jefferson Village +153,70,MFP Waverly +154,36,MFP College TC3 -College +154,53,MFP Tuscarora +155,4,MFP Senior - Wells Apartments +155,43,MFP Canisteo +156,38,MFP Millport +156,69,MFP Avoca +157,39,MFP Beaver Dams +157,60,MFP Redeemer Lutheran Church +158,27,MFP Schuyler Outreach +158,50,MFP Boys and Girls Club +159,25,MFP Senior - Villa Serene +159,59,MFP Whitney Point +160,51,MFP Woodhull +160,56,MFP Reach for Christ Church Freeville +161,6,MFP Senior - Park Terrace Congregate Apartments +161,55,MFP Wayland +162,42,MFP First Assembly Of God Church +162,65,MFP Rathbone +163,22,MFP Senior - Corning Senior Center +163,67,MFP The Love Church +164,15,MFP Senior - Village Square/Manor +164,33,MFP Danby +165,57,MFP American Legion - Binghamton +165,66,MFP Bath +166,13,"MFP Senior - Elizabeth Square, Waverly" +166,20,MFP Senior - Bragg +167,11,MFP Senior - Conifer Village +167,70,MFP Waverly +168,30,MFP College Ithaca College +168,44,MFP Conklin- Maines Community Center +169,40,MFP Birnie Transportation Services +169,64,MFP Richford +170,9,MFP Senior - Springview Apartments +170,54,MFP Van Etten +171,41,MFP Prattsburgh +171,52,MFP Owego VFW +172,35,MFP College Corning Community College +172,46,MFP Erin +173,26,MFP Senior - Dayspring +173,62,MFP Rehoboth Deliverance Ministry +174,63,MFP Colesville +174,68,MFP Endwell United Methodist Church +175,47,MFP Lansing +175,61,MFP Lindley +176,29,MFP Senior - CFS Lakeview +176,39,MFP Beaver Dams +177,32,MFP Bradford +177,69,MFP Avoca +178,31,MFP Lamphear Court +178,45,MFP Deposit +179,5,MFP Senior - Lincoln Court +179,19,MFP Senior - Metro Plaza Apartments +180,49,MFP Campbell +180,58,MFP Windsor +181,28,MFP Troupsburg +181,43,MFP Canisteo +182,50,MFP Boys and Girls Club +182,67,MFP The Love Church +183,17,MFP Senior - East Hill Senior Living +183,60,MFP Redeemer Lutheran Church +184,16,MFP Senior - Long Meadow Senior Housing +184,37,MFP Montour Falls-Schuyler County Human Services Complex +185,23,MFP Senior - Flannery +185,70,MFP Waverly +186,21,MFP Nichols-The Creamery +186,59,MFP Whitney Point +187,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +187,38,MFP Millport +188,34,MFP Saint Mary Recreation Center +188,53,MFP Tuscarora +189,15,MFP Senior - Village Square/Manor +189,42,MFP First Assembly Of God Church +190,48,MFP Salvation Army Ithaca +190,57,MFP American Legion - Binghamton +191,51,MFP Woodhull +191,66,MFP Bath +192,55,MFP Wayland +192,65,MFP Rathbone +193,1,MFP Senior - Woodsedge Apartments +193,62,MFP Rehoboth Deliverance Ministry +194,14,MFP Senior - North Shore Towers +194,56,MFP Reach for Christ Church Freeville +195,7,MFP Senior - Ellis Hollow +195,24,MFP Senior - Titus Towers +196,44,MFP Conklin- Maines Community Center +196,68,MFP Endwell United Methodist Church +197,33,MFP Danby +197,69,MFP Avoca +198,22,MFP Senior - Corning Senior Center +198,63,MFP Colesville +199,27,MFP Schuyler Outreach +199,52,MFP Owego VFW +200,46,MFP Erin +200,54,MFP Van Etten +201,30,MFP College Ithaca College +201,35,MFP College Corning Community College +202,8,MFP Senior - Jefferson Village +202,12,MFP Senior - Carpenter Apartments +203,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +203,25,MFP Senior - Villa Serene +204,2,MFP Senior - Harry L Apartments +204,3,MFP Senior - Cayuga Meadows +205,47,MFP Lansing +205,70,MFP Waverly +206,36,MFP College TC3 -College +206,50,MFP Boys and Girls Club +207,29,MFP Senior - CFS Lakeview +207,40,MFP Birnie Transportation Services +208,4,MFP Senior - Wells Apartments +208,48,MFP Salvation Army Ithaca +209,14,MFP Senior - North Shore Towers +209,67,MFP The Love Church +210,43,MFP Canisteo +210,64,MFP Richford +211,10,MFP Senior - Addison Place Apartments +211,20,MFP Senior - Bragg +212,45,MFP Deposit +212,61,MFP Lindley +213,7,MFP Senior - Ellis Hollow +213,41,MFP Prattsburgh +214,32,MFP Bradford +214,66,MFP Bath +215,13,"MFP Senior - Elizabeth Square, Waverly" +215,65,MFP Rathbone +216,26,MFP Senior - Dayspring +216,31,MFP Lamphear Court +217,11,MFP Senior - Conifer Village +217,28,MFP Troupsburg +218,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +218,25,MFP Senior - Villa Serene +219,53,MFP Tuscarora +219,55,MFP Wayland +220,49,MFP Campbell +220,57,MFP American Legion - Binghamton +221,9,MFP Senior - Springview Apartments +221,69,MFP Avoca +222,51,MFP Woodhull +222,58,MFP Windsor +223,42,MFP First Assembly Of God Church +223,59,MFP Whitney Point +224,37,MFP Montour Falls-Schuyler County Human Services Complex +224,56,MFP Reach for Christ Church Freeville +225,62,MFP Rehoboth Deliverance Ministry +225,68,MFP Endwell United Methodist Church +226,34,MFP Saint Mary Recreation Center +226,44,MFP Conklin- Maines Community Center +227,38,MFP Millport +227,63,MFP Colesville +228,4,MFP Senior - Wells Apartments +228,16,MFP Senior - Long Meadow Senior Housing +229,6,MFP Senior - Park Terrace Congregate Apartments +229,14,MFP Senior - North Shore Towers +230,52,MFP Owego VFW +230,64,MFP Richford +231,5,MFP Senior - Lincoln Court +231,24,MFP Senior - Titus Towers +232,19,MFP Senior - Metro Plaza Apartments +232,23,MFP Senior - Flannery +233,21,MFP Nichols-The Creamery +233,32,MFP Bradford +234,2,MFP Senior - Harry L Apartments +234,39,MFP Beaver Dams +235,15,MFP Senior - Village Square/Manor +235,46,MFP Erin +236,30,MFP College Ithaca College +236,43,MFP Canisteo +237,35,MFP College Corning Community College +237,60,MFP Redeemer Lutheran Church +238,40,MFP Birnie Transportation Services +238,47,MFP Lansing +239,27,MFP Schuyler Outreach +239,66,MFP Bath +240,50,MFP Boys and Girls Club +240,61,MFP Lindley +241,22,MFP Senior - Corning Senior Center +241,65,MFP Rathbone +242,59,MFP Whitney Point +242,69,MFP Avoca +243,17,MFP Senior - East Hill Senior Living +243,25,MFP Senior - Villa Serene +244,20,MFP Senior - Bragg +244,33,MFP Danby +245,36,MFP College TC3 -College +245,45,MFP Deposit +246,49,MFP Campbell +246,58,MFP Windsor +247,16,MFP Senior - Long Meadow Senior Housing +247,41,MFP Prattsburgh +248,26,MFP Senior - Dayspring +248,32,MFP Bradford +249,15,MFP Senior - Village Square/Manor +249,29,MFP Senior - CFS Lakeview +250,8,MFP Senior - Jefferson Village +250,57,MFP American Legion - Binghamton +251,31,MFP Lamphear Court +251,60,MFP Redeemer Lutheran Church +252,54,MFP Van Etten +252,67,MFP The Love Church +253,28,MFP Troupsburg +253,55,MFP Wayland +254,12,MFP Senior - Carpenter Apartments +254,62,MFP Rehoboth Deliverance Ministry +255,63,MFP Colesville +255,68,MFP Endwell United Methodist Church +256,3,MFP Senior - Cayuga Meadows +256,56,MFP Reach for Christ Church Freeville +257,17,MFP Senior - East Hill Senior Living +257,69,MFP Avoca +258,7,MFP Senior - Ellis Hollow +258,47,MFP Lansing +259,34,MFP Saint Mary Recreation Center +259,48,MFP Salvation Army Ithaca +260,1,MFP Senior - Woodsedge Apartments +260,42,MFP First Assembly Of God Church +261,52,MFP Owego VFW +261,66,MFP Bath +262,11,MFP Senior - Conifer Village +262,64,MFP Richford +263,10,MFP Senior - Addison Place Apartments +263,39,MFP Beaver Dams +264,30,MFP College Ithaca College +264,53,MFP Tuscarora +265,13,"MFP Senior - Elizabeth Square, Waverly" +265,46,MFP Erin +266,15,MFP Senior - Village Square/Manor +266,40,MFP Birnie Transportation Services +267,35,MFP College Corning Community College +267,43,MFP Canisteo +268,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +268,65,MFP Rathbone +269,24,MFP Senior - Titus Towers +269,59,MFP Whitney Point +270,21,MFP Nichols-The Creamery +270,44,MFP Conklin- Maines Community Center +271,61,MFP Lindley +271,70,MFP Waverly +272,23,MFP Senior - Flannery +272,50,MFP Boys and Girls Club +273,60,MFP Redeemer Lutheran Church +273,67,MFP The Love Church +274,19,MFP Senior - Metro Plaza Apartments +274,27,MFP Schuyler Outreach +275,38,MFP Millport +275,49,MFP Campbell +276,37,MFP Montour Falls-Schuyler County Human Services Complex +276,51,MFP Woodhull +277,48,MFP Salvation Army Ithaca +277,68,MFP Endwell United Methodist Church +278,5,MFP Senior - Lincoln Court +278,45,MFP Deposit +279,6,MFP Senior - Park Terrace Congregate Apartments +279,69,MFP Avoca +280,36,MFP College TC3 -College +280,57,MFP American Legion - Binghamton +281,4,MFP Senior - Wells Apartments +281,55,MFP Wayland +282,14,MFP Senior - North Shore Towers +282,22,MFP Senior - Corning Senior Center +283,2,MFP Senior - Harry L Apartments +283,62,MFP Rehoboth Deliverance Ministry +284,58,MFP Windsor +284,66,MFP Bath +285,29,MFP Senior - CFS Lakeview +285,41,MFP Prattsburgh +286,54,MFP Van Etten +286,56,MFP Reach for Christ Church Freeville +287,64,MFP Richford +287,70,MFP Waverly +288,25,MFP Senior - Villa Serene +288,33,MFP Danby +289,28,MFP Troupsburg +289,63,MFP Colesville +290,7,MFP Senior - Ellis Hollow +290,61,MFP Lindley +291,20,MFP Senior - Bragg +291,32,MFP Bradford +292,16,MFP Senior - Long Meadow Senior Housing +292,52,MFP Owego VFW +293,26,MFP Senior - Dayspring +293,42,MFP First Assembly Of God Church +294,17,MFP Senior - East Hill Senior Living +294,43,MFP Canisteo +295,53,MFP Tuscarora +295,60,MFP Redeemer Lutheran Church +296,35,MFP College Corning Community College +296,67,MFP The Love Church +297,9,MFP Senior - Springview Apartments +297,39,MFP Beaver Dams +298,8,MFP Senior - Jefferson Village +298,50,MFP Boys and Girls Club +299,31,MFP Lamphear Court +299,40,MFP Birnie Transportation Services +300,12,MFP Senior - Carpenter Apartments +300,65,MFP Rathbone +301,44,MFP Conklin- Maines Community Center +301,68,MFP Endwell United Methodist Church +302,34,MFP Saint Mary Recreation Center +302,66,MFP Bath +303,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +303,59,MFP Whitney Point +304,21,MFP Nichols-The Creamery +304,69,MFP Avoca +305,37,MFP Montour Falls-Schuyler County Human Services Complex +305,38,MFP Millport +306,30,MFP College Ithaca College +306,62,MFP Rehoboth Deliverance Ministry +307,48,MFP Salvation Army Ithaca +307,70,MFP Waverly +308,45,MFP Deposit +308,57,MFP American Legion - Binghamton +309,15,MFP Senior - Village Square/Manor +309,49,MFP Campbell +310,55,MFP Wayland +310,64,MFP Richford +311,41,MFP Prattsburgh +311,51,MFP Woodhull +312,3,MFP Senior - Cayuga Meadows +312,13,"MFP Senior - Elizabeth Square, Waverly" +313,46,MFP Erin +313,47,MFP Lansing +314,10,MFP Senior - Addison Place Apartments +314,27,MFP Schuyler Outreach +315,11,MFP Senior - Conifer Village +315,63,MFP Colesville +316,6,MFP Senior - Park Terrace Congregate Apartments +316,29,MFP Senior - CFS Lakeview +317,23,MFP Senior - Flannery +317,24,MFP Senior - Titus Towers +318,17,MFP Senior - East Hill Senior Living +318,69,MFP Avoca +319,56,MFP Reach for Christ Church Freeville +319,61,MFP Lindley +320,19,MFP Senior - Metro Plaza Apartments +320,54,MFP Van Etten +321,58,MFP Windsor +321,67,MFP The Love Church +322,22,MFP Senior - Corning Senior Center +322,53,MFP Tuscarora +323,31,MFP Lamphear Court +323,66,MFP Bath +324,1,MFP Senior - Woodsedge Apartments +324,52,MFP Owego VFW +325,2,MFP Senior - Harry L Apartments +325,33,MFP Danby +326,43,MFP Canisteo +326,65,MFP Rathbone +327,60,MFP Redeemer Lutheran Church +327,70,MFP Waverly +328,28,MFP Troupsburg +328,32,MFP Bradford +329,25,MFP Senior - Villa Serene +329,59,MFP Whitney Point +330,5,MFP Senior - Lincoln Court +330,20,MFP Senior - Bragg +331,44,MFP Conklin- Maines Community Center +331,50,MFP Boys and Girls Club +332,26,MFP Senior - Dayspring +332,40,MFP Birnie Transportation Services +333,39,MFP Beaver Dams +333,68,MFP Endwell United Methodist Church +334,4,MFP Senior - Wells Apartments +334,62,MFP Rehoboth Deliverance Ministry +335,36,MFP College TC3 -College +335,42,MFP First Assembly Of God Church +336,16,MFP Senior - Long Meadow Senior Housing +336,35,MFP College Corning Community College +337,6,MFP Senior - Park Terrace Congregate Apartments +337,57,MFP American Legion - Binghamton +338,34,MFP Saint Mary Recreation Center +338,48,MFP Salvation Army Ithaca +339,8,MFP Senior - Jefferson Village +339,38,MFP Millport +340,49,MFP Campbell +340,69,MFP Avoca +341,37,MFP Montour Falls-Schuyler County Human Services Complex +341,45,MFP Deposit +342,30,MFP College Ithaca College +342,51,MFP Woodhull +343,21,MFP Nichols-The Creamery +343,66,MFP Bath +344,46,MFP Erin +344,64,MFP Richford +345,7,MFP Senior - Ellis Hollow +345,41,MFP Prattsburgh +346,54,MFP Van Etten +346,63,MFP Colesville +347,47,MFP Lansing +347,67,MFP The Love Church +348,56,MFP Reach for Christ Church Freeville +348,61,MFP Lindley +349,2,MFP Senior - Harry L Apartments +349,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +350,16,MFP Senior - Long Meadow Senior Housing +350,70,MFP Waverly +351,9,MFP Senior - Springview Apartments +351,12,MFP Senior - Carpenter Apartments +352,58,MFP Windsor +352,65,MFP Rathbone +353,31,MFP Lamphear Court +353,53,MFP Tuscarora +354,14,MFP Senior - North Shore Towers +354,24,MFP Senior - Titus Towers +355,8,MFP Senior - Jefferson Village +355,15,MFP Senior - Village Square/Manor +356,23,MFP Senior - Flannery +356,59,MFP Whitney Point +357,62,MFP Rehoboth Deliverance Ministry +357,68,MFP Endwell United Methodist Church +358,5,MFP Senior - Lincoln Court +358,44,MFP Conklin- Maines Community Center +359,6,MFP Senior - Park Terrace Congregate Apartments +359,33,MFP Danby +360,34,MFP Saint Mary Recreation Center +360,36,MFP College TC3 -College +361,29,MFP Senior - CFS Lakeview +361,69,MFP Avoca +362,17,MFP Senior - East Hill Senior Living +362,66,MFP Bath +363,3,MFP Senior - Cayuga Meadows +363,10,MFP Senior - Addison Place Apartments +364,16,MFP Senior - Long Meadow Senior Housing +364,28,MFP Troupsburg +365,2,MFP Senior - Harry L Apartments +365,12,MFP Senior - Carpenter Apartments diff --git a/data/schedule_optimized_kmin6.8_gap14.csv b/data/schedule_optimized_kmin6.8_gap14.csv new file mode 100644 index 0000000..7663e3d --- /dev/null +++ b/data/schedule_optimized_kmin6.8_gap14.csv @@ -0,0 +1,366 @@ +day,site1_idx,site1_name,site2_idx,site2_name +1,58,MFP Windsor,69,MFP Avoca +2,34,MFP Saint Mary Recreation Center,35,MFP College Corning Community College +3,36,MFP College TC3 -College,52,MFP Owego VFW +4,51,MFP Woodhull,63,MFP Colesville +5,45,MFP Deposit,57,MFP American Legion - Binghamton +6,50,MFP Boys and Girls Club,56,MFP Reach for Christ Church Freeville +7,28,MFP Troupsburg,33,MFP Danby +8,37,MFP Montour Falls-Schuyler County Human Services Complex,40,MFP Birnie Transportation Services +9,11,MFP Senior - Conifer Village,65,MFP Rathbone +10,1,MFP Senior - Woodsedge Apartments,49,MFP Campbell +11,62,MFP Rehoboth Deliverance Ministry,67,MFP The Love Church +12,24,MFP Senior - Titus Towers,64,MFP Richford +13,44,MFP Conklin- Maines Community Center,59,MFP Whitney Point +14,38,MFP Millport,53,MFP Tuscarora +15,48,MFP Salvation Army Ithaca,54,MFP Van Etten +16,26,MFP Senior - Dayspring,41,MFP Prattsburgh +17,13,"MFP Senior - Elizabeth Square, Waverly",60,MFP Redeemer Lutheran Church +18,3,MFP Senior - Cayuga Meadows,68,MFP Endwell United Methodist Church +19,22,MFP Senior - Corning Senior Center,70,MFP Waverly +20,39,MFP Beaver Dams,55,MFP Wayland +21,42,MFP First Assembly Of God Church,47,MFP Lansing +22,43,MFP Canisteo,66,MFP Bath +23,21,MFP Nichols-The Creamery,37,MFP Montour Falls-Schuyler County Human Services Complex +24,27,MFP Schuyler Outreach,56,MFP Reach for Christ Church Freeville +25,25,MFP Senior - Villa Serene,69,MFP Avoca +26,20,MFP Senior - Bragg,52,MFP Owego VFW +27,58,MFP Windsor,63,MFP Colesville +28,46,MFP Erin,57,MFP American Legion - Binghamton +29,38,MFP Millport,48,MFP Salvation Army Ithaca +30,65,MFP Rathbone,67,MFP The Love Church +31,30,MFP College Ithaca College,36,MFP College TC3 -College +32,51,MFP Woodhull,62,MFP Rehoboth Deliverance Ministry +33,34,MFP Saint Mary Recreation Center,45,MFP Deposit +34,31,MFP Lamphear Court,44,MFP Conklin- Maines Community Center +35,35,MFP College Corning Community College,49,MFP Campbell +36,50,MFP Boys and Girls Club,68,MFP Endwell United Methodist Church +37,60,MFP Redeemer Lutheran Church,70,MFP Waverly +38,29,MFP Senior - CFS Lakeview,47,MFP Lansing +39,33,MFP Danby,64,MFP Richford +40,43,MFP Canisteo,53,MFP Tuscarora +41,40,MFP Birnie Transportation Services,55,MFP Wayland +42,52,MFP Owego VFW,59,MFP Whitney Point +43,28,MFP Troupsburg,69,MFP Avoca +44,46,MFP Erin,67,MFP The Love Church +45,54,MFP Van Etten,61,MFP Lindley +46,51,MFP Woodhull,66,MFP Bath +47,9,MFP Senior - Springview Apartments,10,MFP Senior - Addison Place Apartments +48,23,MFP Senior - Flannery,39,MFP Beaver Dams +49,4,MFP Senior - Wells Apartments,32,MFP Bradford +50,24,MFP Senior - Titus Towers,68,MFP Endwell United Methodist Church +51,19,MFP Senior - Metro Plaza Apartments,41,MFP Prattsburgh +52,48,MFP Salvation Army Ithaca,63,MFP Colesville +53,42,MFP First Assembly Of God Church,56,MFP Reach for Christ Church Freeville +54,57,MFP American Legion - Binghamton,58,MFP Windsor +55,40,MFP Birnie Transportation Services,70,MFP Waverly +56,26,MFP Senior - Dayspring,45,MFP Deposit +57,37,MFP Montour Falls-Schuyler County Human Services Complex,55,MFP Wayland +58,22,MFP Senior - Corning Senior Center,65,MFP Rathbone +59,11,MFP Senior - Conifer Village,60,MFP Redeemer Lutheran Church +60,21,MFP Nichols-The Creamery,36,MFP College TC3 -College +61,28,MFP Troupsburg,46,MFP Erin +62,44,MFP Conklin- Maines Community Center,64,MFP Richford +63,27,MFP Schuyler Outreach,38,MFP Millport +64,1,MFP Senior - Woodsedge Apartments,50,MFP Boys and Girls Club +65,19,MFP Senior - Metro Plaza Apartments,25,MFP Senior - Villa Serene +66,49,MFP Campbell,59,MFP Whitney Point +67,61,MFP Lindley,66,MFP Bath +68,53,MFP Tuscarora,54,MFP Van Etten +69,51,MFP Woodhull,70,MFP Waverly +70,3,MFP Senior - Cayuga Meadows,20,MFP Senior - Bragg +71,35,MFP College Corning Community College,47,MFP Lansing +72,30,MFP College Ithaca College,34,MFP Saint Mary Recreation Center +73,52,MFP Owego VFW,67,MFP The Love Church +74,31,MFP Lamphear Court,33,MFP Danby +75,29,MFP Senior - CFS Lakeview,57,MFP American Legion - Binghamton +76,13,"MFP Senior - Elizabeth Square, Waverly",68,MFP Endwell United Methodist Church +77,43,MFP Canisteo,63,MFP Colesville +78,41,MFP Prattsburgh,56,MFP Reach for Christ Church Freeville +79,42,MFP First Assembly Of God Church,55,MFP Wayland +80,22,MFP Senior - Corning Senior Center,60,MFP Redeemer Lutheran Church +81,5,MFP Senior - Lincoln Court,61,MFP Lindley +82,32,MFP Bradford,48,MFP Salvation Army Ithaca +83,39,MFP Beaver Dams,70,MFP Waverly +84,36,MFP College TC3 -College,54,MFP Van Etten +85,19,MFP Senior - Metro Plaza Apartments,65,MFP Rathbone +86,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",24,MFP Senior - Titus Towers +87,47,MFP Lansing,64,MFP Richford +88,40,MFP Birnie Transportation Services,62,MFP Rehoboth Deliverance Ministry +89,58,MFP Windsor,59,MFP Whitney Point +90,14,MFP Senior - North Shore Towers,66,MFP Bath +91,23,MFP Senior - Flannery,43,MFP Canisteo +92,50,MFP Boys and Girls Club,53,MFP Tuscarora +93,17,MFP Senior - East Hill Senior Living,46,MFP Erin +94,45,MFP Deposit,51,MFP Woodhull +95,44,MFP Conklin- Maines Community Center,61,MFP Lindley +96,38,MFP Millport,49,MFP Campbell +97,26,MFP Senior - Dayspring,70,MFP Waverly +98,10,MFP Senior - Addison Place Apartments,67,MFP The Love Church +99,9,MFP Senior - Springview Apartments,33,MFP Danby +100,12,MFP Senior - Carpenter Apartments,30,MFP College Ithaca College +101,8,MFP Senior - Jefferson Village,60,MFP Redeemer Lutheran Church +102,4,MFP Senior - Wells Apartments,68,MFP Endwell United Methodist Church +103,35,MFP College Corning Community College,37,MFP Montour Falls-Schuyler County Human Services Complex +104,21,MFP Nichols-The Creamery,52,MFP Owego VFW +105,27,MFP Schuyler Outreach,41,MFP Prattsburgh +106,42,MFP First Assembly Of God Church,63,MFP Colesville +107,29,MFP Senior - CFS Lakeview,34,MFP Saint Mary Recreation Center +108,31,MFP Lamphear Court,65,MFP Rathbone +109,7,MFP Senior - Ellis Hollow,62,MFP Rehoboth Deliverance Ministry +110,54,MFP Van Etten,55,MFP Wayland +111,64,MFP Richford,70,MFP Waverly +112,39,MFP Beaver Dams,48,MFP Salvation Army Ithaca +113,36,MFP College TC3 -College,66,MFP Bath +114,11,MFP Senior - Conifer Village,58,MFP Windsor +115,32,MFP Bradford,67,MFP The Love Church +116,20,MFP Senior - Bragg,59,MFP Whitney Point +117,9,MFP Senior - Springview Apartments,46,MFP Erin +118,47,MFP Lansing,53,MFP Tuscarora +119,15,MFP Senior - Village Square/Manor,50,MFP Boys and Girls Club +120,37,MFP Montour Falls-Schuyler County Human Services Complex,45,MFP Deposit +121,3,MFP Senior - Cayuga Meadows,25,MFP Senior - Villa Serene +122,38,MFP Millport,49,MFP Campbell +123,51,MFP Woodhull,61,MFP Lindley +124,65,MFP Rathbone,68,MFP Endwell United Methodist Church +125,22,MFP Senior - Corning Senior Center,70,MFP Waverly +126,55,MFP Wayland,69,MFP Avoca +127,27,MFP Schuyler Outreach,56,MFP Reach for Christ Church Freeville +128,23,MFP Senior - Flannery,33,MFP Danby +129,1,MFP Senior - Woodsedge Apartments,60,MFP Redeemer Lutheran Church +130,13,"MFP Senior - Elizabeth Square, Waverly",64,MFP Richford +131,5,MFP Senior - Lincoln Court,44,MFP Conklin- Maines Community Center +132,19,MFP Senior - Metro Plaza Apartments,57,MFP American Legion - Binghamton +133,42,MFP First Assembly Of God Church,54,MFP Van Etten +134,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",67,MFP The Love Church +135,17,MFP Senior - East Hill Senior Living,30,MFP College Ithaca College +136,35,MFP College Corning Community College,62,MFP Rehoboth Deliverance Ministry +137,26,MFP Senior - Dayspring,41,MFP Prattsburgh +138,6,MFP Senior - Park Terrace Congregate Apartments,63,MFP Colesville +139,40,MFP Birnie Transportation Services,70,MFP Waverly +140,52,MFP Owego VFW,69,MFP Avoca +141,7,MFP Senior - Ellis Hollow,14,MFP Senior - North Shore Towers +142,31,MFP Lamphear Court,39,MFP Beaver Dams +143,29,MFP Senior - CFS Lakeview,34,MFP Saint Mary Recreation Center +144,48,MFP Salvation Army Ithaca,61,MFP Lindley +145,21,MFP Nichols-The Creamery,47,MFP Lansing +146,23,MFP Senior - Flannery,46,MFP Erin +147,16,MFP Senior - Long Meadow Senior Housing,28,MFP Troupsburg +148,32,MFP Bradford,45,MFP Deposit +149,24,MFP Senior - Titus Towers,68,MFP Endwell United Methodist Church +150,49,MFP Campbell,58,MFP Windsor +151,10,MFP Senior - Addison Place Apartments,37,MFP Montour Falls-Schuyler County Human Services Complex +152,12,MFP Senior - Carpenter Apartments,64,MFP Richford +153,8,MFP Senior - Jefferson Village,70,MFP Waverly +154,36,MFP College TC3 -College,53,MFP Tuscarora +155,4,MFP Senior - Wells Apartments,43,MFP Canisteo +156,38,MFP Millport,69,MFP Avoca +157,39,MFP Beaver Dams,60,MFP Redeemer Lutheran Church +158,27,MFP Schuyler Outreach,50,MFP Boys and Girls Club +159,25,MFP Senior - Villa Serene,59,MFP Whitney Point +160,51,MFP Woodhull,56,MFP Reach for Christ Church Freeville +161,6,MFP Senior - Park Terrace Congregate Apartments,55,MFP Wayland +162,42,MFP First Assembly Of God Church,65,MFP Rathbone +163,22,MFP Senior - Corning Senior Center,67,MFP The Love Church +164,15,MFP Senior - Village Square/Manor,33,MFP Danby +165,57,MFP American Legion - Binghamton,66,MFP Bath +166,13,"MFP Senior - Elizabeth Square, Waverly",20,MFP Senior - Bragg +167,11,MFP Senior - Conifer Village,70,MFP Waverly +168,30,MFP College Ithaca College,44,MFP Conklin- Maines Community Center +169,40,MFP Birnie Transportation Services,64,MFP Richford +170,9,MFP Senior - Springview Apartments,54,MFP Van Etten +171,41,MFP Prattsburgh,52,MFP Owego VFW +172,35,MFP College Corning Community College,46,MFP Erin +173,26,MFP Senior - Dayspring,62,MFP Rehoboth Deliverance Ministry +174,63,MFP Colesville,68,MFP Endwell United Methodist Church +175,47,MFP Lansing,61,MFP Lindley +176,29,MFP Senior - CFS Lakeview,39,MFP Beaver Dams +177,32,MFP Bradford,69,MFP Avoca +178,31,MFP Lamphear Court,45,MFP Deposit +179,5,MFP Senior - Lincoln Court,19,MFP Senior - Metro Plaza Apartments +180,49,MFP Campbell,58,MFP Windsor +181,28,MFP Troupsburg,43,MFP Canisteo +182,50,MFP Boys and Girls Club,67,MFP The Love Church +183,17,MFP Senior - East Hill Senior Living,60,MFP Redeemer Lutheran Church +184,16,MFP Senior - Long Meadow Senior Housing,37,MFP Montour Falls-Schuyler County Human Services Complex +185,23,MFP Senior - Flannery,70,MFP Waverly +186,21,MFP Nichols-The Creamery,59,MFP Whitney Point +187,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",38,MFP Millport +188,34,MFP Saint Mary Recreation Center,53,MFP Tuscarora +189,15,MFP Senior - Village Square/Manor,42,MFP First Assembly Of God Church +190,48,MFP Salvation Army Ithaca,57,MFP American Legion - Binghamton +191,51,MFP Woodhull,66,MFP Bath +192,55,MFP Wayland,65,MFP Rathbone +193,1,MFP Senior - Woodsedge Apartments,62,MFP Rehoboth Deliverance Ministry +194,14,MFP Senior - North Shore Towers,56,MFP Reach for Christ Church Freeville +195,7,MFP Senior - Ellis Hollow,24,MFP Senior - Titus Towers +196,44,MFP Conklin- Maines Community Center,68,MFP Endwell United Methodist Church +197,33,MFP Danby,69,MFP Avoca +198,22,MFP Senior - Corning Senior Center,63,MFP Colesville +199,27,MFP Schuyler Outreach,52,MFP Owego VFW +200,46,MFP Erin,54,MFP Van Etten +201,30,MFP College Ithaca College,35,MFP College Corning Community College +202,8,MFP Senior - Jefferson Village,12,MFP Senior - Carpenter Apartments +203,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",25,MFP Senior - Villa Serene +204,2,MFP Senior - Harry L Apartments,3,MFP Senior - Cayuga Meadows +205,47,MFP Lansing,70,MFP Waverly +206,36,MFP College TC3 -College,50,MFP Boys and Girls Club +207,29,MFP Senior - CFS Lakeview,40,MFP Birnie Transportation Services +208,4,MFP Senior - Wells Apartments,48,MFP Salvation Army Ithaca +209,14,MFP Senior - North Shore Towers,67,MFP The Love Church +210,43,MFP Canisteo,64,MFP Richford +211,10,MFP Senior - Addison Place Apartments,20,MFP Senior - Bragg +212,45,MFP Deposit,61,MFP Lindley +213,7,MFP Senior - Ellis Hollow,41,MFP Prattsburgh +214,32,MFP Bradford,66,MFP Bath +215,13,"MFP Senior - Elizabeth Square, Waverly",65,MFP Rathbone +216,26,MFP Senior - Dayspring,31,MFP Lamphear Court +217,11,MFP Senior - Conifer Village,28,MFP Troupsburg +218,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",25,MFP Senior - Villa Serene +219,53,MFP Tuscarora,55,MFP Wayland +220,49,MFP Campbell,57,MFP American Legion - Binghamton +221,9,MFP Senior - Springview Apartments,69,MFP Avoca +222,51,MFP Woodhull,58,MFP Windsor +223,42,MFP First Assembly Of God Church,59,MFP Whitney Point +224,37,MFP Montour Falls-Schuyler County Human Services Complex,56,MFP Reach for Christ Church Freeville +225,62,MFP Rehoboth Deliverance Ministry,68,MFP Endwell United Methodist Church +226,34,MFP Saint Mary Recreation Center,44,MFP Conklin- Maines Community Center +227,38,MFP Millport,63,MFP Colesville +228,4,MFP Senior - Wells Apartments,16,MFP Senior - Long Meadow Senior Housing +229,6,MFP Senior - Park Terrace Congregate Apartments,14,MFP Senior - North Shore Towers +230,52,MFP Owego VFW,64,MFP Richford +231,5,MFP Senior - Lincoln Court,24,MFP Senior - Titus Towers +232,19,MFP Senior - Metro Plaza Apartments,23,MFP Senior - Flannery +233,21,MFP Nichols-The Creamery,32,MFP Bradford +234,2,MFP Senior - Harry L Apartments,39,MFP Beaver Dams +235,15,MFP Senior - Village Square/Manor,46,MFP Erin +236,30,MFP College Ithaca College,43,MFP Canisteo +237,35,MFP College Corning Community College,60,MFP Redeemer Lutheran Church +238,40,MFP Birnie Transportation Services,47,MFP Lansing +239,27,MFP Schuyler Outreach,66,MFP Bath +240,50,MFP Boys and Girls Club,61,MFP Lindley +241,22,MFP Senior - Corning Senior Center,65,MFP Rathbone +242,59,MFP Whitney Point,69,MFP Avoca +243,17,MFP Senior - East Hill Senior Living,25,MFP Senior - Villa Serene +244,20,MFP Senior - Bragg,33,MFP Danby +245,36,MFP College TC3 -College,45,MFP Deposit +246,49,MFP Campbell,58,MFP Windsor +247,16,MFP Senior - Long Meadow Senior Housing,41,MFP Prattsburgh +248,26,MFP Senior - Dayspring,32,MFP Bradford +249,15,MFP Senior - Village Square/Manor,29,MFP Senior - CFS Lakeview +250,8,MFP Senior - Jefferson Village,57,MFP American Legion - Binghamton +251,31,MFP Lamphear Court,60,MFP Redeemer Lutheran Church +252,54,MFP Van Etten,67,MFP The Love Church +253,28,MFP Troupsburg,55,MFP Wayland +254,12,MFP Senior - Carpenter Apartments,62,MFP Rehoboth Deliverance Ministry +255,63,MFP Colesville,68,MFP Endwell United Methodist Church +256,3,MFP Senior - Cayuga Meadows,56,MFP Reach for Christ Church Freeville +257,17,MFP Senior - East Hill Senior Living,69,MFP Avoca +258,7,MFP Senior - Ellis Hollow,47,MFP Lansing +259,34,MFP Saint Mary Recreation Center,48,MFP Salvation Army Ithaca +260,1,MFP Senior - Woodsedge Apartments,42,MFP First Assembly Of God Church +261,52,MFP Owego VFW,66,MFP Bath +262,11,MFP Senior - Conifer Village,64,MFP Richford +263,10,MFP Senior - Addison Place Apartments,39,MFP Beaver Dams +264,30,MFP College Ithaca College,53,MFP Tuscarora +265,13,"MFP Senior - Elizabeth Square, Waverly",46,MFP Erin +266,15,MFP Senior - Village Square/Manor,40,MFP Birnie Transportation Services +267,35,MFP College Corning Community College,43,MFP Canisteo +268,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",65,MFP Rathbone +269,24,MFP Senior - Titus Towers,59,MFP Whitney Point +270,21,MFP Nichols-The Creamery,44,MFP Conklin- Maines Community Center +271,61,MFP Lindley,70,MFP Waverly +272,23,MFP Senior - Flannery,50,MFP Boys and Girls Club +273,60,MFP Redeemer Lutheran Church,67,MFP The Love Church +274,19,MFP Senior - Metro Plaza Apartments,27,MFP Schuyler Outreach +275,38,MFP Millport,49,MFP Campbell +276,37,MFP Montour Falls-Schuyler County Human Services Complex,51,MFP Woodhull +277,48,MFP Salvation Army Ithaca,68,MFP Endwell United Methodist Church +278,5,MFP Senior - Lincoln Court,45,MFP Deposit +279,6,MFP Senior - Park Terrace Congregate Apartments,69,MFP Avoca +280,36,MFP College TC3 -College,57,MFP American Legion - Binghamton +281,4,MFP Senior - Wells Apartments,55,MFP Wayland +282,14,MFP Senior - North Shore Towers,22,MFP Senior - Corning Senior Center +283,2,MFP Senior - Harry L Apartments,62,MFP Rehoboth Deliverance Ministry +284,58,MFP Windsor,66,MFP Bath +285,29,MFP Senior - CFS Lakeview,41,MFP Prattsburgh +286,54,MFP Van Etten,56,MFP Reach for Christ Church Freeville +287,64,MFP Richford,70,MFP Waverly +288,25,MFP Senior - Villa Serene,33,MFP Danby +289,28,MFP Troupsburg,63,MFP Colesville +290,7,MFP Senior - Ellis Hollow,61,MFP Lindley +291,20,MFP Senior - Bragg,32,MFP Bradford +292,16,MFP Senior - Long Meadow Senior Housing,52,MFP Owego VFW +293,26,MFP Senior - Dayspring,42,MFP First Assembly Of God Church +294,17,MFP Senior - East Hill Senior Living,43,MFP Canisteo +295,53,MFP Tuscarora,60,MFP Redeemer Lutheran Church +296,35,MFP College Corning Community College,67,MFP The Love Church +297,9,MFP Senior - Springview Apartments,39,MFP Beaver Dams +298,8,MFP Senior - Jefferson Village,50,MFP Boys and Girls Club +299,31,MFP Lamphear Court,40,MFP Birnie Transportation Services +300,12,MFP Senior - Carpenter Apartments,65,MFP Rathbone +301,44,MFP Conklin- Maines Community Center,68,MFP Endwell United Methodist Church +302,34,MFP Saint Mary Recreation Center,66,MFP Bath +303,18,"MFP Senior - Northern Broome Senior Center, Whitney Point",59,MFP Whitney Point +304,21,MFP Nichols-The Creamery,69,MFP Avoca +305,37,MFP Montour Falls-Schuyler County Human Services Complex,38,MFP Millport +306,30,MFP College Ithaca College,62,MFP Rehoboth Deliverance Ministry +307,48,MFP Salvation Army Ithaca,70,MFP Waverly +308,45,MFP Deposit,57,MFP American Legion - Binghamton +309,15,MFP Senior - Village Square/Manor,49,MFP Campbell +310,55,MFP Wayland,64,MFP Richford +311,41,MFP Prattsburgh,51,MFP Woodhull +312,3,MFP Senior - Cayuga Meadows,13,"MFP Senior - Elizabeth Square, Waverly" +313,46,MFP Erin,47,MFP Lansing +314,10,MFP Senior - Addison Place Apartments,27,MFP Schuyler Outreach +315,11,MFP Senior - Conifer Village,63,MFP Colesville +316,6,MFP Senior - Park Terrace Congregate Apartments,29,MFP Senior - CFS Lakeview +317,23,MFP Senior - Flannery,24,MFP Senior - Titus Towers +318,17,MFP Senior - East Hill Senior Living,69,MFP Avoca +319,56,MFP Reach for Christ Church Freeville,61,MFP Lindley +320,19,MFP Senior - Metro Plaza Apartments,54,MFP Van Etten +321,58,MFP Windsor,67,MFP The Love Church +322,22,MFP Senior - Corning Senior Center,53,MFP Tuscarora +323,31,MFP Lamphear Court,66,MFP Bath +324,1,MFP Senior - Woodsedge Apartments,52,MFP Owego VFW +325,2,MFP Senior - Harry L Apartments,33,MFP Danby +326,43,MFP Canisteo,65,MFP Rathbone +327,60,MFP Redeemer Lutheran Church,70,MFP Waverly +328,28,MFP Troupsburg,32,MFP Bradford +329,25,MFP Senior - Villa Serene,59,MFP Whitney Point +330,5,MFP Senior - Lincoln Court,20,MFP Senior - Bragg +331,44,MFP Conklin- Maines Community Center,50,MFP Boys and Girls Club +332,26,MFP Senior - Dayspring,40,MFP Birnie Transportation Services +333,39,MFP Beaver Dams,68,MFP Endwell United Methodist Church +334,4,MFP Senior - Wells Apartments,62,MFP Rehoboth Deliverance Ministry +335,36,MFP College TC3 -College,42,MFP First Assembly Of God Church +336,16,MFP Senior - Long Meadow Senior Housing,35,MFP College Corning Community College +337,6,MFP Senior - Park Terrace Congregate Apartments,57,MFP American Legion - Binghamton +338,34,MFP Saint Mary Recreation Center,48,MFP Salvation Army Ithaca +339,8,MFP Senior - Jefferson Village,38,MFP Millport +340,49,MFP Campbell,69,MFP Avoca +341,37,MFP Montour Falls-Schuyler County Human Services Complex,45,MFP Deposit +342,30,MFP College Ithaca College,51,MFP Woodhull +343,21,MFP Nichols-The Creamery,66,MFP Bath +344,46,MFP Erin,64,MFP Richford +345,7,MFP Senior - Ellis Hollow,41,MFP Prattsburgh +346,54,MFP Van Etten,63,MFP Colesville +347,47,MFP Lansing,67,MFP The Love Church +348,56,MFP Reach for Christ Church Freeville,61,MFP Lindley +349,2,MFP Senior - Harry L Apartments,18,"MFP Senior - Northern Broome Senior Center, Whitney Point" +350,16,MFP Senior - Long Meadow Senior Housing,70,MFP Waverly +351,9,MFP Senior - Springview Apartments,12,MFP Senior - Carpenter Apartments +352,58,MFP Windsor,65,MFP Rathbone +353,31,MFP Lamphear Court,53,MFP Tuscarora +354,14,MFP Senior - North Shore Towers,24,MFP Senior - Titus Towers +355,8,MFP Senior - Jefferson Village,15,MFP Senior - Village Square/Manor +356,23,MFP Senior - Flannery,59,MFP Whitney Point +357,62,MFP Rehoboth Deliverance Ministry,68,MFP Endwell United Methodist Church +358,5,MFP Senior - Lincoln Court,44,MFP Conklin- Maines Community Center +359,6,MFP Senior - Park Terrace Congregate Apartments,33,MFP Danby +360,34,MFP Saint Mary Recreation Center,36,MFP College TC3 -College +361,29,MFP Senior - CFS Lakeview,69,MFP Avoca +362,17,MFP Senior - East Hill Senior Living,66,MFP Bath +363,3,MFP Senior - Cayuga Meadows,10,MFP Senior - Addison Place Apartments +364,16,MFP Senior - Long Meadow Senior Housing,28,MFP Troupsburg +365,2,MFP Senior - Harry L Apartments,12,MFP Senior - Carpenter Apartments diff --git a/data/site_visits_kmin6.8_gap14.csv b/data/site_visits_kmin6.8_gap14.csv new file mode 100644 index 0000000..755f33d --- /dev/null +++ b/data/site_visits_kmin6.8_gap14.csv @@ -0,0 +1,71 @@ +site_idx,site_name,f_i,visit_days,gaps,min_gap,avg_gap +1,MFP Senior - Woodsedge Apartments,6,10;64;129;193;260;324,54;65;64;67;64,54,62.8 +2,MFP Senior - Harry L Apartments,6,204;234;283;325;349;365,30;49;42;24;16,16,32.2 +3,MFP Senior - Cayuga Meadows,7,18;70;121;204;256;312;363,52;51;83;52;56;51,51,57.5 +4,MFP Senior - Wells Apartments,7,49;102;155;208;228;281;334,53;53;53;20;53;53,20,47.5 +5,MFP Senior - Lincoln Court,7,81;131;179;231;278;330;358,50;48;52;47;52;28,28,46.166666666666664 +6,MFP Senior - Park Terrace Congregate Apartments,7,138;161;229;279;316;337;359,23;68;50;37;21;22,21,36.833333333333336 +7,MFP Senior - Ellis Hollow,7,109;141;195;213;258;290;345,32;54;18;45;32;55,18,39.333333333333336 +8,MFP Senior - Jefferson Village,7,101;153;202;250;298;339;355,52;49;48;48;41;16,16,42.333333333333336 +9,MFP Senior - Springview Apartments,7,47;99;117;170;221;297;351,52;18;53;51;76;54,18,50.666666666666664 +10,MFP Senior - Addison Place Apartments,7,47;98;151;211;263;314;363,51;53;60;52;51;49,49,52.666666666666664 +11,MFP Senior - Conifer Village,7,9;59;114;167;217;262;315,50;55;53;50;45;53,45,51.0 +12,MFP Senior - Carpenter Apartments,7,100;152;202;254;300;351;365,52;50;52;46;51;14,14,44.166666666666664 +13,"MFP Senior - Elizabeth Square, Waverly",7,17;76;130;166;215;265;312,59;54;36;49;50;47,36,49.166666666666664 +14,MFP Senior - North Shore Towers,7,90;141;194;209;229;282;354,51;53;15;20;53;72,15,44.0 +15,MFP Senior - Village Square/Manor,8,119;164;189;235;249;266;309;355,45;25;46;14;17;43;46,14,33.714285714285715 +16,MFP Senior - Long Meadow Senior Housing,8,147;184;228;247;292;336;350;364,37;44;19;45;44;14;14,14,31.0 +17,MFP Senior - East Hill Senior Living,8,93;135;183;243;257;294;318;362,42;48;60;14;37;24;44,14,38.42857142857143 +18,"MFP Senior - Northern Broome Senior Center, Whitney Point",8,86;134;187;203;218;268;303;349,48;53;16;15;50;35;46,15,37.57142857142857 +19,MFP Senior - Metro Plaza Apartments,8,51;65;85;132;179;232;274;320,14;20;47;47;53;42;46,14,38.42857142857143 +20,MFP Senior - Bragg,8,26;70;116;166;211;244;291;330,44;46;50;45;33;47;39,33,43.42857142857143 +21,MFP Nichols-The Creamery,9,23;60;104;145;186;233;270;304;343,37;44;41;41;47;37;34;39,34,40.0 +22,MFP Senior - Corning Senior Center,9,19;58;80;125;163;198;241;282;322,39;22;45;38;35;43;41;40,22,37.875 +23,MFP Senior - Flannery,9,48;91;128;146;185;232;272;317;356,43;37;18;39;47;40;45;39,18,38.5 +24,MFP Senior - Titus Towers,9,12;50;86;149;195;231;269;317;354,38;36;63;46;36;38;48;37,36,42.75 +25,MFP Senior - Villa Serene,9,25;65;121;159;203;218;243;288;329,40;56;38;44;15;25;45;41,15,38.0 +26,MFP Senior - Dayspring,9,16;56;97;137;173;216;248;293;332,40;41;40;36;43;32;45;39,32,39.5 +27,MFP Schuyler Outreach,9,24;63;105;127;158;199;239;274;314,39;42;22;31;41;40;35;40,22,36.25 +28,MFP Troupsburg,10,7;43;61;147;181;217;253;289;328;364,36;18;86;34;36;36;36;39;36,18,39.666666666666664 +29,MFP Senior - CFS Lakeview,10,38;75;107;143;176;207;249;285;316;361,37;32;36;33;31;42;36;31;45,31,35.888888888888886 +30,MFP College Ithaca College,10,31;72;100;135;168;201;236;264;306;342,41;28;35;33;33;35;28;42;36,28,34.55555555555556 +31,MFP Lamphear Court,10,34;74;108;142;178;216;251;299;323;353,40;34;34;36;38;35;48;24;30,24,35.44444444444444 +32,MFP Bradford,10,49;82;115;148;177;214;233;248;291;328,33;33;33;29;37;19;15;43;37,15,31.0 +33,MFP Danby,11,7;39;74;99;128;164;197;244;288;325;359,32;35;25;29;36;33;47;44;37;34,25,35.2 +34,MFP Saint Mary Recreation Center,11,2;33;72;107;143;188;226;259;302;338;360,31;39;35;36;45;38;33;43;36;22,22,35.8 +35,MFP College Corning Community College,11,2;35;71;103;136;172;201;237;267;296;336,33;36;32;33;36;29;36;30;29;40,29,33.4 +36,MFP College TC3 -College,11,3;31;60;84;113;154;206;245;280;335;360,28;29;24;29;41;52;39;35;55;25,24,35.7 +37,MFP Montour Falls-Schuyler County Human Services Complex,11,8;23;57;103;120;151;184;224;276;305;341,15;34;46;17;31;33;40;52;29;36,15,33.3 +38,MFP Millport,11,14;29;63;96;122;156;187;227;275;305;339,15;34;33;26;34;31;40;48;30;34,15,32.5 +39,MFP Beaver Dams,11,20;48;83;112;142;157;176;234;263;297;333,28;35;29;30;15;19;58;29;34;36,15,31.3 +40,MFP Birnie Transportation Services,11,8;41;55;88;139;169;207;238;266;299;332,33;14;33;51;30;38;31;28;33;33,14,32.4 +41,MFP Prattsburgh,11,16;51;78;105;137;171;213;247;285;311;345,35;27;27;32;34;42;34;38;26;34,26,32.9 +42,MFP First Assembly Of God Church,11,21;53;79;106;133;162;189;223;260;293;335,32;26;27;27;29;27;34;37;33;42,26,31.4 +43,MFP Canisteo,11,22;40;77;91;155;181;210;236;267;294;326,18;37;14;64;26;29;26;31;27;32,14,30.4 +44,MFP Conklin- Maines Community Center,12,13;34;62;95;131;168;196;226;270;301;331;358,21;28;33;36;37;28;30;44;31;30;27,21,31.363636363636363 +45,MFP Deposit,12,5;33;56;94;120;148;178;212;245;278;308;341,28;23;38;26;28;30;34;33;33;30;33,23,30.545454545454547 +46,MFP Erin,12,28;44;61;93;117;146;172;200;235;265;313;344,16;17;32;24;29;26;28;35;30;48;31,16,28.727272727272727 +47,MFP Lansing,12,21;38;71;87;118;145;175;205;238;258;313;347,17;33;16;31;27;30;30;33;20;55;34,16,29.636363636363637 +48,MFP Salvation Army Ithaca,12,15;29;52;82;112;144;190;208;259;277;307;338,14;23;30;30;32;46;18;51;18;30;31,14,29.363636363636363 +49,MFP Campbell,12,10;35;66;96;122;150;180;220;246;275;309;340,25;31;30;26;28;30;40;26;29;34;31,25,30.0 +50,MFP Boys and Girls Club,12,6;36;64;92;119;158;182;206;240;272;298;331,30;28;28;27;39;24;24;34;32;26;33,24,29.545454545454547 +51,MFP Woodhull,12,4;32;46;69;94;123;160;191;222;276;311;342,28;14;23;25;29;37;31;31;54;35;31,14,30.727272727272727 +52,MFP Owego VFW,12,3;26;42;73;104;140;171;199;230;261;292;324,23;16;31;31;36;31;28;31;31;31;32,16,29.181818181818183 +53,MFP Tuscarora,12,14;40;68;92;118;154;188;219;264;295;322;353,26;28;24;26;36;34;31;45;31;27;31,24,30.818181818181817 +54,MFP Van Etten,12,15;45;68;84;110;133;170;200;252;286;320;346,30;23;16;26;23;37;30;52;34;34;26,16,30.09090909090909 +55,MFP Wayland,12,20;41;57;79;110;126;161;192;219;253;281;310,21;16;22;31;16;35;31;27;34;28;29,16,26.363636363636363 +56,MFP Reach for Christ Church Freeville,12,6;24;53;78;127;160;194;224;256;286;319;348,18;29;25;49;33;34;30;32;30;33;29,18,31.09090909090909 +57,MFP American Legion - Binghamton,12,5;28;54;75;132;165;190;220;250;280;308;337,23;26;21;57;33;25;30;30;30;28;29,21,30.181818181818183 +58,MFP Windsor,12,1;27;54;89;114;150;180;222;246;284;321;352,26;27;35;25;36;30;42;24;38;37;31,24,31.90909090909091 +59,MFP Whitney Point,13,13;42;66;89;116;159;186;223;242;269;303;329;356,29;24;23;27;43;27;37;19;27;34;26;27,19,28.583333333333332 +60,MFP Redeemer Lutheran Church,13,17;37;59;80;101;129;157;183;237;251;273;295;327,20;22;21;21;28;28;26;54;14;22;22;32,14,25.833333333333332 +61,MFP Lindley,13,45;67;81;95;123;144;175;212;240;271;290;319;348,22;14;14;28;21;31;37;28;31;19;29;29,14,25.25 +62,MFP Rehoboth Deliverance Ministry,13,11;32;88;109;136;173;193;225;254;283;306;334;357,21;56;21;27;37;20;32;29;29;23;28;23,20,28.833333333333332 +63,MFP Colesville,13,4;27;52;77;106;138;174;198;227;255;289;315;346,23;25;25;29;32;36;24;29;28;34;26;31,23,28.5 +64,MFP Richford,14,12;39;62;87;111;130;152;169;210;230;262;287;310;344,27;23;25;24;19;22;17;41;20;32;25;23;34,17,25.53846153846154 +65,MFP Rathbone,14,9;30;58;85;108;124;162;192;215;241;268;300;326;352,21;28;27;23;16;38;30;23;26;27;32;26;26,16,26.384615384615383 +66,MFP Bath,15,22;46;67;90;113;165;191;214;239;261;284;302;323;343;362,24;21;23;23;52;26;23;25;22;23;18;21;20;19,18,24.285714285714285 +67,MFP The Love Church,15,11;30;44;73;98;115;134;163;182;209;252;273;296;321;347,19;14;29;25;17;19;29;19;27;43;21;23;25;26,14,24.0 +68,MFP Endwell United Methodist Church,15,18;36;50;76;102;124;149;174;196;225;255;277;301;333;357,18;14;26;26;22;25;25;22;29;30;22;24;32;24,14,24.214285714285715 +69,MFP Avoca,16,1;25;43;126;140;156;177;197;221;242;257;279;304;318;340;361,24;18;83;14;16;21;20;24;21;15;22;25;14;22;21,14,24.0 +70,MFP Waverly,18,19;37;55;69;83;97;111;125;139;153;167;185;205;271;287;307;327;350,18;18;14;14;14;14;14;14;14;14;18;20;66;16;20;20;23,14,19.470588235294116 diff --git a/kmin_effectiveness.py b/kmin_effectiveness.py index 94428dc..987fab6 100644 --- a/kmin_effectiveness.py +++ b/kmin_effectiveness.py @@ -24,11 +24,11 @@ except ModuleNotFoundError: # 参数 C_OPT = 250 -N_TOTAL = 722 -ALPHA = 0.5 +N_TOTAL = 730 +ALPHA = 0.6 BETA = 0.2 N_SIMS = 2000 -RANDOM_SEED = 42 +RANDOM_SEED = 606 OUTPUT_DIR = "data" diff --git a/scheduling_optimization.py b/scheduling_optimization.py new file mode 100644 index 0000000..fc03079 --- /dev/null +++ b/scheduling_optimization.py @@ -0,0 +1,295 @@ +""" +Scheduling Optimization (CP-SAT) + +Goal: +- Given required visit frequencies f_i for each site i, create a 365-day schedule + with at most 2 visits per day, and visits per site spaced as regularly as possible. + +Defaults match the current repo setup: +- Days T = 365, daily capacity = 2, Gap_min = 14 days +- Frequencies are read from `data/kmin_effectiveness_data.csv` (columns visits_01..visits_N) + using the selection rule: first row where gini_eff < 0.2, otherwise best effectiveness. + +Outputs (written to data/): +- schedule_optimized_kminX.X_gap14.csv (wide per-day table, 2 slots) +- schedule_long_kminX.X_gap14.csv (long table, one row per visit) +- site_visits_kminX.X_gap14.csv (per-site visit days and intervals) +""" + +from __future__ import annotations + +import argparse +import os +from dataclasses import dataclass +from typing import List, Optional, Tuple + +import pandas as pd + + +OUTPUT_DIR = "data" +DEFAULT_RESULTS_CSV = os.path.join(OUTPUT_DIR, "kmin_effectiveness_data.csv") +DEFAULT_SITES_CSV = os.path.join(OUTPUT_DIR, "kmin_effectiveness_sites.csv") + + +@dataclass(frozen=True) +class SchedulingInputs: + days: int + daily_capacity: int + gap_min: int + k_min: float + site_names: List[str] + frequencies: List[int] + + +def _select_kmin_row(df: pd.DataFrame, k_min: Optional[float]) -> Tuple[float, pd.Series]: + if k_min is not None: + idx = (df["k_min"] - float(k_min)).abs().idxmin() + row = df.loc[idx] + return float(row["k_min"]), row + + candidates = df.loc[df["gini_eff"] < 0.2] + if len(candidates) > 0: + row = candidates.iloc[0] + return float(row["k_min"]), row + + idx = df["effectiveness"].idxmax() + row = df.loc[idx] + return float(row["k_min"]), row + + +def load_inputs( + *, + results_csv: str = DEFAULT_RESULTS_CSV, + sites_csv: str = DEFAULT_SITES_CSV, + days: int = 365, + daily_capacity: int = 2, + gap_min: int = 14, + k_min: Optional[float] = None, +) -> SchedulingInputs: + df_results = pd.read_csv(results_csv) + selected_k, row = _select_kmin_row(df_results, k_min) + + visit_cols = [c for c in df_results.columns if c.startswith("visits_")] + if not visit_cols: + raise ValueError(f"No visits_* columns found in {results_csv}") + + freqs = [int(row[c]) for c in visit_cols] + if any(f < 0 for f in freqs): + raise ValueError("Frequencies must be non-negative") + + df_sites = pd.read_csv(sites_csv) + # site_idx in files is 1-based, and matches visits_01.. ordering. + df_sites = df_sites.sort_values("site_idx") + site_names = df_sites["site_name"].astype(str).tolist() + if len(site_names) != len(freqs): + raise ValueError( + f"Site count mismatch: {len(site_names)} sites in {sites_csv}, {len(freqs)} frequencies in {results_csv}" + ) + + if days <= 0: + raise ValueError("days must be > 0") + if daily_capacity <= 0: + raise ValueError("daily_capacity must be > 0") + if gap_min < 1: + raise ValueError("gap_min must be >= 1") + + for i, f in enumerate(freqs, start=1): + if f >= 2 and gap_min * (f - 1) > (days - 1): + raise ValueError( + f"Infeasible for site {i}: f_i={f} with gap_min={gap_min} does not fit in {days} days." + ) + + return SchedulingInputs( + days=days, + daily_capacity=daily_capacity, + gap_min=gap_min, + k_min=selected_k, + site_names=site_names, + frequencies=freqs, + ) + + +def solve_schedule_cp_sat( + inputs: SchedulingInputs, + *, + time_limit_s: float = 60.0, + num_workers: Optional[int] = None, +) -> List[Tuple[int, int]]: + """ + Returns a list of (day, site_idx) visits, where day is 0-based and site_idx is 1-based. + """ + try: + from ortools.sat.python import cp_model + except ModuleNotFoundError as e: + raise RuntimeError( + "Missing dependency: ortools. Install with `pip install ortools` and rerun." + ) from e + + days = inputs.days + cap = inputs.daily_capacity + gap_min = inputs.gap_min + freqs = inputs.frequencies + + model = cp_model.CpModel() + + all_intervals = [] + visit_starts: List[List[cp_model.IntVar]] = [] + + for site_idx_1based, f_i in enumerate(freqs, start=1): + starts_i: List[cp_model.IntVar] = [] + for k in range(f_i): + start = model.NewIntVar(0, days - 1, f"s_{site_idx_1based}_{k}") + end = model.NewIntVar(1, days, f"e_{site_idx_1based}_{k}") + model.Add(end == start + 1) + interval = model.NewIntervalVar(start, 1, end, f"iv_{site_idx_1based}_{k}") + all_intervals.append(interval) + starts_i.append(start) + for k in range(f_i - 1): + model.Add(starts_i[k + 1] >= starts_i[k] + gap_min) + visit_starts.append(starts_i) + + # At most 2 trucks per day (each visit is a 1-day interval, demand=1). + model.AddCumulative(all_intervals, [1] * len(all_intervals), cap) + + # Objective: minimize total absolute deviation from ideal gap (days / f_i). + objective_terms = [] + for site_idx_1based, f_i in enumerate(freqs, start=1): + if f_i < 2: + continue + target_scaled = int(round((days * 100.0) / f_i)) + starts_i = visit_starts[site_idx_1based - 1] + for k in range(f_i - 1): + gap = model.NewIntVar(gap_min, days - 1, f"gap_{site_idx_1based}_{k}") + model.Add(gap == starts_i[k + 1] - starts_i[k]) + + diff = model.NewIntVar(-(days * 100), days * 100, f"diff_{site_idx_1based}_{k}") + model.Add(diff == gap * 100 - target_scaled) + + dev = model.NewIntVar(0, days * 100, f"dev_{site_idx_1based}_{k}") + model.AddAbsEquality(dev, diff) + objective_terms.append(dev) + + model.Minimize(sum(objective_terms) if objective_terms else 0) + + solver = cp_model.CpSolver() + solver.parameters.max_time_in_seconds = float(time_limit_s) + if num_workers is not None: + solver.parameters.num_search_workers = int(num_workers) + + status = solver.Solve(model) + if status not in (cp_model.OPTIMAL, cp_model.FEASIBLE): + raise RuntimeError(f"No feasible schedule found (status={status}). Try relaxing constraints.") + + visits: List[Tuple[int, int]] = [] + for site_idx_1based, starts_i in enumerate(visit_starts, start=1): + for start in starts_i: + visits.append((int(solver.Value(start)), site_idx_1based)) + + return visits + + +def write_outputs( + inputs: SchedulingInputs, + visits: List[Tuple[int, int]], +) -> None: + os.makedirs(OUTPUT_DIR, exist_ok=True) + + k_tag = f"{inputs.k_min:.1f}" + stem = f"kmin{k_tag}_gap{inputs.gap_min}" + + # Wide per-day schedule (two slots). + day_to_sites = {d: [] for d in range(inputs.days)} + for day0, site_idx in visits: + day_to_sites[day0].append(site_idx) + for d in range(inputs.days): + day_to_sites[d].sort() + + wide_rows = [] + for day0 in range(inputs.days): + slots = day_to_sites[day0] + s1 = slots[0] if len(slots) > 0 else "" + s2 = slots[1] if len(slots) > 1 else "" + n1 = inputs.site_names[s1 - 1] if s1 else "" + n2 = inputs.site_names[s2 - 1] if s2 else "" + wide_rows.append( + { + "day": day0 + 1, + "site1_idx": s1, + "site1_name": n1, + "site2_idx": s2, + "site2_name": n2, + } + ) + pd.DataFrame(wide_rows).to_csv(os.path.join(OUTPUT_DIR, f"schedule_optimized_{stem}.csv"), index=False) + + # Long schedule (one row per visit). + long_rows = [] + for day0, site_idx in sorted(visits): + long_rows.append( + { + "day": day0 + 1, + "site_idx": site_idx, + "site_name": inputs.site_names[site_idx - 1], + } + ) + pd.DataFrame(long_rows).to_csv(os.path.join(OUTPUT_DIR, f"schedule_long_{stem}.csv"), index=False) + + # Per-site visit days and intervals. + site_rows = [] + per_site = {i: [] for i in range(1, len(inputs.site_names) + 1)} + for day0, site_idx in visits: + per_site[site_idx].append(day0 + 1) + for site_idx in per_site: + per_site[site_idx].sort() + + for site_idx, days_list in per_site.items(): + gaps = [b - a for a, b in zip(days_list, days_list[1:])] + site_rows.append( + { + "site_idx": site_idx, + "site_name": inputs.site_names[site_idx - 1], + "f_i": inputs.frequencies[site_idx - 1], + "visit_days": ";".join(map(str, days_list)), + "gaps": ";".join(map(str, gaps)), + "min_gap": min(gaps) if gaps else "", + "avg_gap": (sum(gaps) / len(gaps)) if gaps else "", + } + ) + pd.DataFrame(site_rows).to_csv(os.path.join(OUTPUT_DIR, f"site_visits_{stem}.csv"), index=False) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Optimize 365-day MFP schedule with CP-SAT.") + parser.add_argument("--results-csv", default=DEFAULT_RESULTS_CSV) + parser.add_argument("--sites-csv", default=DEFAULT_SITES_CSV) + parser.add_argument("--days", type=int, default=365) + parser.add_argument("--daily-capacity", type=int, default=2) + parser.add_argument("--gap-min", type=int, default=14) + parser.add_argument("--kmin", type=float, default=None, help="Pick the nearest k_min row from results CSV.") + parser.add_argument("--time-limit", type=float, default=60.0) + parser.add_argument("--workers", type=int, default=None) + args = parser.parse_args() + + inputs = load_inputs( + results_csv=args.results_csv, + sites_csv=args.sites_csv, + days=args.days, + daily_capacity=args.daily_capacity, + gap_min=args.gap_min, + k_min=args.kmin, + ) + + total_visits = sum(inputs.frequencies) + print( + f"Selected k_min={inputs.k_min:.1f}, sites={len(inputs.site_names)}, " + f"total_visits={total_visits}, capacity={inputs.days * inputs.daily_capacity}, gap_min={inputs.gap_min}" + ) + + visits = solve_schedule_cp_sat(inputs, time_limit_s=args.time_limit, num_workers=args.workers) + write_outputs(inputs, visits) + print(f"Saved schedule CSVs to `{OUTPUT_DIR}/` (k_min={inputs.k_min:.1f}).") + + +if __name__ == "__main__": + main() +