~ruther/ctu-fee-eoa

ee1d949d7c480ce8acaadad324223b4f1b2bf54c — Rutherther 25 days ago c0b18ff
feat: add number of constraints as a generic
1 files changed, 7 insertions(+), 3 deletions(-)

M codes/eoa_lib/src/constraints.rs
M codes/eoa_lib/src/constraints.rs => codes/eoa_lib/src/constraints.rs +7 -3
@@ 40,6 40,7 @@ impl<TChromosome, TOut: Default + PartialOrd> ConstraintFunction for LowerThanCo
}

pub struct ConstrainedFitnessFunction<'a,
    const CONSTRAINTS: usize,
    TIn,
    TOut,
    TFitness: FitnessFunction<In = TIn, Out = TOut>,


@@ 58,11 59,12 @@ pub enum ConstrainedFitnessErr<T: Error, U: Error> {
}

impl <'a,
      const CONSTRAINTS: usize,
      TOut: std::ops::Mul<Output = TOut> + std::ops::AddAssign + Copy,
      TIn,
      TFitness: FitnessFunction<In = TIn, Out = TOut>,
      TConstraint: ConstraintFunction<Chromosome = TIn, Out = TOut>>
    FitnessFunction for ConstrainedFitnessFunction<'a, TIn, TOut, TFitness, TConstraint> {
    FitnessFunction for ConstrainedFitnessFunction<'a, CONSTRAINTS, TIn, TOut, TFitness, TConstraint> {
    type In = TFitness::In;
    type Out = TOut;
    type Err = ConstrainedFitnessErr<TFitness::Err, TConstraint::Err>;


@@ 94,6 96,7 @@ impl <'a,

pub fn evolve_constraint_penalty_weight_k
    <TChromosome: Clone,
     const CONSTRAINTS: usize,
     const DParents: usize,
     TSelection: Selection<TChromosome, f64>,
     TFitness: FitnessFunction<In = TChromosome, Out = f64>,


@@ 112,7 115,7 @@ pub fn evolve_constraint_penalty_weight_k
        &EvolutionStats<TChromosome, f64>,
        &EvaluatedPopulation<TChromosome, f64>,

        &mut ConstrainedFitnessFunction<TChromosome, f64, TFitness, TConstraint>,
        &mut ConstrainedFitnessFunction<CONSTRAINTS, TChromosome, f64, TFitness, TConstraint>,
        &mut TSelection,
        &mut TPairing,
        &mut TCrossover,


@@ 157,6 160,7 @@ pub fn evolve_constraint_penalty_weight_k

pub fn evolve_constraint_penalty_weight_tau_target
    <TChromosome: Clone,
     const CONSTRAINTS: usize,
     const DParents: usize,
     TSelection: Selection<TChromosome, f64>,
     TFitness: FitnessFunction<In = TChromosome, Out = f64>,


@@ 174,7 178,7 @@ pub fn evolve_constraint_penalty_weight_tau_target
        &EvolutionStats<TChromosome, f64>,
        &EvaluatedPopulation<TChromosome, f64>,

        &mut ConstrainedFitnessFunction<TChromosome, f64, TFitness, TConstraint>,
        &mut ConstrainedFitnessFunction<CONSTRAINTS, TChromosome, f64, TFitness, TConstraint>,
        &mut TSelection,
        &mut TPairing,
        &mut TCrossover,