Changeset 935 for cpp/frams/genetics/genooperators.cpp
- Timestamp:
- 05/29/20 15:20:29 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/genetics/genooperators.cpp
r899 r935 1 1 // This file is a part of Framsticks SDK. http://www.framsticks.com/ 2 // Copyright (C) 1999-20 18Maciej Komosinski and Szymon Ulatowski.2 // Copyright (C) 1999-2020 Maciej Komosinski and Szymon Ulatowski. 3 3 // See LICENSE.txt for details. 4 4 … … 223 223 } 224 224 225 int GenoOperators::getActiveNeuroClassCount( )225 int GenoOperators::getActiveNeuroClassCount(Model::ShapeType for_shape_type) 226 226 { 227 227 int count = 0; 228 228 for (int i = 0; i < Neuro::getClassCount(); i++) 229 if (Neuro::getClass(i)->genactive) 229 { 230 NeuroClass *nc = Neuro::getClass(i); 231 if (nc->isShapeTypeSupported(for_shape_type) && nc->genactive) 230 232 count++; 233 } 231 234 return count; 232 235 } 233 236 234 NeuroClass *GenoOperators::getRandomNeuroClass( )237 NeuroClass *GenoOperators::getRandomNeuroClass(Model::ShapeType for_shape_type) 235 238 { 236 239 vector<NeuroClass *> active; 237 240 for (int i = 0; i < Neuro::getClassCount(); i++) 238 if (Neuro::getClass(i)->genactive) 239 active.push_back(Neuro::getClass(i)); 241 { 242 NeuroClass *nc = Neuro::getClass(i); 243 if (nc->isShapeTypeSupported(for_shape_type) && nc->genactive) 244 active.push_back(nc); 245 } 240 246 if (active.size() == 0) return NULL; else return active[rndUint(active.size())]; 241 247 } 242 248 243 NeuroClass *GenoOperators::getRandomNeuroClassWithOutput( )249 NeuroClass *GenoOperators::getRandomNeuroClassWithOutput(Model::ShapeType for_shape_type) 244 250 { 245 251 vector<NeuroClass *> active; 246 252 for (int i = 0; i < Neuro::getClassCount(); i++) 247 if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0) 248 active.push_back(Neuro::getClass(i)); 253 { 254 NeuroClass *nc = Neuro::getClass(i); 255 if (nc->isShapeTypeSupported(for_shape_type) && nc->genactive && nc->getPreferredOutput() != 0) 256 active.push_back(nc); 257 } 249 258 if (active.size() == 0) return NULL; else return active[rndUint(active.size())]; 250 259 } 251 260 252 NeuroClass *GenoOperators::getRandomNeuroClassWithInput( )261 NeuroClass *GenoOperators::getRandomNeuroClassWithInput(Model::ShapeType for_shape_type) 253 262 { 254 263 vector<NeuroClass *> active; 255 264 for (int i = 0; i < Neuro::getClassCount(); i++) 256 if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredInputs() != 0) 257 active.push_back(Neuro::getClass(i)); 265 { 266 NeuroClass *nc = Neuro::getClass(i); 267 if (nc->isShapeTypeSupported(for_shape_type) && nc->genactive && nc->getPreferredInputs() != 0) 268 active.push_back(nc); 269 } 258 270 if (active.size() == 0) return NULL; else return active[rndUint(active.size())]; 259 271 } 260 272 261 NeuroClass *GenoOperators::getRandomNeuroClassWithOutputAndNoInputs( )273 NeuroClass *GenoOperators::getRandomNeuroClassWithOutputAndNoInputs(Model::ShapeType for_shape_type) 262 274 { 263 275 vector<NeuroClass *> active; 264 276 for (int i = 0; i < Neuro::getClassCount(); i++) 265 if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0 && Neuro::getClass(i)->getPreferredInputs() == 0) 266 active.push_back(Neuro::getClass(i)); 277 { 278 NeuroClass *nc = Neuro::getClass(i); 279 if (nc->isShapeTypeSupported(for_shape_type) && nc->genactive && nc->getPreferredOutput() != 0 && nc->getPreferredInputs() == 0) 280 active.push_back(nc); 281 } 267 282 if (active.size() == 0) return NULL; else return active[rndUint(active.size())]; 268 283 }
Note: See TracChangeset
for help on using the changeset viewer.