Position Preferences and Constraints

Position preferences tell the lineup generator where each player is most comfortable on the field. Constraints control rules like position rotation and pitcher management. Together, they let you generate lineups that respect your players' strengths while following your league's rules.

How Position Preferences Work

Every player on your roster can have multiple position preferences. Each preference includes a position and a rating from 1 to 10, where 10 is the strongest preference.

Setting Preferences

For each player, add the positions they can play and rate each one:

  • 9-10: Their best, most natural position. They are confident and capable here.
  • 5-7: A secondary position they can handle but is not their strongest.
  • 1-4: A position they are still learning or can play in a pinch.

Most players should have 2 to 4 position preferences. You do not need to fill every position for every player.

Players With No Preferences (Utility Players)

If a player has zero position preferences set, the algorithm treats them as a utility player who can play anywhere. This gives the generator maximum flexibility when placing that player, but it also means they may end up at less optimal positions. For best results, set at least a couple of preferences for each player.

Pitcher and Catcher Are Special

Pitcher (P) and Catcher (C) require explicit preferences. No player will ever be assigned to pitch or catch unless they have that position listed as a preference. This is a hard rule in the algorithm. If nobody on your roster has a Pitcher preference, the generator cannot assign anyone to pitch.

Always make sure at least 2 to 3 players have Pitcher as a preference if you are using pitcher-related rules.

How the Algorithm Uses Preferences

Behind the scenes, the lineup engine scores every possible player-position assignment using a point system. Here is how preferences factor into that score:

Scoring Breakdown

  • Exact match bonus: +800 to +1000 points, scaled by the player's 1-10 rating. A player rated 10 at Shortstop gets the full bonus when placed at SS. A player rated 5 gets roughly half.
  • Similar position bonus: +400 points when a player is placed at a position in the same group as one of their preferences. For example, a Left Fielder assigned to Center Field benefits from being in the same outfield group.
  • Utility player bonus: +500 points for players with no preferences set, applied at any position (except P and C).
  • Non-preferred position penalty: -10000 points. This acts as a hard block preventing players from being placed at positions they have no connection to.

Position Groups

The algorithm recognizes these position groups when calculating similar position bonuses:

  • Infield: P, C, 1B, 2B, 3B, SS
  • Outfield: LF, CF, RF, LCF, RCF
  • Corner infield: 1B, 3B
  • Middle infield: 2B, SS

A player who prefers 2B will get a similar position bonus at SS (both are middle infield). A player who prefers LF will get a similar position bonus at RF (both are outfield).

Constrained Position Priority

The algorithm assigns the hardest positions first. If only one or two players on your roster have Pitcher as a preference, the engine locks in those assignments before filling more popular positions like outfield. This ensures critical positions like Pitcher and Catcher are always covered by someone who actually wants to play there.

Available Constraints

Constraints are toggles and settings found in your League Settings. They apply globally to every game generated under that league.

1. Rotate Positions

When enabled, this prevents the same player from playing the same position in consecutive innings. If a player plays Shortstop in inning 3, they will be placed somewhere else in inning 4.

Important exception: Pitcher and Catcher are exempt from position rotation. A pitcher can stay on the mound for multiple consecutive innings, and a catcher can stay behind the plate, even with Rotate Positions turned on.

2. Pitcher Cannot Return

Once a pitcher is removed from the mound (either benched or moved to another position), they cannot pitch again for the rest of that game. This is a common rule in many youth leagues.

When this rule is active, the algorithm also gives active pitchers a score bonus to avoid benching them unnecessarily. If a pitcher is currently on the mound and still has innings available, the engine will try to keep them pitching rather than pulling them and losing the option to use them later.

3. Max Innings Pitched

A global limit (1 to 9) on how many innings any single player can pitch in one game. This is the hardest constraint in the system. The algorithm will never exceed this limit, even if it means shuffling other positions around to make it work.

When both Pitcher Cannot Return and Max Innings Pitched are set, the engine applies pitcher continuity logic: it tries to keep the current pitcher on the mound for consecutive innings until they hit the max, rather than pulling them out and bringing them back (which would be blocked by the cannot-return rule anyway).

Practical Tips for Setting Preferences

Getting Started

  1. Set 2 to 4 preferences per player. This gives the algorithm enough options without being too restrictive.
  2. Rate their strongest position as 9 or 10. This tells the engine where they belong when possible.
  3. Rate secondary positions as 5 to 7. Good enough to play there, but the engine will prefer their top-rated spot.
  4. Leave positions they cannot play unset. Do not add a preference with a low rating just to fill it out. No preference is better than a weak one for a position they should not play.

Pitcher and Catcher Coverage

P and C preferences are the most important ones to get right:

  • Always have at least 2 to 3 players with a Pitcher preference if you are using Pitcher Cannot Return or Max Innings Pitched.
  • Have at least 2 players with a Catcher preference so the engine can rotate if needed.
  • If only one player has a Catcher preference, they will catch every inning. Make sure that is what you want.

Using Utility Players Strategically

Players with no preferences provide flexibility. The algorithm can slot them anywhere (except P and C) to fill gaps. This is useful for younger or less experienced players who are still figuring out their best position. However, players with specific preferences will generally end up in better-fitting spots, so do not leave everyone as a utility player.

Adjusting Over the Season

Update preferences as players develop:

  • A player who started as a utility player might earn a 7 or 8 at Second Base after a few games.
  • A player who struggled at Shortstop might have that preference lowered from 8 to 5.
  • A player who has been developing as a pitcher in practice can have Pitcher added as a new preference.

Small adjustments to ratings over the season keep your lineups accurate as your team grows.

Troubleshooting

Players Appearing at Unexpected Positions

If a player ends up somewhere you did not expect:

  1. Check their preference ratings. A low-rated preference at an undesired position can still be selected if better options are unavailable.
  2. Check if equal playing time rules are forcing unusual assignments to balance bench time.
  3. Remove any preferences for positions you truly do not want that player to play.

Pitcher Position Not Getting Filled

If the generator cannot assign a pitcher:

  1. Make sure at least one available player has Pitcher as a preference.
  2. Check that your Max Innings Pitched setting has not already been exhausted by prior innings in the game.
  3. If using Pitcher Cannot Return, confirm you have enough pitchers to cover all innings.

Lineup Generation Fails

If the engine cannot produce a valid lineup:

  1. Make sure enough players have preferences to cover all field positions.
  2. Reduce the number of active constraints and try again.
  3. Add a couple of utility players (no preferences) to give the algorithm more flexibility.
  4. Ensure you have enough pitchers and catchers to cover every inning.

Was this helpful?

Can't find what you're looking for? We're here to help.