initial version
This commit is contained in:
commit
9e2003c5ef
3 files changed
+179
No files matched your search
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env ruby -w
|
||||
|
||||
require 'date'
|
||||
require 'json'
|
||||
require 'pp'
|
||||
|
||||
def load_races
|
||||
# get data from json file and convert to ruby types
|
||||
all_races = JSON.parse(File.read('races.json'))["races"].map do |race|
|
||||
{
|
||||
:date => Date.parse(race["date"]),
|
||||
:priority => race["priority"],
|
||||
:name => race["name"]
|
||||
}
|
||||
end
|
||||
|
||||
# select all non-zero priority races
|
||||
all_races.select { |r| r[:priority] > 0 }.sort_by { |r| r[:date] }
|
||||
end
|
||||
|
||||
def load_plan
|
||||
# get data from json file
|
||||
JSON.parse(File.read('plan.json'))["weeks"]
|
||||
end
|
||||
|
||||
def mondays(first,last)
|
||||
(first..last).map { |d| Date.commercial(d.year, d.cweek, 1) }.sort.uniq
|
||||
end
|
||||
|
||||
def get_plan_week(start_date, test_date, plan)
|
||||
days_from_start = (test_date - start_date).to_i
|
||||
(days_from_start / 7) % plan.size
|
||||
end
|
||||
|
||||
def score(start_date, plan, races)
|
||||
races.inject(0.0) do |sum, race|
|
||||
weeks_from_start = get_plan_week(start_date, race[:date], plan)
|
||||
week_value = plan[weeks_from_start]
|
||||
sum + (week_value * race[:priority].to_f)
|
||||
end
|
||||
end
|
||||
|
||||
def dump(start_date, plan, races)
|
||||
puts "starting on #{start_date}"
|
||||
puts "in week #{get_plan_week(start_date, Date.today, plan)+1} as of today (#{Date.today})"
|
||||
races.each do |race|
|
||||
weeks_from_start = get_plan_week(start_date, race[:date], plan)
|
||||
week_value = plan[weeks_from_start]
|
||||
puts "week #{weeks_from_start+1} (#{week_value}) #{race[:date]} #{race[:priority]} #{race[:name]}"
|
||||
end
|
||||
end
|
||||
|
||||
# load data
|
||||
races = load_races
|
||||
plan = load_plan
|
||||
|
||||
# find all the mondays from a few months before the first date, through the end
|
||||
first_race_date = races[0][:date]
|
||||
m = mondays(first_race_date - 180, first_race_date)
|
||||
|
||||
# score the plan beginning on each monday
|
||||
scores = m.map do |monday|
|
||||
[score(monday,plan,races), monday]
|
||||
end.sort.reverse
|
||||
|
||||
# output three best dates
|
||||
3.times do |i|
|
||||
starting = scores[i][1]
|
||||
dump(starting, plan, races)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"weeks" : [
|
||||
0.1, /* building */
|
||||
0.1, /* building */
|
||||
0.2, /* building */
|
||||
0.2, /* building */
|
||||
0.3, /* building */
|
||||
0.7, /* building */
|
||||
0.8, /* building */
|
||||
0.9, /* peak */
|
||||
1.0, /* peak */
|
||||
1.0, /* peak */
|
||||
1.0, /* peak */
|
||||
0.0, /* rest */
|
||||
0.0, /* rest */
|
||||
0.1, /* rest */
|
||||
0.1 /* rest */
|
||||
]
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"races" : [
|
||||
{ "date" : "2015-01-11", "priority" : 0, "name": "Ontario “Ice Breaker” GP Ontario Flyer" },
|
||||
{ "date" : "2015-01-18", "priority" : 0, "name": "CBR 1 Dominguez Hills" },
|
||||
{ "date" : "2015-01-24", "priority" : 0, "name": "Santa Barbara County Road Race Santa Maria Flyer" },
|
||||
{ "date" : "2015-01-24", "priority" : 0, "name": "Nor Cal vs So Cal showdown Bakersfield Flyer" },
|
||||
{ "date" : "2015-01-25", "priority" : 0, "name": "Mothballs/1st Annual Carlos Soto Memorial Criterium Goleta" },
|
||||
{ "date" : "2015-01-25", "priority" : 0, "name": "Oak Hills Time Trial Oak Hills Race Day Only" },
|
||||
{ "date" : "2015-01-31", "priority" : 0, "name": "Cal Poly RR SLO County" },
|
||||
{ "date" : "2015-01-31", "priority" : 7, "name": "Boulevard Road Race Crestwood 2" },
|
||||
{ "date" : "2015-02-01", "priority" : 0, "name": "Cal Poly TT and Crit SLO" },
|
||||
{ "date" : "2015-02-01", "priority" : 4, "name": "Red Trolley San Diego" },
|
||||
{ "date" : "2015-02-07", "priority" : 0, "name": "Tuttle Creek Road Race Lone Pine" },
|
||||
{ "date" : "2015-02-08", "priority" : 0, "name": "Roger Millikan Memorial Brea 1" },
|
||||
{ "date" : "2015-02-14", "priority" : 7, "name": "UCLA RR Pearblossom" },
|
||||
{ "date" : "2015-02-15", "priority" : 0, "name": "USC Culver City" },
|
||||
{ "date" : "2015-02-15", "priority" : 0, "name": "CBR 2 Carson" },
|
||||
{ "date" : "2015-02-22", "priority" : 0, "name": "Dare to Race Grand Prix Ontario" },
|
||||
{ "date" : "2015-02-28", "priority" : 5, "name": "Valley of Fire Stage Race Overton NV 3 (not Jrs)" },
|
||||
{ "date" : "2015-02-28", "priority" : 4, "name": "San Diego Omnium San Diego" },
|
||||
{ "date" : "2015-03-01", "priority" : 2, "name": "Vlee Huis Bakersfield" },
|
||||
{ "date" : "2015-03-07", "priority" : 0, "name": "Nine Mile Canyon Omnium Ridgecrest" },
|
||||
{ "date" : "2015-03-08", "priority" : 0, "name": "Bakersfield Crit Bakersfield" },
|
||||
{ "date" : "2015-03-08", "priority" : 0, "name": "CBR 3 Dominguez Hills" },
|
||||
{ "date" : "2015-03-13", "priority" : 8, "name": "Tour of Murrieta Murrieta 2.5 (not Jrs)" },
|
||||
{ "date" : "2015-03-15", "priority" : 2, "name": "St Patrick’s Day Crit Long Beach" },
|
||||
{ "date" : "2015-03-21", "priority" : 8, "name": "Chuck Pontius Road Race Castaic 2" },
|
||||
{ "date" : "2015-03-22", "priority" : 0, "name": "Chuck Pontius Criterium Santa Clarita" },
|
||||
{ "date" : "2015-03-22", "priority" : 0, "name": "Spring Classic Grand Prix Ontario 1 (Jr only)" },
|
||||
{ "date" : "2015-03-27", "priority" : 8, "name": "San Dimas Stage Race San Dimas 3" },
|
||||
{ "date" : "2015-04-04", "priority" : 0, "name": "UCSB RR Santa Maria" },
|
||||
{ "date" : "2015-04-05", "priority" : 0, "name": "UCSB Crit Goleta" },
|
||||
{ "date" : "2015-04-05", "priority" : 0, "name": "Easter Sunday Grand Prix Ontario" },
|
||||
{ "date" : "2015-04-08", "priority" : 0, "name": "Redlands Bicycle Classic Redlands" },
|
||||
{ "date" : "2015-04-11", "priority" : 2, "name": "Baker Road Race Baker" },
|
||||
{ "date" : "2015-04-12", "priority" : 2, "name": "Redlands Crit Redlands" },
|
||||
{ "date" : "2015-04-18", "priority" : 0, "name": "Cajon Pass Circuit Race #2 San Bernardino" },
|
||||
{ "date" : "2015-04-19", "priority" : 3, "name": "LA Circuit Race Westchester LAX 1.5" },
|
||||
{ "date" : "2015-04-25", "priority" : 0, "name": "San Luis Rey Road Race San Luis Rey 2" },
|
||||
{ "date" : "2015-04-25", "priority" : 0, "name": "Santiago Canyon TT Santiago Canyon" },
|
||||
{ "date" : "2015-04-25", "priority" : 10, "name": "Whiskey Off-Road" },
|
||||
{ "date" : "2015-04-26", "priority" : 0, "name": "CBR 4 Carson" },
|
||||
{ "date" : "2015-05-02", "priority" : 4, "name": "Barrio Logan GP San Diego 3 (Jrs Champ) / 1" },
|
||||
{ "date" : "2015-05-03", "priority" : 0, "name": "Dana Point GP Dana Point 1 (not Jrs)" },
|
||||
{ "date" : "2015-05-09", "priority" : 0, "name": "SCNCA Team Time Trial Championship Lake Los Angeles" },
|
||||
{ "date" : "2015-05-10", "priority" : 0, "name": "Echelon’s Spring Criterium Goleta" },
|
||||
{ "date" : "2015-05-16", "priority" : 0, "name": "ATOC Stage 7 Mt Baldy" },
|
||||
{ "date" : "2015-05-16", "priority" : 0, "name": "Spring Classic Time Trial and Super Master Championships Fiesta Island" },
|
||||
{ "date" : "2015-05-17", "priority" : 0, "name": "ATOC Stage 8 Pasadena" },
|
||||
{ "date" : "2015-05-17", "priority" : 0, "name": "Torrance Criterium Torrance 1 (Jr only)" },
|
||||
{ "date" : "2015-05-17", "priority" : 3, "name": "Spring Classic Criterium and Super Master Championships San Diego" },
|
||||
{ "date" : "2015-05-23", "priority" : 0, "name": "SCNCA ITT Championships Lake Los Angeles 3" },
|
||||
{ "date" : "2015-05-23", "priority" : 0, "name": "Death Valley Stage Race Big Pine" },
|
||||
{ "date" : "2015-05-24", "priority" : 3, "name": "Barry Wolfe GP Thousand Oaks 1" },
|
||||
{ "date" : "2015-05-25", "priority" : 0, "name": "CBR 5 Dominguez Hills 1" },
|
||||
{ "date" : "2015-05-31", "priority" : 4, "name": "Ladera Ranch Ladera Ranch 1 (not Jrs)" },
|
||||
{ "date" : "2015-06-06", "priority" : 5, "name": "Adrenaline SoCal Circuit Race Chula Vista" },
|
||||
{ "date" : "2015-06-07", "priority" : 6, "name": "MBGP Manhattan Beach 1 (not Jrs)" },
|
||||
{ "date" : "2015-06-13", "priority" : 0, "name": "GMR TT Glendora 0.5 (Jr only)" },
|
||||
{ "date" : "2015-06-14", "priority" : 0, "name": "CBR 6 Carson" },
|
||||
{ "date" : "2015-06-19", "priority" : 0, "name": "805 Weekend Buellton" },
|
||||
{ "date" : "2015-06-20", "priority" : 0, "name": "805 Weekend Buellton 1" },
|
||||
{ "date" : "2015-06-21", "priority" : 0, "name": "805 Weekend Lompoc 1" },
|
||||
{ "date" : "2015-06-28", "priority" : 0, "name": "Ontario Criterium Ontario" },
|
||||
{ "date" : "2015-07-12", "priority" : 0, "name": "CBR 7 Dominguez Hills" },
|
||||
{ "date" : "2015-07-18", "priority" : 7, "name": "Sherman Pass Road Race Ridgecrest" },
|
||||
{ "date" : "2015-07-19", "priority" : 5, "name": "Carlsbad GP Carlsbad 1" },
|
||||
{ "date" : "2015-07-19", "priority" : 0, "name": "Ontario Grand Prix Ontario" },
|
||||
{ "date" : "2015-07-25", "priority" : 0, "name": "Cajon Pass Circuit Race #3 San Bernardino" },
|
||||
{ "date" : "2015-07-26", "priority" : 8, "name": "San Marcos Crit San Marcos 1 (Jr only)" },
|
||||
{ "date" : "2015-08-02", "priority" : 6, "name": "Brentwood GP Brentwood 1" },
|
||||
{ "date" : "2015-08-04", "priority" : 0, "name": "USAC Jr/Elite Track Champs Carson" },
|
||||
{ "date" : "2015-08-08", "priority" : 0, "name": "Cajon Pass Circuit Race #4 San Bernardino 1 (Jr only)" },
|
||||
{ "date" : "2015-08-16", "priority" : 0, "name": "Summer End Grand Prix Ontario 1" },
|
||||
{ "date" : "2015-08-22", "priority" : 0, "name": "Mt Whitney Stage Race Lone Pine" },
|
||||
{ "date" : "2015-08-23", "priority" : 0, "name": "CBR 8 Carson" },
|
||||
{ "date" : "2015-08-30", "priority" : 0, "name": "CBR 9 Dominguez Hills" },
|
||||
{ "date" : "2015-09-13", "priority" : 0, "name": "PS Velo TT TBD" },
|
||||
{ "date" : "2015-09-17", "priority" : 5, "name": "Las Vegas Crit Las Vegas" },
|
||||
{ "date" : "2015-09-26", "priority" : 0, "name": "Everest Challenge Stage Race Bishop" },
|
||||
{ "date" : "2015-10-04", "priority" : 0, "name": "Cajon Pass Upgrade Race #1 San Bernardino" },
|
||||
{ "date" : "2015-10-18", "priority" : 0, "name": "PS Velo TT TBD" },
|
||||
{ "date" : "2015-10-25", "priority" : 0, "name": "Cajon Pass Upgrade Race #2 San Bernardino" },
|
||||
{ "date" : "2015-11-15", "priority" : 0, "name": "PS Velo TT TBD" },
|
||||
{ "date" : "2015-11-21", "priority" : 0, "name": "Santiago Canyon TT Santiago Canyon" },
|
||||
{ "date" : "2015-11-22", "priority" : 0, "name": "Cajon Pass Upgrade Race #3 San Bernardino" },
|
||||
{ "date" : "2015-12-06", "priority" : 0, "name": "PS Velo TT TBD" }
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user