Skip to content
Snippets Groups Projects
user avatar
amirabdelrahman authored
df840e99
History

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