Code for "Constraint-Driven Latent Space Merging for Generative Multidisciplinary Design Optimization" (Computer-Aided Design). The test case is a UAV assembled from pretrained wing, airfoil, fuselage and internals models.
Citation: TBD
Python 3.11. A GPU is optional.
git clone https://github.com/IDEALLab/glue.git
cd glue
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python utils/test_setup.py
python utils/test_functionality.pyThe airfoil model cebgan.tar (the airfoil GAN from IDEALLab) is too large for git. utils/test_functionality.py downloads it from https://huggingface.co/IDEALLab/CEB-GAN-airfoil-GLUE into UAV/subsystems/airfoil_model/. All other models and the cached W&B results are in the repo.
W&B is only needed to train models or pull fresh runs. For that, copy utils/config.env.example to config.env in the repo root and fill in WANDB_API_KEY and WANDB_ENTITY.
UAV/I_alm_gd/: ALM-GD optimization baseline.UAV/I_turbo_igd/: TuRBO with inner gradient descent baseline.UAV/II_train_DD_coordination/: data-driven generative baselines trained on ALM-GD results.UAV/III_train_DF_coordination/: data-free coordination model (the paper's method).UAV/subsystems/: pretrained subsystem models andforward/forward.py, the forward pass every method uses.UAV/geometry/: differentiable PyTorch geometry, plus NumPy versions used for plotting and tests (testing/).UAV/opti_params.py: optimization cases, tolerances and latent scales shared by all methods.UAV/experiments_postprocess/: loads and caches W&B runs (wandb_cache/) and holds the plotting functions.UAV/paper_results_scripts/: entry points for the paper figures and tables.UAV/interactive/: matplotlib slider viewers for the geometry, subsystem models and results.UAV/utils/: small shared helpers.inner_opt_scaling/: toy experiment for the inner-optimizer scaling appendix (see its README).cluster/: Slurm scripts for the ETH Euler cluster (see its README).utils/: setup checks and the airfoil model download.
The scripts in UAV/paper_results_scripts/ read the cached runs in UAV/experiments_postprocess/wandb_cache/ and call the plotting code in UAV/experiments_postprocess/. Most take task names (run with --help to list them, or with no task to run all):
python UAV/paper_results_scripts/run_experiment_eval.py --no-show
python UAV/paper_results_scripts/comparison_grid_plots.py --no-show
python UAV/paper_results_scripts/joint_model_ablation_study.py --no-show
python -m UAV.paper_results_scripts.sn_vs_tolerance_combined_figure --no-showThe inner-optimizer scaling figure and table come from inner_opt_scaling/plot_phase.py.