bwburke94, thank you for the quick reply to my previous question.
I have a new question; I am running into a crash with a league with some odd-sized divisions. I will include a copy of the settings.ini file at the end of this post, but first a description of the issue.
The league structure is 30 teams split into two sub-leagues with two divisions each (SL1_D1_T8_D2_T7_SL2_D1_T8_D2_T7). I am attempting to create an 84-game season with no interleague play. I can do this with 84 divisional games, but I'm having trouble creating a schedule with some amount of subleague games.
I have tried fiddling with division and subleague pool sizes to get the schedule generator to start working, but I don't know if that is related to the crash.
In any case, with the settings below, the schedule generator appears to accept the structure, but crashes while creating the schedule. Here's what the last bit of debug messaging looks like:
Code:
Correcting subleague overscheduling
Correcting interleague overscheduling
No perfect matches: adding all as candidates
Scheduling DIVISIONAL starting on day 133
Scheduled games/series I/S/D: 0/0 42/14 72/24
Generating games...
Double round robin group has 4 as its largest subgroup
Left column: [GC: [T7, T8, T2, T5]] Right column: [] Outside group: GC: [T15, T10, T11, T14]
0: [Pair:[GC: [T15, T10, T11, T14] v. GC: [T7, T8, T2, T5]]]
This leftovers: 0 Other leftovers: -1
Final criteria: even true same true
1: [Pair:[GC: [T15, T10, T11, T14] v. GC: [T7, T8, T2, T5]]]
This leftovers: 0 Other leftovers: -1
Final criteria: even true same true
Double round robin group created for SUBLEAGUE 8 pool
Using double round robin subleague group
Double round robin group has 4 as its largest subgroup
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.remove(ArrayList.java:535)
at java_util_List$remove$5.call(Unknown Source)
...and here is the settings.ini file. Thanks for any help you can offer.
Code:
[general]
; General options.
; n.b. interleague and balanced options here
; only control the schedule file filename
; and header. To enforce balance or interleague
; play, use the options under [schedule].
; Whether to write to the schedule file
; claiming interleague play is supported.
interleague=true
; Whether to write to the schedule file
; claiming the schedule is balanced.
balanced=false
; The league structure, in schedule file
; format. Underscores are permitted but ignored.
structure=SL1_D1_T8_D2_T7_SL2_D1_T8_D2_T7
[schedule]
; Scheduling options. The scheduling engine will
; create a schedule with exactly this many games,
; or inform you what to change to create a valid
; schedule.
; This many divisional games.
divisional_games=48
; This many subleague games.
subleague_games=36
; This many interleague/interdivisional games.
interleague_games=0
; If set to true, the scheduling engine will attempt
; to set up interdivisional pools between divisions
; of the same size.
match_divisions=false
; If set to true, the scheduling engine will attempt
; to set up interleague pools between leagues of the
; of the same size.
match_subleagues=false
; If set to true, the scheduling engine will attempt
; to set up interleague pools between divisions of
; the same size. If enabled at the same time as
; match_subleagues, match_subleagues will take
; priority.
match_subleagues_by_division=true
[divisional-series]
; Series scheduling options.
; The preferred length for series.
preferred_length=3
; In each division (or subleague, or all teams,
; for the two following sections), teams will
; be divided into this many pools.
pool_count=2
[subleague-series]
preferred_length=3
pool_count=2
[interleague-series]
preferred_length=3
pool_count=1
[break]
; Break scheduling options.
; This many days of break/padding will be added
; over the course of the series.
break_days=0
; The all-star game will be scheduled this far
; into the season. Set it to -1 to disable all-
; star scheduling.
all_star_percentage=44
; The all-star game will occur in a break of
; this length.
all_star_length=4
; The all-star game will occur on this day of
; the week.
all_star_day_of_week=Tuesday
; These options enable week-aware scheduling.
; start_day_of_week defines the first day of
; week in the schedule.
; No games will be scheduled on off_days_of_week.
; No random break days will be placed on non_off_days_of_week.
;start_day_of_week=Friday
;off_days_of_week=List:Thursday
;non_off_days_of_week=List:Friday|Saturday|Sunday
; If true, break days may occur in the middle of
; series. If false, the scheduler will move break
; days to the end of series, except if doing so
; would cause a game to be played on a day specified
; in non_off_days_of_week.
; mid_series_breaks = false
[time]
; Options for scheduling of games. The
; scheduler will distribute games evenly through
; the day per these options, starting on the hour
; or the half hour, preferring the last start times
; in the day first.
; Schedule the first game in a day no earlier
; than this.
first_start=1100
; Schedule the last game in a day no later than
; this.
last_start=1100
; Offset from the hour and half-hour by this much.
start_offset=5
; Start this many games at the same time.
simultaneous_games=2