Techniques for training a machine learning model to modify portions of a shape when generating a design of a three-dimensional object

By training machine learning models to modify the shape of 3D objects, the computational complexity of topology optimization problems can be reduced, enabling more efficient design space exploration and optimized design choices.

CN114491690BActive Publication Date: 2026-01-02AUTODESK INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202111264036.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-10-28
Filing Date
2021-10-27
Publication Date
2026-01-02
Estimated Expiration
2042-01-02

AI Technical Summary

Technical Problem

Existing technologies suffer from high computational complexity in topology optimization problems when generating 3D object designs, leading to insufficient exploration of the design space and potentially resulting in the selection of suboptimal designs.

Method used

By training a machine learning model, we can modify parts of high-resolution shapes using low-resolution structural analysis data, reducing computational complexity and fully exploring the design space.

Benefits of technology

Generate optimized designs that are more convergent to the design objectives, improve design quality and efficiency, and select the more optimized designs for manufacturing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114491690B_ABST
    Figure CN114491690B_ABST
Patent Text Reader

Abstract

In various embodiments, a training application trains a machine learning model to modify portions of shapes when designing 3D objects. The training application converts first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution. Subsequently, the training application generates one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape. Each training set is associated with a different portion of the first shape. The training application then performs one or more machine learning operations on the machine learning model using the training sets to generate a trained machine learning model. The trained machine learning model modifies at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND TECHNICAL FIELD

[0001] Various embodiments relate generally to computer science and computer-aided design, and more particularly to techniques for training machine learning models to modify portions of a design when generating a three-dimensional object.

[0002] Description of Related Art

[0003] Generative design of a three-dimensional ("3D") object is a computer-aided design process that automatically generates a design of a 3D object that satisfies any number and type of design objectives and design constraints specified by a user. In some implementations, a generative design application specifies any number of topology optimization problems based on the design objectives and design constraints. Each problem specification includes a shape boundary and values for any number of parameters related to the topology optimization problem. Some examples of parameters include, but are not limited to, material type, manufacturing method, manufacturing constraints, load cases, design constraints, design objectives, and completion criteria. The generative design application then configures a topology optimization application to independently solve each topology optimization problem. To solve a given topology optimization problem, a typical topology optimization application generates a shape based on the shape boundary and then iteratively optimizes the shape based on the values for the different parameters. The generative design application presents the resulting optimized shape to the user as a design in a design space. Finally, the user explores the "generative" design space to select one or more of the designs included in the design space for additional design and / or manufacturing activities.

[0004] In one approach to solving a given topology optimization problem, the topology optimization application converts the shape boundary into a shape represented as a mesh of shape elements corresponding to a 3D grid. The 3D grid defines the resolution of the optimized shape. During each iteration, the topology optimization application performs a structural analysis on the shape to compute a response of each shape element to each load case. Some examples of responses include, but are not limited to, strain energy values, displacements, and rotations. Based on the responses, the design constraints, and the design objectives, the topology optimization application executes any number of optimization algorithms that modify any number of shape elements. For example, the topology optimization application can remove material from a subset of shape elements associated with the lowest strain energy values in order to reduce the overall mass of the corresponding shape. The topology optimization application continues to iteratively analyze and modify the shape in this manner until the topology optimization application determines that one or more completion criteria are reached. The topology optimization application then outputs the shape generated during the final iteration as the optimized shape.

[0005] One drawback of the above approach is that solving each of the topology optimization problems involves performing computationally complex structural analysis operations on each shape element during each topology optimization iteration. Thus, if the amount of time and / or the amount of computational resources allocated to the design activity is limited, the user can be forced to limit the total number of structural analysis operations performed during different topology optimization iterations in order to reduce the overall computational complexity. For example, the user can limit the total number of iterations that the topology optimization application performs to solve each topology optimization problem and / or limit the total number of topology optimization problems that the generative design application defines. By reducing the total number of structural analysis operations performed during different topology optimization iterations, the user necessarily reduces the design space explored by the generative design application. Thus, the generative design application can not produce as many designs that converge closer to the design goals as compared to designs generated by the generative design application based on the reduced number of structural analysis operations. In this case, a suboptimal design can be selected for additional design and / or manufacturing activities.

[0006] As previously mentioned, there is a need in the art for more efficient techniques for solving topology optimization problems when designing three-dimensional objects. SUMMARY

[0007] One embodiment of the present invention sets forth a computer-implemented method for training a machine learning model to modify portions of shapes when designing 3D objects. The method includes: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on the machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

[0008] At least one technical advantage of the disclosed technology over the prior art is that, with the disclosed technology, the computational complexity associated with solving topology optimization problems in generating designs of 3D objects can be significantly reduced. In particular, a trained machine learning model modifies portions of a shape associated with one resolution based on corresponding structural analysis data associated with a lower resolution, thereby reducing the overall computational complexity associated with solving the corresponding topology optimization problem. When the computational complexity associated with solving topology optimization problems is reduced, generative design applications can more fully explore the overall design space relative to prior art methods. As a result, generative design applications can produce designs that are more converged to design objectives, thereby enabling more optimal designs to be selected for additional design and / or manufacturing activities. These technical advantages provide one or more technical improvements over prior art methods. BRIEF DESCRIPTION OF DRAWINGS

[0009] To enable a detailed understanding of the above-described features of the various embodiments, the inventive concept briefly outlined above is described more fully with reference to the various embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of the inventive concept and are therefore, not to be considered limiting in scope, as the inventive concept encompasses other equally effective embodiments.

[0010] Figure 1 is a conceptual diagram of a system configured to implement one or more aspects of various embodiments;

[0011] Figure 2 is a more detailed diagram of the inference engine of Figure 1

[0012] Figure 3 is a flowchart of method steps for solving topology optimization problems in designing 3D objects according to various embodiments;

[0013] Figure 4 is a more detailed diagram of the training application of Figure 1

[0014] Figure 5 is a more detailed diagram of the trained machine learning model of Figure 1

[0015] Figure 6 is a flowchart of method steps for training a machine learning model to modify portions of a shape in designing 3D objects according to various embodiments. DETAILED DESCRIPTION

[0016] ​​​In the following description, numerous specific details are set forth to provide a more thorough understanding of the various embodiments. However, it will be apparent to one skilled in the art that the present inventive concepts can be practiced without one or more of these specific details.

[0017] System Overview

[0018] Figure 1 is a conceptual illustration of a system 100 configured to implement one or more aspects of the various embodiments. As shown, the system 100 includes, without limitation, a computing instance 110(1) and a computing instance 110(2). For explanatory purposes, multiple instances of similar objects are denoted using a reference label and, if necessary, a parenthetical alphanumeric character identifying the instance. Multiple versions of a single object, where each version is associated with a different point in time, are denoted using a reference label and, if necessary, an alphanumeric subscript identifying the version.

[0019] In various embodiments, any number of the components of the system 100 can be distributed in multiple geographic locations or implemented in any combination in one or more cloud computing environments (i.e., encapsulated shared resources, software, data, etc.). For explanatory purposes only, the computing instance 110(1) and the computing instance 110(2) are also referred to herein individually as a “computing instance 110” and collectively as “computing instances 110.” In some embodiments, the system 100 can include any number of computing instances 110. In the same or other embodiments, each computing instance 110 can be implemented in a cloud computing environment, as part of any other distributed computing environment, or in a standalone manner.

[0020] As shown, the computing instance 110(1) includes, without limitation, a processor 112(1) and a memory 116(1), and the computing instance 110(2) includes, without limitation, a processor 112(2) and a memory 116(2). The processors 112(1) and 112(2) are also referred to herein individually as a “processor 112” and collectively as “processors 112.” The memories 116(1) and 116(2) are also referred to herein individually as a “memory 116” and collectively as “memories 116.”

[0021] Each of the processors 112 can be any instruction execution system, apparatus, or device capable of executing instructions. For example, each of the processors 112 can include a central processing unit, a graphics processing unit, a controller, a microcontroller, a state machine, or any combination thereof. The memory 116 of each of the compute instances 110 stores content for use by the processors 112 of the compute instance 110, such as software applications and data. In some alternative embodiments, each of any number of the compute instances 110 can include any number of processors 112 and any number of memories 116 in any combination. In particular, any number of the compute instances 110, including one, can provide a multi-processing environment in any technically feasible manner.

[0022] The memory 116 can be one or more of readily available memory such as random access memory, read only memory, floppy disk, hard disk, or any other form of local or remote digital storage. In some embodiments, a storage device (not shown) can supplement or replace the memory 116. The storage device can include any number and type of external memory accessible to the processors 112. For example, and without limitation, the storage device can include a secure digital card, an external flash memory, a portable compact disc read only memory, an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0023] In general, each of the compute instances 110 is configured to implement one or more software applications. For purposes of explanation only, each application is described as residing in the memory 116 of one of the compute instances 110 and executing on the processor 112 of the compute instance 110. However, in some embodiments, the functionality of any number of software applications can be distributed among any number of other software applications residing in the memory 116 of any number of the compute instances 110 and executing on the processor 112 of any number of the compute instances 110 in any combination. Moreover, the functionality of any number of software applications can be consolidated into a single software application.

[0024] In particular, the compute instance 110(1) is configured to solve a topology optimization problem defined via the specification 132. The specification 132 includes, without limitation, any quantity and / or type of data associated with the topology optimization problem. As shown, the specification 132 includes, without limitation, the parameter set 140 and the shape definition 148.

[0025] The parameter set 140 specifies values for any number and / or type of parameters associated with the topology optimization problem. Some examples of parameters include, without limitation, materials, manufacturing methods, manufacturing constraints, load cases, design constraints, design objectives, completion criteria, and the like. For purposes of explanation only, the parameter values specified in the parameter set 140 are also referred to herein individually as “parameter values” and collectively as “parameter values.”

[0026] The shape definition 148 characterizes any number and / or type of aspects of the initial shape of the 3D object associated with the topology optimization problem in any technically feasible manner. In some embodiments, the shape definition 148 specifies, without limitation, a shape boundary that specifies a maximum volume associated with the 3D object. For example, in some embodiments, the shape definition 148 specifies a 3D cube that defines the maximum volume. In some embodiments, the shape definition 148 specifies the initial shape of the 3D object. In the same or other embodiments, the shape definition 148 specifies, without limitation, any number and / or type of “preservations,” where each preservation specifies a portion of the initial shape (e.g., a mounting plate) to be preserved. The preservation can be specified in any technically feasible manner (e.g., via a preservation tag).

[0027] As previously described herein, in one approach to designing a 3D object, the generative design application specifies any number of topology optimization problems based on user-specified design objectives and design constraints. The generative design application then configures a topology optimization application to independently solve each topology optimization problem. To solve a given topology optimization problem, the topology optimization application iteratively optimizes the initial shape to generate an optimized shape that converges more toward the design objectives than the initial shape.

[0028] In one approach to solving a given topology optimization problem, a conventional topology application represents the initial shape as a mesh of shape elements that correspond to a 3D grid having a given resolution. During each iteration, the conventional topology application performs a structural analysis to compute a response of each shape element to any number of load cases. The conventional topology application then optimizes any number of shape elements based on the responses, the design constraints, and the design objectives.

[0029] One drawback of the above approach is that solving each topology optimization problem involves performing computationally complex structural analysis operations on each shape element during each iteration. If the amount of time and / or the amount of computing resources allocated to the design activity is limited, the user can be forced to limit the total number of structural analysis operations performed during different topology optimization iterations in order to reduce the overall computational complexity. By reducing the total number of structural analysis operations performed during different topology optimization iterations, the user necessarily reduces the number and / or quality of optimized designs generated by the generative design application. In this case, a suboptimal design can be selected for additional design and / or manufacturing activities.

[0030] Reducing computational complexity using machine learning techniques

[0031] To address the foregoing, in some embodiments, computing instance 110(1) includes, without limitation, topology optimization application 120. In solving topology optimization problems defined via specification 132, topology optimization application 120 selectively uses one or more versions of trained machine learning model 192 (not explicitly shown in FIG. 1) to reduce overall computational complexity. In some embodiments, computing instance 110(2) includes, without limitation, training application 190 that performs any number and / or type of machine learning operations to generate any number of versions of trained machine learning model 192. Figure 1

[0032] For purposes of explanation only, different versions of trained machine learning model 192 are denoted herein as trained machine learning models 1921through 192 Q where Q can be any positive integer. Each trained machine learning model 1921through 192 Q corresponds to a different point in time. Trained machine learning models 1921through 192 Q are also referred to individually herein as “trained machine learning model 192” and collectively as “trained machine learning models 192”.

[0033] As shown, in some embodiments, topology optimization application 120 resides in memory 116(1) of computing instance 110(1) and executes on processor 112(1) of computing instance 110(1). In the same or other embodiments, training application 190 resides in memory 116(2) of computing instance 110(2) and executes on processor 112(2) of computing instance 110(2). More generally, in some embodiments, the functionality of topology optimization application 120 and / or the functionality of training application 190 is distributed across any number of software applications. Each software application can reside in any number of memories 116 of any number of computing instances 110 and execute in any combination on any number of processors 112 of any number of computing instances 110. In some other embodiments, the functionality of topology optimization application 120 and the functionality of training application 190 are consolidated into a single software application.

[0034] ​In some embodiments, the topology optimization application 120 generates the optimized shape 198 based on the specification 132. As previously described herein, the specification 132 includes, without limitation, any quantity and / or type of data associated with the topology optimization problem. The topology optimization application 120 can obtain the specification 132 in any technically feasible manner. In some embodiments, the topology optimization application 120 receives the specification 132 from a generative design application (not shown) that performs a generative design process. As previously described herein, in some embodiments, the specification 132 includes, without limitation, the parameter set 140 and the shape definition 148.

[0035] The parameter set 140 specifies, without limitation, any number of parameter values for any quantity and / or type of parameters associated with the topology optimization problem. As shown, in some embodiments, the parameter set 140 includes, without limitation, the fine grid size 142, the grid ratio 144, the fine block size 146, and any quantity and / or type of other parameter values organized in any technically feasible manner (indicated via ellipsis). For example, in some embodiments, the specification 132 includes, without limitation, any quantity and / or type of parameter values associated with manufacturing, load cases, design constraints, design objectives, solving the topology optimization problem (e.g., completion criteria), and generating the trained machine learning model 192 in any combination.

