Home | Webstore
Latest News: OOTP 25 Available - FHM 10 Available - OOTP Go! Available

Out of the Park Baseball 25 Buy Now!

  

Go Back   OOTP Developments Forums > Out of the Park Baseball 25 > OOTP Mods > OOTP Mods - Schedules

OOTP Mods - Schedules Create your very own game schedules, or share historical schedules

Reply
 
Thread Tools
Old 07-20-2017, 04:44 PM   #121
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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.
Fishbreath is offline   Reply With Quote
Old 07-21-2017, 06:02 PM   #122
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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.
Fishbreath is offline   Reply With Quote
Old 07-21-2017, 11:59 PM   #123
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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
Also big news: the scheduling engine now no longer needs padding, and can notify you ahead of time if it can't make a schedule. For schedules with opponent pools of even size, it needs zero padding. For schedules with opponent pools of odd size, it inserts byes automatically for both odd-numbered and even-numbered pools to keep the number of games played roughly in sync over the course of the season. This means that breaks are spread out much more neatly throughout the calendar, with fewer long stretches of no games and more reliable rest days.

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.
Fishbreath is offline   Reply With Quote
Old 07-24-2017, 12:27 AM   #124
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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.
Fishbreath is offline   Reply With Quote
Old 07-24-2017, 03:13 PM   #125
Le Grande Orange
Hall Of Famer
 
Le Grande Orange's Avatar
 
Join Date: Feb 2002
Location: Up There
Posts: 15,386
Quote:
Originally Posted by Fishbreath View Post
For schedules with opponent pools of odd size, it inserts byes automatically for both odd-numbered and even-numbered pools to keep the number of games played roughly in sync over the course of the season. This means that breaks are spread out much more neatly throughout the calendar, with fewer long stretches of no games and more reliable rest days.

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.)
In terms of leagues with odd numbers of teams in a division, have you thought about implementing a 'swing team'? That is, one team from a division is designated a swing team for part of the schedule, and plays a single non-division opponent while all other clubs are playing division opponents. That swing team then moves on to play the next non-division opponent while the former non-division team goes back to playing division rivals. The swing team thus plays consecutive series against non-division clubs while all the other teams from its division play within the division, while the other division has a single non-division series against the swing team and plays division opponents the rest of the time. (The AL followed this method in 1977-78 when it had two 7-team divisions yet played a division-weighted schedule.)

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.)
Le Grande Orange is offline   Reply With Quote
Old 07-24-2017, 03:36 PM   #126
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Quote:
Originally Posted by Le Grande Orange View Post
In terms of leagues with odd numbers of teams in a division, have you thought about implementing a 'swing team'? That is, one team from a division is designated a swing team for part of the schedule, and plays a single non-division opponent while all other clubs are playing division opponents. That swing team then moves on to play the next non-division opponent while the former non-division team goes back to playing division rivals. The swing team thus plays consecutive series against non-division clubs while all the other teams from its division play within the division, while the other division has a single non-division series against the swing team and plays division opponents the rest of the time. (The AL followed this method in 1977-78 when it had two 7-team divisions yet played a division-weighted schedule.)

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.)
Sure, I'd be interested in reading it.

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.
Fishbreath is offline   Reply With Quote
Old 07-26-2017, 03:25 PM   #127
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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.
Fishbreath is offline   Reply With Quote
Old 07-26-2017, 08:32 PM   #128
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
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.
Fishbreath is offline   Reply With Quote
Old 07-27-2017, 01:32 PM   #129
Le Grande Orange
Hall Of Famer
 
Le Grande Orange's Avatar
 
Join Date: Feb 2002
Location: Up There
Posts: 15,386
Quote:
Originally Posted by Fishbreath View Post
In my mind, the last major feature is tuning the home/away balancer to get more edge cases right.
If in terms of the overall schedule, then yes, it ought to be equal (though one can find some real-life exceptions, usually the result of either a league travel team or a club that has to play some home games on the road due to issues with its stadium).

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.
Le Grande Orange is offline   Reply With Quote
Old 07-28-2017, 12:31 AM   #130
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Quote:
Originally Posted by Le Grande Orange View Post
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.
The MLB-esque settings file in the scheduler shows some of that. (Teams play 15 interdivisional games against each of four opponents, two 9H/6A and two 6H/9A.

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.
Fishbreath is offline   Reply With Quote
Old 07-31-2017, 02:32 AM   #131
TheGobOne
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.
TheGobOne is offline   Reply With Quote
Old 07-31-2017, 11:42 AM   #132
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Quote:
Originally Posted by TheGobOne View Post
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.
Thanks! I can probably manage those. Certainly the invalid days off. The series one is a little harder, since the series are placed after the break days, but probably still manageable. (It'll just have to make another pass.)

I appreciate the kind words. I'm glad it works for your league.
Fishbreath is offline   Reply With Quote
Old 07-31-2017, 09:28 PM   #133
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Done! New release in the first post.
Fishbreath is offline   Reply With Quote
Old 08-01-2017, 12:05 AM   #134
TheGobOne
Minors (Double A)
 
Join Date: Aug 2016
Posts: 145
Quote:
Originally Posted by Fishbreath View Post
Done! New release in the first post.
Damn that was a LOT faster than I thought it would be. Great job!
TheGobOne is offline   Reply With Quote
Old 08-01-2017, 01:44 AM   #135
TheGobOne
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.
TheGobOne is offline   Reply With Quote
Old 08-01-2017, 10:29 AM   #136
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Quote:
Originally Posted by TheGobOne View Post
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.
Good catches. The mid_series_breaks thing is a formatting error. The next release will fix the underlying bug, but you can allow mid-series breaks by removing the spaces in the mid_series_breaks line (so it reads "mid_series_breaks=true" instead of "mid_series_breaks = true").

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.
Fishbreath is offline   Reply With Quote
Old 08-01-2017, 12:29 PM   #137
TheGobOne
Minors (Double A)
 
Join Date: Aug 2016
Posts: 145
Thank you! Incredibly quick work.
TheGobOne is offline   Reply With Quote
Old 08-01-2017, 06:23 PM   #138
The Game
Hall Of Famer
 
The Game's Avatar
 
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"


The Game is offline   Reply With Quote
Old 08-01-2017, 06:32 PM   #139
Fishbreath
Minors (Double A)
 
Fishbreath's Avatar
 
Join Date: Oct 2015
Posts: 145
Quote:
Originally Posted by The Game View Post
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.
Double click on run.bat instead.
Fishbreath is offline   Reply With Quote
Old 08-01-2017, 06:35 PM   #140
The Game
Hall Of Famer
 
The Game's Avatar
 
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"


The Game is offline   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 08:04 PM.

 

Major League and Minor League Baseball trademarks and copyrights are used with permission of Major League Baseball. Visit MLB.com and MiLB.com.

Officially Licensed Product – MLB Players, Inc.

Out of the Park Baseball is a registered trademark of Out of the Park Developments GmbH & Co. KG

Google Play is a trademark of Google Inc.

Apple, iPhone, iPod touch and iPad are trademarks of Apple Inc., registered in the U.S. and other countries.

COPYRIGHT © 2023 OUT OF THE PARK DEVELOPMENTS. ALL RIGHTS RESERVED.

 

Powered by vBulletin® Version 3.8.10
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright © 2020 Out of the Park Developments