concept_analyzer/
genetic_engine.rs

1//! Genetic engine module
2
3use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5
6pub trait Genome: Clone + Send + Sync {}
7
8#[async_trait]
9pub trait FitnessFunction<G: Genome>: Send + Sync {
10    async fn fitness(&self, genome: &G) -> f64;
11}
12
13#[async_trait]
14pub trait AsyncFitnessFunction<G: Genome>: Send + Sync {
15    async fn fitness(&self, genome: &G) -> f64;
16}
17
18#[derive(Debug, Clone)]
19pub struct GeneticParameters;
20
21#[derive(Debug, Clone)]
22pub enum SelectionMethod {
23    Tournament,
24    Roulette,
25}
26
27pub trait GeneticConstraint<G: Genome>: Send + Sync {
28    fn is_valid(&self, genome: &G) -> bool;
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct GeneticSolution<G: Genome> {
33    pub genome: G,
34    pub fitness: f64,
35}
36
37#[derive(Debug, Clone)]
38pub struct AsyncGeneticEngine<G: Genome> {
39    _phantom: std::marker::PhantomData<G>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct TextGenome {
44    pub text: String,
45}