Computer-implemented techniques for creating a layout of a physical space

By generating and matching spatial cell meshes in the layout generation module and optimizing the layout based on placement parameters, the problem of low efficiency in generating layouts by existing CAD tools is solved, achieving more efficient space utilization and optimized layout design.

CN114730347BActive Publication Date: 2026-06-05AUTODESK INC

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
AUTODESK INC
Filing Date
2020-11-17
Publication Date
2026-06-05

AI Technical Summary

Technical Problem

Existing computer-aided design (CAD) tools are computationally intensive and time-consuming when generating physical space layouts, which can easily produce layout designs that do not meet requirements, resulting in an inefficient generation process and wasted resources.

Method used

The layout generation module generates multiple spatial unit grids, identifies and matches corner cells, generates scores based on placement parameters, optimizes the placement of spatial units in the layout, and meets design parameter requirements.

Benefits of technology

It improves the efficiency of layout generation, reduces space fragments that do not meet parameter requirements, and optimizes the space utilization and loop path length of the layout.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114730347B_ABST
    Figure CN114730347B_ABST
Patent Text Reader

Abstract

A computer-implemented method and computer system for generating a layout of a physical space or building, comprising: generating a layout (230) based on a floor plan (210) of a physical space; generating a plurality of space cell grids corresponding to a plurality of space cells to be placed in the physical space; identifying a placement of corner cells in a first space cell grid of the plurality of space cell grids within the layout (230) by matching the first space cell grid to a given available cell in the layout (230); generating a score associated with the placement of the first space cell grid based on one or more placement parameters (214) defining placement constraints for a first space cell included in the plurality of space cells and corresponding to the first space cell grid; and placing the first space cell grid in the layout (250) based on the score.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims priority to U.S. Provisional Patent Application Serial No. 62 / 937,188 (Attorney's Case No. AUTO1467USL), filed November 18, 2019, and to U.S. Patent Application Serial No. 17 / 099,552 (Attorney's Case No. AUTO1467US1), filed November 16, 2020. The subject matter of these related applications is hereby incorporated by reference. Background Technology

[0003] Areas of various implementation schemes

[0004] Embodiments of the present invention generally relate to computer-aided design software, and more specifically, to computer-aided techniques for creating layouts of architecture and physical space.

[0005] Related technical descriptions

[0006] Computer-aided design (CAD) tools are used to facilitate the design of building and office layouts for a variety of purposes. For example, some CAD applications facilitate the design of the architectural structure of buildings. Other CAD applications facilitate the design of electrical, plumbing, ventilation, and other structural features of enclosed building spaces. Still others facilitate the design of office space layouts for a specific floor plan or a set of floor plans. Typically, these types of CAD applications enable users to generate digital models of layouts by receiving parameters from the user and generating layouts that meet those parameters.

[0007] In conventional methods for generating layout designs, a CAD application receives information about the desired layout and divides the floor plan based on that layout. Once the CAD application generates the layout design, the user and / or the CAD application must verify that the resulting rooms meet the user's required options, purposes, and parameters. For example, the CAD application might generate layouts that are too many or too few rooms, do not meet room placement requirements, and / or do not meet room usage, design preferences, or layout requirements. Therefore, the CAD application iteratively generates multiple layout designs until a satisfactory design is found. Each such iteration is computationally intensive and time-consuming, and often repeatedly produces unsatisfactory layouts. Therefore, the process of generating layout designs is inefficient and computationally wasteful.

[0008] As explained above, there is a need in the art for more efficient techniques for generating layout designs for physical spaces. Summary of the Invention

[0009] One embodiment of this application describes a computer-implemented method for generating a layout of a physical space. The method includes: generating a layout based on a floor plan of the physical space; generating a plurality of spatial cell grids corresponding to a plurality of spatial units to be placed in the physical space; identifying the placement of the first spatial cell grid within the layout by matching corner cells in a first spatial cell grid among the plurality of spatial cell grids with given available cells in the layout; generating a score associated with the placement of the first spatial cell grid based on one or more placement parameters, the placement parameters defining placement constraints for the first spatial cell corresponding to the first spatial cell grid among the plurality of spatial units; and placing the first spatial cell grid in the layout based on the score.

[0010] At least one advantage and improvement of the disclosed technology lies in the fact that the layout generation module generates layouts in a manner that satisfies design parameters at each sequential step of layout generation. Therefore, the layout generation module does not spend time, energy, and resources generating layouts that do not meet parameter requirements. Another advantage and improvement is the generation of layouts with increased spatial usability, reduced space fragmentation that is too small to be usable, and longer loop paths formed by cell boundaries. These technical advantages provide one or more technological advancements superior to existing methods. Attached Figure Description

[0011] To gain a detailed understanding of the features described above in the various embodiments, reference can be made to the various embodiments for a more specific description of the inventive concept briefly outlined above, some of which are illustrated in the accompanying drawings. However, it should be noted that the drawings only show typical embodiments of the inventive concept and should therefore not be considered as limiting the scope, and that other equally effective embodiments exist.

[0012] Figure 1 A block diagram of a computing device configured to implement one or more aspects of various implementation schemes is shown;

[0013] Figure 2 It is based on one or more aspects of various implementation schemes. Figure 1 A more detailed diagram of the layout generation engine and database;

[0014] Figure 3A The layout and transformed spatial units are shown according to one or more aspects of various implementation schemes;

[0015] Figure 3B Transformations of one or more aspects according to various implementation schemes are shown. Figure 3A In the layout Figure 3A The implementation scheme of the transformed spatial unit;

[0016] Figure 3C The placement of one or more aspects according to various implementation schemes is shown. Figure 3A within the layout Figure 3A The implementation scheme of the transformed spatial unit.

[0017] Figure 3D The layout of one or more aspects according to various implementation schemes and two spatial units placed within the layout are shown;

[0018] Figure 3E One or more aspects according to various implementation schemes are shown. Figure 3D The layout and the three spatial units placed within that layout; and

[0019] Figure 4 A flowchart illustrating method steps for creating a layout of a physical space, according to one or more aspects of various implementation schemes, is shown. Detailed Implementation

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

[0021] Figure 1 A computing device 100 configured to implement one or more aspects of various implementation schemes is shown. As shown, the computing device 100 includes an interconnect (bus) 112 connecting one or more processing units 102, an input / output (I / O) device interface 104 coupled to one or more input / output (I / O) devices 108, a memory 116, a storage device 114, and a network interface 106.

[0022] The computing device 100 includes a desktop computer, laptop computer, smartphone, personal digital assistant (PDA), tablet computer, or any other type of computing device configured to receive input, process data, and optionally display images, and is adapted to practice one or more embodiments. The computing device 100 described herein is illustrative, and any other technically feasible configuration falls within the scope of this disclosure.

[0023] Processing unit 102 includes any suitable processor implemented as a central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), artificial intelligence (AI) accelerator, any other type of processing unit, or a combination of different processing units, such as a CPU configured to operate in conjunction with a GPU. Generally, processing unit 102 can be any technically feasible hardware unit capable of processing data and / or executing software applications. Furthermore, in the context of this disclosure, the computing elements shown in computing device 100 may correspond to a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud.