[0036] The fine grid size 142 specifies, without limitation, the 3D dimensions of a fine grid (not shown in FIG. 1) that defines the 3D space. In some embodiments, the fine grid defines a 3D grid of voxels, where each voxel corresponds to a different portion of the 3D space. The fine grid at least partially determines the resolution of the initial shape associated with the topology optimization. The grid ratio 144 specifies the ratio between the fine grid and a coarse grid (not shown in FIG. 1) that is a down-sampled version of the fine grid. The grid ratio can specify any ratio in any technically feasible manner. Figure 1 Figure 1 For example, in some embodiments, the fine grid size 142 specifies a 160x160x160 3D dimension for the fine grid and the grid ratio 144 is 2 to 1. Thus, the fine grid is a 160x160x160 grid of 4,096,000 voxels, the coarse grid is an 80x80x80 grid of 512,000 “coarse” voxels, and the fine grid and the coarse grid represent the same portion of the 3D space. In some other embodiments, the fine grid size 142 specifies a 160x160x160 3D dimension for the fine grid and the grid ratio 144 is 2 to 1. Thus, the fine grid is a 160x160x160 grid of 4,096,000 voxels, the coarse grid is a 40x40x40 grid of 64,000 “coarse” voxels, and the fine grid and the coarse grid represent the same portion of the 3D space.

[0037] For example, in some embodiments, the fine grid size 142 specifies a 160x160x160 3D dimension for the fine grid and the grid ratio 144 is 2 to 1. Thus, the fine grid is a 160x160x160 grid of 4,096,000 voxels, the coarse grid is an 80x80x80 grid of 512,000 “coarse” voxels, and the fine grid and the coarse grid represent the same portion of the 3D space. In some other embodiments, the fine grid size 142 specifies a 160x160x160 3D dimension for the fine grid and the grid ratio 144 is 2 to 1. Thus, the fine grid is a 160x160x160 grid of 4,096,000 voxels, the coarse grid is a 40x40x40 grid of 64,000 “coarse” voxels, and the fine grid and the coarse grid represent the same portion of the 3D space. ​

[0038] As described in greater detail below, in some embodiments, the trained machine learning model 192 is generated and subsequently invoked based on any number of model blocks (not shown). Each of the model blocks defines a different portion of the 3D space associated with both the fine grid and the coarse grid. The fine block size 146 defines the 3D dimensions of the model block relative to the fine grid. As described in greater detail below, the model blocks associated with training the trained machine learning model 192 can be different than the model blocks associated with invoking the trained machine learning model 192. The model blocks associated with training the trained machine learning model 192 are also referred to herein as “training blocks,” and the model blocks associated with invoking the trained machine learning model 192 are also referred to herein as “inference blocks.”

[0039] The shape definition 148 characterizes, without limitation, any number and / or type of aspects of the initial shape associated with the topology optimization problem in any technically feasible manner. The optimized shape 198 is a solution to the topology optimization problem associated with the specification 132. More precisely, the optimized shape 198 is a version of the initial shape that is topology optimized according to the parameter set 140. The topology optimization application 120 can generate and specify the optimized shape 198 in any technically feasible manner.

[0040] Although not shown, in some embodiments, any number of instances of the topology optimization application 120 can each solve any number of different topology optimization problems sequentially, in parallel, or in any combination thereof. Each topology optimization problem is associated with a different one of the any number of specifications 132. For each topology optimization problem, the associated instance of the topology optimization application 120 generates a different optimized shape 198.

[0041] As shown, in some embodiments, the topology optimization application 120 includes, without limitation, the specification 132, the mesh engine 134, the workflow 150, the fine mesh engine 160, and the coarse mesh engine 170. In some embodiments, the topology optimization application 120 performs any number and / or type of input, output, conversion, and / or the like operations, and coordinates the overall topology optimization process of solving the topology optimization problem associated with the specification 132.

[0042] In some embodiments, after the specification 132 is acquired, the topology optimization application 120 inputs the fine grid size 142 and the shape definition 148 into the mesh engine 134. In response, the mesh engine 134 generates and outputs the shape 128(0), which is a representation of the initial shape associated with the topology optimization problem defined by the specification 132. In some embodiments, the shape 128(0) is a set of fine shape elements (not shown) that includes, without limitation, any number of fine shape elements (not shown) that are defined by the fine grid size 142 and the shape definition 148. Figure 1a 3D grid (not shown) where each fine shape element corresponds to a different voxel in the fine grid and specifies, without limitation, any number and / or type of values.

[0043] For example, in some embodiments, the fine grid size 142 is 160 x 160 x 160 and the mesh engine 134 generates the shape 128(0) that includes, without limitation, 3,096,000 fine shape elements. The mesh engine 134 can generate the shape 128(0) in any technically feasible manner and in any format. In some embodiments, the mesh engine 134 performs any number and type of conversion operations, meshing operations, partitioning operations, or any combination thereof, based on the shape definition 148 and the fine grid size 142 to generate the shape 128(0).

[0044] In some embodiments, the mesh engine 134 generates the shape 128(0) according to a signed distance field (“SDF”). In the SDF, each fine shape element includes, without limitation, any number and / or type of spatial data and, optionally, any number and / or type of attributes. In some embodiments, each fine shape element includes, without limitation, a directed distance field that represents the associated spatial data. In some embodiments, the absolute value of each directed distance field relates to the distance from a surface of the represented shape (e.g., the shape 128(0)). In the same or other embodiments, the negative, positive, and zero values of the directed distance field designate the portions of the represented shape that are inside, outside, and on the surface of the represented shape, respectively. In some other embodiments, each fine shape element includes, without limitation, a density field that represents the associated spatial data.

[0045] In some embodiments, in addition to the spatial data, each fine shape element includes, without limitation, a value of a reservation tag. In some embodiments, the value of the reservation tag corresponds to a reservation specified in the shape definition 148. If the reservation tag has a true value, the associated spatial data corresponds to the reservation and is not modified. Otherwise, the associated spatial data can be modified. The mesh engine 134 can generate the value of the reservation tag in any technically feasible manner.

[0046] In some embodiments, the topology optimization application 120 determines and executes the workflow 150 based on the specification 132. The workflow 150 describes, without limitation, how the topology optimization application 120 configures the fine mesh engine 160, the coarse mesh engine 170, and the training application 190 to solve the topology optimization problem in any technically feasible manner. In some embodiments, the workflow 150 describes, without limitation, how and / or when the topology optimization application 120 routes any amount and / or type of data between any number of topology optimization applications 120, mesh engines 134, fine mesh engines 160, coarse mesh engines 170, and training applications 190 in any combination. The workflow 150 can describe how the topology optimization application 120 routes any amount and / or type of data implicitly, explicitly, or in any combination thereof.

[0047] In some embodiments, to solve the topology optimization problem, the topology optimization application 120 coordinates Z topology optimization iterations that respectively generate the shapes 128(1) through 128(Z) (not explicitly shown) in a sequence, where Z can be any positive integer. For purposes of explanation only, the shapes 128(0) through 128(Z) are also collectively referred to herein as “the shapes 128” and individually as “the shape 128.” As described herein, for an integer i from 0 to (Z-l), one of the inputs to the i-th topology optimization iteration is the shape 128(i), and one of the outputs of the i-th topology optimization iteration is the shape 128(i+1).

[0048] The topology optimization application 120 can determine the final topology optimization iteration, denoted herein as the (Z-l)-th topology optimization iteration, in any technically feasible manner. In some embodiments, the topology optimization application 120 determines the final topology optimization iteration based on a completion criterion that specifies the shape 128(Z) and a required convergence of the design objective. After the topology optimization application 120 completes executing the final topology optimization iteration, the topology optimization application 120 sets the optimized shape 198 to equal the shape 128(Z) that is the output of the final topology optimization iteration.

[0049] As shown, in some embodiments, workflow 150 includes, but is not limited to, fine grid stages 152(0) through 152(R), training stage 154, and coarse grid stages 156(1) through 156(R), where R can be any positive integer. For purposes of explanation only, fine grid stages 152(0) through 152(R) are also referred to herein collectively as “fine grid stages 152” and individually as “fine grid stage 152.” Coarse grid stages 156(1) through 156(R) are also referred to herein collectively as “coarse grid stages 156” and individually as “coarse grid stage 156.” In some other embodiments, workflow 150 can include any number of fine grid stages 152, any number of training stages 154, and any number of coarse grid stages 156, in any combination.

[0050] In some embodiments, topology optimization application 120 distributes Z topology optimization iterations across fine grid stages 152 and coarse grid stages 156. Topology optimization application 120 configures fine grid engine 160 to perform topology optimization iterations included in fine grid stages 152 and configures coarse grid engine 170 to perform topology optimization iterations included in coarse grid stages 156. For purposes of explanation only, at any given point in time while performing topology optimization iterations, topology optimization application 120 is in a “current grid stage,” which is one of fine grid stages 152 or one of coarse grid stages 156.

[0051] In some embodiments, topology optimization application 120 performs fine grid stages 152 and coarse grid stages 156 in a sequential and alternating manner (according to workflow 150). In the same or other embodiments, topology optimization application 120 configures training application 190 to perform training stage 154 at least partially in parallel with any number of fine grid stages 152 and any number of coarse grid stages 156.

[0052] In some embodiments, to initialize workflow 150, topology optimization application 120 performs fine grid stage 152(0) and training stage 154 at least partially in parallel. After completing fine grid stage 152(0), topology optimization application 120 performs coarse grid stage 156(1) and fine grid stage 152(1) sequentially. Although not shown, topology optimization application 120 then performs coarse grid stage 156(i) followed by fine grid stage 152(i) sequentially and for each integer i from 2 to (R-1). Subsequently, as shown, topology optimization application 120 performs coarse grid stage 156(R) followed by fine grid stage 152(R) sequentially.

[0053] Each of the fine grid phases 152 includes, but is not limited to, a number of topology optimization iterations performed by the topology optimization application 120 via the fine grid engine 160. In some embodiments, the number of iterations can optionally vary across the fine grid phases 152. As depicted in italics, in some embodiments, the fine grid phase 152(0) is associated with N topology optimization iterations, and each of the fine grid phases 152(1) through 152(R) is associated with P topology optimization iterations. Thus, in such embodiments, the topology optimization application 120 performs a total of N+R*P topology optimization iterations via the fine grid engine 160.

[0054] Each of the coarse grid phases 156 includes, but is not limited to, a number of topology optimization iterations performed by the topology optimization application 120 via the coarse grid engine 170. As described in greater detail below, the coarse grid engine 170 uses a trained machine learning model 192. As depicted in italics, in some embodiments, each coarse grid phase 156 is associated with M topology optimization iterations. Thus, in such embodiments, the topology optimization application 120 performs a total of M*R topology optimization iterations via the coarse grid engine 170. In some other embodiments, the number of iterations can optionally vary across the coarse grid phases 156.

[0055] The topology optimization application 120 can determine the number of topology optimization iterations to perform in each of the fine grid phases 152 and each of the coarse grid phases 156 in any technically feasible manner. In some embodiments, the values of N, M, and P are specified in the parameter set 140. As described in greater detail below, in some embodiments, the training application 190 generates the trained machine learning model 192 based on any number of iteration data sets 178 (not explicitly shown) optionally generated by the fine grid engine 160. In the same or other embodiments, the coarse grid engine 170 uses the trained machine learning model 192. Thus, in some embodiments, the value of N is selected to ensure that the trained machine learning model 192 is trained based on a minimum number of iteration data sets 178 before the topology optimization application 120 performs any of the coarse grid phases 156.

[0056] Each of the iteration data sets 178 is a different instance of the iteration data sets 178. For purposes of explanation only, the iteration data sets 178 are also referred to herein individually as “iteration data set 178” and collectively as “iteration data sets 178.” Furthermore, bracketed alphanumeric characters are used to identify different instances of the iteration data sets 178 when needed.

[0057] For purposes of explanation only, the functionality of the fine mesh engine 160 is described herein in the context of an exemplary topology optimization iteration denoted as the xth iteration. To perform the xth iteration via the fine mesh engine 160, the topology optimization application 120 inputs the shape 128(x) and any portion of the parameter set 140, including none or all, into the fine mesh engine 160. In response, the fine mesh engine 160 performs any number and / or type of topology optimization operations on the shape 128(x) to generate the shape 128(x+1). In some embodiments, the topology optimization application 120 optionally configures the fine mesh engine 160 to generate an iteration dataset 178(x) including, but not limited to, any quantity and / or type of data related to generating the trained machine learning model 192.

[0058] As shown, in some embodiments, the fine mesh engine 160 includes, but is not limited to, a structure analyzer 162(1) and a shape optimizer 168. In some embodiments, the structure analyzer 162(1) is an instance of the structure analyzer 162 (not shown). The fine mesh engine 160 inputs the shape 128(x) and any portion of the parameter set 140, including all or none, into the structure analyzer 162(1). In response, the structure analyzer 162(1) performs any number and / or type of structure analysis operations based on the shape 128(x) and any number of parameter values included in the parameter set 140 to generate and output fine analysis results 166(x).

[0059] The portion of the parameter set 140 used by the structure analyzer 162(1) can include, but is not limited to, any quantity and / or type of data related to structure analysis of the shape 128(x). In some embodiments, the portion of the parameter set 140 used by the structure analyzer 162(1) includes, but is not limited to, any number of parameter values associated with manufacturing (e.g., materials, manufacturing processes, etc.), load cases, etc.

[0060] In some embodiments, the fine analysis results 166(x) include, but are not limited to, any quantity and / or type of structure analysis data associated with the response of each of the fine shape elements included in the shape 128(x) to any number of load cases. In the same or other embodiments, the structure analysis data includes, but is not limited to, a different discrete portion of the structure analysis data for each voxel included in the fine mesh.

[0061] For example, in some embodiments, the fine analysis results 166(x) include, without limitation, different strain energy values (not shown) for each of the fine shape elements included in the shape 128(x) and, thus, each voxel included in the fine grid. In the same or other embodiments, the fine analysis results 166(x) can include, without limitation, any number of strain energy values, any number of displacements, any number of rotations, any amount and / or type of other structural analysis data, or any combination thereof. Since the fine analysis results 166(x) specify data for each of the fine shape elements, the resolution of the fine analysis results 166(x) is equal to the resolution of the shape 128(x).

[0062] As shown, in some embodiments, the shape optimizer 168 performs, without limitation, any number and / or type of topology optimization operations on the shape 128(x) based on the fine analysis results 166(x) and any portion of the parameter set 140, including all or none. The portion of the parameter set 140 used by the shape optimizer 168 can include, without limitation, any amount and / or type of data related to the topology optimization of the shape 128(x). In some embodiments, the portion of the parameter set 140 used by the shape optimizer 168 includes, without limitation, any number and / or type of parameter values associated with design constraints, any number and / or type of parameter values associated with design objectives, and the like. In the same or other embodiments, the shape optimizer 168 generates the shape 128(x+1) that is more converged to one or more design objectives than the shape 128(x).

