  Designing physical artifacts that serve a purpose - such as tools and other
functional structures - is central to engineering as well as everyday human
behavior. Though automating design has tremendous promise, general-purpose
methods do not yet exist. Here we explore a simple, fast, and robust approach
to inverse design which combines learned forward simulators based on graph
neural networks with gradient-based design optimization. Our approach solves
high-dimensional problems with complex physical dynamics, including designing
surfaces and tools to manipulate fluid flows and optimizing the shape of an
airfoil to minimize drag. This framework produces high-quality designs by
propagating gradients through trajectories of hundreds of steps, even when
using models that were pre-trained for single-step predictions on data
substantially different from the design tasks. In our fluid manipulation tasks,
the resulting designs outperformed those found by sampling-based optimization
techniques. In airfoil design, they matched the quality of those obtained with
a specialized solver. Our results suggest that despite some remaining
challenges, machine learning-based simulators are maturing to the point where
they can support general-purpose design optimization across a variety of
domains.