[0024] In one embodiment, I / O device 108 includes devices capable of providing input, such as a keyboard, mouse, touchscreen, etc., and devices capable of providing output, such as a display device. Alternatively, I / O device 108 may include devices capable of receiving input and providing output, such as a touchscreen, Universal Serial Bus (USB) port, etc. I / O device 108 may be configured to receive various types of input from end users of computing device 100 (e.g., designers) and also provide various types of output to end users of computing device 100, such as displayed digital images or digital video or text. In some embodiments, one or more of I / O devices 108 are configured to couple computing device 100 to network 110.

[0025] Network 110 includes any technically feasible type of communication network that allows the exchange of data between computing device 100 and external entities or devices, such as a web server or another networked computing device. For example, network 110 may include a wide area network (WAN), a local area network (LAN), a wireless (WiFi) network, and / or the Internet.

[0026] Storage device 114 includes non-volatile storage devices for applications and data and may include fixed or removable disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, or other magnetic, optical, or solid-state storage devices. Layout generation engine 118 may be stored in storage device 114 and may be fully or partially loaded into memory 116 during execution.

[0027] Memory 116 includes random access memory (RAM) modules, flash memory cells, or any other type of memory cell or combination thereof. Processing unit 102, I / O device interface 104, and network interface 106 are configured to read data from memory 116 and write data to memory. Memory 116 includes various software programs executable by processing unit 102 and application data associated with said software programs, including layout generation engine 118 and database 120.

[0028] Although Figure 1 As not shown, but which will be apparent to those skilled in the art, database 120 and / or storage device 114 may reside in or be implemented in a cloud system or a computing device other than computing device 100. Computing device 100 may access other computing devices in these cloud systems and / or networks 110 and their database 120 or storage device 114 via network interface 106 or via USB or other types of connection via I / O device interface 104.

[0029] The layout generation engine 118 receives input, including input from database 120, I / O devices 108, network 110, etc. The layout generation engine 118 processes the input to generate a layout for physical space. In operation, the layout generation engine 118 receives input specifying multiple spatial units to be placed in the physical space. The layout generation engine 118 generates a layout associated with the physical space and populates the spatial units specified in the input into the layout in a space-efficient manner that also meets design and workflow requirements. (See below for more information.) Figure 2 The layout generation engine 118 and database 120 are described in more detail.

[0030] Figure 2 It is based on the various implementation schemes of this disclosure. Figure 1 A more detailed illustration of the layout generation engine 118 and database 120 is provided. As shown, the layout generation engine 118 includes a layout generation module 220, a transformation module 240, a greedy growth algorithm module 260, and a loop module 280. The database 120 includes a planar layout 210, a list of spatial units 212, and / or placement parameters 214 provided to one or more of the various modules of the layout generation engine 118.

[0031] Database 120 provides floor plan 210 to layout generation module 220. Floor plan 210 specifies the characteristics associated with a given physical space for which a layout is to be generated. Characteristics associated with the physical space include, but are not limited to, one or more lengths associated with floor plan 210, one or more widths associated with floor plan 210, the length of the boundaries of floor plan 210, angles between boundaries, angular apertures, angular positions, the shape of the boundaries, available areas in the physical space, the shape of the areas, the size of the areas, the shape of the physical space, the size of the physical space, spatial distances, and discontinuous boundaries, relationships between areas and physical spaces. In various embodiments, when the physical space represents a given building, floor plan 210 may include characteristics such as one or more floors or stair sections of the building, separate discontinuous spaces, irregularly shaped spaces, and / or one or more areas that are unoccupiable or unavailable for layout generation. For example, the building may be cylindrical and hollow, with a staircase at the north end. In this example, floor plan 210 would specify an outer boundary with a circular shape. Because the building is hollow, floor plan 210 will specify an inner boundary, the area formed by which the inner boundary is smaller than the area of ​​the circle formed by the outer boundary. One or more layouts can be generated for the physical space between the inner and outer boundaries. When the building includes multiple floors and / or one or more areas that are not continuous with any other physical space or area, floor plan 210 may include information about the relationships between the different floors and areas, such as the number of floors, the distance between floors and / or areas, etc.

[0032] Layout generation module 220 receives floor plan 210 and generates layout 230 based on characteristics associated with the physical space specified by floor plan 210. Layout generation module 220 analyzes the characteristics associated with the physical space specified by floor plan 210. In operation, layout generation module 220 generates layout 230 based on characteristics associated with the physical space specified by floor plan 210. Layout 230 is a digital representation of the physical space corresponding to a floor plan (such as floor plan 210). Layout 230 is represented as a two-dimensional grid of cells, where each cell represents a given amount of two-dimensional physical space. The more cells used for a given amount of real physical space, the finer the granularity of the approximate grid of cells for the real physical space. In various embodiments, the number of cells in the grid generated for layout 230 is determined based on the minimum granularity level required to accurately represent the physical space. The granularity level corresponds to the number of cells that the layout (such as layout 230) has for a given area in the real physical space. The granularity level may be based on the current floor plan and may additionally take into account possible future expansions / modifications to the floor plan. The granularity level of layout 230 can be modified by any module of layout generation engine 118. When the granularity level of layout 230 is modified, the original characteristics are maintained separately to enhance layout 230 at the new granularity level or subsequently revert to a version of layout 230 that reflects the original characteristics.

[0033] In one implementation, layout 230 has at least three types of cells in the grid: empty cells, occupied cells, and invalid cells. Empty cells represent available physical space. Occupied cells represent occupied or blocked physical space that cannot be used to place any spatial unit, as described below. Invalid cells represent areas that cannot be occupied. Following the cylindrical and hollow building examples above, layout 230 will have physically available space represented in the grid with empty cells, and spaces representing the interior area and the area outside the cylinder represented in the grid with invalid cells. The inner and outer boundaries are approximated by the boundaries of the invalid cells.

[0034] In one implementation, layout 230 has concave, convex, and / or flat corners formed by the boundaries of layout 230, invalid cells, and / or edges originating from occupied cells. Concave corners face inward toward the boundary. Convex corners face outward from the boundary. Flat corners have no cells between two boundaries (e.g., walls) that face each other and form a straight boundary at the ends of the two opposing boundaries. The straight boundary of the flat corner is at least one cell away from the two opposing boundaries in both directions (therefore, the straight boundary is at least the length of two cells). Thus, when there are no cells between two opposing boundaries, the flat corner is located at the intersection of the ends of the two opposing boundaries. Another way to describe a flat corner is when two concave corners intersect tip-to-tip, with the boundary of one concave corner parallel to the boundary of the other concave corner and no cells between the boundaries.

[0035] The cell grid of layout 230 has a corresponding coordinate system. The cells of layout 230 are arranged relative to the coordinate system of the cell grid of layout 230. For example, for a square cell with four vertices, the square cells can be arranged such that the bottom-left vertex of each square cell corresponds to a coordinate. In the example, the cell at the origin is the cell whose bottom-left vertex is located at cell grid coordinates (0,0). The cells, cell vertices, and / or corners of layout 230 are identified and / or positioned by corresponding coordinates. The following... Figure 3A The layout coordinates will be further explained in the discussion.

