cpp_reps
C++ project to compare search of different design representations against a target static shape, and later against a physical function.
Search methods used: nelder mead, gradient descent, EM and CMAES.
Representations
- global Representations
- parametric frep (~ 5 parameters)
- frep trees (~ 10 parameters)
- dft (~ 20 parameters)
- DNN/DMN (~ 100 parameters)
- distance fields (~ 400 parameters)
- point cloud/mesh (~ 1,000 parameters)
- voxel search (~ 10,000 parameters)
- local
- morphogenes
- Arep
- lsystems
Representation Comparison
Comparison Criteria
- Number of Parameters
- Expressiveness
- Convergence rate
- Best Score
Target Images
All target Images are 100*100





Example Best Results
- parametric frep (~ 5 parameters)
- frep trees (~ 10 parameters)
- dft (~ 20 parameters)
- DNN/DMN (~ 300 parameters)
- cmaes





- sgd





- distance fields (~ 400 parameters)





- point cloud/mesh (~ 1,000 parameters)
- voxel search (~ 10,000 parameters)





dft progress
Dependencies
Similar to cpp_starter:
- a modern C++ compiler (i.e. one that supports C++17 features, ex. gcc 7+)
- cmake 3.13 or newer
- Eigen3 (installable via apt, yum, or homebrew)
- openCV (installable via apt, yum, or homebrew)
- json Library: https://github.com/nlohmann/json
Building
From the project's root directory,
mkdir build
cd build
cmake ..
make
Tips:
- you can build using multiple threads at once using e.g.
make -j4
- you can specify a specific compiler using
cmake .. -DCMAKE_CXX_COMPILER=g++-8
- for debugging symbols use
cmake .. -DCMAKE_BUILD_TYPE=Debug
Running
From the build directory,
cpp_frep/cpp_frep
cpp_dnn/cpp_dnn
cpp_dft/cpp_dft
cpp_voxel/cpp_voxel