[0063] In some embodiments, after generating and outputting the shape 128(x+1), the fine grid engine 160 optionally generates an iteration data set 178(x). The iteration data set 178(x) includes, without limitation, any amount and / or type of data associated with the xth iteration. As described below in connection with FIG. 2, the iteration data set 178(x) is used by the training application 190 to train the machine learning model 192. Figure 2 In more detail, in some embodiments, the iteration data set 178(x) includes, without limitation, the shape 128(x), the fine analysis results 166(x), and the shape 128(x+1). In the same or other embodiments, the fine grid engine 160 stores the iteration data set 178(x) in any memory accessible to the training application 190 and / or transmits the iteration data set 178(x) to the training application 190. As depicted by the dashed arrow and dashed box, in some embodiments, the fine grid engine 160 stores the iteration data set 178(x) in the memory 116(2) of the compute instance 110(2).

[0064] As shown in the figure, in some embodiments, the topology optimization application 120 configures the fine grid engine 160 to generate iterative datasets 178(1) to 178(N), where N is the total number of topology optimization iterations included in the fine grid stage 152(0). In some other embodiments, the topology optimization application 120 may configure the fine grid engine 160 to generate any number of iterative datasets 178 during any number (including none or all) of the topology optimization iterations included in any number of fine grid stages 152. For example, in some embodiments, the topology optimization application 120 configures the fine grid engine 160 to generate different iterative datasets 178 when each of the topology optimization iterations is performed during each of the fine grid stages 152. In the same or other embodiments, the fine grid engine generates N+R*P different iterative datasets 178.