[0036] Database 120 provides a list of spatial units 212 to transformation module 240. The list of spatial units 212 specifies the characteristics (referred to herein as "spatial units") of the physical spaces to be placed within layout 230. Spatial units can be rooms, offices, kitchens, open spaces, external areas, etc. The list of spatial units 212 includes a catalog of one or more spatial units. Each spatial unit is associated with one or more characteristics included in the list of spatial units 212. Spatial unit characteristics associated with a given spatial unit include, but are not limited to, one or more lengths associated with the spatial unit, one or more widths associated with the spatial unit, the length of the spatial unit's boundaries, the angle between boundaries, angular aperture, angular position, the shape of the boundaries, the available area in the physical space, the shape of the area, the size of the area, the shape of the physical space, the size of the physical space, spatial distances, and the relationship between discontinuous boundaries, areas, and physical spaces. The list of spatial units 212 may include a placement order based on the order in which the spatial units will be placed in layout 230. The placement order of spatial units can be conditional, unconditional, mandatory, preferred, etc. Furthermore, the placement order can be applied to all spatial units or a subset of spatial units.

[0037] Transformation module 240 receives layout 230 and space cell list 212. In operation, transformation module 240 generates one or more transformed space cells 250 based on layout 230 and space cell list 212. Transformation module 240 analyzes the space cell characteristics corresponding to each of the one or more space cells in space cell list 212 and transforms the one or more space cells into one or more transformed space cells 250.

[0038] Transformation module 240 generates one or more transformed spatial cells 250 based on analysis of the characteristics associated with the spatial cells in spatial cell list 212. Each transformed spatial cell 250 is a digital representation of the corresponding spatial cell and is represented as a two-dimensional grid of cells, where each cell represents a given amount of two-dimensional physical space. In various implementations, the number of cells in the grid generated for each transformed spatial cell 250 is determined based on the minimum granularity level required to accurately represent the characteristics and / or physical space. The granularity level is the number of cells occupied by the transformed spatial cell for a given region in real physical space. The granularity level may be based on spatial cell characteristics. The granularity level of the transformed spatial cell 250 may be modified by any module of layout generation engine 118.

[0039] Each transformed spatial unit 250 may have at least two types of cells in the grid: empty cells and occupied cells. Occupied cells represent the physical space occupied by the transformed spatial unit 250 when placed in a layout (such as layout 230), as described below. Empty cells represent available physical space. The inner and outer boundaries are approximated by the boundaries of the empty cells. In one embodiment, the cell grid of each transformed spatial unit 250 has a corresponding coordinate system. The transformed spatial units 250 may share the same coordinate system. In operation, the transformation module 240 transforms the transformed spatial unit 250 from any coordinate system to the coordinate system of layout 230. The cells of each transformed spatial unit 250 are arranged relative to the coordinate system of the cell grid of each transformed spatial unit 250.

[0040] The layout generation engine 118 determines the granularity level based on the floor plan 210, the spatial unit list 212, and the placement parameters 214. For example, certain parameters of the floor plan 210 or the spatial unit list 212 may require a higher granularity than any other parameter in the floor plan 210 or the spatial unit list 212. Although Figure 2Although not shown, the layout generation engine 118 can receive user input to set, increase, or modify the granularity level. During execution, the layout generation engine 118 can change the granularity level of the layout 230 to match the granularity level of the transformed space unit 250. Alternatively, the transformation module 240 can change the granularity level of the transformed space unit 250 to match the granularity level of the layout 230.

[0041] Database 120 delivers placement parameters 214 to the greedy growth algorithm module 260. Placement parameters (such as placement parameter 214) are parameters that control how one or more transformed spatial units 250 are placed within a given layout (such as layout 230). Placement parameters 214 include one or more parameters, constraints, factors, requirements, options, settings, initial values, boundary conditions, data, etc., that may affect the operation, execution, and / or functionality of layout generation engine 118 and / or one or more modules of layout generation engine 118. Placement parameters 214 may be included independently or in part or in whole in the plan layout diagram 210 and / or the list of spatial units 212. Placement parameters 214 can be mandatory or preferred, unless an explicit exception is applied. For example Bypass parameters allow the application of mandatory parameters (otherwise, mandatory parameters must be applied during operation). Preferred parameters do not need to be enforced. Placement parameter 214 can be based on real physical space, an approximation of real physical space, floor plan 210, space cell list 212, layout 230, transformed space cell 250, filled layout 270, layout generation engine 118, and / or one or more modules of layout generation engine 118. Placement parameter 214 can be based on individuals and / or groups and / or all team members who will use the physical space of layout 230. Placement parameter 214 can be applied to an approximation of real physical space, floor plan 210, space cell list 212, layout 230, transformed space cell 250, filled layout 270, layout generation engine 118, and / or one or more modules of layout generation engine 118. Placement parameter 214 can be manually commanded or modified by the user when or before executing layout generation engine 118 and / or one or more modules of layout generation engine 118. Placement parameter 214 may include the following exemplary parameters:

[0042] a. Physical Space Purpose Parameters: Physical space purpose parameters describe one or more purposes, intended uses, functions, names, and / or objectives of the physical space.

[0043] b. Space Unit Purpose Parameters: The space unit purpose parameters describe the purpose, intended use, function, name, and / or target of one or more space units in the space unit list 212 and / or one or more transformed space units 250.

[0044] c. Orientation parameters: Orientation parameters describe one or more orientations and / or prohibited orientations of one or more transformed space elements 250.

[0045] d. Specific Placement Parameters: Specific placement parameters describe the specific locations, regions, orientations, grid segments, cell groups, etc., used to place one or more transformed spatial units 250.

[0046] e. Placement order parameters: Placement order parameters describe or provide criteria for determining the arrangement of space units in the placement space unit list 212 and / or transforming space units 250.

[0047] f. Proximity Parameter: The proximity parameter describes the criteria and / or requirements used to determine the placement of one or more spatial cells and / or transformed spatial cells 250 that are adjacent to or not adjacent to each other in the spatial cell list 212.

[0048] g. Proximity Parameters: Proximity parameters describe the criteria and / or requirements used to determine the placement of one or more spatial elements and / or transformed spatial elements 250 within each other's proximity range.

[0049] h. Distance parameter: The distance parameter describes the criteria and / or requirements used to determine the placement of one or more spatial cells and / or transformed spatial cells 250 of the spatial cell list 212 at a certain distance from each other (in terms of spatial cells, transformed spatial cells 250, cells, physical length, etc.).

[0050] i. Separation Parameters: Separation parameters describe the criteria and / or requirements used to determine the placement of one or more spatial elements in the spatial element list 212 and / or the transformed spatial elements 250 within a certain range from each other.

[0051] j. Corner Preference Parameter: The corner preference parameter modifies the placement score based on the type of corner used in the placement test.

