This page is available in Swedish and English for easy sharing with your entire coaching staff.

Last updated: 2026-05-01


Guide: Base Rules

This guide explains what you can control in Base Rules and when each setting is appropriate.

When to use Base Rules

Use Base Rules when the default solver result is good but you want to fine-tune behavior around substitutions, role balancing, or how strictly rules are enforced.

Typical scenarios:

  • You want smoother, more consistent substitution patterns.
  • You need stronger control over role stability across periods.
  • You want to adjust penalties without rebuilding the plan manually.

What you can control

1. Soft penalties

Soft penalties influence solver preferences without making a rule absolutely required. Use these when you want to guide behavior rather than enforce it rigidly.

Examples:

  • Within-period swap tolerance
  • Boundary swap tolerance

Higher penalty values make the solver avoid that deviation more strongly.

2. Relaxed penalties

Relaxed penalties are useful when strict behavior makes the problem hard to solve. Use them to keep the solver flexible while still preferring good structure.

3. Hard rules

Hard rules are mandatory requirements. If a hard rule cannot be satisfied alongside your other settings, the solver may fail or require adjustments. Use hard rules only for genuinely non-negotiable constraints.

Practical tuning workflow

  1. Start with the default values.
  2. Change one setting at a time.
  3. Generate and review the result.
  4. Check substitution flow and fairness in Review and Match Day.
  5. Save only when the behavior is consistently better.

Rule of thumb

  • Start with soft penalties.
  • Use relaxed penalties when feasibility is fragile.
  • Keep hard rules minimal and intentional.

Related pages

All rules in Base Rules

The list below is generated from the same rule catalog used in the Base Rules editor.

Soft penalties

  • Boundary Change PenaltyBOUNDARY_CHANGE_PENALTY
    Reduces unnecessary outfield slot changes at period boundaries. Increase for more continuity between periods.
  • Boundary swap toleranceBOUNDARY_CHANGES_DEVIATION_PENALTY
    Controls how strictly the solver hits the configured number of swaps at period boundaries. Higher values enforce it more tightly; lower values allow some flexibility.
  • Within-period swap toleranceCHANGES_PER_SHIFT_DEVIATION_PENALTY
    Controls how strictly the solver hits the configured number of swaps per period. Higher values enforce it more tightly; lower values allow some flexibility.
  • Double Bench PenaltyDOUBLE_BENCH_PENALTY
    Prevents the same player sitting on the bench two stints in a row. Increase if bench rotation feels unfair, decrease if the optimizer is being too strict.
  • Gk Extra RewardGK_EXTRA_REWARD
    If playing time can't be divided perfectly evenly, players who have had a goalkeeper stint are first in line for the extra field time. Compensates for the outfield time they missed while in goal.
  • Gk Repeat PenaltyGK_REPEAT_PENALTY
    Almost always prevents the same player being goalkeeper in multiple periods. The very high value makes this behave like a hard rule without being one.
  • Half Period Stability BonusHALF_PERIOD_STABILITY_BONUS
    Rewards a player keeping their position for at least half a period. Reduces unnecessary early rotation within a period.
  • Position PrefPOSITION_PREF
    How strongly player position preferences influence the plan. Increase to follow preferences more strictly, decrease to let the optimizer choose freely.
  • Single Stint Cross Period PenaltySINGLE_STINT_CROSS_PERIOD_PENALTY
    Penalizes the bench-field-bench pattern that spans a period boundary. Lower penalty than within a period, since period breaks are a natural opportunity for rotation.
  • Single Stint PenaltySINGLE_STINT_PENALTY
    Penalizes the bench-field-bench pattern within a period. Prevents players from getting just one short stint surrounded by bench time.
  • Stay RewardSTAY_REWARD
    Rewards keeping a player in the same position across consecutive stints within a period. Increase for more stability, decrease for more variety.
  • Variety RewardVARIETY_REWARD
    Rewards players experiencing different positions during the match. The low default means fairness and stability take priority over variety.

Relaxed fallback penalties

  • Boundary ChangesBOUNDARY_CHANGES
    Penalty for too many changes at period boundaries. Lower than within-period since period breaks are a natural opportunity for more changes.
  • Changes Per ShiftCHANGES_PER_SHIFT
    Penalty for each substitution above the allowed maximum between two stints. Keeps the number of changes manageable for the coach.
  • FairnessFAIRNESS
    Penalty per shift of fairness deviation in fallback mode. High value means fairness is the last rule to be sacrificed.
  • Fairness Extra Slot MismatchFAIRNESS_EXTRA_SLOT_MISMATCH
    Penalty when extra shift distribution deviates from ideal. Ensures bonus shifts are spread evenly across players.
  • Forced GkFORCED_GK
    Penalty when the coach-specified goalkeeper cannot be honored in fallback mode. Only triggered as a last resort when no valid plan can be found otherwise.
  • No RepositionNO_REPOSITION
    Penalty for repositioning a player within a period in fallback mode. High value means the optimizer avoids this as long as possible.

Hard constraints

  • Enforce Boundary ChangesENFORCE_BOUNDARY_CHANGES
    Applies the same change cap at period boundaries. Disable for freer rotation between periods.
  • Enforce Changes Per ShiftENFORCE_CHANGES_PER_SHIFT
    Limits the number of slot changes between stints to the configured maximum. Disable if you want to allow more changes per shift.
  • Enforce FairnessENFORCE_FAIRNESS
    When enabled, every player is guaranteed base or base+1 shifts. The core of fair playtime — disable with caution.
  • Enforce Forced GkENFORCE_FORCED_GK
    When enabled, the coach-specified goalkeeper must be used every period. Only disable if you want the optimizer to choose the goalkeeper freely.
  • Enforce No RepositionENFORCE_NO_REPOSITION
    Prevents a player changing position at a period boundary without being benched first. Disable to allow direct position shifts between periods.
  • Enforce No Reposition Within PeriodENFORCE_NO_REPOSITION_WITHIN_PERIOD
    Prevents a player changing position mid-period without being benched first. Disable to allow direct position switches within a period.