// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void TestFilter::writeFilterParameters(AbstractFilterParametersWriter* writer) { /* Place code that will write the inputs values into a file. reference the AbstractFilterParametersWriter class for the proper API to use. */ writer->writeValue("StlFilePrefix", getStlFilePrefix() ); writer->writeValue("MaxIterations", getMaxIterations() ); writer->writeValue("MisorientationTolerance", getMisorientationTolerance() ); writer->writeValue("InputFile", getInputFile() ); writer->writeValue("InputPath", getInputPath() ); writer->writeValue("OutputFile", getOutputFile() ); writer->writeValue("OutputPath", getOutputPath() ); writer->writeValue("WriteAlignmentShifts", getWriteAlignmentShifts() ); writer->writeValue("ConversionType", getConversionType() ); writer->writeValue("SelectedCellArrayName", getSelectedCellArrayName() ); writer->writeValue("SelectedFieldArrayName", getSelectedFieldArrayName() ); writer->writeValue("SelectedEnsembleArrayName", getSelectedEnsembleArrayName() ); writer->writeValue("SurfaceMeshPointArrayName", getSurfaceMeshPointArrayName() ); writer->writeValue("SurfaceMeshFaceArrayName", getSurfaceMeshFaceArrayName() ); writer->writeValue("SurfaceMeshEdgeArrayName", getSurfaceMeshEdgeArrayName() ); writer->writeValue("SolidMeshPointArrayName", getSolidMeshPointArrayName() ); writer->writeValue("SolidMeshFaceArrayName", getSolidMeshFaceArrayName() ); writer->writeValue("SolidMeshEdgeArrayName", getSolidMeshEdgeArrayName() ); writer->writeValue("Dimensions", getDimensions() ); writer->writeValue("Origin", getOrigin() ); writer->writeValue("CellComparisonInputs", m_CellComparisonInputs); writer->writeValue("AxisAngleRotations", m_AxisAngleRotations); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int GenericExample::writeFilterParameters(AbstractFilterParametersWriter* writer, int index) { writer->openFilterGroup(this, index); /* Place code that will write the inputs values into a file. reference the AbstractFilterParametersWriter class for the proper API to use. */ writer->writeValue("StlFilePrefix", getStlFilePrefix()); writer->writeValue("MaxIterations", getMaxIterations()); writer->writeValue("MisorientationTolerance", getMisorientationTolerance()); writer->writeValue("InputFile", getInputFile()); writer->writeValue("InputPath", getInputPath()); writer->writeValue("OutputFile", getOutputFile()); writer->writeValue("OutputPath", getOutputPath()); writer->writeValue("WriteAlignmentShifts", getWriteAlignmentShifts()); writer->writeValue("ConversionType", getConversionType()); writer->writeValue("Dimensions", getDimensions()); writer->writeValue("Origin", getOrigin()); writer->writeValue("CrystalSymmetryRotations", getCrystalSymmetryRotations()); writer->writeValue("SelectedVoxelCellArrayName", getSelectedVoxelCellArrayName()); writer->writeValue("SelectedVoxelFieldArrayName", getSelectedVoxelFieldArrayName()); writer->writeValue("SelectedVoxelEnsembleArrayName", getSelectedVoxelEnsembleArrayName()); writer->writeValue("SelectedSurfaceMeshPointArrayName", getSelectedSurfaceMeshPointArrayName()); writer->writeValue("SelectedSurfaceMeshFaceArrayName", getSelectedSurfaceMeshFaceArrayName()); writer->writeValue("SelectedSurfaceMeshEdgeArrayName", getSelectedSurfaceMeshEdgeArrayName()); writer->writeValue("SelectedSolidMeshPointArrayName", getSelectedSolidMeshPointArrayName()); writer->writeValue("SelectedSolidMeshFaceArrayName", getSelectedSolidMeshFaceArrayName()); writer->writeValue("SelectedSolidMeshEdgeArrayName", getSelectedSolidMeshEdgeArrayName()); writer->writeValue("StrVector", getStrVector()); writer->closeFilterGroup(); return ++index; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void GenericExample::readFilterParameters(AbstractFilterParametersReader* reader, int index) { /* FILTER_WIDGETCODEGEN_AUTO_GENERATED_CODE BEGIN*/ reader->openFilterGroup(this, index); setStlFilePrefix( reader->readValue("StlFilePrefix", getStlFilePrefix()) ); setMaxIterations( reader->readValue("MaxIterations", getMaxIterations()) ); setMisorientationTolerance( reader->readValue("MisorientationTolerance", getMisorientationTolerance()) ); setInputFile( reader->readValue("InputFile", getInputFile()) ); setInputPath( reader->readValue("InputPath", getInputPath()) ); setOutputFile( reader->readValue("OutputFile", getOutputFile()) ); setOutputPath( reader->readValue("OutputPath", getOutputPath()) ); setWriteAlignmentShifts( reader->readValue("WriteAlignmentShifts", getWriteAlignmentShifts()) ); setConversionType( reader->readValue("ConversionType", getConversionType()) ); setDimensions( reader->readValue("Dimensions", getDimensions()) ); setOrigin( reader->readValue("Origin", getOrigin()) ); setCrystalSymmetryRotations( reader->readValue("CrystalSymmetryRotations", getCrystalSymmetryRotations()) ); setSelectedVoxelCellArrayName( reader->readValue("SelectedVoxelCellArrayName", getSelectedVoxelCellArrayName()) ); setSelectedVoxelFieldArrayName( reader->readValue("SelectedVoxelFieldArrayName", getSelectedVoxelFieldArrayName()) ); setSelectedVoxelEnsembleArrayName( reader->readValue("SelectedVoxelEnsembleArrayName", getSelectedVoxelEnsembleArrayName()) ); setSelectedSurfaceMeshPointArrayName( reader->readValue("SelectedSurfaceMeshPointArrayName", getSelectedSurfaceMeshPointArrayName()) ); setSelectedSurfaceMeshFaceArrayName( reader->readValue("SelectedSurfaceMeshFaceArrayName", getSelectedSurfaceMeshFaceArrayName()) ); setSelectedSurfaceMeshEdgeArrayName( reader->readValue("SelectedSurfaceMeshEdgeArrayName", getSelectedSurfaceMeshEdgeArrayName()) ); setSelectedSolidMeshPointArrayName( reader->readValue("SelectedSolidMeshPointArrayName", getSelectedSolidMeshPointArrayName()) ); setSelectedSolidMeshFaceArrayName( reader->readValue("SelectedSolidMeshFaceArrayName", getSelectedSolidMeshFaceArrayName()) ); setSelectedSolidMeshEdgeArrayName( reader->readValue("SelectedSolidMeshEdgeArrayName", getSelectedSolidMeshEdgeArrayName()) ); setStrVector( reader->readValue("StrVector", getStrVector() ) ); reader->closeFilterGroup(); }
void EvolutionOfMorphologyAndBehavior::setupPsoModel() { getPsoModel().setEnvy(2.0); getPsoModel().setNostalgia(2.0); getPsoModel().setLowerFitnessBetter(false); getPsoModel().setCurrentIteration(0); getPsoModel().setSharingMethod(new RingSharingMethod(2)); // getPsoModel().setSharingMethod(new StarSharingMethod()); // getPsoModel().setVelocityClampingMethod(new BasicVelocityClamping()); getPsoModel().setVelocityClampingMethod(new TanhVelocityClamping()); // getPsoModel().setInertiaUpdateMethod(NULL); getPsoModel().setInertiaUpdateMethod(new LinearDecreasingInertia(0.75 * getMaxIterations())); int particle_size = 0; //Morphology //[index] particle_size += 1; //BodyPart //[ shape | size-x | size-y | size-z | mass ] particle_size += getBodyParts() * 5; //Constraints //[ connection-point | parent-connection-point | // cone_swing_x_limit | cone_swing_z_limit | cone_twist_limit ] particle_size += (getBodyParts() - 1) * 5; //NeuralNetwork particle_size += getCreature(0).getNeuralNetwork().getTotalNumberOfWeights(); PsoParticle particle(particle_size); particle.setMaxPosition(99.99999); particle.setMaxVelocity(25.0); particle.setMinPosition(0); particle.setSpace(PsoParticle::S_CONTINUOUS); PsoParticle* clone = NULL; for (int i = 0; i < getPsoModel().getSize(); ++i) { clone = particle.clone(); getPsoModel().initialize(*clone); getPsoModel().setParticle(i, clone); } }
void OpenMPSimulation::simulate() { vector<shared_ptr<Solver::ISolver>>& solver = getSolver(); //for(size_type i = 0;i<solver.size();++i) // LOGGER_WRITE("FMU" + to_string(i) + " to " + to_string(solver[i]->getFmu()->getValues().getValues<real_type>()[0]), Util::LC_SOLVER, Util::LL_INFO); #pragma omp parallel default(none) shared(solver) { bool_type running = true; size_type iterationCount = 0, ompRank = omp_get_thread_num(), numOmpRanks = omp_get_num_threads(), maxS = solver.size(), jmpOmp = std::ceil( (double) maxS / (double) numOmpRanks); size_type sidStart = ompRank * jmpOmp, sidEnd = std::min((ompRank + 1) * jmpOmp, maxS); // TODO use scheduling double s, e; s = omp_get_wtime(); while (running && getMaxIterations() > ++iterationCount) { running = false; for (size_type i = sidStart; i < sidEnd; ++i) { //LOGGER_WRITE(solver[i]->getFmu()->getName() + " at " + to_string(solver[i]->getCurrentTime()), Util::LC_SOLVER, Util::LL_ERROR); if(solver[i]->solve(10) == std::numeric_limits<size_type>::max()) { LOGGER_WRITE("Abort simulation at " + to_string(solver[i]->getCurrentTime()) , Util::LC_SOLVER, Util::LL_ERROR); running = false; break; } running = !solver[i]->isFinished(); } } e = omp_get_wtime(); LOGGER_WRITE("thread " + to_string(omp_get_thread_num()) + " time: " + to_string(e - s), Util::LC_SOLVER, Util::LL_INFO); } }