[0052] k. Loop Parameters: Loop parameters describe the criteria and / or requirements used to determine the loops that provide appropriate access to each transformed space cell 250 in the filled layout 270.

[0053] Greedy growth algorithm module 260 receives placement parameters 214 from database 120 and layout 230 and transformed space cells 250 from transformation module 240. In operation, greedy growth algorithm module 260 generates one or more filled layouts 270 based on placement parameters 214, layout 230, and / or transformed space cells 250. The filled layout 270 includes transformed space cells 250 placed within layout 230 according to one or more placement parameters 214. When generating the filled layout 270, greedy growth algorithm module 260 iteratively places transformed space cells 250 within layout 230 until no more transformed space cells 250 are to be placed or there is no empty cell arrangement that accepts any transformed space cells 250 to be placed. Greedy growth algorithm module 260 places transformed space cells 250 within layout 230 according to placement order parameters. If no placement order parameter has been specified, the greedy growth algorithm module 260 uses the default order, i.e., the actual order of the transformed space units 250 as registered in the space unit list 212 or provided by the transformation module 240, or prompts the user to provide a placement order or a standard for the placement order.

[0054] When a selected transformed space cell 250 is placed within layout 230, the greedy growth algorithm module 260 identifies the optimal possible placement of the selected transformed space cell 250 by comparing the scores of possible placements within layout 230. The greedy growth algorithm module 260 identifies possible placements of the selected transformed space cell 250 (if any) by identifying a set of available corners in layout 230 and performing corner matching between the selected transformed space cell 250 and one or more corners in that set of available corners in layout 230.

[0055] As discussed above, layout 230 includes at least three types of corners: concave corners, convex corners, and flat corners. To perform corner matching, greedy growth algorithm module 260 identifies one or more empty cells of a corner, translates and / or rotates selected transformed space units 250 to the corner matching position, and tests that position. To identify empty cells relative to a concave corner, greedy growth algorithm module 260 identifies which empty cell of layout 230 is closest to the concave corner. To identify empty cells relative to a convex corner, greedy growth algorithm module 260 identifies which two empty cells of layout 230 are closest to the convex corner and also touch the boundary of the cell forming the tip of the convex corner. To identify empty cells relative to a flat corner, greedy growth algorithm module 260 identifies which two empty cells of layout 230 are closest to the intersection boundary forming the flat corner. In an alternative implementation, to identify empty cells, greedy growth algorithm module 260 identifies which coordinates correspond to one or more empty cells of layout 230 relative to the corresponding corner type, as discussed above.

[0056] Greedy growth algorithm module 260 translates and / or rotates the selected transformed space cell 250 to position the corner occupied cell of the selected transformed space cell 250 at an identified empty cell in layout 230. The corner occupied cell is the occupied cell forming a convex corner of the selected transformed space cell 250. To translate the selected transformed space cell 250, greedy growth algorithm module 260 identifies and tracks the position of one or more cells included in the cell grid of the selected transformed space cell 250 while moving the selected transformed space cell 250 through layout 230. To rotate the selected transformed space cell 250, greedy growth algorithm module 260 shifts the cells of the selected transformed space cell 250 such that the orientation of the selected transformed space cell 250 relative to layout 230 changes. In an alternative embodiment, to rotate the selected transformed space cell 250, greedy growth algorithm module 260 modifies the orientation of the coordinate system of the cell grid of the selected transformed space cell 250 relative to layout 230. In yet another alternative implementation, in order to rotate the selected transformed space cell 250, the greedy growth algorithm module 260 shifts the cell of the selected transformed space cell 250 relative to the coordinate system of the selected transformed space cell 250. The greedy growth algorithm module 260 can rotate the selected transformed space cell 250 in any technically feasible manner.

[0057] When the greedy growth algorithm module 260 translates and / or rotates the selected transformed space unit 250 such that the corner occupied cell of the selected transformed space unit 250 is located in the identified empty cell of the corner, as discussed above, the greedy growth algorithm module 260 tests the corner matching position of the selected transformed space unit 250 on the layout 230. The greedy growth algorithm module 260 tests the corner matching position by determining whether the placement of the selected transformed space unit 250 at the corner matching position is valid or invalid. When the tip of the corner of the selected transformed space unit 250 touches the tip of a convex corner and the boundary of the selected transformed space unit 250 does not touch the direct boundary of the convex corner, the greedy growth algorithm module 260 determines that the placement of the convex corner at the corner matching position based on the layout 230 is invalid. When the cell of the selected transformed space unit 250 covers an occupied or invalid cell of the layout 230, the greedy growth algorithm module 260 also determines that the placement at the corner matching position is invalid. When any of the occupied cells in the selected transformed space unit 250 falls outside the boundary of the layout 230, the greedy growth algorithm module 260 also determines that the placement at the corner matching position is invalid. If the placement at the corner matching position is valid, the greedy growth algorithm module 260 identifies the corner matching position as a possible placement and determines the score of that possible placement.

[0058] In one implementation, the greedy growth algorithm module 260 scores a possible placement based on the Manhattan distance between the origin of the cell grid of layout 230 and a cell of the selected transformed spatial unit 250 placed within a possible placement (e.g., a cell located at the origin of the cell grid of the selected transformed spatial unit 250). In another implementation, the greedy growth algorithm module 260 scores a possible placement based on the Manhattan distance between a cell at the center coordinate of layout 230 and a cell of the selected transformed spatial unit 250 placed within a possible placement. Furthermore, the greedy growth algorithm module 260 modifies the score of a given possible placement based on placement parameters. Additionally and / or alternatively, the greedy growth algorithm module 260 modifies the score of one or more possible placements based on placement parameters after identifying all possible placements of the selected transformed spatial unit 250. For example, a proximity parameter may describe the ease with which the first and second transformed spatial units 250 are placed close to each other. Therefore, if a given possible placement of the first transformed space cell 250 has a specific score but the given possible placement is adjacent to the second transformed space cell 250, the greedy growth algorithm module 260 applies any score modification and / or instruction based on the proximity parameter.

[0059] Once the possible placements of the selected transformed space cell 250 are scored, the greedy growth algorithm module 260 compares the scores and determines the placement location of the selected transformed space cell 250 based on the relative placement scores of the possible placements. In various embodiments, the placement location corresponds to the possible placement with the best score relative to other possible placements.

[0060] In one implementation, the greedy growth algorithm module 260 places selected transformed space cells 250 at determined placement locations. To perform placement, the greedy growth algorithm module updates occupied cells in layout 230 corresponding to space cells 250 from empty to occupied. Cell updates in layout 230 keep track of which updated cells in layout 230 correspond to which transformed space cells 250. Placement execution and / or cell updates in layout 230 may include updating one or more placement parameters 214, the cell grid of layout 230, and / or one or more cells of the cell grid of layout 230. Updates in layout 230 may keep track of placement parameters 214, such as those applicable to specific updated cells in layout 230. Updates in layout 230 may also keep track of physical space characteristics and / or space cell characteristics, and to which cells and / or cell grids any corresponding physical space characteristics and / or space cell characteristics are applied.

