RockyML  0.0.1
A High-Performance Scientific Computing Framework
container_manipulation.h
1 /*
2  Copyright (C) 2022 Amirabbas Asadi , All Rights Reserved
3  distributed under Apache-2.0 license
4 */
5 #ifndef ROCKY_ZAGROS_CONTAINER_MAN
6 #define ROCKY_ZAGROS_CONTAINER_MAN
7 
8 #include <rocky/zagros/strategies/strategy.h>
9 
10 namespace rocky{
11 namespace zagros{
12 
19 template<typename T_e, int T_dim>
20 class container_strategy: public basic_strategy<T_e, T_dim>{};
21 
26 template<typename T_e, int T_dim>
27 class select_from_strategy: public container_strategy<T_e, T_dim>{
28 protected:
29  // destination container
31  // source container
33 
34 public:
36  des_ = des;
37  src_ = src;
38  }
39  virtual void apply(){
40  des_->replace_with(src_);
41  }
42 };
43 
48 template<typename T_e, int T_dim>
49 class eval_strategy: public container_strategy<T_e, T_dim>{
50 protected:
51  // problem
52  system<T_e>* problem_;
53  // destination container
54  basic_scontainer<T_e, T_dim>* container_;
55 public:
57  problem_ = problem;
58  container_ = cnt;
59  }
60  virtual void apply(){
61  container_->evaluate_and_update(problem_);
62  }
63 };
64 
65 };
66 };
67 
68 #endif
rocky::zagros::eval_strategy
evaluate the solutions in a container and update the values
Definition: container_manipulation.h:49
rocky::zagros::select_from_strategy
replace worst solutions in a container with the best solutions of another
Definition: container_manipulation.h:27
rocky::zagros::basic_scontainer::replace_with
void replace_with(basic_scontainer< T_e, T_dim > *cnt)
replace the best values from another container
Definition: scontainer.h:266
rocky::zagros::basic_scontainer
a data container representing a scontainer
Definition: scontainer.h:31
rocky::zagros::system
Definition: system.h:20
rocky::zagros::basic_scontainer::evaluate_and_update
void evaluate_and_update(system< T_e > *problem, int rng_start, int rng_end)
evaluate and update the particles within a range
Definition: scontainer.h:205
rocky::zagros::basic_strategy
Interface for all strategies.
Definition: strategy.h:31
rocky::zagros::container_strategy
base class for strategies for container manipulation
Definition: container_manipulation.h:20