Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.
Selection determines which candidates become parents for the next generation in the EMEP evolutionary loop. The choice of selector shapes convergence speed, diversity maintenance, and resistance to local optima. This page specifies four selection strategies and the decision logic for choosing among them.
Randomly samples K candidates from the population. The candidate with the highest fitness wins and becomes a parent. K is the tournament size.
K = 2: weak selection pressure, high diversity
K = 5: moderate pressure, balanced
K = 10+: strong pressure, fast convergence risk
Tournament selection is the default in EMEP. It does not require fitness scaling and works with negative fitness values. It is robust to outliers because only relative ranking within the tournament matters.Rationale: Tournament selection balances exploration and exploitation without global fitness normalization. It is the recommended starting point for most experiments.
Ranks all candidates by fitness. The top T% are selected as parents. The remainder are discarded.
T = 50%: moderate pressure
T = 25%: strong pressure
T = 10%: very strong pressure, high convergence risk
Truncation is deterministic and simple to implement. It can cause rapid loss of diversity if T is too small.Rationale: Truncation is appropriate when evaluation is expensive and only high-quality candidates deserve further investment. Use with large populations to maintain diversity.
Unconditionally preserves the top E candidates into the next generation. Elitism is not a standalone selector but a modifier applied alongside any primary selection method.
E = 1: guarantees the best candidate is never lost
E = 4: default in EMEP, preserves a small elite archive within the population
E = population_size: degenerate case, no evolution
Elitism prevents regression between generations. It is always enabled in EMEP with a configurable count.Rationale: Without elitism, a generation’s best candidate can be lost to random mutation or crossover. Elitism ensures monotonic non-degradation of the population’s maximum fitness.
Selects candidates with probability proportional to their fitness. Requires positive fitness values. If fitness can be negative, a scaling offset is applied.
P(select_i) = fitness_i / sum(fitness)
Roulette is sensitive to fitness scale. A single outlier with very high fitness can dominate selection, collapsing diversity.Rationale: Roulette is included for completeness and comparison studies. It is not recommended as the primary selector in EMEP due to its sensitivity to fitness landscape shape.
EMEP supports hybrid selection: tournament for primary parents, elitism for preservation, and occasional roulette injection to maintain diversity. The hybrid is configured as:
Diversity injection selects 10% of parents via roulette rather than tournament. This introduces low-fitness candidates that may carry useful genetic material.
Selection operates on fitness values computed from the Optimization Set only. The Validation Set and Hidden Test Set are not used during selection. This prevents information leakage into the evolutionary process.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"EMEP","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#5B21B6"},"appearance":{"strict":false},"background":{"decoration":"gradient","color":{"light":"#fafdfd","dark":"#0f1214"}},"seo":{"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ping-47788c6e","hasAudioNarration":false,"actualSubdomain":"ping-47788c6e","customDomains":["doc.blueapi.ir"],"gitSource":{"type":"github","owner":"sarmadaf24","repo":"evolutionarymodellplatform","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6a9d914c7dbaaddea3035369","collectionId":"c7cc67f8-369f-45fc-a29a-15a691f103b0","liveDeploymentHistoryId":"6a9d914c7dbaaddea3035369","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a9d914c7dbaaddea3035369","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Interfaces \u0026 Governance","count":32},{"language":"default","tag":"Deployment \u0026 Ops","count":24},{"language":"default","tag":"Evolution \u0026 Evaluation","count":24},{"language":"default","tag":"Model Pipeline","count":20},{"language":"default","tag":"Platform","count":14},{"language":"default","tag":"Architecture","count":11},{"language":"default","tag":"Phases","count":10},{"language":"default","tag":"Testing","count":9},{"language":"default","tag":"Tracking \u0026 Reproducibility","count":9},{"language":"default","tag":"Evolution Engine","count":8}],"searchSettings":{"maxResults":7}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"evolution/selection","slug":"/evolution/selection","pageMetadata":{"title":"Selection Strategies for Evolutionary Search","description":"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.","sidebarTitle":"Selection","href":"/evolution/selection"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Mermaid,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Selection determines which candidates become parents for the next generation in the EMEP evolutionary loop. The choice of selector shapes convergence speed, diversity maintenance, and resistance to local optima. This page specifies four selection strategies and the decision logic for choosing among them.`}),`\n`,_jsx(Heading,{level:`2`,id:`selection-decision-tree`,children:`Selection Decision Tree`}),`\n`,_jsx(Mermaid,{chart:`flowchart TD\n START([START]) --> GOAL{Primary Goal?}\n GOAL -->|Fast Convergence| TOURN[Tournament Selection]\n GOAL -->|Steady Improvement| TRUNC[Truncation Selection]\n GOAL -->|Preserve Best| ELITE[Elitism]\n GOAL -->|Explore Widely| ROULET[Roulette Selection]\n TOURN --> PARAM1[Set Tournament Size]\n TRUNC --> PARAM2[Set Truncation Threshold]\n ELITE --> PARAM3[Set Elite Count]\n ROULET --> PARAM4[Set Fitness Scaling]\n PARAM1 --> OUTPUT[Return Selected Parents]\n PARAM2 --> OUTPUT\n PARAM3 --> OUTPUT\n PARAM4 --> OUTPUT\n OUTPUT --> END([END])`}),`\n`,_jsx(Heading,{level:`2`,id:`tournament-selection`,children:`Tournament Selection`}),`\n`,_jsx(_components.p,{children:`Randomly samples K candidates from the population. The candidate with the highest fitness wins and becomes a parent. K is the tournament size.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`K = 2`}),`: weak selection pressure, high diversity`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`K = 5`}),`: moderate pressure, balanced`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`K = 10+`}),`: strong pressure, fast convergence risk`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Tournament selection is the default in EMEP. It does not require fitness scaling and works with negative fitness values. It is robust to outliers because only relative ranking within the tournament matters.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rationale`}),`: Tournament selection balances exploration and exploitation without global fitness normalization. It is the recommended starting point for most experiments.`]}),`\n`,_jsx(Heading,{level:`2`,id:`truncation-selection`,children:`Truncation Selection`}),`\n`,_jsx(_components.p,{children:`Ranks all candidates by fitness. The top T% are selected as parents. The remainder are discarded.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`T = 50%`}),`: moderate pressure`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`T = 25%`}),`: strong pressure`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`T = 10%`}),`: very strong pressure, high convergence risk`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Truncation is deterministic and simple to implement. It can cause rapid loss of diversity if T is too small.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rationale`}),`: Truncation is appropriate when evaluation is expensive and only high-quality candidates deserve further investment. Use with large populations to maintain diversity.`]}),`\n`,_jsx(Heading,{level:`2`,id:`elitism`,children:`Elitism`}),`\n`,_jsx(_components.p,{children:`Unconditionally preserves the top E candidates into the next generation. Elitism is not a standalone selector but a modifier applied alongside any primary selection method.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`E = 1`}),`: guarantees the best candidate is never lost`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`E = 4`}),`: default in EMEP, preserves a small elite archive within the population`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`E = population_size`}),`: degenerate case, no evolution`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Elitism prevents regression between generations. It is always enabled in EMEP with a configurable count.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rationale`}),`: Without elitism, a generation’s best candidate can be lost to random mutation or crossover. Elitism ensures monotonic non-degradation of the population’s maximum fitness.`]}),`\n`,_jsx(Heading,{level:`2`,id:`roulette-selection-fitness-proportionate`,children:`Roulette Selection (Fitness Proportionate)`}),`\n`,_jsx(_components.p,{children:`Selects candidates with probability proportional to their fitness. Requires positive fitness values. If fitness can be negative, a scaling offset is applied.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`P(select_i) = fitness_i / sum(fitness)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Roulette is sensitive to fitness scale. A single outlier with very high fitness can dominate selection, collapsing diversity.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rationale`}),`: Roulette is included for completeness and comparison studies. It is not recommended as the primary selector in EMEP due to its sensitivity to fitness landscape shape.`]}),`\n`,_jsx(Heading,{level:`2`,id:`selector-configuration`,children:`Selector Configuration`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Parameter`}),_jsx(_components.th,{children:`Tournament`}),_jsx(_components.th,{children:`Truncation`}),_jsx(_components.th,{children:`Elitism`}),_jsx(_components.th,{children:`Roulette`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Key setting`}),_jsx(_components.td,{children:`tournament_size`}),_jsx(_components.td,{children:`truncation_threshold`}),_jsx(_components.td,{children:`elite_count`}),_jsx(_components.td,{children:`fitness_scaling`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Default`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`5`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`0.5`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`4`}),_jsx(_components.td,{children:`linear`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Range`}),_jsx(_components.td,{children:`2 to population_size`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`0.1 to 0.9`}),_jsx(_components.td,{children:`0 to population_size / 4`}),_jsx(_components.td,{children:`linear, sigma, rank`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`combined-strategy`,children:`Combined Strategy`}),`\n`,_jsx(_components.p,{children:`EMEP supports hybrid selection: tournament for primary parents, elitism for preservation, and occasional roulette injection to maintain diversity. The hybrid is configured as:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"primary\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tournament\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tournament_size\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"elitism_count\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"diversity_injection\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"injection_selector\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"roulette\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Diversity injection selects 10% of parents via roulette rather than tournament. This introduces low-fitness candidates that may carry useful genetic material.`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Selection operates on fitness values computed from the Optimization Set only. The Validation Set and Hidden Test Set are not used during selection. This prevents information leakage into the evolutionary process.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Selection Strategies for Evolutionary Search","description":"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.","sidebarTitle":"Selection","href":"/evolution/selection"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Selection Decision Tree","slug":"selection-decision-tree","depth":2,"children":[]},{"title":"Tournament Selection","slug":"tournament-selection","depth":2,"children":[]},{"title":"Truncation Selection","slug":"truncation-selection","depth":2,"children":[]},{"title":"Elitism","slug":"elitism","depth":2,"children":[]},{"title":"Roulette Selection (Fitness Proportionate)","slug":"roulette-selection-fitness-proportionate","depth":2,"children":[]},{"title":"Selector Configuration","slug":"selector-configuration","depth":2,"children":[]},{"title":"Combined Strategy","slug":"combined-strategy","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ping-47788c6e","siteName":"EMEP","title":"Selection Strategies for Evolutionary Search - EMEP","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-06T12:16:45.357Z","originalFileLocation":"evolution/selection.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EMEP\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Selection Strategies for Evolutionary Search - EMEP\">\u003cmeta data-mint-head property=\"og:description\" content=\"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EMEP\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://doc.blueapi.ir/evolution/selection\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ping-47788c6e.mintlify.app/_mintlify/api/og/v2?division=Evolution+Engine\u0026amp;title=Selection+Strategies+for+Evolutionary+Search\u0026amp;description=Specification+for+selection+operators+in+EMEP%2C+including+tournament%2C+truncation%2C+elitism%2C+and+roulette+with+decision+rationale+and+configuration.\u0026amp;theme=074c708ff2f145909468e7e3\u0026amp;signature=c221de1a541b5a8092f41154ea8ce8003c57b7fb425878a27ba9215e1c8bb0be\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Selection Strategies for Evolutionary Search - EMEP\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ping-47788c6e.mintlify.app/_mintlify/api/og/v2?division=Evolution+Engine\u0026amp;title=Selection+Strategies+for+Evolutionary+Search\u0026amp;description=Specification+for+selection+operators+in+EMEP%2C+including+tournament%2C+truncation%2C+elitism%2C+and+roulette+with+decision+rationale+and+configuration.\u0026amp;theme=074c708ff2f145909468e7e3\u0026amp;signature=c221de1a541b5a8092f41154ea8ce8003c57b7fb425878a27ba9215e1c8bb0be\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/ping-47788c6e/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EMEP\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://doc.blueapi.ir/evolution/selection\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/evolution/selection.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://doc.blueapi.ir/#organization\",\"name\":\"EMEP\",\"url\":\"https://doc.blueapi.ir\"},{\"@type\":\"WebSite\",\"@id\":\"https://doc.blueapi.ir#website\",\"name\":\"EMEP\",\"url\":\"https://doc.blueapi.ir\",\"publisher\":{\"@id\":\"https://doc.blueapi.ir/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://doc.blueapi.ir/evolution/selection#webpage\",\"url\":\"https://doc.blueapi.ir/evolution/selection\",\"name\":\"Selection Strategies for Evolutionary Search\",\"description\":\"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\",\"dateModified\":\"2026-09-06T12:16:45.357Z\",\"isPartOf\":{\"@id\":\"https://doc.blueapi.ir#website\"},\"breadcrumb\":{\"@id\":\"https://doc.blueapi.ir/evolution/selection#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://doc.blueapi.ir/evolution/selection#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Evolution Engine\",\"item\":\"https://doc.blueapi.ir/evolution/evolution-engine\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Selection Strategies for Evolutionary Search\",\"item\":\"https://doc.blueapi.ir/evolution/selection\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://doc.blueapi.ir/evolution/selection#article\",\"headline\":\"Selection Strategies for Evolutionary Search\",\"name\":\"Selection Strategies for Evolutionary Search\",\"description\":\"Specification for selection operators in EMEP, including tournament, truncation, elitism, and roulette with decision rationale and configuration.\",\"url\":\"https://doc.blueapi.ir/evolution/selection\",\"mainEntityOfPage\":{\"@id\":\"https://doc.blueapi.ir/evolution/selection#webpage\"},\"dateModified\":\"2026-09-06T12:16:45.357Z\",\"publisher\":{\"@id\":\"https://doc.blueapi.ir/#organization\"},\"isPartOf\":{\"@id\":\"https://doc.blueapi.ir#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EMEP\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EMEP","nav":{"global":null,"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":""}]},{"tab":"Architecture","pages":[{"title":"Architecture","href":"/architecture/system-architecture"}]},{"tab":"Model Pipeline","pages":[{"title":"Model Pipeline","href":"/compatibility/model-compatibility"}]},{"tab":"Evolution \u0026 Evaluation","groups":[{"group":"Evolution Engine","pages":[{"title":"EvolutionEngine Specification for EMEP","sidebarTitle":"EvolutionEngine","href":"/evolution/evolution-engine"},{"title":"Genome Encoding for Model Merge Candidates","sidebarTitle":"Genome","href":"/evolution/genome"},{"title":"Population Management in EMEP Evolution","sidebarTitle":"Population","href":"/evolution/population"},{"title":"Mutation Operators for Merge Genome Evolution","sidebarTitle":"Mutation","href":"/evolution/mutation"},{"title":"Crossover Operators for Merge Genome Combination","description":"Specification for crossover operators in EMEP, including uniform, one-point on layer index, and arithmetic blend with constraint enforcement.","sidebarTitle":"Crossover","href":"/evolution/crossover"},{"title":"Selection Strategies for Evolutionary Search","sidebarTitle":"Selection","href":"/evolution/selection"},{"title":"Fitness Engine and Candidate Scoring","description":"Specification for the FitnessEngine in EMEP, covering scalar single-objective aggregation and multi-objective vector fitness computation.","sidebarTitle":"Fitness","href":"/evolution/fitness"},{"title":"Multi-Objective Optimization with NSGA-II","sidebarTitle":"Multi-Objective","href":"/evolution/multi-objective-optimization"}]},{"group":"Evaluation","pages":[{"title":"EvaluationEngine and BenchmarkEngine Framework","sidebarTitle":"Evaluation Framework","href":"/evaluation/framework"},{"title":"Benchmark Record Schema and Configuration","sidebarTitle":"Benchmark Spec","href":"/evaluation/benchmark-specification"},{"title":"Benchmark Catalog by Category and Purpose","sidebarTitle":"Benchmark Catalog","href":"/evaluation/benchmark-catalog"},{"title":"Persian Language Evaluation Concerns and Benchmarks","sidebarTitle":"Persian Evaluation","href":"/evaluation/persian-evaluation"},{"title":"Safety Evaluation and Harmful Content Detection","sidebarTitle":"Safety Evaluation","href":"/evaluation/safety-evaluation"},{"title":"Regression Detection and Statistical Protocol","sidebarTitle":"Regression Evaluation","href":"/evaluation/regression-evaluation"},{"title":"Benchmark Integrity and Data Contamination Prevention","sidebarTitle":"Benchmark Integrity","href":"/evaluation/benchmark-integrity"}]},{"group":"Tracking \u0026 Reproducibility","pages":[{"title":"ExperimentTracker Event Stream and Responsibilities","sidebarTitle":"Experiment Tracking","href":"/tracking/experiment-tracking"},{"title":"Complete Experiment Record Schema","sidebarTitle":"Experiment Schema","href":"/tracking/experiment-schema"},{"title":"ModelRegistry API and State Management","sidebarTitle":"Model Registry","href":"/tracking/model-registry"},{"title":"DatasetRegistry for Versioned Data Management","sidebarTitle":"Dataset Registry","href":"/tracking/dataset-registry"},{"title":"ArtifactStore for Content-Addressed Model Storage","sidebarTitle":"Artifact Registry","href":"/tracking/artifact-registry"},{"title":"Model Lineage Graph and Ancestry Tracking","sidebarTitle":"Model Lineage","href":"/tracking/model-lineage"},{"title":"Reproducibility Requirements for EMEP Experiments","sidebarTitle":"Reproducibility","href":"/tracking/reproducibility"},{"title":"Step-by-Step Experiment Reproduction Protocol","sidebarTitle":"Reproducibility Protocol","href":"/tracking/reproducibility-protocol"},{"title":"Model Provenance Record and Verification Chain","sidebarTitle":"Model Provenance","href":"/tracking/model-provenance"}]}]},{"tab":"Deployment \u0026 Ops","pages":[{"title":"Deployment \u0026 Ops","href":"/deployment/quantization"}]},{"tab":"Interfaces \u0026 Governance","pages":[{"title":"Interfaces \u0026 Governance","href":"/interfaces/api-specification"}]}]},"basePath":"","title":"Selection Strategies for Evolutionary Search - EMEP","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}