[0061] The placement of the transformed space cell 250 alters the available corners in layout 230 by creating one or more new corners and / or removing one or more old corners. The placement of the transformed space cell 250 can change the availability of the outer and / or inner boundaries exposed to layout 230. The placement of the transformed space cell 250 can also change the shape of the boundaries formed by occupied cells in layout 230. In one embodiment, a greedy growth algorithm module 260 updates the boundaries and corners of layout 230. The greedy growth algorithm module 260 analyzes the geometric changes formed by the clustering of cells in layout 230 and / or analyzes the periphery of the last placed transformed space cell 250 to identify new corners, no longer existing corners, and / or boundary changes, and updates layout 230 to take into account the identified new corners, no longer existing corners, and / or boundary changes.

[0062] In one implementation, the greedy growth algorithm module 260 selects the next transformed space cell 250 (if any) according to the placement order and continues the iterative placement process discussed above. If there are no transformed space cells 250 to place, or if there are no other transformed space cells 250 available, the greedy growth algorithm module 260 delivers a filled layout 270 to the loop module 280. The filled layout 270 is the layout 230 after the placement process for the available transformed space cells 250 has been completed. It should be noted that the filled layout 270 is not necessarily completely filled, because in arrangements where the remaining transformed space cells 250 do not fit, there may be available empty cells in layout 230, and there may be empty cells in layout 230 without any more transformed space cells 250 to place.

[0063] The loop module 280 receives the filled layout 270 from the greedy growth algorithm module 260 and placement parameters 214 from the database 120. The filled layout 270 maintains information from the layout 230 regarding which updated cells in the layout 230 correspond to which transformed spatial units 250. The loop module 280 identifies potential loop paths between different transformed spatial units 250 and / or between transformed spatial units 250 and the boundaries of the layout 230. Potential loop paths describe potential passageways, paths, lobbies, spaces, etc., between two or more spatial units and / or between spatial units and boundaries. The loop module 280 generates one or more loops for the filled layout 270 based on the identified boundaries, potential loop paths, and / or applicable placement parameters 214. The loop module 280 can update the filled layout 270 with appropriate loops. The loop module 280 can update one or more filled layouts 270 with different appropriate loops. Loops may be constrained by one or more loop parameters. For example, the loop module 280 can be configured to determine the longest possible loop for the filled layout 270. The longest possible loop will separate all placed transformed space cells 250. The loop parameter can constrain the longest loop length by requiring that the loop cannot touch more than one or two edges of the boundary of each transformed space cell 250 and / or enclose any transformed space cell 250 or a specific cluster of transformed space cells 250. As another example, the loop module 280 can be configured to determine the shortest possible loop of the filled layout 270 that touches each transformed space cell 250. The shortest possible loop touching each transformed space cell 250 may result in separate loop paths that do not find each other or connect to each other in the filled layout 270. The loop parameter can constrain the shortest loop length by requiring the connections between separate loop paths of every 10 space cells and / or at least 4 paths connecting each other to be as far apart as possible.

[0064] Figure 3A Layout 330, which is consistent with layout 230 and the corresponding coordinate system and cell grid, is shown according to one or more aspects of various implementation schemes. Figure 3A Transformed space cell 350, which is consistent with transformed space cell 250 and its corresponding coordinate system and cell grid, is also shown. Figure 3AThe coordinate system in the layout provides numerical coordinates for the corresponding cell grid. The cell grid of layout 330 includes an occupied cell identified as "U1," representing a first spatial cell. The cell grid of layout 330 also includes empty cells displayed as blank and invalid cells identified as "v." The cell grid of transformed spatial cells 350 includes an occupied cell identified as "U2," representing a second spatial cell. In one embodiment, transformed spatial cell 350 represents a second spatial cell from a list of spatial cells (such as spatial cell list 212), wherein the second spatial cell is transformed into transformed spatial cell 350. The cell grid of transformed spatial cells 350 also includes empty cells displayed as blank.

[0065] Greedy growth algorithm modules (such as greedy growth algorithm module 260) are not limited by cell grids and / or cell grid coordinates to perform corner matching, nor do they identify and / or locate cells and coordinates. For the purposes of discussion, coordinates correspond to the bottom left corner of each cell. In one implementation, a greedy growth algorithm module (such as greedy growth algorithm module 260) identifies convex corners at coordinates in a column (x) multiplied by row (y) format (such as (0,0), (0,2), (4,1), (2,0), (1,3), and (4,3)) after transformation of space unit 350. It should be noted that coordinates (4,1), (1,3), and (4,3) include rows and / or columns that identify corner locations by coordinates extending beyond the given cell grid. In another implementation, a greedy growth algorithm module (such as greedy growth algorithm module 260) identifies concave corners of layout 330 at coordinates of rows and / or columns that include coordinates beyond a given cell grid, wherein the concave corners of layout 330 are at coordinates (7,6) and (9,6).

[0066] Figure 3B A layout 330 according to one or more aspects of various embodiments is shown, wherein the layout 330 is transformed into its coordinate system via a transformation space element 350 and translated to a concave corner of the layout 330. Specifically, Figure 3B The corner matching at the concave corner of layout 330 is shown.

[0067] For the purposes of this corner matching discussion, when the transformed spatial unit 350 is transformed into the coordinate system of layout 330, the lower left corner cell of the transformed spatial unit 350 is located at coordinates (0,0) of layout 330. During corner matching, the greedy growth algorithm module 260 identifies the corner at layout coordinates (6,4) as a concave corner. The greedy growth algorithm module 260 identifies the empty cell at (5,3) as the empty cell closest to the concave corner at coordinates (6,4). Since the transformed spatial unit 350 is initially located at coordinates (0,0), the greedy growth algorithm module 260 identifies the corner-occupied cell of the transformed spatial unit 350 as located at coordinates (3,2). The corner-occupied cell of the transformed spatial unit 350 is then positioned at the identified empty cell at (5,3). To position the corner cell occupied at coordinates (3,2) to the identified empty cell at coordinates (5,3), the greedy growth algorithm module 260 is translated via transformation space unit 350. Figure 3B As shown in the current position, the greedy growth algorithm module 260 will translate the transformed space unit 350 one row up and two columns to the right to coordinates (1,2). This is the Manhattan distance 3 (one column up plus two columns to the right). When the transformed space unit 350 is at a corner matching position, such as... Figure 3B As shown, the greedy growth algorithm module 260 tests the corner matching position by determining whether the placement of the transformed spatial unit 350 at the corner matching position is valid or invalid. Since the placement of the transformed spatial unit 350 at the corner matching position is valid, the placement of the transformed spatial unit 350 at the corner matching position is a possible placement. The greedy growth algorithm module 260 scores the possible placements of the transformed spatial unit 350 at the corner matching position. The greedy growth algorithm module 260 continues the process of rotating and translating the transformed spatial unit 350 to perform corner matching for cells with different corner occupancy than the transformed spatial unit 350.

