Exemplo n.º 1
0
 public object Clone()
 {
     return(new BionicModel()
     {
         Attributes = (NamedModelEntityCollection <Parameter>)Attributes.Clone(),
         FitnessCriterion = (Criterion)FitnessCriterion.Clone(),
         FunctionalConstraints = (NamedModelEntityCollection <Constraint>)FunctionalConstraints.Clone(),
         CurrentPopulation = (Population)CurrentPopulation.Clone(),
         CurrentGeneration = CurrentGeneration
     });
 }
Exemplo n.º 2
0
 /// <summary>
 /// Creates a deep copy of <see cref="IdentificationModel"/> instance
 /// </summary>
 /// <returns>Deep copy of self</returns>
 public object Clone()
 {
     return(new IdentificationModel()
     {
         IdentificationExperiments = (IdentificationExperimentCollection)IdentificationExperiments.Clone(),
         RealExperiments = (ExperimentCollection)RealExperiments.Clone(),
         IdentificationParameters = (ParameterCollection)IdentificationParameters.Clone(),
         OptimizationParameters = (ParameterCollection)OptimizationParameters.Clone(),
         Criteria = (CriterionCollection)Criteria.Clone(),
         FunctionalConstraints = (ConstraintCollection)FunctionalConstraints.Clone(),
         Properties = (PropertyCollection)Properties.Clone()
     });
 }
Exemplo n.º 3
0
 private void ApplyFunctionalConstraints(Individual individual)
 {
     individual.IsActive = true;
     foreach (KeyValuePair <TId, double> constraint in individual.ConstraintValues)
     {
         if (FunctionalConstraints.ContainsKey(constraint.Key))
         {
             if (!Comparer.CompareValuesWithSign(
                     constraint.Value,
                     FunctionalConstraints[constraint.Key].Value,
                     FunctionalConstraints[constraint.Key].ConstraintRelation)
                 )
             {
                 individual.IsActive = false;
                 // It is enough to fail only one f. c.
                 break;
             }
         }
     }
 }
Exemplo n.º 4
0
 private void ApplyFunctionalConstraints(Experiment experiment)
 {
     experiment.IsActive = true;
     foreach (KeyValuePair <TId, double> constraint in experiment.ConstraintValues)
     {
         if (FunctionalConstraints.ContainsKey(constraint.Key))
         {
             if (!Comparer.CompareValuesWithSign(
                     constraint.Value,
                     FunctionalConstraints[constraint.Key].Value,
                     FunctionalConstraints[constraint.Key].ConstraintRelation)
                 )
             {
                 // Не вписывается в ограничение, сбрасываем
                 experiment.IsActive = false;
                 // Условие И на ограничения, поэтому если хоть
                 // по одному не проходит - дальше не проверяем
                 break;
             }
         }
     }
 }