Ignore:
Timestamp:
03/15/18 22:50:46 (6 years ago)
Author:
Maciej Komosinski
Message:

Added a few useful functions providing lists of neurons with specific properties

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/genetics/oper_fx.cpp

    r751 r758  
    212212        for (int i = 0; i < Neuro::getClassCount(); i++)
    213213                if (Neuro::getClass(i)->genactive)
     214                        active.push_back(Neuro::getClass(i));
     215        if (active.size() == 0) return NULL; else return active[randomN(active.size())];
     216}
     217
     218NeuroClass* GenoOperators::getRandomNeuroClassWithOutput()
     219{
     220        vector<NeuroClass*> active;
     221        for (int i = 0; i < Neuro::getClassCount(); i++)
     222                if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0)
     223                        active.push_back(Neuro::getClass(i));
     224        if (active.size() == 0) return NULL; else return active[randomN(active.size())];
     225}
     226
     227NeuroClass* GenoOperators::getRandomNeuroClassWithInput()
     228{
     229        vector<NeuroClass*> active;
     230        for (int i = 0; i < Neuro::getClassCount(); i++)
     231                if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredInputs() != 0)
     232                        active.push_back(Neuro::getClass(i));
     233        if (active.size() == 0) return NULL; else return active[randomN(active.size())];
     234}
     235
     236NeuroClass* GenoOperators::getRandomNeuroClassWithOutputAndNoInputs()
     237{
     238        vector<NeuroClass*> active;
     239        for (int i = 0; i < Neuro::getClassCount(); i++)
     240                if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0 && Neuro::getClass(i)->getPreferredInputs() == 0)
    214241                        active.push_back(Neuro::getClass(i));
    215242        if (active.size() == 0) return NULL; else return active[randomN(active.size())];
     
    342369}
    343370
    344 bool GenoOperators::isNeuroClassName(const char firstchar)
     371bool GenoOperators::canStartNeuroClassName(const char firstchar)
    345372{
    346373        return isupper(firstchar) || firstchar == '|' || firstchar == '@' || firstchar == '*';
Note: See TracChangeset for help on using the changeset viewer.