[0068] Figure 3C A layout 330 is shown according to one or more aspects of various embodiments, wherein transformed spatial cells 350 are placed on the layout 330 in an orientation different from the original orientation. For the purposes of this discussion of rotation, the lower left cell of the transformed spatial cell 350 is positioned as follows before rotation: Figure 3A The orientation shown is located at coordinates (0,0) of layout 330. Therefore, based on the corner matching that matches the convex corner of layout 330 at (1,1), the identified empty cell of the convex corner is placed at (1,1) and rotated before placement. To rotate the transformed space cell 350 to... Figure 3CAs shown, the greedy growth algorithm module 260 rotates the transformed space unit 350 90 degrees clockwise (or 270 degrees counterclockwise) relative to the origin of the layout 330. Once rotated, the lower left corner cell of the transformed space unit 350 is located at coordinates (0, -4), and the occupied lower left corner cell of the transformed space unit 350 is located at coordinates (1, -4). The greedy growth algorithm module 260 then shifts the transformed space unit 350 upwards by 5 cells, so that the occupied lower left corner cell of the transformed space unit 350 is located at coordinates (1, 1).

[0069] Figure 3D Layout 360 is shown, which is consistent with layouts 330 and 230, and has two space units and all existing corners of layout 360. The occupied unit of the first space unit U1 in layout 360 is identified as "U1". The occupied unit of the second space unit U2 in layout 360 is identified as "U2". The corners of layout 360 include a concave corner 361, a convex corner 363, and a flat corner 365.

[0070] Figure 3E As shown Figure 3D The layout 360 includes a third placement space unit U3. The occupied unit of the third placement space unit U3 is identified as "U3". As for the corner, Figure 3E The new corner created by placing the third placement space unit U3 is identified. The new corner includes a concave corner 371 and a convex corner 373. In response to placing the third placement space unit U3 within the layout 360, the greedy growth algorithm module 260 removes the flat corner 365 from the layout 360.

[0071] Figure 4 This is a flowchart of the method steps of method 400 for creating a layout of physical space according to various embodiments of this disclosure. Although combined with... Figures 1 to 3E The system describes the method steps, but those skilled in the art will understand that any system configured to implement the method steps in any order falls within the scope of various implementations.

[0072] Method 400 begins at step 402, in which computing device 100 executes layout generation engine 118. At step 402, layout generation engine 118 receives plan layout 210, spatial unit list 212, and placement parameters 214 from database 120.

[0073] At step 404, the layout generation engine 118 generates layout 230 based on the floor plan received during step 402. To generate layout 230, the layout generation engine 118 creates a cell grid in the layout coordinate system, where cells in the grid can be empty cells, invalid cells, and / or occupied cells.

[0074] At step 406, the layout generation engine 118 generates one or more spatial cells based on the spatial cell list 212 received at step 402. To generate one or more spatial cells, the layout generation engine 118 creates a different cell grid for each spatial cell in the corresponding spatial cell coordinate system. The cell grid corresponding to a given spatial cell includes empty cells, invalid cells, and / or occupied cells in the spatial cells based on the spatial cell list 212 and the spatial cell granularity level.

[0075] At step 408, the layout generation engine 118 transforms a given spatial cell into a given transformed spatial cell 250 based on the spatial cell coordinate system and the layout coordinate system. The layout generation engine 118 may use a default initial position in the layout for each transformed spatial cell 250, such as positioning the bottom-left cell of a given transformed spatial cell 250 at the origin coordinates (0,0) of the layout 230. In one example, the layout generation engine 118 positions a given transformed spatial cell 250 at an initial position in the layout 230 such that the corner-occupied cell of the given transformed spatial cell 250 is located at coordinates in the layout 230 that match the coordinates of the identified empty cell corresponding to the corner of the layout 230.

[0076] At step 410, the layout generation engine 118 fills the layout 230 with transformed space cells based on placement parameters 214. To fill a given transformed space cell 250, the layout generation engine 118 performs corner matching, as discussed above. The layout generation engine 118 performs corner matching between the current transformed space cell 250 and one or more corners from a set of available corners in the layout 230 to identify possible placements of the current transformed space cell 250. The layout generation engine 118 identifies a set of available corners in the layout 230 as currently updated, as available corners change with each placement, as discussed above. The layout generation engine 118 determines the placement location based on the score generated by the corner matching. The layout generation engine 118 scores possible placements based on layout parameters 214 and compares the scores to identify the best possible placement. The layout generation engine 118 places the given transformed space cell 250 at the determined placement location. The layout generation engine 118 generates a filled layout 270 by placing transformed space units 250 within the layout 230 and updating the layout 230 and its corners after each placement, as discussed above. The layout generation engine 118 generates the filled layout 270 based on a placement order parameter or a default placement order until no more transformed space units 250 need to be placed or no other transformed space units 250 are available for placement.

[0077] Steps 408 and 410 are performed for each spatial cell generated in step 406. During execution, the layout generation engine 118 can generate one spatial cell, a group of spatial cells, or all spatial cells at step 406. From steps 406 to 408, the layout generation engine 118 can transform one spatial cell, multiple spatial cells, a group or multiple groups of spatial cells, or all spatial cells into transformed spatial cells 250. At step 410, the layout generation engine 118 fills the layout 230 with one transformed spatial cell 250 at a time.

[0078] At step 416, the layout generation engine 118 generates a loop based on the layout 270 filled with placement parameter 214, as discussed above.

[0079] In summary, the disclosed technology can be used to efficiently and accurately generate physical space layouts. The layout generation module receives a list of physical spaces as input. This list comprises a set of spatial units, each with design parameters (e.g., floor plan parameters, unit size, shape and dimensions, type and / or purpose, placement and / or proximity requirements, placement order preference, proximity requirements, closeness / distance requirements, separation requirements, etc.). To generate a given layout for the physical spaces, the layout generation module uses a filling algorithm to place the spatial units in the floor plan in a manner that conforms to the design parameters. In operation, the layout generation module generates the layout by placing the spatial units in the floor plan sequentially. The default order involves placing the spatial units from the inside to the outside of the floor plan in the order listed in the physical space list, while observing the design parameters.

[0080] The layout associated with a given physical space is defined as a grid of cells, boundaries corresponding to the floor plan of the physical space, and a coordinate system. Cells may be invalid, empty, or occupied. An invalid cell represents space that a spatial unit cannot occupy, for example, due to an inner boundary of the floor plan caused by an obstacle. Empty cells can be used for spatial unit placement, and occupied cells are originally empty cells that are dedicated to a room and cannot be occupied by another room. Empty and occupied cells form cell boundaries at their outermost edges. A contiguous cluster of occupied and / or invalid cells forms cell boundaries at the perimeter of the cluster. In a given layout, a spatial unit is defined by multiple cells arranged in a manner representing the shape and size of each room.

