Rank façade design alternatives with interactive AHP logic using data from Google Sheets and visualize results with Streamlit. It a two-part decision-support framework to integrate parametric design, multi-objective optimization and multi-criteria decision making for façade design alternatives. The framework employs an evolutionary optimization algorithm (NSGA-II) with the Analytic Hierarchy Process (AHP) in an interactive, browser-based application developed using Streamlit. The tool allows stakeholders to explore trade-offs among competing performance criteria and to dynamically assign weights to reflect project-specific priorities. Due to the absence of a single comprehensive dataset that includes both detailed performance metrics and the corresponding design parameters, the tool was implemented in two separate demos. This is demo 2 It focuses on alternatives with rich performance data including embodied carbon, heating and cooling loads, material cost, thermal resistance, and acoustic insulation. However, it lacks input parameter data and includes only five alternatives, which are insufficient for conducting sensitivity analysis. This dataset contains only five alternatives. Applied using: Python · Streamlit · Plotly · AHPy
- Why this exists
- Process Overview
- How it works
- Repository Layout
- Quick Start
- Detailed Workflow
- Implementation Decisions
- Limitations & Future Work
- References
This tool supports early-stage decision making in façade design by ranking alternatives based on environmental impact, cost, and performance. It helps designers explore trade-offs and justify selections using both objective performance data and subjective stakeholder preferences.
- 📊 Pulls façade data from multiple Google Sheets.
- 🧮 Normalizes performance indicators.
- ⚖️ Applies Analytic Hierarchy Process (AHP) to rank alternatives.
- 🖼️ Displays ranking table and image grid.
- 📈 Shows parallel coordinates plot to visualize trade-offs.
- Sub-criteria are grouped under three top-level categories.
- Data is normalized and pairwise comparisons are calculated.
- AHPy builds the full AHP tree.
- Streamlit sliders let users adjust weights in real time.
- Outputs include a ranked table, images, and a parallel plot.
.
├─ app/
│ └─ facade_ahp.py # Main Streamlit app
├─ images/
│ └─ <Alternative>.png # Image files for each alternative
├─ requirements.txt # Python dependencies
└─ README.md # You're reading it!
# Clone the repo
git clone https://github.com/yourusername/facade-ahp-tool.git
cd facade-ahp-tool
# Install dependencies
pip install -r requirements.txt
# Run the app
streamlit run app/facade_ahp.py| Step | Script/File | What it does |
|---|---|---|
| 1 | facade_ahp.py |
Loads Google Sheet data and normalizes values |
| 2 | facade_ahp.py |
Applies AHP with ahpy for each criteria level |
| 3 | facade_ahp.py |
Renders ranking table, image grid, and PCP chart |
Debug tip: If images don't load, check that your images/ folder has the right filenames matching Alternative.
| Decision | Why | Alternatives |
|---|---|---|
| Use Google Sheets | Dynamic update of input data without redeploying | Local CSVs or database |
| Use AHPy | Simple integration with Streamlit | Custom pairwise matrix logic |
| Normalize on load | Ensures fair comparison | Use raw values, harder to compare |
| Separate slider for each sub-criterion | Fine-tuned control | Simpler UI with group weights only |
- No error handling for invalid/missing image files.
- One AHP tree per run (no multiple stakeholder support yet).
- Add export of final scores to CSV.
- Enable user uploads of CSV instead of hardcoded URLs.
- Add login & save presets for stakeholder profiles.
- More sophisticated normalization options.
