Changeset 1274 for cpp/frams/genetics/f4


Ignore:
Timestamp:
09/09/23 15:12:57 (8 months ago)
Author:
Maciej Komosinski
Message:

Cosmetic

Location:
cpp/frams/genetics/f4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/genetics/f4/f4_conv.cpp

    r1259 r1274  
    247247        {
    248248                const char* nclass = C->neuclass->name.c_str();
    249                 if (C->neuclass->getPreferredLocation() == 0)
     249                switch (C->neuclass->getPreferredLocation())
     250                {
     251                case NeuroClass::PrefLocation::PREFER_UNATTACHED:
    250252                {
    251253                        if (strcmp(nclass, "N") == 0) //special case just to specify the only neuron properties supported by f4, i.e., the properties for neuron class 'N'
     
    253255                        else
    254256                                sprintf(tmpLine, "d=\"%s\"", nclass);
    255                 }
    256                 else if (C->neuclass->getPreferredLocation() == 1) // attached to Part or have no required attachment - also part
     257                        break;
     258                }
     259                case NeuroClass::PrefLocation::PREFER_PART: // attach to Part
    257260                {
    258261                        int partno = C->dadlink->p2_refno;
     
    260263
    261264                        sprintf(tmpLine, "p=%d,d=\"%s\"", partno, nclass);
    262                 }
    263                 else // attached to Joint, assume there are only three possibilities of getPreferredLocation()
     265                        break;
     266                }
     267                case NeuroClass::PrefLocation::PREFER_JOINT: // attach to Joint
    264268                {
    265269                        int jointno = C->dadlink->joint_refno;
     
    273277                        else
    274278                                sprintf(tmpLine, "j=%d,d=\"%s\"", jointno, nclass);
     279                        break;
     280                }
    275281                }
    276282
  • cpp/frams/genetics/f4/f4_oper.cpp

    r1259 r1274  
    88
    99
    10 // This representation has a tendency to bloat - adding a small penalty to fitness such as "this.velocity - 0.000000001*String.len(this.genotype);"
    11 // may help, but it would be better to improve the source code to make genetic operators neutral in terms of genotype length. Adding such a penalty
    12 // removes "work in progress" changes in genotypes thus promoting immediate, straightforward improvements while hindering slower, multifaceted progress.
     10// This representation has a tendency to bloat - adding a small penalty to fitness such as "this.velocity - 0.000000001*String.len(this.genotype);" may help, but it would be better to improve the source code to make genetic operators neutral in terms of genotype length. Adding such a penalty removes "work in progress" changes in genotypes thus promoting immediate, straightforward improvements while hindering slower, multifaceted progress.
    1311// TODO getting rid of redundancy (valid genotypes with a lot of "junk code") in this representation looks like a good idea; many improvements to this end have already been done in April & May 2023, so maybe it is not a big problem now?
    14 // 
     12//
    1513//
    1614// TODO the behavior of neuron input indexes during mutation seems badly implemented (see also TREAT_BAD_CONNECTIONS_AS_INVALID_GENO). Are they kept properly maintained when nodes are added and removed? This could be done well because during mutation we operate on the tree structure with cross-references between nodes (so they should not be affected by local changes in the tree), and then convert the tree back to string. Yet, the f4_Node.conn_from is an integer and these fields in nodes do not seem to be maintained on tree node adding/removal... change these integer offsets to references to node objects? But actually, do the offsets that constitute relative connection references concern the f4_Node tree structure (and all these sophisticated calculations of offsets during mutation are useful) or rather they concern the f4_Cells development? verify all situations in f4_Cell::oneStep(), case '['.
Note: See TracChangeset for help on using the changeset viewer.