Research Code Accompanying the Publication: "Quantum Computing and Tensor Networks for Laminate Design: A Novel Approach to Stacking Sequence Retrieval"
Authors: Arne Wulff¹, Boyang Chen¹, Matthew Steinberg², Yinglu Tang¹, Matthias Möller², Sebastian Feld²
¹Faculty of Aerospace Engineering, Delft University of Technology, The Netherlands ²Faculty of Electrical Engineering, Mathematics and Computer Science, Delft University of Technology, The Netherlands
This repository contains the code to reproduce the results of our paper: https://arxiv.org/abs/2402.06455
Please use the following citation:
@article{Wulff2024,
title={Quantum Computing and Tensor Networks for Laminate Design: A Novel Approach to Stacking Sequence Retrieval},
author={Arne Wulff and Boyang Chen and Matthew Steinberg and Yinglu Tang and Matthias M{\"o}ller and Sebastian Feld},
year={2024},
eprint={2402.06455},
archivePrefix={arXiv},
primaryClass={quant-ph},
url={https://arxiv.org/abs/2402.06455}
}
Abstract:
As with many tasks in engineering, structural design frequently involves navigating complex and computationally expensive problems. A prime example is the weight optimization of laminated composite materials, which to this day remains a formidable task, due to an exponentially large configuration space and non-linear constraints. The rapidly developing field of quantum computation may offer novel approaches for addressing these intricate problems. However, before applying any quantum algorithm to a given problem, it must be translated into a form that is compatible with the underlying operations on a quantum computer. Our work specifically targets stacking sequence retrieval with lamination parameters, which is typically the second phase in a common bi-level optimization procedure for minimizing the weight of composite structures. To adapt stacking sequence retrieval for quantum computational methods, we map the possible stacking sequences onto a quantum state space. We further derive a linear operator, the Hamiltonian, within this state space that encapsulates the loss function inherent to the stacking sequence retrieval problem. Additionally, we demonstrate the incorporation of manufacturing constraints on stacking sequences as penalty terms in the Hamiltonian. This quantum representation is suitable for a variety of classical and quantum algorithms for finding the ground state of a quantum Hamiltonian. For a practical demonstration, we chose a classical tensor network algorithm, the DMRG algorithm, to numerically validate our approach. For this purpose, we derived a matrix product operator representation of the loss function Hamiltonian and the penalty terms. Numerical trials with this algorithm successfully yielded approximate solutions, while exhibiting a tradeoff between accuracy and runtime. Although this work primarily concentrates on quantum computation, the application of tensor network algorithms presents a novel quantum-inspired approach for stacking sequence retrieval.
Contact: Boyang Chen, Arne Wulff
https://www.tudelft.nl/lr/qaims
This repository contains experimental software and is published for the sole purpose of giving additional background details on the respective publication.
This work is licensed under a Apache 2.0 license.
Some parts of this code are modifications of stucts and functions in ITensors.jl which is published by The Simons Foundation (License). These structs and functions are as follows:
- The structs and functions in
dmrg_costum.jl
are modifications of ITensorsSweepNext
,sweepnext(N::Int; ncenter::Int=2)
,Base.iterate(sn::SweepNext, state=(0, 1))
anddmrg(PH, psi0::MPS, sweeps::Sweeps; kwargs...)
. - The function
dmrg_experiment_one_try
is a modification of ITensorsdmrg(PH, psi0::MPS, sweeps::Sweeps; kwargs...)
.
Lamination parameters:
laminationparameters.jl
: Function to calculate the lamination parameters from a stacking sequence
Generate a large set of lamination parameters and calculate weights:
generate_random_stacks.jl
: Functions to generate random stacking sequences that disobey a disorientation constraintgenerate_random_lp.jl
: Functions to generate random lamination parameters using the functions fromgenerate_random_stacks.jl
, calculate weights for the generated points using a kernel density estimation, and generate the according HDF5 filesrun_generate_random_lp.jl
: Using the functions in the previous two file to generate a particular weighted set of lamination parameters
Draw a small sample from the large set of lamination parameters according to the generated weights
sample_lp_from_file.jl
: Functions to draw random samples from files generated withgenerate_random_lp.jl
according to the calculated weights, and store the sample in an HDF5 filerun_sample_lp_from_file.jl
: Using the functions in the previous file to generate a small set of lamination parameters.
Running DMRG:
mpo.jl
: Implementation of the matrix product operators for the stacking sequence retrieval problem as ITensorMPO
objectsdmrg_custom.jl
: Modification of ITensorsdmrg
implementation to also support arbitrary sequences of sweeping directionsdmrg_experiment.jl
: Functions for performing the experiments as described in the paperrun_dmrg_experiment.jl
: Using the function to run experiments
License and Read-Me
LICENSE
: Apache 2.0 licenseREADME.md
: This readme file