scanning log geometries, and choosing optimal stacking configurations
using simulated annealing to minimise the total overlap cost
SmartCLT documents a multi-disciplinary workshop focused on reimagining cross-laminated timber (CLT) through data-driven design, imaging, and fabrication. At its core is the simulated-annealing optimisation pipeline developed during the Algorithm track to compute minimal overlap stacking sequences for scanned logs. The repository aggregates the contributions from several focused tracks that feed into and build upon this optimisation work:
- Imaging – capturing raw log geometry and preparing masks for downstream analysis (
T_Imaging/). - Algorithm – computing optimal log stacking sequences that minimise material overlap and waste (
T_Algorithm/). - Construction – translating algorithmic layouts into buildable assemblies (
T_Construction/). - Fabrication – preparing CNC-ready toolpaths and DXF exports (
T_Fabrication/). - Workflow & Data – documenting collaborative processes and experimenting with structured data hand-offs (
T_Workflow/).
Photos/ Reference imagery and final physical prototypes
Scan0-2/ Raw scan data used for testing the imaging and algorithm pipelines
T_Algorithm/ Jupyter notebooks, intermediate outputs, and evaluation imagery for stacking optimisation
T_Construction/ Physical assembly drawings and material breakdowns
T_Fabrication/ CAD/CAM exports used during the workshop build session
T_Imaging/ Capture notes and masks generated from the log scans
T_Workflow/ Team workflow notes plus early dataframe experiments
presentation_poster.jpg High-level poster summarising the workshop narrative
The T_Algorithm/IN-CODE notebooks house the optimisation work that I worked on for the workshop. The core objectives were:
- Pre-processing – batch loading the masked log silhouettes, normalising their scale, and reducing resolution for rapid prototyping.
- Pairwise alignment – sliding adjacent logs to quantify their overlap and compute a loss value for each pairing (
align_linear). - Search strategy – using simulated annealing to explore permutations of log ordering, flipping, and rotation states while minimising the total overlap cost (
objective_function,simulated_annealing). - Result extraction – exporting the best-performing sequence as both high-resolution composites for fabrication and CSV schedules for the construction team.
Intermediate visualisations of the optimisation process and solutions are available under T_Algorithm/TEST/, while final stacked layouts are exported in T_Algorithm/OUT-CutLine/ and T_Algorithm/OUT-DXF/ for downstream tooling.
- Clone the repository
git clone https://github.com/<your-org>/SmartCLT.git cd SmartCLT
- Create a virtual environment (Python 3.10+ recommended) and install the required packages:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt # or install numpy, opencv-python, pandas, matplotlib manually
- Launch Jupyter Lab/Notebook to explore the algorithm notebooks:
Open
jupyter lab
T_Algorithm/IN-CODE/SmartCLT_ALGO_Team.ipynbfor an end-to-end walkthrough of the optimisation workflow.
Tip: The notebooks expect the scan masks to be present under
Scan2/GOOD_SCAN. Update the data paths at the top of the notebooks if your directory layout differs.
- Run the pre-processing cells to load and downsample the log silhouettes.
- Execute the simulated annealing block to search for the best ordering/flipping configuration. Tweak the temperature schedule, number of iterations, and mutation operators to experiment with alternative solutions.
- Use the provided export cells to save composite images and tabular summaries for fabrication and construction teams.
Example outputs are already saved in the repository for quick reference:
Photos/3_final_cut_logs.jpg– final curated arrangement used for fabrication hand-off.T_Algorithm/RESULTS/– comparison plots of candidate solutions and loss curves.
This workshop was delivered by a multi-disciplinary team covering imaging, algorithm development, construction planning, fabrication, and workflow design. I focused on the Algorithm track, working on the development of the simulated-annealing-based approach for computing minimal overlap between logs and coordinating the data hand-offs to the downstream teams.
For a visual summary, refer to presentation_poster.jpg and the reference photos in the Photos/ directory.
Supervised by: prof. Carlo Ratti, Mykola Murashko, Nikita Klimenko, and workshop participants.



