|
||||
| ||||
|
|
#261 |
|
Hall Of Famer
Join Date: Jun 2008
Location: Belchertown, MA, USA
Posts: 4,507
|
|
|
|
|
|
|
#262 |
|
Bat Boy
Join Date: Jun 2020
Posts: 1
|
Scratching my head on why I can't get this to work quite right: my league is 32 teams, 2 subleagues, 4 divisions of 4 teams each. I am trying to generate a schedule where division mates are played 18 games each (54), the other 12 subleague teams 6 times each (72), and one interleague division 4 times each (16).
These are my ideal numbers, but I have actually tried tweaking the total number of games and series lengths countless times to no avail: division and interleague schedules turn out great, but no matter what, teams always schedule to play 8 out of the 12 other teams in the subleague. The pools also seem to be created perfectly. It's just that 4 teams get left out of that subleague scheduling. Is there something I am missing that would rectify this? Pertinent portion of my settings file below: Code:
; This many divisional games. divisional_games=54 ; This many subleague games. subleague_games=72 ; This many interleague/interdivisional games. interleague_games=16 ; 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=false [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=1 [subleague-series] preferred_length=3 pool_count=1 [interleague-series] preferred_length=2 pool_count=4 |
|
|
|
|
|
#263 |
|
All Star Reserve
Join Date: Nov 2008
Posts: 553
|
Any tips on how to resolve this error in command prompt?
Error: Unable to access jarfile OOTPScheduleGenerator.jar
__________________
AFBL New Jersey Athletics FOD Boston Shamrocks GLBL Milwaukee Eagles HRBL Toronto Stags PBF Commish only ABL (old SBC) Commish only ![]()
|
|
|
|
|
|
#264 |
|
Hall Of Famer
Join Date: Jun 2008
Location: Belchertown, MA, USA
Posts: 4,507
|
Do you have Java installed?
|
|
|
|
|
|
#265 |
|
Hall Of Famer
Join Date: Jun 2014
Location: Juust a bit outside...
Posts: 6,228
|
I'm having a hell of a time. Anyone know what's going wrong?
__________________
"Cannonball Coming!" Go Bucs!! Founder and League Caretaker of the Professional Baseball Circuit, www.probaseballcircuit.com An Un-Official Guide to Minor League Management in OOTP 21 Ratings Scale Conversion Cross-Reference Cheat Sheet |
|
|
|
|
|
#266 |
|
Bat Boy
Join Date: Aug 2020
Posts: 5
|
I am having the same difficulties with my mac book air and I am essentially in a waiting pattern until I figure this out. =/
|
|
|
|
|
|
#267 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Try running this in the terminal window:
ls -l OOTPScheduleGenerator.jar If the line starts with: -rw-r--r-- Try doing: chmod 755 OOTPScheduleGenerator.jar It's a bit of a stab in the dark—I don't have a Mac—but hopefully it'll work for you. |
|
|
|
|
|
#268 | |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
Unfortunately, you're not missing anything—this is an artifact of the current mechanism for scheduling subleague games. The scheduler separates each subleague pool into two columns, with each column containing half of the divisions in the subleague. Matchups are determined by sliding one column relative to the other. Say you have four divisions of two teams each: D1T1 - D3T1 D1T2 - D3T2 D2T1 - D4T1 D2T2 - D4T2 After the first matchup, you get this: D1T1 - D3T2 D1T2 - D4T1 D2T1 - D4T2 D2T2 - D3T1 The right column has moved up, wrapping around. This has the advantage that it works for any symmetrical subleague—if you two divisions each of 3 and 5 teams, you still get a schedule with no extra divisional games. (If you have asymmetric subleagues, say one of size 3 and one of size 4, it falls back to pure round-robin mode: teams will play extra divisional games as part of the subleague rotation.) The disadvantage is that the divisions in each column will never play one another. There's a better solution for 'perfect' subleagues (that is, with an even number of divisions of the same size, like yours) that involves a two-layer round-robin. First, divisions are paired off. Then, teams within the paired divisions play round robin. Then, the divisions themselves are round-robin rotated, and the process repeats. I haven't quite gotten around to implementing that yet, although it would be useful for both subleague and interleague play. Last edited by Fishbreath; 10-02-2020 at 12:35 PM. |
|
|
|
|
|
|
#269 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
I haven't done any work on the double-round-robin change, but I posted a release just now that fixes some broken aspects of break-day scheduling and improves the scheduler's ability to fit games in around break days. The practical result of the latter change is that schedules with, for instance, 3-game divisional series and 2-game subleague series with games played Fri-Sun and Tu-Wed should work much nearer to your expectations.
|
|
|
|
|
|
#270 |
|
Hall Of Famer
Join Date: Jun 2008
Location: Belchertown, MA, USA
Posts: 4,507
|
I'd been waiting for this update for three years. Thanks!
EDIT: Is OOTPScheduleGenerator.jar supposed to be half the size of the previous version? Last edited by bwburke94; 10-02-2020 at 05:16 PM. |
|
|
|
|
|
#271 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Indeed it is not! Thanks for the heads-up. Evidently my build script broke sometime in the last, uh, two and a half years. I'm uploading a fixed version as I type this.
(edit: Apparently, now it's 2-3x as big as before. Oh well! The price of progress, I suppose.) Last edited by Fishbreath; 10-02-2020 at 09:47 PM. |
|
|
|
|
|
#272 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
And, since I was on a roll, I went ahead and did the double round robin scheduler too, which should yield enhanced performance on the common four-division, one-pool subleague case, and can handle a few other interesting ones too. (In the event that it can't handle one, it falls back to the previous methods.)
e: Fixed a a few bugs today. Last edited by Fishbreath; 10-04-2020 at 10:29 PM. |
|
|
|
|
|
#273 |
|
Minors (Rookie Ball)
Join Date: May 2017
Posts: 34
|
Hi there Fishbreath, this is an absolutely incredible mod and a lifesaver for my 72-team monstrosity of a league, lol.
I have no problems to report thus far and mostly have just been messing around with the various settings. I did want to ask something, though: can I have an example of how the interdivisional and interleague pools are supposed to work (i.e. match_divisions and match_subleagues being set to "true")? I've read the descriptions in the settings.ini file and I'm trying to wrap my head around it but I don't fully understand how it's supposed to work. |
|
|
|
|
|
#274 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Thanks! I'm glad you're enjoying it, and glad it still works in a reasonably timely fashion with that many teams.
In regards to your question, there are two concepts at play: 1. match_ properties in the config file. If these are true, then the scheduling engine will ignore your pool count settings and try to match up subdivisions first. For match_subleagues, the scheduler will, I believe, sort the divisions in each subleague by size, and try to match them one-to-one. For instance, if you have two subleagues, each with divisions of size 5, size 4, and size 3, each division will play its opposite number in the other subleague. If you have, say, four divisions of size 4 per subleague, the scheduler will (should?) play each division against a random interleague division. For match_divisions, it's similar but simpler. The scheduler will simply try to find two divisions of equal size in a given subleague, and set them up to play against one another. 2. Interleague and interdivisional pools generally. If the matched modes aren't on, the scheduler tries a few things here, and my recollection of exactly what order it tries them in is a little foggy. The double round robin mode is the most recent, which pairs divisions up so that their teams play round robin, then round robins the division pairings when each team has played once. If you have divisions A, B, C, and D, and your games/series settings permit, it produces the most natural results—teams in division A will play teams from all the other divisions over the course of a season. It has a few tricks to support odd numbers of teams in divisions, but requires an even number of divisions. The other options are a sliding semi-round-robin mode (e.g. divisions are placed in two columns, and one columns slides past the other; if AB and CD are the two columns, teams in division A will play teams in C and D, but never in B), and I believe a more random mode to support league structures that none of the other modes can handle, at the cost of not really respecting the idea that you shouldn't play interdivisional games against opponents in your own division. (I don't remember if that's still in or not, though.) Does that help? If not, where can I clarify? |
|
|
|
|
|
#275 |
|
Minors (Rookie Ball)
Join Date: May 2017
Posts: 34
|
That helps a little more, yeah. It also probably explains why it fails to match divisions for all of the combinations I've tried so far, as my league is one subleague with nine divisions of eight teams each (so SL1D1T8D2T8...D8T8D9T8, which I've shortened because it's quite long lol), so I don't have an even number of divisions.
My only other comments are things that I was hoping to be able to achieve but I think are impossible given the difficulty of implementation. For example, it would be nice if we could have multiple preferred series lengths so that I could, for example, have 17 games per intra-divisional matchup (two 4's and three 3's) whereas I think under the current system, it would be three 4's and one 5 or perhaps worse, four 4's and a random extra game somewhere. Other thoughts I had that would be cool things to have are things that would literally be impossible unless the OOTP devs took up your code somehow and implemented it into the game I think. Like, I had an idea when formulating my league that I wanted most subleague pools to put all teams with similar W/L records or similar rankings in their division together in an attempt to try to balance the schedule difficulties, but I don't think this mod could ever even consider schedule difficulty unless it had OOTP data to feed from. Despite my crazy ideas though, this is a great mod that works wonders for what I'm doing, so I'm satisfied, but if you're ever thinking of expanding the scope of what's possible with the mod, I think having more granular control over series lengths (or maybe something even more general than that, like maybe a thing where you could input what your desired matchups would be for a single team and then it tries to match that as best as possible?) would be an interesting place to start. I don't know how hard that would be to code, but as I'm a math major, I'm acutely aware (and tickled by) of the mathematics of combinatorial scheduling and I understand that, in general, it's an immensely difficult problem. Speaking of the math of scheduling, I'm currently tackling with an interesting problem myself: given a particular schedule, is it possible to insert a non-zero number of break days without impinging on existing series and, if so, how many? I've mostly been messing with this by trial-and-error, but it's interesting because for some schedule permutations, there are multiple solutions (e.g. for a schedule where each team plays 18 games against all other teams in the division, plus 12 games each against three non-division teams and another 9 games against six non-division teams for a total of 126 divisional games and 90 subleague games, I can add 12, 18, or 24 break days without impinging on a series) and others have no solutions, at least for break day counts between 10 and 25. Once again, this is a fantastic mod, and I'm really enjoying just playing around with it! |
|
|
|
|
|
#276 | |
|
Hall Of Famer
Join Date: Jun 2008
Location: Belchertown, MA, USA
Posts: 4,507
|
Quote:
Of course, this does mean your schedule can't depend on days of the week, because the extra day will knock it out of sync. |
|
|
|
|
|
|
#277 | ||||
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Quote:
Yup, that'll do it. Odd numbers of divisions per subleague are a real bear to handle—very few of the ways I'm cheating the difficulty of the problem end up working out well. I do have one idea that may make it feasible to extend the double round robin scheduler to the odd-division-count case. Right now, the rotation is team-major, division-minor: teams in each pair of divisions in the round robin setup rotate, then the divisions rotate. In the odd-divisions case, this means that the division not currently paired with another gets a long series of off days on subleague-play days while the paired divisions finish their rotation. The obvious solution is to add a switch to flip the order of rotation—division-major, team-minor. The off division switches every subleague day, so the byes are spread around more evenly. The difficulty (although it's not a serious difficulty, thinking about it as I write this) is that I have to keep track of every division pairing instead of just the current one, so I can keep track of the state of each pair's team rotation. (Note to self: the solution is to save each pair's actual state indexed by each pair, and I don't have to generate them ahead of time, either—rotate the teams into a temporary pair object, look up the actual pair object by the pair.) Quote:
I think this one might not be too hard at all, provided entering a list of all series (by length) to be played is an acceptable burden on the schedule author. There may be some confounding factors there with odd team counts/bye days, however—I'd have to dig into it a bit, and I think I'm more likely to take a run at the double round robin scheduler upgrade first. For pools of odd size, I think the restriction would have to be that each length of series in the list has to occur enough times so that each team can have a bye series of each length. Quote:
If I'm not mistaken, OOTP randomizes which team gets which team number from a schedule file, so there would be some work required on the OOTP end before there's the chance to do pool selection based on inputs. It would be nifty, though! Quote:
I appreciate the kind words! Alas, despite my computer science degree I was never very much good at the math beyond logic, and by making the scheduler operate on the basis of arranging blocks of series first and fitting matchups in in a second step, I managed to dodge a lot of the combinatorial complexity of the problem. One of these days, I'd love to make a full-on constraint-based solver that can handle an NFL-type schedule, where some teams may be playing divisional games, some teams subleague games, and some teams interleague games, but I haven't yet found a treatment of the issue that's approachable enough to make that a possibility, and the computational complexity may mean that it's not really feasible for large leagues anyway. (That is, unless people want to leave their computers running for a day or two to crunch the numbers.) |
||||
|
|
|
|
|
#278 | |
|
Minors (Rookie Ball)
Join Date: May 2017
Posts: 34
|
Quote:
Although, you gave me an interesting idea with regards sort of bootlegging a "multiple series lengths preferred" kind of schedule. For example, I've found a few schedule configurations that are compatible with a series length preferred of 7. If it were possible (and I'm not sure how exactly I'd do this, maybe regex? maybe some sort of other XML trickery?) to, say, take three of those seven games and flip them from Away to Home or vice versa, you could turn a series of 7 into a series of 3 and 4. Of course, this isn't the most realistic option because I can't imagine teams would be very happy with so many away and home games on consecutive days, but then again, my league has 72 teams in it, so I never really cared for realism that much lol. |
|
|
|
|
|
|
#279 |
|
Hall Of Famer
Join Date: Jan 2015
Location: Oregon, not by design
Posts: 2,872
|
looks amazing and finally got to try it out (after realizing my Win 10 comp didn't have Java) - - onto more reading and getting time to scribble some notes on structures before it will make sense to this old man.... thanks for the program and hopefully i'll figure it out eventually.
__________________
"This is my opening farewell " - Jackson Browne “They make a desolation and call it peace.” ― Agha Shahid Ali "Maybe she just has to sing, for the sake of the song - And who do I think that I am to decide that she's wrong." - Townes Van Zandt "I saw a young man leaning on his wooden crutch - He called out to me, 'Don't ask for so much' And a young woman leaning in her darkened door She cried out to me, 'Why not ask for more?' " - Leonard Cohen "Hello darkness, my old Friend ...." - Paul Simon Before Mays, before DiMaggio, there was Oscar Charleston. "All the lies about Babe Ruth are true." - Waite Hoyt Avatar is the late great Townes Van Zandt. rip. Last edited by mitchkenn; 10-12-2020 at 06:45 PM. Reason: add info |
|
|
|
|
|
#280 |
|
Minors (Double A)
Join Date: Oct 2015
Posts: 145
|
Let me know if you need a hand! I should do a few worked examples one of these days—the documentation is not the clearest, granted.
|
|
|
|
![]() |
| Bookmarks |
|
|