[0081] When a given spatial cell is placed in a layout, the layout generation module applies transformations (translation and rotation) to the design parameters associated with the spatial cell, bringing the spatial cell into the layout's coordinate system. Through these transformations, the spatial cell is adapted to the layout, with constraints ensuring that the cell's cells do not overlap with occupied or empty cells, and that the spatial cell's cells do not extend beyond the layout's outer boundary. The layout generation module determines the placement of spatial cells by applying a greedy corner-growth fill algorithm, thereby placing a spatial cell each time by selecting the layout corner with the highest placement score among all currently available placements and adapting the spatial cell to the selected layout corner. Layout corners are defined by the perimeter of the layout's inner boundary and any clusters of consecutive invalid and / or occupied cells. The placement score is calculated based on the number of grid cells the spatial cell must move to reach the origin (using Manhattan distance measurement), where the score is modified according to any applicable parameters (e.g., location preference, spatial cell proximity preference, orientation, etc.).

[0082] At least one advantage and improvement of the disclosed technology lies in the fact that the layout generation module generates layouts in a manner that satisfies design parameters at each sequential step of layout generation. Therefore, the layout generation module does not spend time, energy, and resources generating layouts that do not meet parameter requirements. Another advantage and improvement is the generation of layouts with increased spatial usability, reduced space fragmentation that is too small to be usable, and longer loop paths formed by cell boundaries. These technical advantages provide one or more technological advancements superior to existing methods.

[0083] Any and all combinations of any claim element set forth in any claim and / or any element described in this application, in any manner, fall within the scope of the invention and protection.

[0084] 1. In various embodiments, a computer-implemented method for generating a layout of a physical space includes: generating a layout based on a floor plan of the physical space; generating a plurality of spatial cell grids corresponding to a plurality of spatial units to be placed in the physical space; identifying the placement of the first spatial cell grid within the layout by matching corner cells in a first spatial cell grid among the plurality of spatial cell grids with given available cells in the layout; generating a score associated with the placement of the first spatial cell grid based on one or more placement parameters, the placement parameters defining placement constraints of the first spatial cell corresponding to the first spatial cell grid among the plurality of spatial units; and placing the first spatial cell grid in the layout based on the score.

[0085] 2. The method as described in Clause 1, wherein the layout includes a first cell grid associated with a first coordinate system, and the first spatial cell grid is associated with a second coordinate system.

[0086] 3. The method as described in Clause 1 or 2, wherein identifying the placement of the first spatial cell includes transforming the first spatial cell mesh into the first coordinate system.

[0087] 4. The method of any one of Clauses 1 to 3, further comprising identifying a second placement of the first spatial cell grid within the layout by matching a corner cell in the first spatial cell grid with a second available cell in the layout, and generating a second score associated with the second placement of the first spatial cell grid based on the one or more placement parameters, wherein placing the first spatial cell grid in the layout is based on a comparison between the score and the second score.

[0088] 5. The method of any one of Clauses 1 to 4, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.

[0089] 6. The method of any one of Clauses 1 to 5, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on the position of the boundary of the first spatial cell grid when the corner cell occupies the given available cell.

[0090] 7. The method of any one of Clauses 1 to 6, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid covers the occupied cell in the layout when the corner cell occupies the given available cell.

[0091] 8. The method of any one of clauses 1 to 7, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid is outside the layout when the corner cell occupies the given available cell.

[0092] 9. The method of any one of Clauses 1 to 8, further comprising: identifying a second placement of the second spatial cell grid within the layout by matching a second corner cell in a second spatial cell grid included in the plurality of spatial cell grids with a second available cell in the layout; generating a second score associated with the second placement of the second spatial cell grid based on a second set of placement parameters associated with the second spatial cell grid; and placing the second spatial cell grid in the layout based on the second score.

[0093] 10. In various embodiments, one or more non-transitory computer-readable media store instructions that, when executed by one or more processors, cause the one or more processors to perform the following steps: generating a layout based on a physical space plan; generating a plurality of spatial cell grids corresponding to a plurality of spatial cells to be placed in the physical space; identifying the placement of the first spatial cell grid within the layout by matching corner cells in a first spatial cell grid among the plurality of spatial cell grids with given available cells in the layout; generating a score associated with the placement of the first spatial cell grid based on one or more placement parameters, the placement parameters defining placement constraints including placement constraints of the first spatial cell corresponding to the first spatial cell grid in the plurality of spatial cells; and placing the first spatial cell grid in the layout based on the score.

[0094] 11. One or more non-transitory computer-readable media as described in Clause 10, wherein the layout includes a first cell grid associated with a first coordinate system, and the first spatial cell grid is associated with a second coordinate system.

[0095] 12. One or more non-transitory computer-readable media as described in clause 10 or 11, wherein identifying the placement of the first spatial cell includes transforming the first spatial cell grid into the first coordinate system.

[0096] 13. One or more non-transitory computer-readable media as described in any one of clauses 10 to 12, the non-transitory computer-readable media further comprising identifying a second placement of the first spatial cell grid within the layout by matching a corner cell in the first spatial cell grid with a second available cell in the layout, and generating a second score associated with the second placement of the first spatial cell grid based on the one or more placement parameters, wherein placing the first spatial cell grid in the layout is based on a comparison between the score and the second score.

[0097] 14. One or more non-transitory computer-readable media as described in any one of clauses 10 to 13, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.

[0098] 15. One or more non-transitory computer-readable media as described in any one of clauses 10 to 14, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on the position of the boundary of the first spatial cell grid when the corner cell occupies the given available cell.

[0099] 16. One or more non-transitory computer-readable media as described in any one of clauses 10 to 15, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid covers the occupied cell in the layout when the corner cell occupies the given available cell.

[0100] 17. One or more non-transitory computer-readable media as described in any one of clauses 10 to 16, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid is outside the layout when the corner cell occupies the given available cell.

[0101] 18. One or more non-transitory computer-readable media as described in any one of clauses 10 to 17, the non-transitory computer-readable media further comprising: identifying a second placement of the second spatial cell grid within the layout by matching a second corner cell in a second spatial cell grid included in the plurality of spatial cell grids with a second available cell in the layout; generating a second score associated with the second placement of the second spatial cell grid based on a second set of placement parameters associated with the second spatial cell grid; and placing the second spatial cell grid in the layout based on the second score.

[0102] 19. In various embodiments, a computer system includes: a memory storing instructions; and a processor executing the instructions to: generate a layout based on a physical space planar layout; generate a plurality of spatial cell grids corresponding to a plurality of spatial cells to be placed in the physical space; identify placement of the first spatial cell grid within the layout by matching corner cells in a first spatial cell grid among the plurality of spatial cell grids with given available cells in the layout; generate a score associated with the placement of the first spatial cell grid based on one or more placement parameters, the placement parameters defining placement constraints including the first spatial cell in the plurality of spatial cells and corresponding to the first spatial cell grid; and place the first spatial cell grid in the layout based on the score.

[0103] 20. The computer system of claim 19, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.

[0104] Various embodiments have been described for illustrative purposes; however, these descriptions are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments.

[0105] Aspects of embodiments of this invention may be embodied as systems, methods, or computer program products. Therefore, aspects of this disclosure may take the form of an all-hardware implementation, an all-software implementation (including firmware, resident software, microcode, etc.), or an implementation combining software and hardware aspects, which may be generally referred to herein as “modules,” “systems,” or “computers.” Furthermore, any hardware and / or software technology, process, function, component, engine, module, or system described in this disclosure may be implemented as a circuit or a set of circuits. Additionally, aspects of this disclosure may take the form of a computer program product embodied in one or more computer-readable media having computer-readable program code embodied thereon.