[0065] In some implementations, the topology optimization application 120 configures the training application 190 to perform the training phase 154 based on any part of the iterative dataset 178 and the parameter set 140. (See below for further details.) Figure 4 and Figure 5 In more detail, in some implementations, the training application 190 will use the current machine learning model ( Figure 1 (Not shown) is initialized as an untrained machine learning model or a pre-trained machine learning model. After acquiring (e.g., receiving from fine raster engine 160, reading from memory 116(2), etc.) the iterative dataset 178(x), the training application 190 generates a coarse shape 174(x) based on the raster ratio 144. Figure 1 (not shown in the image) and coarse analysis results 176(x)( Figure 1 (Not shown in the image). The coarse shape 174(x) and coarse analysis result 176(x) are downsampled versions of the coarse grid shape 128(x) and fine analysis result 166(x), respectively.

[0066] The training application 190 can generate the coarse shape 174(x) and coarse analysis results 176(x) in any technically feasible manner and in any format. In some embodiments, the coarse shape 174(x) is, but is not limited to, any number of coarse shape elements (…). Figure 1 A 3D mesh (not shown). Each of the coarse shape elements corresponds to a different coarse voxel in the coarse grid and is specified, but not limited to, any number and / or type of value. Thus, the resolution of the coarse shape 174(x) is defined by the resolution of the shape 128(x) and the grid ratio 144.

[0067] In some embodiments, the coarse analysis results 176(x) include, without limitation, a different discrete portion of the structural analysis data for each of the coarse shape elements included in the coarse shape 174(x). In the same or other embodiments, the training application 190 generates the coarse analysis results 176(x) including, without limitation, a different discrete portion of the structural analysis data for each voxel included in the coarse grid. For example, in some embodiments, the coarse analysis results 176(x) include, without limitation, a different strain energy value for each of the coarse shape elements included in the coarse shape 174(x) and, thus, each voxel included in the coarse grid. Accordingly, the resolution of the coarse analysis results 176(x) is equal to the resolution of the coarse shape 174(x).

[0068] The training application 190 then generates a different training set for each of any number of training blocks based on the fine block size 146, the shape 128(x), the coarse shape 174(x), the coarse analysis results 176(x), and the shape 128(x+1) (not shown in FIG. 1). In some embodiments, any number of the training blocks can partially overlap with any number of other training blocks. The training application 190 can determine the training blocks in any technically feasible manner. As described below in connection with FIG. 2, the training application 190 can determine the training blocks based on the fine block size 146 and the parameter set 140. Figure 1 Figure 4 More particularly, in some embodiments, the training application 190 determines the training blocks based on the fine block size 146 and the fine step size (not shown in FIG. 1) included in the parameter set 140. Figure 1

[0069] Although Figure 1 In some embodiments, each of the training sets includes, without limitation, a fine input block, a coarse block, a coarse results block, and a fine output block corresponding to the associated training block. The fine input block and the fine output block are portions of the shape 128(x) and the shape 128(x+1), respectively, corresponding to a portion of the 3D space defined by the associated training block. The coarse block is a portion of the coarse shape 174(x) corresponding to the fine input block. The coarse results block is an optionally normalized portion of the coarse analysis results 176(x) corresponding to the coarse block.

[0070] In some embodiments, the training application 190 incrementally trains the current machine learning model to map the fine input block, the coarse block, and the coarse results block to the fine output block based on the training data sets. The fine output block is a prediction of the associated block of the shape 128(i+1) generated by the fine grid engine 160 based on the shape 128(i), where i can be any integer.

[0071] In some embodiments, the topology optimization application 120 configures the training application 190 to repeatedly save the current machine learning model as trained machine learning models 1921through 192 Q ​​The topology optimization application 120 can configure the training application 190 to save the current machine learning model based on any quantity and / or type of criteria. For example, in some embodiments, the parameter set 140 includes, but is not limited to, any quantity and / or type of parameter value associated with an activation trigger (e.g., a time interval between activations, a number of iteration data sets 178 received between activations, etc.). When activated, the trigger causes the training application 190 to save the current machine learning model.

[0072] It should be noted that the techniques described herein to generate trained machine learning models 192 and the functionality of trained machine learning models 192 are illustrative and not limiting, and can be modified without departing from the broader spirit and scope of the application. Many modifications and variations of the described implementations and techniques will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described implementations and techniques.

[0073] For example, in some other embodiments, the training application 190 can generate any type of trained machine learning model 192 that can be used to generate a modified version of the shape 128 associated with a given resolution based on any quantity and / or type of structural analysis data associated with a lower resolution. In the same or other embodiments, the functionality of the topology optimization application 120, the fine mesh engine 160, and the coarse mesh engine 170 are modified accordingly.

[0074] For explanatory purposes only, the functionality of the coarse mesh engine 170 is described herein in the context of an exemplary topology optimization iteration denoted as the yth iteration. To perform the yth iteration via the coarse mesh engine 170, the topology optimization application 120 inputs the shape 128(y) and any portion of the parameter set 140 (including none or all) into the coarse mesh engine 170. In response, the coarse mesh engine 170 uses the trained machine learning model 192 to generate a shape 128(y+1). In some embodiments, the shape 128(y+1) is predicted to be more convergent to one or more design objectives than the shape 128(y). In the same or other embodiments, the shape 128(y+1) is a modified version of the shape 128(y) that is predicted to be topologically optimized according to one or more design objectives relative to the shape 128(y).

[0075] As shown, in some embodiments, the coarse grid engine 170 includes, without limitation, a re-meshing engine 172, a structure analyzer 162(2), and an inference engine 180. In some embodiments, the coarse grid engine 170 inputs the shape 128(y) and the grid ratio 144 into the re-meshing engine 172. In response, the re-meshing engine 172 converts the shape 128(y) into a coarse shape 174(y). The coarse shape 174(y) is a down-sampled version of the shape 128(y), is associated with a coarse grid, and can be represented in any technically feasible manner. For purposes of explanation only, any number of down-sampled versions of shapes 128 associated with a coarse grid are also collectively referred to herein as “coarse shapes 174” and individually as “coarse shape 174.”

[0076] The re-meshing engine 172 can generate the coarse shape 174(y) in any technically feasible manner and in any format. In some embodiments, the re-meshing engine 172 performs any number and / or type of down-sampling operations on the shape 128(y) based on the grid ratio 144 and / or the coarse grid to generate the coarse shape 174(y). Some examples of down-sampling operations include, without limitation, field transfer operations, re-meshing operations, and the like. The re-meshing engine 172 generates the coarse shape 174(y) in the same format as the shape 128(y). In some embodiments, the re-meshing engine 172 generates the coarse shape 174(y) from an SDF.

[0077] In some embodiments, the structure analyzer 162(2) is an instance of the structure analyzer 162. As shown, in some embodiments, the coarse grid engine 170 inputs the coarse shape 174(y) and any portion of the parameter set 140 (including all or none) into the structure analyzer 162(2). In response, the structure analyzer 162(2) performs any number and / or type of structure analysis operations based on the coarse shape 174(y) and any number of parameter values included in the parameter set 140 to generate a coarse analysis result 176(y). The portion of the parameter set 140 used by the structure analyzer 162(2) can include, without limitation, any amount and / or type of data relevant to the structure analysis of the coarse shape 174(y). In some embodiments, the portion of the parameter set 140 used by the structure analyzer 162(2) includes, without limitation, any number of parameter values associated with manufacturing (e.g., materials, manufacturing processes, etc.), load cases, and the like.

[0078] In some embodiments, the coarse analysis results 176(y) include, without limitation, any amount and / or type of structural analysis data associated with the response of each of the coarse shape elements included in the coarse shape 174(y) to any number of load cases. For example, in some embodiments, the coarse analysis results 176(y) include, without limitation, different strain values (not shown) for each of the coarse shape elements included in the coarse shape 174(y). In the same or other embodiments, the coarse analysis results 176(y) can include, without limitation, any number and / or type of strain energy values, any number of displacements, any number of rotations, any amount and / or type of other structural analysis data, or any combination thereof. Since the coarse analysis results 176(x) specify data for each of the coarse shape elements, the resolution of the coarse analysis results 176(x) is equal to the resolution of the coarse shape 174(y) and, thus, lower than the resolution of the shape 128(y).

[0079] As shown, in some embodiments, the coarse grid engine 170 inputs the shape 128(y), the coarse shape 174(y), the coarse analysis results 176(y), and any portion of the parameter set 140 into the inference engine 180. In response, the inference engine 180 generates the shape 128(y+1). In some embodiments, the shape 128(y+1) is predicted to be more converged to one or more design objectives than the shape 128(y). In the same or other embodiments, the shape 128(y+1) is a modified version of the shape 128(y) that is predicted to be topologically optimized according to one or more design objectives relative to the shape 128(y). It should be noted that the shape 128(y+1) is associated with the fine grid and has the same resolution as the shape 128(y). The inference engine 180 can use the trained machine learning model 192 to generate the shape 128(y+1) in any technically feasible manner.

[0080] As described in more detail below in connection with Figure 2 In more detail, in some embodiments, the inference engine 180 performs any number and / or type of normalization operation on any portion of the coarse analysis results 176(y) to generate normalized coarse analysis results (not shown). The inference engine 180 then determines any number of non-overlapping inference blocks based on the fine block size 146. Collectively, the non-overlapping inference blocks span the 3D space associated with the fine grid and the coarse grid. In some embodiments, the fine block size 146 defines the 3D dimensions of each of the inference blocks relative to the fine grid. In the same or other embodiments, the fine block size 146 and the grid ratio 144 define the 3D dimensions of each of the inference blocks relative to the coarse grid.

[0081] In some embodiments, based on the inference tiles, the inference engine 180 partitions the shape 128(x), the coarse shape 174(x), and the normalized coarse analysis result into fine input tiles, coarse tiles, and coarse result tiles, respectively. For each of the inference tiles, the inference engine 180 generates an inference set (not shown in FIG. 18) that includes, but is not limited to, the fine input tile, the coarse tile, and the coarse result tile corresponding to the inference tile. Figure 1

[0082] For example, in some embodiments, the fine tile size is 4x4x4 and the binning ratio 144 is 2-to-l. In some such embodiments, the inference engine 180 partitions the shape 128(x) into non-overlapping 4x4x4 fine input tiles, each corresponding to a different tile of 4x4x4 fine shape elements. The inference engine 180 partitions the coarse shape 174(x) into non-overlapping 2x2x2 coarse tiles, each corresponding to a different one of the 4x4x4 fine input tiles. The inference engine 180 partitions the normalized coarse analysis result into non-overlapping 2x2x2 coarse result tiles, each corresponding to a different one of the 2x2x2 coarse tiles and thus to a different one of the 4x4x4 fine input tiles. For each of the inference tiles, the inference engine 180 generates a different inference set that includes, but is not limited to, the 4x4x4 fine input tile, the 2x2x2 coarse tile, and the 2x2x2 coarse result tile corresponding to the inference tile.

[0083] In some embodiments, the inference engine 180 obtains the latest version of the trained machine learning model 192 in any technically feasible manner. For example, in some embodiments, the inference engine 180 reads the trained machine learning model 192 from the memory 116(2) q where q is an integer between 1 and Q representing the most recently generated version of the trained machine learning model 192. In the same or other embodiments, the integer q varies from 1 to Q over time, and thus the version of the trained machine learning model 192 used by the inference engine 180 can vary over the course of a topology optimization iteration.

[0084] The inference engine 180 inputs each of the inference sets into the trained machine learning model 192 q and, in response, for each of the inference sets, the trained machine learning model 192 q ​Different fine output blocks are output. Each of the fine output blocks is a modified version of an associated fine input block and has the same resolution as the fine input block. Thus, each of the fine output blocks is a different modified portion of shape 128(y). Inference engine 180 then aggregates the fine input blocks to generate shape 128(y+1). In some embodiments, shape 128(y+1) is predicted to be more convergent to one or more of the design targets than shape 128(y). In the same or other embodiments, shape 128(y+1) is a modified version of shape 128(y) that is predicted to be topologically optimized according to one or more design targets relative to shape 128(y).

[0085] Advantageously, since coarse grid engine 170 generates shape 128(y+1) based on shape 128(y) and coarse analysis results 176(y), topology optimization application 120 can use trained machine learning model 192 to reduce computational complexity associated with solving the topology optimization problem. More precisely, since coarse grid engine 170 configures structure analyzer 162(2) to perform structural analysis on coarse shape 174(y) rather than shape 128(y), structure analyzer 162(2) performs the structural analysis operation at a coarser resolution. Thus, the computational complexity associated with each of the topology optimization iterations performed by coarse grid engine 170 is reduced relative to the computational complexity associated with each of the topology optimization iterations performed by fine grid engine 160.

[0086] It should be noted that the techniques described herein are illustrative and not limiting, and that various modifications can be made without departing from the broader spirit and scope of the application. Numerous modifications and variations are possible in light of the above teachings without departing from the scope and spirit of the described embodiments. It is to be understood that the functionality provided by topology optimization application 120, grid engine 134, fine grid engine 160, coarse grid engine 170, re-meshing engine 172, structure analyzer 162, shape optimizer 168, inference engine 180, and training application 190 can be integrated into or distributed across any number of software applications, including one, and any number of components of system 100.

[0087] It should be understood that system 100 as shown herein is illustrative, and variations and modifications are possible. For example, the functionality provided by topology optimization application 120, grid engine 134, fine grid engine 160, coarse grid engine 170, re-meshing engine 172, structure analyzer 162, shape optimizer 168, inference engine 180, and training application 190 as described herein can be integrated into or distributed across any number of software applications, including one, and any number of components of system 100. Moreover, the connection topology between various units in Figure 1 may be modified as desired.

[0088] Figure 2 is in accordance with various embodiments Figure 1 a more detailed illustration of the inference engine 180 of Figure 2 The functionality of the inference engine 180 is described in the context of a more generalized version of the example embodiment depicted in Figure 2 The functionality of the example embodiment of the inference engine 180 depicted in

[0089] As shown, the inference engine 180 generates the shape 128(y+1) based on any portion of the parameter set 140, the shape 128(y), the coarse shape 174(y), and the coarse analysis result 176(y), where y is an integer that can represent any topology optimization iteration performed by the coarse grid engine 170. As previously described herein in connection with Figure 1 In some embodiments, the parameter set 140 includes, without limitation, the fine grid size 142, the grid ratio 144, the fine block size 146, and any number and / or type of other parameter values organized in any technically feasible manner (indicated via ellipsis).

[0090] In some embodiments, the fine grid size 142 specifies the 3D dimensions of the fine grid 210 defining a 3D grid of voxels (not shown), where each voxel corresponds to a different portion of 3D space. In the same or other embodiments, each of the shapes 128 (including the shapes 128(y) and 128(y+1)) is a 3D grid comprising, without limitation, different instances of the fine shape element 212 (not explicitly depicted) in each of the voxels in the fine grid 210.

[0091] For purposes of explanation only, instances of the fine shape element 212 are also referred to herein individually as “fine shape element 212” and collectively as “fine shape elements 212,” regardless of whether the instances are explicitly depicted in any figure. Each of the fine shape elements 212 specifies, without limitation, any number and / or type of values associated with the corresponding voxel. Although not shown, in some embodiments, each fine shape element 212 includes, without limitation, a directed distance field representing a portion of the shape 128 associated with the corresponding voxel and a keep item tag.

[0092] In some embodiments, the grid ratio 144 specifies a ratio between the fine grid 210 and the coarse grid 220 that is a downsampled version of the fine grid 210. As referred to herein, the coarse grid 220 defines a 3D grid of coarse voxels (not shown), where each coarse voxel corresponds to a different portion of the 3D space. Each coarse voxel corresponds to a plurality of voxels in the fine grid 210. In the same or other embodiments, each of the coarse shape 174 (including the coarse shape 174(y)) is a 3D grid of different instances of coarse shape elements 222 (not explicitly depicted) including, but not limited to, each voxel in the coarse grid 220.

[0093] For purposes of explanation only, instances of the coarse shape elements 222 are also referred to herein individually as “coarse shape elements 222” and collectively as “coarse shape elements 222,” whether or not the instances are explicitly depicted in any figure. Each of the coarse shape elements 222 corresponds to a different coarse voxel in the coarse grid 220 and specifies, but is not limited to, any number and / or type of values. Although not shown, in some embodiments, each of the coarse shape elements 222 includes, but is not limited to, a directed distance field representing a portion of the coarse shape 174 associated with the corresponding coarse voxel and a keep item label.

[0094] In some embodiments, each of the coarse analysis results 176 (including the coarse analysis results 176(y)) can specify any amount and / or type of structural analysis data for each of the coarse shape elements 222 included in the corresponding instance of the coarse shape 174. For example, in some embodiments, the coarse analysis results 176(y) include, but are not limited to, different strain energy values (not shown) for each of the coarse shape elements 222 included in the coarse shape 174(y). For purposes of explanation only, the structural analysis data included in the coarse analysis results 176 is also referred to herein as “coarse structural analysis data” and “unnormalized coarse structural analysis data.”

[0095] As shown, in some embodiments, the inference engine 180 includes, but is not limited to, a normalization engine 242, a trained machine learning model 192 qany number and / or type of normalization operations on any portion of the coarse analysis results 176(y) to generate and output normalized coarse analysis results 246 in any technically feasible manner. The normalized coarse analysis results 246 can include, without limitation, any amount and / or type of normalized structural analysis data for each of the coarse shape elements 222 included in the coarse shape 174(y), any amount and / or type of unnormalized structural analysis data, or any combination thereof. For purposes of explanation only, the structural analysis data included in the normalized coarse analysis results 246 is also referred to herein as “coarse structural analysis data.”

[0096] In particular, in some embodiments, the coarse analysis results 176 include, without limitation, any number of strain energy values without bounds. As will be appreciated by those skilled in the art, strain energy distributions can vary significantly between different topology optimization iterations associated with the same topology optimization problem. To improve the robustness of the trained machine learning model 192, in some embodiments, the normalization engine 242 performs any number and / or type of normalization operations on any number of strain energy values included in the coarse analysis results 176(y).

[0097] For example, in some embodiments, for each strain energy value included in the coarse analysis results 176(y), the normalization engine 242 sets a corresponding normalized strain energy value equal to the log of the z-score. The normalization engine 242 then generates the normalized coarse analysis results 246 including, without limitation, the normalized strain energy values, where each of the normalized strain energy values corresponds to a different one of the coarse shape elements 222 included in the coarse shape 174(y).

[0098] In some embodiments, the inference engine 180 generates any number of instances of an inference set 250 (not explicitly depicted) based on the shape 128(y), the normalized coarse analysis results 246, the fine grid size 142, the grid ratio 144, and the fine block size 146. For purposes of explanation only, the instances of the inference set 250 are also individually referred to herein as “inference set 250” and collectively as “inference set 250,” regardless of whether the instances are explicitly depicted in any figure.

[0099] Each of the inference sets 250 specifies a different set of values for the inputs of the trained machine learning model 192. The inference engine 180 can generate the inference sets 250 in any technically feasible manner consistent with the inputs of the trained machine learning model 192. As previously incorporated by reference herein, the inference engine 180 can generate the inference sets 250 in any technically feasible manner consistent with the inputs of the trained machine learning model 192. Figure 1As described, in some embodiments, each of the inference set 250 corresponds to a different non-overlapping inference block (not shown). The inference engine 180 can determine the inference blocks in any technically feasible manner.

[0100] In some embodiments, the fine block size 146 defines the 3D dimensions of each of the inference blocks relative to the fine grid 210. The inference engine 180 defines the non-overlapping inference blocks based on the fine block size 146 such that the inference blocks collectively span the 3D space associated with the fine grid 210 and the coarse grid 220. It is noted that the fine block size 146 and the grid ratio 144 define the 3D dimensions of each of the inference blocks relative to the coarse grid 220.

[0101] To generate the inference set 250, in some embodiments, the inference engine 180 partitions the shape 128(y) into non-overlapping instances of fine input blocks 252 (not explicitly shown), where each of the instances of the fine input blocks 252 corresponds to a different one of the inference blocks. For purposes of explanation only, the instances of the fine input blocks 252 are also individually referred to herein as “fine input blocks 252” and collectively as “fine input blocks 252,” whether or not the instances are explicitly depicted in any figure. Each of the fine input blocks 252 from the shape 128(y) includes, without limitation, a different subset of the fine shape elements 212 included in the shape 128(y).

[0102] In the same or other embodiments, the inference engine 180 partitions the coarse shape 174(y) into non-overlapping instances of coarse blocks 254 (not explicitly shown), where each of the instances of the coarse blocks 254 corresponds to a different one of the inference blocks. For purposes of explanation only, the instances of the coarse blocks 254 are also individually referred to herein as “coarse blocks 254” and collectively as “coarse blocks 254,” whether or not the instances are explicitly depicted in any figure. Each of the coarse blocks 254 from the coarse shape 174(y) includes, without limitation, a different subset of the coarse shape elements 222 included in the coarse shape 174(y).

[0103] In some embodiments, the inference engine 180 partitions the normalized coarse analysis results 246 into non-overlapping instances of coarse result blocks 248 (not explicitly shown), where each of the instances of the coarse result blocks 248 corresponds to a different one of the inference blocks. For purposes of explanation only, the instances of the coarse result blocks 248 are also individually referred to herein as “coarse result blocks 248” and collectively as “coarse result blocks 248,” whether or not the instances are explicitly depicted in any figure.

[0104] Each of the coarse result blocks 248 corresponds to a different coarse block in the coarse blocks 254 and includes, without limitation, any amount and / or type of normalized structure analysis data, any amount and / or type of un-normalized structure analysis data, or any combination thereof associated with the coarse blocks 254. For example, in some embodiments, each of the coarse result blocks 248 includes a normalized strain energy value associated with a coarse shape element 222 included in a different one of the coarse blocks 254.

[0105] In some embodiments, the total number of the fine input blocks 252, the total number of the coarse blocks 254, the total number of the coarse result blocks 248, and the total number of the inference blocks are equal. Moreover, each of the inference blocks specifies a different portion of the 3D space associated with one of the fine input blocks 252, one of the coarse blocks 254, and one of the coarse result blocks 248.

[0106] For each of the inference blocks, the inference engine 180 generates a different inference set 250 that includes, without limitation, the fine input block 252, the coarse block 254, and the coarse result block 248 corresponding to the inference block. Collectively, in some embodiments, the inference sets 250 represent, without limitation, the fine shape elements 212 included in the shape 128(y), the coarse shape elements 222 included in the coarse shape 174(y), and the normalized strain energy values included in the normalized coarse analysis results 246 from the coarse analysis results 176(y).

[0107] In some other embodiments, the inference engine 180 can generate any number of inference sets 250 in any technically feasible manner based on any number and / or type of parameter values, shapes 128(y), coarse shapes 174(y), and coarse analysis results 176(y). In the same or other embodiments, the normalization engine 242 is omitted from the inference engine 180, and the inference engine 180 divides the coarse analysis results 176(y) to generate the coarse result blocks 254.

[0108] In some embodiments, the inference engine 180 inputs each of the inference sets 250 into a different instance of the trained machine learning model 192 q For explanatory purposes only, as used herein, “trained machine learning model 192 q ” refers to any instance of the trained machine learning model 192, regardless of whether a particular instance is depicted in any figure. In response, each instance of the trained machine learning model 192 q outputs a different instance of the fine output blocks 260.

[0109] In some other embodiments, the inference engine 180 inputs the inference sets 250 to the trained machine learning model 192q For example, in some embodiments, the inference engine 180 sequentially inputs the inference set 250 to the trained machine learning model 192 q of a single instance. In response, for each of the inference set 250, the trained machine learning model 192 q of a single instance sequentially outputs different instances of the fine output block 260. For purposes of explanation only, the instances of the fine output block 260 are also individually referred to herein as “fine output block 260” and collectively referred to as “fine output block 260,” whether or not the instances are explicitly depicted in any figure.

[0110] In some embodiments, for each instance of the inference set 250, the trained machine learning model 192 modifies the fine input block 252 based on the coarse block 254 and the coarse result block 248 to generate the fine output block 260. In the same or other embodiments, each of the fine output blocks 260 is predicted to be more convergent to one or more design objectives than the fine input block 252 used to generate the fine output block 260. Each of the fine output blocks 260 and each of the fine input blocks 252 includes, but is not limited to, the same total number of fine shape elements 212.

[0111] As shown, in some embodiments, the aggregation engine 270 generates the shape 128(y+1) based on the fine output blocks 260. The aggregation engine 270 can generate the shape 128(y+1) in any technically feasible manner. In some embodiments, the aggregation engine 270 performs any number and / or type of aggregation operation on the fine output blocks 260 based on corresponding portions of the 3D space to generate the shape 128(y+1).

[0112] It is noted that the total number of fine shape elements 212 included in the shape 128(y+1) is equal to the total number of fine shape elements 212 included in the shape 128(y). Thus, the resolution of the shape 128(y+1) is equal to the resolution of the shape 128(y). Advantageously, in some embodiments, the shape 128(y+1) is predicted to be more convergent to one or more design objectives than the shape 128(y). In the same or other embodiments, the shape 128(y+1) is a modified version of the shape 128(y) that is predicted to be topologically optimized according to one or more design objectives relative to the shape 128(y).

[0113] For purposes of explanation only, Figure 2An exemplary embodiment is depicted in association with the exemplary values in italics for the fine grid size 142, the grid ratio 144, and the fine block size 146, and the exemplary boundaries in bold black lines for the shape 128(y) and the coarse shape 174(y). As shown, in the exemplary embodiment, the fine grid size 142 specifies that the dimensions of the fine grid 210 are 8 x 16 x 8, the grid ratio 144 between the fine grid 210 and the coarse grid 220 is 2: 1, and the fine block size 146 is 4 x 4 x 4.

[0114] In Figure 2 In the depicted embodiment, because the fine grid size 142 is 8 x 16 x 8, the fine grid 210 includes, without limitation, 1024 voxels. Thus, the shape 128(y) includes, without limitation, fine shape elements 212(1) through 212(1024). Additionally, because the grid ratio 144 is 2: 1, the dimensions of the coarse grid 220 are 4 x 8 x 4. Thus, the coarse grid 220 includes, without limitation, 128 coarse voxels. Thus, the coarse shape 174(y) includes, without limitation, coarse shape elements 222(1) through 222(128).

[0115] For illustrative purposes only, Figure 2 In the depicted embodiment, the coarse analysis results 176(y) include, without limitation, 128 different strain energy values (not shown), where each of the strain energy values is associated with a different coarse shape element of the coarse shape elements 222(1) through 222(128). The inference engine 180 inputs the coarse analysis results 176(y) into the normalization engine 242. In response, the normalization engine 242 generates normalized coarse analysis results 246 that include, without limitation, 128 different normalized strain energy values.

[0116] In some embodiments, the inference engine 180 determines 16 non-overlapping inference blocks based on the fine grid size 142 of 8 x 16 x 8 and the fine block size 146 of 4 x 4 x 4. Because the grid ratio 144 is 2: 1, each of the inference blocks corresponds to a different 4 x 4 x 4 block of the fine shape elements 212 and a different 2 x 2 x 2 block of the coarse shape elements 222. For example, and as depicted via dashed lines, a first inference block corresponds to a 4 x 4 x 4 block of the fine shape elements 212 and a 2 x 2 x 2 block of the coarse shape elements 222.

[0117] For Figure 2In the exemplary embodiment depicted, based on inference blocks, the inference engine 180 divides the shape 128(y), coarse shape 174(y), and normalized coarse analysis result 246 into fine input blocks 252(1) to 252(16), coarse blocks 254(1) to 254(16), and coarse result blocks 248(1) to 248(16), respectively. Each of the fine input blocks 252(1) to 252(16) includes, but is not limited to, a different subset of 64 fine shape elements in the fine shape element 212 included in the shape 128(y). Each of the coarse blocks 254(1) to 254(16) includes, but is not limited to, a different subset of 16 coarse shape elements in the coarse shape element 222. Each of the coarse result blocks 248(1) to 248(16) includes, but is not limited to, a different subset of 16 normalized strain energy values ​​in the normalized strain energy values ​​included in the normalized coarse analysis result 246.

[0118] The inference engine 180 generates inference sets 250(1) to 250(16) based on fine input blocks 252(1) to 252(16), coarse blocks 254(1) to 254(16), and coarse result blocks 248(1) to 248(16), each of which corresponds to a different inference block. For example, and as depicted by arrows and dashed lines, inference set 250(1) corresponds to the first inference block. As shown, inference set 250(1) includes, but is not limited to, fine input block 252(1), coarse block 254(1), and coarse result block 248(1). Also as shown, inference set 250(16) includes, but is not limited to, fine input block 252(16), coarse block 254(16), and coarse result block 248(16). Although not explicitly shown, for integers i from 2 to 15, the inference set 250(i) includes, but is not limited to, fine input block 252(i), coarse block 254(i) and coarse result block 248(i).

[0119] As described, for in Figure 2 In the exemplary implementation described herein, inference engine 180 inputs inference sets 250(1) to 250(16) into trained machine learning model 192, respectively. q (1) to 192 q (16) In response, the trained machine learning model 192 q (1) to 192 q (16) Output fine output blocks 260(1) to 260(16) respectively. In some implementations, fine output blocks 260(1) to 260(16) are modified versions of fine input blocks 252(1) to 252(16) respectively predicted to be topology optimized relative to fine input blocks 252(1) to 252(16) according to one or more design objectives.

[0120] exist Figure 2In the depicted implementation, the inference engine 180 aggregates the fine output patches 260(1) through 260(16) to generate the shape 128(y+1). Thus, the resolution of the shape 128(y+1) is equal to the resolution of the shape 128(y). As depicted, the shape 128(y+1) is more converged to the design goal of "minimized mass" than the shape 128(y). More precisely, the shape 128(y+1) includes, but is not limited to, less material and thus has a smaller mass relative to the shape 128(y).

[0121] Figure 3 is a flowchart of method steps for solving a topology optimization problem when designing a 3D object in accordance with various embodiments. Although the method steps are described with reference to the system of Figure 1 and Figure 2 , one skilled in the art will appreciate that any system configured to implement the method steps in any order falls within the scope of the present invention.

[0122] As shown, the method 300 begins with step 302 in which the topology optimization application 120 determines the fine grid 210 based on the parameter set 140 and generates an initial version of the shape 128 based on the fine grid 210 and the shape definition 148. At step 304, the topology optimization application 120 initiates a training process that iteratively generates any number of versions of the trained machine learning model 192 based on the iteration data set 178. The topology optimization application 120 can initiate the training process in any technically feasible manner. For example, in some embodiments, the topology optimization application 120 configures the training application 190 to perform the method steps described below in connection with the method 400. Figure 6

[0123] At step 306, the fine grid engine 160 configures the structural analyzer 162 to perform a structural analysis of the shape 128 based on the parameter set 140 to generate the fine analysis results 166. At step 308, the fine grid engine 160 configures the shape optimizer 168 to perform a topology optimization of the shape 128 based on the fine analysis results 166 and the parameter set 140. As part of step 308, the fine grid engine 160 optionally generates and stores a new iteration data set in the iteration data set 178.

[0124] At step 310, the topology optimization application 120 determines whether the topology optimization application 120 has completed the current grid phase. If at step 310 the topology optimization application 120 determines that the topology optimization application 120 has not completed the current grid phase, then the method 300 returns to step 306 in which the fine grid engine 160 configures the structural analyzer 162 to perform a structural analysis of the shape 128.

[0125] ​However, if at step 310 the topology optimization application 120 determines that the topology optimization application 120 has completed the current grid phase, then the method 300 proceeds to step 312. At step 312, the topology optimization application 120 determines whether the topology optimization application 120 has completed. The topology optimization application 120 can determine whether the topology optimization application 120 has completed in any technically feasible manner (e.g., based on any number and / or type of completion criteria).

[0126] If at step 312 the topology optimization application 120 determines that the topology optimization application 120 has completed, then the method 300 proceeds to step 314. At step 314, the topology optimization application 120 stores the newly modified version of the shape 128 as the optimized shape 198 and / or transmits it to any number and / or type of other software applications. The method 300 then terminates.

[0127] However, if at step 312 the topology optimization application 120 determines that the topology optimization application 120 has not completed, then the method 300 proceeds directly to step 316. At step 316, the coarse grid engine 170 computes a coarse shape 174 based on the shape 128 and the grid ratio 144 specified in the parameter set 140. At step 318, the coarse grid engine 170 configures the structural analyzer 162 to perform a structural analysis of the coarse shape 174 based on the parameter set 140 to generate a coarse analysis result 176, and then normalizes the coarse analysis result 176 to generate a normalized coarse analysis result 246.

[0128] At step 320, the inference engine 180 generates an inference set 250 for each non- overlapping inference block based on the shape 128, the coarse shape 174, and the normalized coarse analysis result 246. At step 322, the inference engine 180 inputs each of the inference sets 250 into the latest version of the trained machine learning model 192 to compute fine output blocks 260. At step 324, the aggregation engine 270 generates a new shape based on the fine output blocks 260 and then sets the shape 128 equal to the new shape.

[0129] At step 326, the topology optimization application 120 determines whether the topology optimization application 120 has completed the current grid phase. If at step 326 the topology optimization application 120 determines that the topology optimization application 120 has not completed the current grid phase, then the method 300 returns to step 316, where the coarse grid engine 170 generates a coarse shape 174 based on the shape 128 and the grid ratio 144 specified in the parameter set 140.

[0130] However, if at step 326, the topology optimization application 120 determines that the topology optimization application 120 has completed the current grid phase, the method 300 returns to step 306, where the fine grid engine 160 performs a structural analysis of the shape 128. The method 300 continues to loop through steps 306 to 326 until, at step 314, the topology optimization application 120 stores the newly modified version of the shape 128 as the optimized shape 198 and / or transmits it to any number and / or type of other software applications. The method 300 then terminates.

[0131] Training a machine learning model to optimize a shape based on lower resolution structural analysis data

[0132] Figure 4 A more detailed illustration of the training application 190 in accordance with various embodiments Figure 1 A more detailed illustration of the training application 190 in accordance with various embodiments

[0133] During the initialization phase, the training application 190 can initialize the current machine learning model 498 in any technically feasible manner. In some embodiments, the training application 190 initializes the current machine learning model 498 based on any number and / or type of untrained machine learning models, any number and / or type of pre-trained machine learning models, any number and / or type of trained machine learning models 192, or any combination thereof machine learning models.

[0134] For example, in some embodiments, the training application 190 sets the current machine learning model 498 equal to an untrained neural network. In some other embodiments, the training application 190 sets the current machine learning model 498 equal to a composite machine learning model. In some embodiments, the composite machine learning model includes, but is not limited to, any number and / or type of machine learning models that work together and can be trained independently, dependently, or any combination thereof. In still other embodiments, the training application 190 sets the current machine learning model 498 equal to a trained machine learning model 192 associated with a related and previously solved topology optimization problem.

[0135] In some embodiments, during a subsequent training phase, the training application 190 sequentially obtains each of the iteration data sets 178. The training application 190 iteratively performs machine learning operations on the current machine learning model 498 based on the iteration data sets 178 to generate any number of versions of the trained machine learning model 192. In some other embodiments, instead of or in addition to the iteration data sets 178, the training application 190 performs any number and / or type of operations based on any number and / or type of data to train the current machine learning model 498.

[0136] In some embodiments, each version of the trained machine learning model 192 is associated with a different point in time and is equal to a version of the current machine learning model 498 trained based on a different number of iteration data sets 178. Thus, the type of each version of the trained machine learning model 192 matches the type of the current machine learning model 498. As described below in connection with FIG. 2, the training application 190 can generate any number of versions of the trained machine learning model 192 based on any number and / or type of parameters. Figure 5 In more detail, in some embodiments, each version of the trained machine learning model 192 is a trained neural network.

[0137] The training application 190 can generate any number of different versions of the trained machine learning model 192 in any technically feasible manner. In some embodiments, the training application 190 repeatedly saves the current machine learning model 498 as a new version of the trained machine learning model 192 each time a trigger is activated. The trigger can be activated based on any number and / or type of criteria.

[0138] In some embodiments, the parameter set 140 specifies, without limitation, any number and type of parameter values associated with activating the trigger. Some examples of parameter values associated with activating the trigger include, without limitation, a time interval between activations, a total number of iteration data sets 178 obtained between activations, and the like. For explanatory purposes only, at any given point in time, the most recent version of the trained machine learning model 192 is denoted herein as the trained machine learning model 192 q where q is an integer between 1 and Q, and Q can be any positive integer.

[0139] For explanatory purposes only, Figure 4 The operations performed by the training application 190 to train the current machine learning model 498 based on the iteration data sets 178(x) and any portion of the parameter set 140 are depicted. As shown, in some embodiments, the parameter set 140 includes, without limitation, the fine grid size 142, the grid ratio 144, the fine block size 146, the fine step size 446, and any number and / or type of other parameter values organized in any technically feasible manner (indicated via ellipses). As previously described herein in connection with FIG. 1, the training application 190 can train the current machine learning model 498 in any technically feasible manner based on the iteration data sets 178(x) and any portion of the parameter set 140.Figure 1 As described, x is an integer that can represent any topology optimization iteration performed by the fine mesh engine 160.

[0140] As shown, the iteration dataset 178(x) includes, but is not limited to, the shape 128(x), the fine analysis result 166(x), and the shape 128(x+1). As previously described herein in conjunction with Figure 1 As described, the shape 128(x+1) is a modified version of the shape 128(x) generated by the shape optimizer 168 based on the fine analysis result 166(x). In some embodiments, the shape 128(x+1) is topologically optimized relative to the shape 128(x) according to one or more design objectives.

[0141] As previously described herein in conjunction with Figure 2 As described, in some embodiments, the shape 128(x+1) and the shape 128(x) include, but are not limited to, the same total number of fine shape elements 212. In the same or other embodiments, the fine analysis result 166(x) includes, but is not limited to, any amount and / or type of structural analysis data for each of the fine shape elements 212 included in the shape 128(x). In the context of the iteration dataset 178(x), and for purposes of explanation only, the shape 128(x), the shape 128(x+1), and the fine analysis result 166(x) are also referred to herein as the “input shape,” the “structural analysis result,” and the “output shape,” respectively.

[0142] The training application 190 can obtain the iteration dataset 178(x) in any technically feasible manner. In some embodiments, the training application 190 receives the iteration dataset 178(x) from the fine mesh engine 160 in real-time. In some other embodiments, the training application 190 reads the iteration dataset 178(x) from any memory accessible to both the fine mesh engine 160 and the training application 190.

[0143] As shown, in some embodiments, the data converter 420 includes, but is not limited to, the re-meshing engine 172'(1), the re-meshing engine 172'(2), and the normalization engine 242'. The re-meshing engine 172'(1) and the re-meshing engine 172'(2) are two different instances of the re-meshing engine 172 previously described herein in conjunction with Figure 1 As shown, in some embodiments, the data converter 420 includes, but is not limited to, the re-meshing engine 172'(1), the re-meshing engine 172'(2), and the normalization engine 242'. The re-meshing engine 172'(1) and the re-meshing engine 172'(2) are two different instances of the re-meshing engine 172 previously described herein in conjunction with Figure 2 As shown, in some embodiments, the data converter 420 includes, but is not limited to, the re-meshing engine 172'(1), the re-meshing engine 172'(2), and the normalization engine 242'. The re-meshing engine 172'(1) and the re-meshing engine 172'(2) are two different instances of the re-meshing engine 172 previously described herein in conjunction with

[0144] As shown, in some embodiments, data converter 420 inputs shape 128(x) and grid ratio 144 into re-meshing engine 172'(1). In response, re-meshing engine 172'(1) generates coarse shape 174(x). Coarse shape 174(x) is a down-sampled version of shape 128(x), is associated with coarse grid 220, and can be represented in any technically feasible manner. In some embodiments, coarse shape 174(x) includes, but is not limited to, a total number of coarse shape elements 222 determined by the total number of fine shape elements 212 included in shape 128(x) and grid ratio 144.

[0145] In the same or other embodiments, data converter 420 inputs fine analysis results 166(x) and grid ratio 144 into re-meshing engine 172'(2). In response, re-meshing engine 172'(2) generates coarse analysis results 176(x). Coarse analysis results 176(x) is a down-sampled version of fine analysis results 166(x), is associated with coarse grid 220, and can be represented in any technically feasible manner. In some embodiments, coarse analysis results 176(x) includes, but is not limited to, any amount and / or type of structural analysis data for each of coarse shape elements 222 included in coarse shape 174(x).

[0146] In some embodiments, data converter 420 inputs coarse analysis results 176(x) into normalization engine 242'. In response, normalization engine 242' generates normalized coarse analysis results 246'. The function of normalization engine 242' on coarse analysis results 176(x) is the same as previously described herein in connection with the function of normalization engine 242 on fine analysis results 166(x). Figure 2 The normalization engine 242 described in detail functions the same on coarse analysis results 176(y). For each of coarse shape elements 222 included in coarse shape 174(x), normalized coarse analysis results 246' can include, but is not limited to, any amount and / or type of normalized structural analysis data, any amount and / or type of un-normalized structural analysis data, or any combination thereof.

[0147] As shown, in some embodiments, the data converter 420 generates potential training data 450 based on the shape 128(x), the shape 128(x+1), the coarse shape 174(x), the normalized coarse analysis results 246', and any portion of the parameter set 140. The potential training data 450 includes, but is not limited to, training sets 452(1) through 452(T), where T is an integer representing the training block count 422. For purposes of explanation only, the training sets 452(1) through 452(T) are also collectively referred to herein as "training sets 452" and "potential training sets." The training sets 452(1) through 452(T) are also individually referred to herein as "training sets 452" and "potential training sets." The training block count 422 specifies a total number of training blocks (not shown) and can equal any positive integer.

[0148] In some embodiments, each of the training blocks defines a different portion of the 3D space associated with both the fine grid 210 and the coarse grid 220. In the same or other embodiments, any number of training blocks can partially overlap any number of other training blocks. The data converter 420 can define the training blocks and the training block count 422 in any technically feasible manner.

[0149] In some embodiments, the data converter 420 defines the training blocks based on a sliding window algorithm, the fine grid size 142, the fine block size 146, and a fine step size 446. The fine grid size 142 and the fine block size 146 are previously described herein in connection with the fine grid 210 and the fine block 216, respectively. The fine step size 446 specifies a different step size in each of the three dimensions relative to the voxels in the fine grid 210. In some embodiments, the data converter 420 defines a training block as a portion of the 3D space that is delineated by a sliding window as the entire 3D space associated with the fine grid 210 is scanned one step at a time in one of the three dimensions. The sliding window has a size relative to the fine block size 146 of the fine grid 210, and the size of each step is defined by the fine step size 446. In the same or other embodiments, the data converter 420 sets the training block count 422 equal to a total number of the training blocks. Figure 1 and Figure 2 The detailed description. The fine step size 446 specifies a different step size in each of the three dimensions relative to the voxels in the fine grid 210. In some embodiments, the data converter 420 defines a training block as a portion of the 3D space that is delineated by a sliding window as the entire 3D space associated with the fine grid 210 is scanned one step at a time in one of the three dimensions. The sliding window has a size relative to the fine block size 146 of the fine grid 210, and the size of each step is defined by the fine step size 446. In the same or other embodiments, the data converter 420 sets the training block count 422 equal to a total number of the training blocks.

[0150] As shown, in some embodiments, training set 452(1) includes, without limitation, fine input block 252'(1), coarse block 254'(1), coarse result block 248'(1), and fine output block 260'(1). Although not shown, training sets 452(2) through 452(T) include, without limitation, fine input blocks 252'(2) through 252'(T), coarse blocks 254'(2) through 254'(T), coarse result blocks 248'(2) through 248'(T), and fine output blocks 260'(2) through 260'(T). In some embodiments, each of training sets 452 corresponds to a different training block. Data converter 420 can generate training sets 452 in any technically feasible manner.

[0151] In some embodiments, data converter 420 initializes training sets 452 to empty sets. Subsequently, data converter 420 applies a sliding window algorithm to shape 128(x) based on fine block size 146 and fine step size 446 to generate fine input blocks 252'(1) through 252'(T). Thus, each of fine input blocks 252'(1) through 252'(T) includes, without limitation, a different subset of fine shape elements 212 included in shape 128(x), where any number of the subsets can partially overlap. Data converter 420 then adds fine input blocks 252'(1) through 252'(T) to training sets 452(1) through 452(T), respectively.

[0152] In the same or other embodiments, data converter 420 applies a sliding window algorithm to shape 128(x+1) based on fine block size 146 and fine step size 446 to generate fine output blocks 260'(1) through 260'(T). Thus, each of fine output blocks 260'(1) through 260'(T) includes, without limitation, a different subset of fine shape elements 212 included in shape 128(x+1), where any number of the subsets can partially overlap. Data converter 420 then adds fine output blocks 260'(1) through 260'(T) to training sets 452(1) through 452(T), respectively.

[0153] In some embodiments, data converter 420 computes a coarse block size (not shown) and a coarse step size (not shown) based on grid ratio 144, fine block size 146, and fine step size 446. The coarse block size specifies a 3D dimension of each of the training blocks relative to coarse voxels in coarse grid 220. The coarse step size specifies a different step size in each of the three dimensions relative to coarse voxels in coarse grid 220.

[0154] In the same or other embodiments, the data converter 420 applies a sliding window algorithm to the coarse block shape 174(x) based on the coarse block size and the coarse step size to generate coarse blocks 254'(1) through 254'(T). Thus, each of the coarse blocks 254'(1) through 254'(T) includes, without limitation, a different subset of the coarse shape elements 222 included in the coarse shape 174(y), where any number of the subsets can partially overlap. The data converter 420 then adds the coarse blocks 254'(1) through 254'(T) to the training sets 452(1) through 452(T), respectively.

[0155] In some embodiments, the data converter 420 applies a sliding window algorithm to the normalized coarse analysis results 246' based on the coarse block size and the coarse step size to generate coarse result blocks 248'(1) through 248'(T). In some other embodiments, the data converter 420 omits the normalization engine 242' and the data converter 420 applies a sliding window algorithm to the coarse analysis results 176(x) based on the coarse block size and the coarse step size to generate the coarse result blocks 248'(1) through 248'(T). Each of the coarse result blocks 248'(1) through 248'(T) includes, without limitation, any amount and / or type of structural analysis data for each of the coarse shape elements 222 included in the coarse blocks 254'(1) through 254'(T), respectively. The data converter 420 then adds the coarse result blocks 248'(1) through 248'(T) to the training sets 452(1) through 452(T), respectively.

[0156] For purposes of explanation only, example values for the fine grid size 142, the grid ratio 144, the fine block size 146, the fine step size 446, and the training block count 422 are depicted in italics. As shown, in some embodiments, the fine grid size 142 specifies that the dimensions of the fine grid 210 are 8 x 16 x 8, the grid ratio 144 specifies that the ratio between the fine grid 210 and the coarse grid 220 is 2: 1, the fine block size 146 is 4 x 4 x 4, and the fine step size 446 is 2 x 2 x 2.

[0157] Based on the 8 x 16 x 8 fine grid size 142, the shape 128(x) and the shape 128(x+1) each include, without limitation, 1024 fine shape elements 212. Based on the fine grid size 142 and the 2: 1 grid ratio 144, the coarse shape 174(x) includes, without limitation, 128 coarse shape elements 222. Additionally, the coarse analysis results 176(y) include, without limitation, any amount and / or type of structural analysis data for each of the 128 coarse shape elements 222 included in the coarse shape 174(x).

[0158] Those skilled in the art will recognize that applying a sliding window algorithm to the fine grid 210 based on a 4x4x4 fine block size 146 and a 2x2x2 fine step size 446 defines 63 different training blocks. In some embodiments, to generate the training sets 452(1) through 452(63) (not explicitly shown), the data converter 420 applies a 4x4x4 sliding window to the shapes 128(x) and 128(x+1) based on the step size of two of the fine shape elements 212 in each dimension to generate the fine input blocks 252'(1) through 252'(63) and the fine output blocks 260'(1) through 260'(63), respectively.

[0159] In the same or other embodiments, the data converter 420 calculates a 2x2x2 coarse block size based on the grid ratio 144 of 2: 1 and the fine block size 146 of 4x4x4. The data converter 420 also calculates a 1x1x1 coarse step size based on the grid ratio 144 of 2: 1 and the fine step size 446 of 1x1x1. Accordingly, the data converter 420 applies a 2x2x2 sliding window to the coarse shape 174(x) and the normalized coarse analysis results 246' based on the step size of one of the coarse shape elements 222 in each dimension to generate the coarse blocks 254'(1) through 254'(63) and the coarse results blocks 248'(1) through 248'(63), respectively.

[0160] As shown, in some embodiments, the data converter 420 inputs the potential training data 450 into the data filtering engine 460. In response, the data filtering engine 460 filters out any number of the training sets 452 included in the potential training data 450 to generate the filtered training data 462. The data filtering engine 460 can determine which training sets 452 to filter out in any technically feasible manner. In some embodiments, the data filtering engine 460 performs any number and / or type of filtering operations and / or any number and / or type of sampling operations on the training sets 452 included in the potential training data 450 to generate the filtered training data 462.

[0161] In some embodiments, the data filtering engine 460 preferentially retains (i.e., adds to the filtered training data 462) the training sets 452 associated with the portion of the coarse shape 174(x) that is closest to the boundary of the coarse shape 174(x). Those skilled in the art will recognize that preferentially retaining the training sets 452 associated with the portion of the coarse shape 174(x) that is closest to the boundary of the coarse shape 174(x) can improve the efficiency of the training application 190 in training the current machine learning model 498. The data filtering engine 460 can determine the distance of the portion of the coarse shape 174(x) to the boundary (or surface) of the coarse shape 174(x) in any technically feasible manner (e.g., via a directed distance field).

[0162] More specifically, in some embodiments, the data filtering engine 460 classifies the training sets 452(1) through 452(T) based on whether the coarse shapes 174(x) represented by the coarse blocks 254'(1) through 254'(T), respectively, are on a boundary of the coarse shape 174(x), inside the coarse shape 174(x), or outside the coarse shape 174(x). For a subset of the training sets 452 associated with the "boundary" category, the data filtering engine 460 performs a sampling operation that retains a relatively high percentage (e.g., 60%) of the training sets 452 and discards the remaining training sets 452.

[0163] In some embodiments, for a subset of the training sets 452 associated with the "outside" category, the data filtering engine 460 performs a weighted sampling operation that retains a relatively low percentage (e.g., 15%) of the training sets 452. For each of the training sets 452 included in the outside category, the data filtering engine 460 computes an associated sampling weight based on a proximity of the portion of the coarse shape 174(x) represented by the coarse block 254' included in the training set 452 to a boundary of the coarse shape 174(x). In this way, for the training sets 452 included in the outside category, the data filtering engine 460 preferentially retains training sets 452 associated with portions of the coarse shape 174(x) that are closer to a surface of the coarse shape 174(x).

[0164] In the same or other embodiments, for a subset of the training sets 452 associated with the "inside" category, the data filtering engine 460 performs a weighted sampling operation that retains a relatively low percentage (e.g., 25%) of the training sets 452. For each of the training sets 452 included in the inside category, the data filtering engine 460 computes an associated sampling weight based on a proximity of the portion of the coarse shape 174(x) represented by the coarse block 254' included in the training set 452 to a boundary of the coarse shape 174(x). In this way, for the training sets 452 associated with the inside category, the data filtering engine 460 preferentially retains training sets 452 associated with portions of the coarse shape 174(x) that are closer to a surface of the coarse shape 174(x).

[0165] As shown, in some embodiments, the training application 190 inputs the filtered training data 462 into the variation engine 470. In response, the variation engine 470 generates a training data set 480 that includes, without limitation, the training sets 452 included in the filtered training data 462 and any number of new instances of the training sets 452. The variation engine 470 can generate new instances of the training sets 452 based on any number of the training sets 452 included in the filtered training data 462 in any technically feasible manner.

[0166] Importantly, in some embodiments, the variation engine 470 performs any number and / or type of data augmentation operations on the filtered training data 462, which increases the variation on the training data set 480. As those skilled in the art will recognize, increasing the variation on the training data set 480 can increase the ability of the trained machine learning model 192 to generalize. The variation engine 470 can perform any number and / or type of data augmentation operations on the filtered training data 462 in any technically feasible manner.

[0167] In some embodiments, for each of the training sets 452 included in the filtered training data 462, the variation engine 470 generates a rotated version of the training set 452. The rotated version of each of the training sets 452 is associated with a randomly rotated version of the training block corresponding to the training set 452. To generate a rotated version of the training set 452(i), where i can be any integer between 1 and T, the variation engine 470 randomly selects a 3D rotation direction. The variation engine 470 rotates each of the fine input block 252'(i), the fine output block 260'(i), the coarse block 254'(i), and the coarse result block 248'(i) based on the 3D rotation direction to generate the fine input block 252'(j), the fine output block 260'(j), the coarse block 254'(j), and the coarse result block 248'(j), where j can be any integer greater than T. Although not shown, the fine input block 252'(j), the fine output block 260'(j), the coarse block 254'(j), and the coarse result block 248'(j) are aligned and correspond to a new training block that does not correspond to the coarse shape 174(x).

[0168] The variation engine 470 generates the training set 452(j) that includes, but is not limited to, the fine input block 252'(j), the fine output block 260'(j), the coarse block 254'(j), and the coarse result block 248'(j). The variation engine 470 then adds the training set 452(i) and the training set 452(j) to the training data set 480. In some other embodiments, the variation engine 470 can generate any number of variations of any number of training sets 452 included in the filtered training data 462 in any technically feasible manner. In the same or other embodiments, the variation engine 470 can generate the training data set 480 based on the filtered training data 462 in any technically feasible manner.

[0169] As depicted, in some embodiments, the training engine 490 performs any number and / or type of machine learning operations on the current machine learning model 498 based on the training data set 480. In some embodiments, for each of the training sets 452 included in the training data set 480, the training engine 490 incrementally trains the current machine learning model 498 to map the coarse block 254’, the coarse result block 248’, and the fine input block 252’ to the fine output block 260’. As described previously herein in connection with Figure 1 As described previously herein in connection with

[0170] In some other embodiments, each of the training sets 452 can include, without limitation, any amount and type of data that enables the training engine 490 to train the current machine learning model 498 to predict the fine output block 260’. For example, in some other embodiments, each of the training sets 452 omits the fine input block 252’, and the training engine 490 incrementally trains the current machine learning model 498 to map the coarse block 254’ and the coarse result block 248’ to the fine output block 260’. In still other embodiments, each of the training sets 452 omits the coarse block 254’, and the training engine 490 incrementally trains the current machine learning model 498 to map the fine input block 252’ and the coarse result block 248’ to the fine output block 260’.

[0171] As depicted with dashed arrows, in some embodiments, the training application 190 repeatedly saves a copy of the current machine learning model 498 as a new version of the trained machine learning model, denoted as the trained machine learning model 192 q In some embodiments, after generating the trained machine learning model 192 q The training application 190 stores the trained machine learning model 192 q in any memory accessible to the topology optimization application 120. In the same or other embodiments, the training application 190 transmits the trained machine learning model 192 q to any number and / or type of software applications (e.g., the topology optimization application 120 and / or the coarse raster engine 170) in any technically feasible manner.

[0172] Figure 5 in accordance with various embodimentsFigure 1 192 trained machine learning models q More detailed illustrations. In Figure 5 In the described implementation scheme, the trained machine learning model 192 q It is a trained neural network with an exemplary architecture. As previously combined in this paper... Figure 4 As described, the current machine learning model 498 is associated with each trained machine learning model 192 (including trained machine learning model 192). q The same type of model. Furthermore, the current machine learning model 498 and each trained machine learning model 192 (including trained machine learning model 192) q They share the same architecture.

[0173] In some implementation schemes (including) Figure 5 In the described implementation scheme, the trained machine learning model 192 q The architecture is similar to that typically associated with a type of neural network commonly known as a 3D autoencoder. In some other implementations, the trained machine learning model 192 q This can be a trained version of a neutral network with different types of architectures. In other implementations, the trained machine learning model 192... q It can be a trained version of a different type of machine learning model, or a trained composite machine learning model that includes trained versions of any number and / or types of machine learning models.

[0174] Although not shown, the current machine learning model 498 and each trained machine learning model 192 share the same total number of parameters (e.g., weights and / or biases). Those skilled in the art will recognize that in the training engine 490 ( Figure 5 When performing machine learning operations on the current machine learning model 498 (not shown), the current machine learning model 498 learns the values ​​of the parameters. Therefore, the values ​​of any number of parameters can differ among the trained machine learning models 192.

[0175] In some implementations, the trained machine learning model 192 q The input is included in the inference set 250. As previously combined in this paper... Figure 2 As described, in some implementations, the inference set 250 includes, but is not limited to, a fine input block 252, a coarse block 254, and a coarse result block 248 corresponding to one of the inference blocks.

[0176] As shown in the figure, in some implementation schemes, the trained machine learning model 192 qA 3D convolution operation 510(1) is performed on the fine input patch 252. The 3D convolution operation 510(1) compresses the fine input patch 252 to generate a fine input feature 520. The trained machine learning model 192 q The fine input feature 520 is then combined with the coarse patch 254 to generate a concatenation 530(1). Subsequently, the trained machine learning model 192 q A 3D convolution operation 510(2) is performed on the concatenation 530(1). The 3D convolution operation 510(2) compresses the concatenation 530(1) to generate a volume feature 540. In some embodiments, the volume feature 540 is associated with a prediction of a finer version of the coarse patch 254.

[0177] The trained machine learning model 192 q The volume feature 540 is then combined with the coarse result patch 248 to generate a concatenation 530(2). Subsequently, the trained machine learning model 192 q A 3D convolution operation 510(3) is performed on the concatenation 530(2). The 3D convolution operation 510(3) compresses the concatenation 530(2) to generate a feature 550. In some embodiments, the feature 550 is associated with a prediction of how to topologically optimize a prediction of a finer version of the coarse patch 254.

[0178] As shown, the trained machine learning model 192 q A 3D deconvolution operation 560 is performed on the feature 550. The 3D deconvolution operation 560 up-samples the feature 550 to generate a fine delta feature 570. In some embodiments, the fine delta feature 570 is associated with a prediction of how to topologically optimize the fine input patch 252. Subsequently, the trained machine learning model 192 q A 3D convolution operation 510(4) is performed on the fine delta feature 570. The 3D convolution operation 510(4) compresses the fine delta feature 570 to generate a shape delta 580. In some embodiments, the shape delta 580 is associated with any number and / or type of spatial modifications to the fine input patch 252 that are predicted to topologically optimize the fine input patch 252 according to one or more design objectives.

[0179] The trained machine learning model 192 q Any number of addition operations are then performed between the shape delta 580 and the fine input patch 252 to generate a fine output patch 260. In some embodiments, the fine output patch 260 is predicted to be more convergent to one or more design objectives than the fine input patch 252. In the same or other embodiments, the fine output patch 260 is a modified version of the fine input patch 252 that is predicted to be topologically optimized according to one or more design objectives relative to the fine input patch 252. As shown, the trained machine learning model 192q The output fine output block 260.

[0180] For purposes of explanation only, some example dimensions of example embodiments are depicted in italics. Moreover, dimensions of various instances of various objects are specified relative to four dimensions, where the product of the four dimensions for a given instance equals the total number of discrete values associated with that instance.

[0181] In example embodiments, the fine input block 252 is a 4x4x4 block of fine shape elements 212 previously described herein in connection with Figure 2 Although not shown, each of the fine shape elements 212 includes, without limitation, a directed distance field and a reservation tag. Accordingly, the dimensions of the fine input block 252 relative to four dimensions are 4x4x4x2.

[0182] In example embodiments, the coarse block 254 is a 2x2x2 block of coarse shape elements 222 previously described herein in connection with Figure 2 Although not shown, each of the coarse shape elements 222 includes, without limitation, a directed distance field and a reservation tag. Accordingly, the dimensions of the coarse block 254 relative to four dimensions are 2x2x2x2.

[0183] Although not shown, in example embodiments, the coarse result block 248 is a 2x2x2 block of strain energy values, where each strain energy value corresponds to a different one of the coarse shape elements 222 included in the coarse block 254. Accordingly, the dimensions of the coarse result block 248 relative to four dimensions are 2x2x2x1.

[0184] In this example embodiment, the trained machine learning model 192 q A 3D convolution operation 510(1) is performed on the fine input block 252 to generate a fine input feature 520 having dimensions of 2x2x2x24. After combining the fine input feature 520 and the coarse block 254 to generate a concatenation 530(1), the trained machine learning model 192 q A 3D convolution operation 510(2) is performed on the concatenation 530(1) to generate a volume feature 540 having dimensions of 2x2x2x24. After combining the volume feature 540 and the coarse result block 248 to generate a concatenation 530(2), the trained machine learning model 192 q A 3D convolution operation 510(3) is performed on the concatenation 530(2) to generate a feature 550 having dimensions of 2x2x2x32.

[0185] Subsequently, the trained machine learning model 192 qA 3D deconvolution operation 560 is performed on the features 550 to generate fine delta features 570 having a size of 4x4x4x24. The trained machine learning model 192 q A 3D convolution operation 510(4) is performed on the fine delta features 570 to generate shape deltas 580 having a size of 4x4x4x1. In some embodiments, for each of the directed distance fields included in the fine input block 252, the shape deltas 580 include, without limitation, a different directed distance field delta. The trained machine learning model 192 q Any number of addition operations are then performed between the shape deltas 580 and the fine input block 252 to generate the fine output block 260.

[0186] In an example embodiment, the fine output block 260 is a 4x4x4 block of fine shape elements 212, where each of the fine shape elements 212 includes, without limitation, a directed distance field and a holdout item label. Thus, the size of the fine output block 260 relative to the 4D space is 4x4x4x2. In some other embodiments, the fine output block 260 can be replaced with an SDF output block. For each of the fine shape elements 212 included in the fine input block 252, the SDF output block includes, without limitation, a different directed distance field. Thus, if the size of the fine input block 252 is 4x4x4x4, then the size of the SDF block would be 4x4x4x1. In some such embodiments, the inference engine 180 generates the fine output block 260 based on the SDF output block and the holdout item labels included in the fine input block 252.

[0187] Figure 6 is a flowchart of method steps for training a machine learning model to modify portions of a shape when designing a 3D object in accordance with various embodiments. Although the method steps are described with reference to the systems of Figure 1 , Figure 2 , Figure 4 and Figure 5 , one skilled in the art will appreciate that any system configured to implement the method steps in any order falls within the scope of the present invention.

[0188] As shown, the method 600 begins with step 602 in which the training application 190 determines the current machine learning model 498 and the parameter set 140. At step 604, the training application 190 acquires an iteration dataset 178 that includes, without limitation, an input shape, a fine analysis result 166 associated with the input shape, and an output shape. For example, and as previously described herein in connection with Figure 4 the system 100, in some embodiments, the training application 190 acquires an iteration dataset 178(x) that includes, without limitation, a shape 128(x), a fine analysis result 166(x), and a shape 128(x+1).

[0189] At step 606, the data converter 420 performs any number and / or type of down- sampling operation on the input shape based on the grid ratio 144 specified in the parameter set 140 to generate a coarse shape 174. At step 608, the data converter 420 performs any number and / or type of down-sampling operation on the fine analysis result 166 based on the grid ratio 144 specified in the parameter set 140 to generate a coarse analysis result 176. As part of step 608, in some embodiments, the data converter 420 performs any number and / or type of normalization operation on the coarse analysis result 176 to generate a normalized coarse analysis result 246’.

[0190] At step 610, the training application 190 determines a fine input block 252’, a coarse block 254’, a coarse result block 248’, and a fine output block 260’ based on the input shape, the coarse shape 174, the coarse analysis result 176 (or the normalized coarse analysis result 246’), and the output shape, respectively, and the parameter set 140. At step 612, the training application 190 generates a training set 452 included in the latent training data 450 based on the fine input block 252’, the coarse block 254’, the coarse result block 248’, and the fine output block 260’.

[0191] At step 614, the data filtering engine 460 generates filtered training data 462 based on the latent training data 450. At step 616, the variation engine 470 generates any number of variations of any number of training sets 452 included in the filtered training data 462 to generate a training data set 480. At step 618, the training engine 490 performs any number and / or type of machine learning operation on the current machine learning model 498 based on the training sets 452 included in the training data set 480.

[0192] At step 620, the training application 190 determines whether to save the current machine learning model 498. The training application 190 can determine whether to save the current machine learning model 498 based on any quantity and / or type of data in any technically feasible manner. If, at step 620, the training application determines not to save the current machine learning model 498, the method 600 proceeds directly to step 624.

[0193] However, if, at step 620, the training application 190 determines to save the current machine learning model 498, the method 600 proceeds to step 622. At step 622, the training application 190 saves a copy of the current machine learning model 498 and / or transmits a copy of the current machine learning model 498 as a new version of the trained machine learning model 192.

[0194] At step 624, the training application 190 determines whether the training application 190 has completed training the current machine learning model 498. The training application 190 can determine whether the training application 190 has completed training the current machine learning model 498 in any technically feasible way. In some embodiments, the training application 190 determines whether the training application 190 has completed training the current machine learning model 498 based on whether the training application 190 has detected any new instances of the iteration data set 178. If at step 624, the training application 190 determines that the training application 190 has completed training the current machine learning model 498, then the method 600 terminates.

[0195] However, if at step 624, the training application 190 determines that the training application 190 has not completed training the current machine learning model 498, then the method 600 returns to step 604, where the training application 190 obtains a new instance of the iteration data set 178. The method 600 continues looping through steps 604-624 until at step 624, the training application 190 determines that the training application 190 has completed training the current machine learning model 498. The method 600 then terminates.

[0196] In summary, the disclosed technology can be used to efficiently solve topology optimization problems associated with generative design of 3D objects. In some embodiments, a generative design application configures a topology optimization application to solve a topology optimization problem associated with a 3D object. The topology optimization application implements a fine grid associated with a resolution at which a shape representing the 3D object will be optimized and a coarse grid that is a down-sampled version of the fine grid. The topology optimization application generates an initial version of the shape that includes, without limitation, a different fine shape element for each voxel in the fine grid. The topology optimization application iteratively modifies the shape during alternating fine grid phases and coarse grid phases, each phase including any number of topology optimization iterations to solve the topology optimization problem.

[0197] During an xthtopology optimization iteration, where x represents any topology optimization iteration during the fine grid phase, the topology optimization application configures the fine grid engine to modify the xthshape (i.e., the xthversion of the shape) to generate an (x+1)thshape that is a topology-optimized version of the xthshape according to one or more design objectives. In operation, the fine grid engine configures the structure analyzer to generate a fine analysis result based on the xthshape. The fine analysis result includes a different strain energy value for each of the fine shape elements included in the xthshape. Subsequently, the fine grid engine configures the shape optimizer to perform any number and / or type of topology optimization operations on the xthshape based on the fine analysis result to generate the (x+1)thshape. The fine grid engine then generates an iteration dataset that includes, but is not limited to, the xthshape, the fine analysis result, and the (x+1)thshape. The fine grid engine provides the iteration dataset to the training application.

[0198] In some embodiments, the training application is executed at least partially in parallel with the fine grid engine. Initially, the training application sets a current machine learning model to equal an untrained machine learning model. Subsequently, the training application incrementally trains the current machine learning model based on the iteration datasets received from the fine grid engine. In some embodiments, upon obtaining the iteration dataset associated with the xthtopology optimization iteration, the training application generates a coarse shape and a coarse analysis result based on the xthshape and the fine analysis result, respectively. The coarse shape and the coarse analysis result are down-sampled versions of the xthshape and the fine analysis result, respectively, and correspond to the coarse grid. The training application then performs any number and / or type of normalization operations on the coarse analysis result to generate a normalized coarse analysis result.

[0199] The training application generates a different training set for each of any number of training blocks based on the xthshape, the coarse shape, the coarse analysis result, and the (x+1)thshape. Each of the training blocks is associated with a different non-overlapping portion of the 3D space associated with both the fine grid and the coarse grid. In some embodiments, to determine the training blocks, the training application applies a sliding window algorithm to each of the fine input shape, the coarse shape, the normalized coarse result, and the fine output shape. Each of the training sets includes, but is not limited to, a fine input block, a coarse block, a coarse result block, and a fine output block corresponding to the associated training block.

[0200] The training application then performs any number and / or type of filtering operations and / or any number and / or type of rotation operations on the training set to generate a training data set that includes any number of training sets and any number of variations of the training set. The training application performs any number of machine learning operations on the current machine learning model based on the training data set. The machine learning operations incrementally train the current machine learning model to map coarse blocks, normalized coarse result blocks, and fine input blocks to fine output blocks. The fine output blocks generated by the current machine learning model are modified versions of the fine input blocks that are predicted to be more converged to the one or more design objectives than the fine input blocks. The training application periodically saves the current machine learning model as a new version of the trained machine learning model.

[0201] The topology optimization application uses the coarse grid engine and the most recent version of the trained machine learning model to perform the coarse grid phase. During the ythtopology optimization iteration, where y represents any topology optimization iteration during the coarse grid phase, the topology optimization application configures the coarse grid engine to modify the ythshape (i.e., the ythversion of the shape) to generate the (y+1)thshape that is predicted to be more converged to the one or more design objectives than the ythshape.

[0202] In operation, the coarse grid engine generates a coarse shape based on the ythshape, where the coarse shape is a down-sampled version of the ythshape. In some embodiments, the coarse shape includes a different coarse shape element for each coarse voxel included in the coarse grid. The coarse grid engine configures the structure analyzer to generate a coarse analysis result based on the coarse shape. The coarse analysis result includes a different strain energy value for each of the coarse shape elements included in the coarse shape. Subsequently, an inference engine included in the coarse grid engine performs any number and / or type of normalization operations on the strain energy values included in the coarse analysis result to generate a normalized coarse analysis result. The inference engine then determines any number of non-overlapping inference blocks that together partition the 3D space associated with the fine grid and the coarse grid. The inference engine divides each of the ythshape, the coarse shape, and the normalized coarse analysis result into fine input blocks, coarse blocks, and coarse result blocks, respectively, based on the inference blocks.

[0203] For each of the inference blocks, the inference engine generates an inference set that includes the corresponding fine input block, the corresponding coarse block, and the corresponding coarse result block. The inference engine inputs each of the inference sets into the most recent version of the trained machine learning model. In response, the trained machine learning model outputs a fine output block. Each of the fine output blocks is a modified version of the associated fine input block and has the same resolution as the fine input block. The inference engine aggregates the fine input blocks to generate the (y+1)thshape.

[0204] After the topology optimization application determines that the completion criteria are satisfied, the topology optimization application saves the shape version generated during the last topology optimization iteration as the optimized shape. The optimized shape is the solution to the associated topology optimization problem. The topology optimization application then transmits the optimized shape to the generative design application.

[0205] At least one technical advantage of the disclosed technology over the prior art is that, with the disclosed technology, a topology optimization application can use a trained machine learning model to reduce the computational complexity associated with solving a topology optimization problem. More specifically, because the coarse grid engine uses the trained machine learning model to optimize fine shape elements based on the results of structural analysis of coarse shape elements, the total number of structural analysis operations performed in solving a given topology optimization problem is reduced. As a result, when the amount of time and / or computational resources allocated to a design activity is limited, a generative design application can use a topology optimization application to more fully explore the overall design space relative to prior art methods. As a result, the generative design application can produce designs that are more convergent to design objectives. These technical advantages provide one or more technical improvements over prior art methods.

[0206] 1. In some embodiments, a computer-implemented method for training a machine learning model to modify portions of shapes when designing three-dimensional (“3D”) objects comprises: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on the machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

[0207] 2. The computer-implemented method of clause 1, wherein generating the one or more training sets comprises: converting the first shape to a coarse shape having the second resolution; and performing a sliding window algorithm on each of the first shape, the first coarse structural analysis data, the coarse shape, and the second shape to generate the one or more training sets.

[0208] 3. The computer-implemented method of clause 1 or 2, wherein generating the one or more training sets comprises: determining a plurality of potential training sets based on the first shape, the first coarse structural analysis data, and the second shape, wherein each potential training set included in the plurality of potential training sets includes a different portion of the second shape; and performing one or more filtering operations on the plurality of potential training sets based on a plurality of distances to a surface of the first shape to generate the one or more training sets.

[0209] 4. The computer-implemented method of any one of clauses 1-3, wherein a first training set included in the one or more training sets includes a first portion of the second shape, and a second training set included in the one or more training sets includes a second portion of the second shape that at least partially overlaps with the first portion of the second shape.

[0210] 5. The computer-implemented method of any one of clauses 1-4, wherein generating the one or more training sets comprises: generating a first training data set that includes a first portion of the first shape, a second portion of the first coarse structural analysis data, and a third portion of the second shape; and rotating the first portion of the first shape, the second portion of the first coarse structural analysis data, and the third portion of the second shape based on a 3D rotation direction to generate a second training set.

[0211] 6. The computer-implemented method of any one of clauses 1-5, wherein converting the first structural analysis data to the first coarse structural analysis data comprises performing one or more down-sampling operations on the first structural analysis data.

[0212] 7. The computer-implemented method of any one of clauses 1-6, wherein converting the first structural analysis data to the first coarse structural analysis data comprises: performing one or more field transfer operations or re-meshing operations on the first structural analysis data to generate un-normalized coarse structural analysis data; and performing one or more normalization operations on at least a portion of the un-normalized coarse structural analysis data to generate the first coarse structural analysis data.

[0213] 8. The computer-implemented method of any one of clauses 1-7, wherein the first coarse structural analysis data includes at least one of a plurality of strain energy values, a plurality of displacements, or a plurality of rotations.

[0214] 9. The computer-implemented method of any one of clauses 1-8, wherein the first shape includes a 3D mesh of shape elements, and wherein each shape element is associated with a different voxel of a 3D grid having the first resolution.

[0215] 10. The computer-implemented method of any of clauses 1-9, wherein the machine learning model comprises a neural network, and the first trained machine learning model comprises at least one of a trained version of the neural network or a trained version of another type of machine learning model.

[0216] 11. In some embodiments, one or more non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to train a machine learning model to modify portions of shapes when designing three-dimensional (“3D”) objects by performing the following steps: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on the machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

[0217] 12. The one or more non-transitory computer-readable media of clause 11, wherein generating the one or more training sets comprises: converting the first shape to a coarse shape having the second resolution; and performing a sliding window algorithm on each of the first shape, the first coarse structural analysis data, the coarse shape, and the second shape to generate the one or more training sets.

[0218] 13. The one or more non-transitory computer-readable media of clause 11 or 12, wherein generating the one or more training sets comprises: determining a plurality of potential training sets based on the first shape, the first coarse structural analysis data, and the second shape, wherein each potential training set included in the plurality of potential training sets includes a different portion of the second shape; and performing one or more filtering operations on the plurality of potential training sets based on a plurality of distances to a surface of the first shape to generate the one or more training sets.

[0219] 14. The one or more non-transitory computer-readable media of any of clauses 11-13, wherein a first training set included in the one or more training sets includes a first portion of the second shape, and a second training set included in the one or more training sets includes a second portion of the second shape, the second portion at least partially overlapping the first portion of the second shape.

[0220] 15. The one or more non-transitory computer-readable media of any of clauses 11-14, wherein generating the one or more training sets comprises generating a first training data set comprising a first portion of the first shape, a second portion of the first coarse structural analysis data, and a third portion of the second shape, and rotating the first portion of the first shape, the second portion of the first coarse structural analysis data, and the third portion of the second shape based on a 3D rotation direction to generate a second training set.

[0221] 16. The one or more non-transitory computer-readable media of any of clauses 11-15, wherein converting the first structural analysis data to the first coarse structural analysis data comprises performing one or more down-sampling operations on the first structural analysis data to generate un-normalized coarse structural analysis data, and performing one or more normalization operations on at least a portion of the un-normalized coarse structural analysis data to generate the first coarse structural analysis data.

[0222] 17. The one or more non-transitory computer-readable media of any of clauses 11-16, wherein converting the first structural analysis data to the first coarse structural analysis data comprises performing one or more field transfer operations or re-meshing operations on the first structural analysis data.

[0223] 18. The one or more non-transitory computer-readable media of any of clauses 11-17, wherein the first coarse structural analysis data comprises at least one of a plurality of strain energy values, a plurality of displacements, or a plurality of rotations.

[0224] 19. The one or more non-transitory computer-readable media of any of clauses 11-18, wherein the first shape comprises at least one of a directed distance field or a persistence label for each voxel of a 3D grid having the first resolution.

[0225] 20. In some embodiments, a system comprising: one or more memories storing instructions; and one or more processors coupled to the one or more memories, the one or more processors, when executing the instructions, perform the steps of: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on a machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

[0226] Any and all combinations of the claim elements presented in any claim of the claims and / or any elements described in this application are within the scope of the embodiments and protection afforded.

[0227] The descriptions of various embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. Aspects of the embodiments of the application can be embodied as a system, method, or computer program product. Accordingly, aspects of the present disclosure can take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or combinations of software and hardware aspects that can all generally be referred to herein as a "module," "system," or "computer." Furthermore, any hardware and / or software technology, process, function, component, engine, module, or system described in the present disclosure can be implemented as circuitry or a set of circuits. Additionally, aspects of the present disclosure can take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

[0228] Any combination of one or more computer readable medium can be utilized. The computer readable medium can be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium can be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

[0229] The computer program instructions can be executed by one or more processors of a computer, a mobile device, a personal digital assistant, a mobile communication system, network device or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer program instructions can also be stored in a computer readable medium that can direct a computer, a mobile device, a personal digital assistant, a mobile communication system, network device or other programmable data processing apparatus to operate in a particular manner, such that the

[0230] The flow and block diagrams in the drawings show architectural, functional, and operational representations of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flow and block diagrams can represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the blocks can occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently or the blocks can sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations thereof, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[0231] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure can be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.

Claims

1. A computer-implemented method for training a machine learning model to modify portions of shapes when designing three-dimensional ("3D") objects, the method comprising: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution, wherein the first structural analysis data comprises at least one of one or more strain energy values, one or more displacements, or one or more rotations, and wherein the first coarse structural analysis data comprises a downsampled version of at least one of one or more strain energy values, one or more displacements, or one or more rotations at the second resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on the machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

2. The computer-implemented method of claim 1, wherein generating the one or more training sets comprises: converting the first shape to a coarse shape having the second resolution; and performing a sliding window algorithm on each of the first shape, the first coarse structural analysis data, the coarse shape, and the second shape to generate the one or more training sets.

3. The computer-implemented method of claim 1, wherein generating the one or more training sets comprises: determining a plurality of potential training sets based on the first shape, the first coarse structural analysis data, and the second shape, wherein each potential training set included in the plurality of potential training sets includes a different portion of the second shape; and performing one or more filtering operations on the plurality of potential training sets based on a plurality of distances to a surface of the first shape to generate the one or more training sets.

4. The computer-implemented method of claim 1, wherein a first training set included in the one or more training sets includes a first portion of the second shape, and a second training set included in the one or more training sets includes a second portion of the second shape, the second portion at least partially overlapping the first portion of the second shape.

5. The computer-implemented method of claim 1, wherein generating the one or more training sets comprises: generating a first training data set including a first portion of the first shape, a second portion of the first coarse structural analysis data, and a third portion of the second shape; and rotating the first portion of the first shape, the second portion of the first coarse structural analysis data, and the third portion of the second shape based on a 3D rotation direction to generate a second training set. ​ 6. The computer-implemented method of claim 1, wherein converting the first structural analysis data to the first coarse structural analysis data includes performing one or more down-sampling operations on the first structural analysis data.

7. The computer-implemented method of claim 1, wherein converting the first structural analysis data to the first coarse structural analysis data includes: performing one or more field transfer operations or re-meshing operations on the first structural analysis data to generate un-normalized coarse structural analysis data; and performing one or more normalization operations on at least a portion of the un-normalized coarse structural analysis data to generate the first coarse structural analysis data.

8. The computer-implemented method of claim 1, wherein the first coarse structural analysis data includes at least one of a plurality of strain energy values, a plurality of displacements, or a plurality of rotations.

9. The computer-implemented method of claim 1, wherein the first shape includes a 3D mesh of shape elements, and wherein each shape element is associated with a different voxel of a 3D grid having the first resolution.

10. The computer-implemented method of claim 1, wherein the machine learning model includes a neural network, and the first trained machine learning model includes at least one of a trained version of the neural network or a trained version of another type of machine learning model.

11. One or more non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to train a machine learning model to modify portions of a shape when designing a three-dimensional (“3D”) object by performing the following steps: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution, wherein the first structural analysis data includes at least one of one or more strain energy values, one or more displacements, or one or more rotations, and wherein the first coarse structural analysis data includes a down-sampled version of at least one of one or more strain energy values, one or more displacements, or one or more rotations at the second resolution; generating one or more training sets based on a first shape, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on the machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

12. The one or more non-transitory computer-readable media of claim 11, wherein generating the one or more training sets includes: converting the first shape to a coarse shape having the second resolution; and and ​ a sliding window algorithm is performed on each of the first shape, the first coarse structural analysis data, the coarse shape, and the second shape to generate the one or more training sets.

13. The one or more non-transitory computer-readable media of claim 11, wherein generating the one or more training sets comprises: determining a plurality of potential training sets based on the first shape, the first coarse structural analysis data, and the second shape, wherein each potential training set included in the plurality of potential training sets includes a different portion of the second shape; and performing one or more filtering operations on the plurality of potential training sets based on a plurality of distances to a surface of the first shape to generate the one or more training sets.

14. The one or more non-transitory computer-readable media of claim 11, wherein a first training set included in the one or more training sets includes a first portion of the second shape, and a second training set included in the one or more training sets includes a second portion of the second shape, the second portion at least partially overlapping the first portion of the second shape.

15. The one or more non-transitory computer-readable media of claim 11, wherein generating the one or more training sets comprises: generating a first training data set including a first portion of the first shape, a second portion of the first coarse structural analysis data, and a third portion of the second shape; and rotating the first portion of the first shape, the second portion of the first coarse structural analysis data, and the third portion of the second shape based on a 3D rotation direction to generate a second training set.

16. The one or more non-transitory computer-readable media of claim 11, wherein converting the first structural analysis data to the first coarse structural analysis data comprises: performing one or more down-sampling operations on the first structural analysis data to generate un-normalized coarse structural analysis data; and performing one or more normalization operations on at least a portion of the un-normalized coarse structural analysis data to generate the first coarse structural analysis data.

17. The one or more non-transitory computer-readable media of claim 11, wherein converting the first structural analysis data to the first coarse structural analysis data comprises performing one or more field transfer operations or re-meshing operations on the first structural analysis data.

18. The one or more non-transitory computer-readable media of claim 11, wherein the first coarse structural analysis data includes at least one of a plurality of strain energy values, a plurality of displacements, or a plurality of rotations.

19. The one or more non-transitory computer-readable media of claim 11, wherein the first shape includes at least one of a directed distance field or a persistence label for each voxel of a 3D grid having the first resolution.

20. A system comprising: one or more memories storing instructions; and one or more processors coupled to the one or more memories, the one or more processors, when executing the instructions, perform the following steps: converting first structural analysis data having a first resolution to first coarse structural analysis data having a second resolution, the second resolution being lower than the first resolution, wherein the first structural analysis data comprises at least one of one or more strain energy values, one or more displacements, or one or more rotations, and wherein the first coarse structural analysis data comprises a down-sampled version of at least one of one or more strain energy values, one or more displacements, or one or more rotations at the second resolution; generating one or more training sets based on a first shape associated with a shape definition, the first coarse structural analysis data, and a second shape derived from the first shape, wherein each of the one or more training sets is associated with a different portion of the first shape; and performing one or more machine learning operations on a machine learning model using the one or more training sets to generate a first trained machine learning model trained to modify at least a portion of a shape having the first resolution based on coarse structural analysis data having the second resolution.

Citation Information

Patent Citations

  • System and method for dynamically adjusting level of details of point clouds

    WO2019182811A1