StageObject::StageObject(const vector<const Scenable*>& vec_group): visible(true), selected(false) { InitGroup(Translate<Scenable,GusObject>(vec_group)); for (auto obj : vec_group) { obj->SetStageRef(*this); } }
void FDetailItemNode::Initialize() { if( ( Customization.HasCustomWidget() && Customization.WidgetDecl->VisibilityAttr.IsBound() ) || ( Customization.HasCustomBuilder() && Customization.CustomBuilderRow->RequiresTick() ) || ( Customization.HasPropertyNode() && Customization.PropertyRow->RequiresTick() ) || ( Customization.HasGroup() && Customization.DetailGroup->RequiresTick() ) ) { // The node needs to be ticked because it has widgets that can dynamically come and go bTickable = true; ParentCategory.Pin()->AddTickableNode( *this ); } if( Customization.HasPropertyNode() ) { InitPropertyEditor(); } else if( Customization.HasCustomBuilder() ) { InitCustomBuilder(); } else if( Customization.HasGroup() ) { InitGroup(); } if (Customization.PropertyRow.IsValid() && Customization.PropertyRow->GetForceAutoExpansion()) { SetExpansionState(true); } // Cache the visibility of customizations that can set it if( Customization.HasCustomWidget() ) { CachedItemVisibility = Customization.WidgetDecl->VisibilityAttr.Get(); } else if( Customization.HasPropertyNode() ) { CachedItemVisibility = Customization.PropertyRow->GetPropertyVisibility(); } else if( Customization.HasGroup() ) { CachedItemVisibility = Customization.DetailGroup->GetGroupVisibility(); } const bool bUpdateFilteredNodes = false; GenerateChildren( bUpdateFilteredNodes ); }
StageObject::StageObject(const vector<const StageObject*>& vec_group): name(vec_group.front()->_GetName()), visible(true), selected(false) { vector<const SpaceObject*> vec_space; for (auto obj : vec_group) { // LOGE("[STAGEOBJECT][StageObject] position %s", obj->GetBox().position.Print().c_str()); // LOGE("[STAGEOBJECT][StageObject] halfvec %s", obj->GetBox().halfVec.Print().c_str()); vec_space.push_back(dynamic_cast<const SpaceObject*>(obj)); } for (auto obj : vec_space) { // LOGE("[STAGEOBJECT][StageObject] vec_space position %s", obj->GetBox().position.Print().c_str()); // LOGE("[STAGEOBJECT][StageObject] vec_space halfvec %s", obj->GetBox().halfVec.Print().c_str()); } // InitBox(Translate<StageObject,SpaceObject>(vec_group)); InitBox(vec_space); InitGroup(Translate<StageObject,GusObject>(vec_group)); }
void GeneticAlgorithm(){ int maxIter = 100; int i,j,k; int group[GROUP_SIZE][COUNT_FUNC]; int oldParameter[COUNT_FUNC]; int maxIndex; double sum,max,min,tmp; int count_record = 0; char output[300]; /*初始族群*/ InitGroup(group); for ( i = 0 ; i < maxIter ; i++){ Eliminate(group); Crossover(group); Mutation(group); sum = 0; max = -1; min = 20; maxIndex = 0; #pragma omp parallel for for ( j = 0 ; j < GROUP_SIZE ; j++){ tmp= Evalue( group[j]); if ( tmp > 10){ fout = fopen("parameter.txt", "a"); sprintf(output,"Parameter = "); for ( k = 0 ; k < COUNT_FUNC ; k++){ sprintf(output,"%s %5d",output, group[j][k]); } sprintf(output,"%s, Score = %lf\n",output,tmp); fprintf(fout,"%s",output); fclose(fout); } sum += tmp; if ( tmp > max ){ max= tmp; maxIndex = j; } if ( tmp < min ) min = tmp; } if ( i % 10 == 0) Record(group); printf("Level(%d) = %.2lf, %.2lf, %.2lf\n", i,max,sum/GROUP_SIZE,min); if ( max >= 10.5 && PlayGame(group[maxIndex]) >= 10.9) break; } printf("==Result==\n"); for ( i = 0 ; i < COUNT_FUNC ; i++){ printf(", %d", group[maxIndex][i]); } putchar('\n'); }