[0106] Any combination of one or more computer-readable media may be used. A 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, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, or apparatuses, or any suitable combination of the foregoing. More specific examples (not an exhaustive list) of computer-readable storage media will include: electrical connections having one or more wires, portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable optical disc read-only memory (CD-ROM), optical storage devices, magnetic storage devices, 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 programs for use by or in conjunction with an instruction execution system, device, or apparatus.

[0107] The foregoing description of aspects of this disclosure includes flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this disclosure. It will be understood that each block in the flowchart illustrations and / or block diagrams, as well as combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine. When executed via a processor of a computer or other programmable data processing apparatus, the instructions cause the functions / actions specified in one or more blocks of the flowchart illustrations and / or block diagrams to be implemented. Such processors can be, but are not limited to, general-purpose processors, special-purpose processors, application-specific processors, or field-programmable gate arrays.

[0108] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of code comprising one or more executable instructions for implementing a specified logical function. It should also be noted that in some alternative implementations, the functions indicated in the blocks may not occur in the order shown in the drawings. For example, two blocks shown consecutively may actually be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a system based on dedicated hardware or a combination of dedicated hardware and computer instructions that performs the specified function or action.

[0109] While the foregoing relates to embodiments of this disclosure, other and additional embodiments of this disclosure may be contemplated without departing from the essential scope of this disclosure, the scope of which is defined by the appended claims.

Claims

1. A computer-implemented method for generating a layout of physical space, the method comprising: The layout is generated based on a physical space floor plan, wherein the layout includes a first cell grid; Generate a plurality of spatial cell grids representing a plurality of spatial cells to be placed in the physical space, wherein each of the plurality of spatial cell grids comprises one or more cells; The placement of the first spatial cell grid within the layout is identified by matching the corner cell in the first spatial cell grid among the plurality of spatial cell grids with a given available cell in the layout; A score associated with the placement of the first spatial cell grid is generated based on one or more placement parameters, the placement parameters defining placement constraints of the first spatial cell represented by the first spatial cell grid within the plurality of spatial cells; and The first spatial cell grid is placed in the layout based on the score.

2. The method of claim 1, wherein the layout includes the first cell grid associated with a first coordinate system, and the first spatial cell grid is associated with a second coordinate system.

3. The method of claim 2, wherein identifying the placement of the first spatial cell comprises transforming the first spatial cell mesh into the first coordinate system.

4. The method of claim 1, further comprising: A second placement of the first spatial cell grid within the layout is identified by matching a corner cell in the first spatial cell grid with a second available cell in the layout; as well as A second score is generated based on the one or more placement parameters, which are associated with the second placement of the first spatial cell grid. The placement of the first spatial unit grid in the layout is based on a comparison between the score and the second score.

5. The method of claim 1, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.

6. The method of claim 5, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on the position of the boundary of the first spatial cell grid when the corner cell occupies the given available cell.

7. The method of claim 5, wherein matching the corner cell in the first spatial unit grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial unit grid covers the occupied cell in the layout when the corner cell occupies the given available cell.

8. The method of claim 5, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid is outside the layout when the corner cell occupies the given available cell.

9. The method of claim 1, further comprising: A second placement of the second spatial cell grid within the layout is identified by matching a second corner cell in the second spatial cell grid included in the plurality of spatial cell grids with a second available cell in the layout; as well as A second score associated with the second placement of the second spatial cell grid is generated based on a second set of placement parameters associated with the second spatial cell grid. The second spatial cell grid is placed in the layout based on the second score.

10. One or more non-transitory computer-readable media, the non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to perform the following steps: The layout is generated based on a physical space floor plan, wherein the layout includes a first cell grid; Generate a plurality of spatial cell grids representing a plurality of spatial cells to be placed in the physical space, wherein each of the plurality of spatial cell grids comprises one or more cells; The placement of the first spatial cell grid within the layout is identified by matching the corner cell in the first spatial cell grid among the plurality of spatial cell grids with a given available cell in the layout; A score associated with the placement of the first spatial cell grid is generated based on one or more placement parameters, the placement parameters defining placement constraints of the first spatial cell represented by the first spatial cell grid within the plurality of spatial cells; and The first spatial cell grid is placed in the layout based on the score.

11. One or more non-transitory computer-readable media as claimed in claim 10, wherein the layout includes the first cell grid associated with a first coordinate system, and the first spatial cell grid is associated with a second coordinate system.

12. One or more non-transitory computer-readable media as claimed in claim 11, wherein identifying the placement of the first spatial cell comprises transforming the first spatial cell grid into the first coordinate system.

13. The one or more non-transitory computer-readable media of claim 10, wherein the non-transitory computer-readable media further comprises: A second placement of the first spatial cell grid within the layout is identified by matching a corner cell in the first spatial cell grid with a second available cell in the layout; as well as A second score is generated based on the one or more placement parameters, which is associated with the second placement of the first spatial cell grid. The placement of the first spatial unit grid in the layout is based on a comparison between the score and the second score.

14. One or more non-transitory computer-readable media as claimed in claim 10, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.

15. One or more non-transitory computer-readable media as claimed in claim 14, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on the position of the boundary of the first spatial cell grid when the corner cell occupies the given available cell.

16. The one or more non-transitory computer-readable media of claim 14, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid covers the occupied cell in the layout when the corner cell occupies the given available cell.

17. One or more non-transitory computer-readable media as claimed in claim 14, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout further includes determining whether the placement is valid based on whether another cell in the first spatial cell grid is outside the layout when the corner cell occupies the given available cell.

18. The one or more non-transitory computer-readable media of claim 10, wherein the non-transitory computer-readable media further comprises: A second placement of the second spatial cell grid within the layout is identified by matching a second corner cell in the second spatial cell grid included in the plurality of spatial cell grids with a second available cell in the layout; as well as A second score associated with the second placement of the second spatial cell grid is generated based on a second set of placement parameters associated with the second spatial cell grid. The second spatial cell grid is placed in the layout based on the second score.

19. A computer system, the computer system comprising: The memory stores instructions; as well as Processor, the processor executes the instructions to: The layout is generated based on a physical space floor plan, wherein the layout includes a first cell grid; Generate a plurality of spatial cell grids representing a plurality of spatial cells to be placed in the physical space, wherein each of the plurality of spatial cell grids comprises one or more cells; The placement of the first spatial cell grid within the layout is identified by matching the corner cell in the first spatial cell grid among the plurality of spatial cell grids with a given available cell in the layout; A score associated with the placement of the first spatial cell grid is generated based on one or more placement parameters, the placement parameters defining placement constraints of the first spatial cell represented by the first spatial cell grid within the plurality of spatial cells; and The first spatial cell grid is placed in the layout based on the score.

20. The computer system of claim 19, wherein matching the corner cell in the first spatial cell grid with the given available cell in the layout comprises moving the first spatial cell grid within the layout until the corner cell occupies an empty corner cell in the layout.