pop <- breeding.diploid(
pop,
selection.criteria = "random",
selection.size = c(20, 20),
breeding.size = c(100, 100)
)8 Selection Strategies
8.1 Overview
Selection is controlled through breeding.diploid() parameters. Key options:
selection.criteria- What to select onselection.size- How many to selectselection.m.gen/selection.f.gen- Which generationsselection.index- Multi-trait selection
8.2 Random Selection
8.3 Phenotypic Selection
# Phenotype first
pop <- breeding.diploid(pop, phenotyping = "all", heritability = 0.5)
# Select on phenotypes
pop <- breeding.diploid(
pop,
selection.criteria = "pheno",
selection.size = c(10, 10),
breeding.size = c(50, 50)
)8.4 Genomic Selection (BVE)
# Calculate BVEs
pop <- breeding.diploid(pop, bve = TRUE, bve.gen = 1:3)
# Select on estimated breeding values
pop <- breeding.diploid(
pop,
selection.criteria = "bve",
selection.size = c(10, 10),
breeding.size = c(50, 50)
)8.5 Selection on True Breeding Values
# Select on known BVs (simulation only!)
pop <- breeding.diploid(
pop,
selection.criteria = "bv",
selection.size = c(5, 5),
breeding.size = c(100, 100)
)8.6 Multi-Trait Selection Index
# Define economic weights
pop <- breeding.diploid(
pop,
selection.criteria = "bve",
selection.index = c(1, 10, 5), # Weights for traits 1,2,3
selection.size = c(10, 10),
breeding.size = c(50, 50)
)8.7 Truncation Selection with Variable Intensity
# Select top males, more females
pop <- breeding.diploid(
pop,
selection.criteria = "bve",
selection.size = c(5, 20), # 5% males, 20% females
selection.m.gen = 4,
selection.f.gen = 4,
breeding.size = c(50, 50)
)8.8 Threshold Selection
# Only individuals above threshold
pop <- breeding.diploid(
pop,
selection.criteria = "bve",
selection.m.threshold = 105, # BVE > 105
selection.f.threshold = 100, # BVE > 100
breeding.size = c(50, 50)
)8.9 Optimal Genetic Contribution (OGC)
Balance genetic gain with diversity:
# Requires optiSel package
library(optiSel)
pop <- breeding.diploid(
pop,
selection.algorithm = "ogc",
ogc.target.inbreeding = 0.01, # Max 1% inbreeding increase
selection.size = c(20, 20),
breeding.size = c(100, 100)
)8.10 Custom Selection Function
# Define custom selection
my_selector <- function(population, gen, sex) {
bv <- get.bv(population, gen = gen, sex = sex)
pheno <- get.pheno(population, gen = gen, sex = sex)
# Custom criterion: BV + 0.5*pheno
score <- bv[1,] + 0.5 * pheno[1,]
# Return indices of selected individuals
return(order(score, decreasing = TRUE)[1:10])
}
# Use in breeding
pop <- breeding.diploid(
pop,
selection.m.function = my_selector,
selection.f.function = my_selector,
breeding.size = c(50, 50)
)8.11 Summary
- Random, phenotypic, genomic, and true BV selection
- Multi-trait selection indices
- Threshold and OGC methods
- Custom selection functions
Continue to Chapter 9: Mating Designs!