|
||||
|
07-20-2017, 04:44 PM | #121 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
I've started working on a scheduler version 2.0, which will hopefully resolve many of the problems inherent in the current release's scheduling model. In short, I hope to move to a model which treats a season as a collection of series played round-robin (either fully, in which each team plays every other team N times for whole-number N, or in part, where N may be a fraction) among pools of teams. In the end, this will rob the current schedule generator of some of its character—off-days will be league-wide, and every team will play a divisional opponent, a subleague opponent, or an interleague opponent on a given day. In exchange, it should be able to handle a broader array of league structures and schedule types, and still ensure a proper balance of home and away games, and a good mix of divisional, league, and interleague games over the course of the season. No ETA at present, since this is still very much a spare time project, but if anything, this algorithmic approach is easier than the last one.
|
07-21-2017, 06:02 PM | #122 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Well, version 2.0 is coming along nicely, and is already better than 1.4 in a wide variety of metrics.
The only problem at the moment is that there's nothing to stop interdivisional and interleague games from being scheduled between divisional and league opponents, even when that isn't necessary. I hope to fix that soon and put together a new release. |
07-21-2017, 11:59 PM | #123 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Well, that was a productive few nights. New version available in the first post. Big news first:
Code:
Length of schedule: at most 201 days Scheduled 810 series (2430 games) in 0.304 seconds 2664.4736842105262 series/sec It still isn't perfect, in that it can't do perfectly packed schedules. One of the simplifications I accepted in this version to make the setup easier and more flexible was to define a type of game for each day of a season, so on a day when one team is playing a divisional game, all teams are playing divisional games (or on a bye). This does mean that e.g. a 162-game schedule with six divisions of five teams each in two subleagues can't be much shorter than the 201 days above. (You can trim a bit of time with a shorter all-star break.) For perfectly-packed schedules, you'll have to either build them manually, or accept league structures which don't require byes, or only require byes in fewer places. (For instance, a 5/5/5/5 league: there will be byes in divisional play, but can be set up to have two 10-team subleague pools and two 10-team interleague pools, which don't require byes.) Finally, I spent a few minutes adding a way to turn off the all-star game and break, if that's something you want to skip. Enjoy! Let me know if you find bugs, particularly with odd league setups. I've done my best to test on a variety of different and unusual structures, but of course I'm not as creative as some here. Last edited by Fishbreath; 07-22-2017 at 12:41 AM. |
07-24-2017, 12:27 AM | #124 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Version 2.1 is available in the first post. Three features:
1. Optional division matching for interdivisional/interleague games. The scheduling engine will attempt to pair off divisions of equal size to form opponent pools, ignoring other pool settings. 2. Improved interdivisional/interleague scheduling. Teams will now avoid playing their divisional opponents in non-divisional pools unless absolutely necessary to keep an even number of games (such as a 5-team pool). 3. Improved home-away balancing. It should now catch every case except one, that being where a team is playing too few home games, but all its opponents are balanced, and opponents of the first team's opponents have too many home games. I haven't quite worked out a good way of stopping that from happening, and might not bother. It's relatively easy to fix by hand-editing the schedule file, and is otherwise getting to the point where I'd call it 'good enough'. Last edited by Fishbreath; 07-24-2017 at 10:08 AM. |
07-24-2017, 03:13 PM | #125 | |
Hall Of Famer
Join Date: Feb 2002
Location: Up There
Posts: 15,386
|
Quote:
Another item to consider is grouping clubs into blocks that move through the schedule and opponents as a unit - this can help to make the resulting road trips look more realistic. I remember a scheduling article about the old 10-team league MLB days which said there were three groups of three clubs which moved as a unit through opponents of the other three-team groups, and a single swing team which filled in as necessary. E.g. block A plays block B, while the swing team temporarily joins block C. Then block A moved on to play block C, while the swing team joined up with block B. And so on. I can post up the article if anyone would like to read it. (I'm sure I've got it saved somewhere.) |
|
07-24-2017, 03:36 PM | #126 | |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
It would be tricky to do a swing team, though. The shortcut that allows this scheduling engine to be so much more successful in generating workable schedules is the assumption that all teams are playing the same sort of game on the same day. It may still be possible, though, at least in a subset of cases. Generalized scheduling is a hard problem. |
|
07-26-2017, 03:25 PM | #127 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
In my mind, the last major feature is tuning the home/away balancer to get more edge cases right. I believe I have that sorted as of last night. It manages both the settings-mlb.ini file shipped with the scheduler, which was the last one it broke on.
Tonight I want to look at the intraday scheduling—I saw a game start at 5:00 a.m. in some prior testing. Not only does that seem unlikely to draw a crowd, it also goes against the rules set out in the settings file. That'll likely make up another release. |
07-26-2017, 08:32 PM | #128 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Turns out the game starting at 5:00 a.m. was because some of my teams were inexplicably in the wrong time zone. (I think.)
At any rate, there's a new version 2.2 in the first post. The home/away balancer is now nearly perfect, although I suspect it may still occasionally fall down on the job for schedules with odd-sized subleague pools, where some teams may play against divisional opponents. If you run into that, let me know. It also fixes a bug where the interleague division-matching code would improperly fail to take effect. |
07-27-2017, 01:32 PM | #129 | |
Hall Of Famer
Join Date: Feb 2002
Location: Up There
Posts: 15,386
|
Quote:
In terms of individual match-ups against an opponent, those can have unequal home-away splits - this is now a very common thing in pro baseball schedules. Something to consider related to the above is how certain match-up totals against an opponent are split. In MLB, for example, 16 games against an opponent is split 9-7 or 7-9 rather than 8-8, since the 9 splits into three 3-game series and the 7 splits into a 3-game and 4-game series. 8 doesn't divide up so neatly, as it's going to result in more 4-game or 2-game series than MLB likes these days. |
|
07-28-2017, 12:31 AM | #130 | |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
Here, at least, the series length specified in the settings file controls. The scheduling engine sticks to those series lengths, and the balancer won't switch only part of a series. The 12-9-66 settings file demonstrates that: teams play 66 games in 33 2-game series, 17 home and 16 away or vice versa. |
|
07-31-2017, 02:32 AM | #131 |
Minors (Double A)
Join Date: Aug 2016
Posts: 145
|
I absolutely LOVE this tool. I do have two minor suggestions though:
1) Have a setting so that certain days of the weeks CANNOT be used as off days. 2) Have a setting so that an off day has to be between series and not in the middle of them. This tool generates a perfect schedule for my online league except that it likes to split some of the series up with an off day in the middle of them. And sometimes those days are on the weekend. Those issues are easily edited with a text editor. Thank you for this contribution to the OOTP community! I suspect people don't realize the amount of work you've likely put into this. Last edited by TheGobOne; 07-31-2017 at 02:33 AM. |
07-31-2017, 11:42 AM | #132 | |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
I appreciate the kind words. I'm glad it works for your league. |
|
07-31-2017, 09:28 PM | #133 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Done! New release in the first post.
|
08-01-2017, 12:05 AM | #134 |
Minors (Double A)
Join Date: Aug 2016
Posts: 145
|
|
08-01-2017, 01:44 AM | #135 |
Minors (Double A)
Join Date: Aug 2016
Posts: 145
|
Seems even if I flag mid_series_breaks as true the program will still set it to default of false. It's also still scheduling off days on Fri, Sat, and Sun.
Minor issues but I thought I'd give a heads up. |
08-01-2017, 10:29 AM | #136 | |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
The off days scheduled on the non-off days is an artifact of the no-series-splitting code, which moves games to fill in holes in series. Little bug there which I think I've resolved. A settings file of mine which showed the bug no longer does. It does mean that a number more series are split up over a break day leading into a weekend (or, in one regrettable case, across the all-star break), but there's not much to be done about that if the non-off days are non-negotiable (as weekend games probably should be, for attendance/finances reasons). I'll get this version bundled up and posted shortly. Edit: bit of a snafu getting the right version built and uploaded, but it should be there now (as of 10:45 ET). Last edited by Fishbreath; 08-01-2017 at 11:45 AM. |
|
08-01-2017, 12:29 PM | #137 |
Minors (Double A)
Join Date: Aug 2016
Posts: 145
|
Thank you! Incredibly quick work.
|
08-01-2017, 06:23 PM | #138 |
Hall Of Famer
Join Date: Feb 2012
Location: Inside The Game
Posts: 30,766
|
How do i open this? i double clicked on the .jar file it asked me if i want to use java i said yes. Nothing is happening.
__________________
Go today don't wait for tomorrow It isn't promised, all the time you get borrowed Don't live your life for other people Don't bottle your emotions till they crack and fill a couple just sorrows Take your mind and refocus go get a paper write your goals out Throw your middle fingers to all your haters "Stay Strong" |
08-01-2017, 06:32 PM | #139 |
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
|
08-01-2017, 06:35 PM | #140 |
Hall Of Famer
Join Date: Feb 2012
Location: Inside The Game
Posts: 30,766
|
If i run this it isn't going to affect a game i have loaded at the time is it? i am expecting the answer to be no but i didnt see where to set up how many teams i have.
__________________
Go today don't wait for tomorrow It isn't promised, all the time you get borrowed Don't live your life for other people Don't bottle your emotions till they crack and fill a couple just sorrows Take your mind and refocus go get a paper write your goals out Throw your middle fingers to all your haters "Stay Strong" |
Bookmarks |
Thread Tools | |
|
|