9  Mating Designs

9.1 Random Mating (Default)

pop <- breeding.diploid(
  pop,
  selection.size = c(10, 20),
  breeding.size = c(100, 100)
)
# Parents randomly paired

9.2 Assortative Mating

# Positive: Best × Best
pop <- breeding.diploid(
  pop,
  selection.size = c(10, 10),
  mating.assortative = 1,        # Perfect positive
  breeding.size = c(100, 100)
)

# Negative: Best × Worst
pop <- breeding.diploid(
  pop,
  mating.assortative = -1,       # Perfect negative
  breeding.size = c(100, 100)
)

9.3 Avoiding Inbreeding

# Avoid full-sib and half-sib matings
pop <- breeding.diploid(
  pop,
  selection.size = c(5, 20),
  avoid.mating.fullsib = TRUE,
  avoid.mating.halfsib = TRUE,
  breeding.size = c(100, 100)
)

9.4 Maximum Offspring Per Parent

# Limit offspring per sire
pop <- breeding.diploid(
  pop,
  selection.size = c(5, 20),
  max.offspring = 10,             # Max 10 offspring per parent
  breeding.size = c(100, 100)
)

# Different limits by sex
pop <- breeding.diploid(
  pop,
  selection.size = c(5, 20),
  max.offspring.m = 20,           # Males can have 20
  max.offspring.f = 5,            # Females max 5
  breeding.size = c(100, 100)
)

9.5 All Combinations (Diallel)

# Test all crosses
pop <- breeding.diploid(
  pop,
  selection.size = c(10, 10),
  breeding.all.combination = TRUE,  # 10×10 = 100 crosses
  breeding.size = c(100, 0)
)

9.6 Targeted/Fixed Matings

# Specify exact matings
# Matrix: [generation, sex, individual, generation, sex, individual]
matings <- rbind(
  c(2, 1, 5,  2, 2, 10),  # Male 5 × Female 10 from gen 2
  c(2, 1, 8,  2, 2, 15),  # Male 8 × Female 15
  c(2, 1, 3,  2, 2, 20)   # Male 3 × Female 20
)

pop <- breeding.diploid(
  pop,
  multiple.s = matings,
  copy.individual.m = 5,           # 5 offspring per mating
  copy.individual.f = 5
)

9.7 Plant Breeding: Selfing

pop <- breeding.diploid(
  pop,
  selection.size = c(100, 0),
  selfing.mating = TRUE,
  breeding.size = c(100, 0)
)

9.8 Plant Breeding: Cloning

pop <- breeding.diploid(
  pop,
  selection.size = c(50, 0),
  copy.individual.m = 10,   # 10 clones each
  breeding.size = c(500, 0)
)

9.9 Same-Sex Mating

# For plants without sex distinction
pop <- breeding.diploid(
  pop,
  selection.size = c(100, 0),
  same.sex.activ = TRUE,
  same.sex.sex = 0,              # Use "males" as both parents
  breeding.size = c(200, 0)
)

9.10 Summary

  • Random vs assortative mating
  • Inbreeding avoidance
  • Offspring number control
  • Fixed/targeted matings
  • Plant-specific: selfing, cloning

Continue to Chapter 10: Breeding Simulation!