System and method for configuring a product

The system addresses the scalability and performance challenges in product configuration systems by using a branch and bound algorithm with SMT solvers to efficiently generate buildable product configurations, reducing computational complexity and improving scalability.

WO2025117919A1PCT designated stage expired Publication Date: 2025-06-05SIEMENS INDUSTRY SOFTWARE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/US2024/058001
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-11-30
Filing Date
2024-11-30
Publication Date
2025-06-05

AI Technical Summary

Technical Problem

Current product configuration systems face scalability and performance issues due to the exponential rise in computational complexity when handling numerous product feature combinations and constraints, leading to inefficient generation of buildable product configurations.

Method used

The proposed system employs a branch and bound algorithm in conjunction with Satisfiability Modulo Theory (SMT) solvers to efficiently identify buildable product configurations by breaking down the problem into ordered logical groups and systematically exploring the solution space.

Benefits of technology

This approach significantly reduces the computational load and improves scalability by limiting the number of pseudo constraints and enabling parallel execution, thus enabling efficient generation and management of buildable product configurations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024058001_05062025_PF_FP_ABST
    Figure US2024058001_05062025_PF_FP_ABST
Patent Text Reader

Abstract

A method and system for configuring a product is disclosed. The method comprises obtaining, by a processor (102) of the PDM system (100), a plurality of options and one or more constraints defined for the product from a product database (116), wherein each of the options has one or more variants. Further, ordered logical groups are generated from the plurality of options obtained, based on a weight associated with each of the options. Furthermore, a branch and bound algorithm is used to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver. The one or more buildable product configurations are further outputted on an output device (110).
Need to check novelty before this filing date? Find Prior Art

Description

SYSTEM AND METHOD FOR CONFIGURING A PRODUCT

[0001] The present patent document claims the benefit of Indian Patent Application No. 202331081509, filed November 30, 2023, which is hereby incorporated by reference in its entirety.FIELD OF TECHNOLOGY

[0002] The present disclosure relates to the field of Product Data Management (PDM), and more particularly to a method and system for configuring a product.BACKGROUND

[0003] In Product Data Management (PDM) systems, a product is configured using a set of constraints pre-defined for a product. The set of constraints are also known as ‘set of rules’ or ‘set of assertions.’ For example, a set of constraints for a vehicle may include values corresponding to wheel diameter, trim type, transmission type, etc.

[0004] In case of products having multiple customizable features, for example, in industries such as manufacturing, automotive, and aerospace, variant configurations are commonly used. Each feature may have dependencies and / or compatibility requirements with one or more other features. A variant configuration model defines relationships and constraints resulting from such dependencies and / or compatibility requirements.

[0005] In variant configurations, a buildable product configuration refers to a specific combination of features that is valid and can be manufactured or assembled. It is a configuration that satisfies all the constraints defined in the variant configuration model.

[0006] When a customer selects different features for a product, the variant configuration system checks if the combination is buildable. It verifies if the selected features fulfil all the necessary constraints. For example, consider a laptop configuration with options for screen size, processor type, and storage capacity. If a customer selects a 17-inch screen, an Intel i7 processor, and a 500GB hard drive, and these features are allowed based on the defined constraints, then this combination would be considered a buildable product configuration. In summary, a buildable product configuration in variant configuration refers to a valid combination of features that comply with all the defined constraints and can be successfully manufactured or assembled.

[0007] Obtaining all buildable product configurations in variant configuration is crucial for effective product management, sales, manufacturing, and customer satisfaction. It provides a comprehensive understanding of the available features, supports decision-makingprocesses, and facilitates the efficient production and delivery of customizable products. It helps significantly in overall product development. By generating all buildable product configurations, the entire spectrum of product features that can be offered to customers can be visualized. This enables sales teams to provide accurate quotes and proposals to customers. They can easily determine the price, availability, and lead time for each buildable configuration. Buildable product configurations serve as a basis for creating product catalogs, brochures, and technical documentation. By documenting all valid configurations, assists in optimizing the production flow and inventory management. This process also aids in Product Development (R&D) teams in understanding the feasibility and implications of different product configurations. It helps them in early identification of potential conflicts or challenges related to specific combinations and guides them in optimizing the design and development process.

[0008] In product configuration scenarios, a significant challenge arises in managing the numerous potential combinations of product features. For instance, consider a product with 20 configuration options, each having 2 distinct features. Without any constraints, the total number of combinations amounts to 2A20, or 1,048,576. This vast number of combinations can be challenging to handle efficiently. To ensure manageable variation while also achieving market breadth, various constraints are typically applied, covering technical, manufacturing, and business requirements. The next task is to identify all combinations that satisfy these constraints.

[0009] Consider a simpler product configuration example involving 6 options (A, B, C, D, E, F), each with two variable features, such as A={A1, A2], B={B1, B2], and so on. Here, the initial number of combinations, without constraints, is 2A6, equating to 64. Applying specific product constraints reduces this number. For example, suppose the following constraints apply:1. Al implies Bl,2. A2 implies B2,3. B2 implies DI,4. El implies Fl.

[0010] An SMT (Satisfiability Modulo Theories) solver can be employed in such cases. The solver creates an SMT model based on product variability and constraints, then addresses a satisfiability question. Upon satisfaction (SAT), a valid combination of features isproduced, such as 'Al & Bl & Cl & DI & El & Fl'. To find additional valid configurations, the solver negates the current model ' ! (Al & B1 & C1 & D1 & E1 & F1)' and checks for satisfiability again, yielding another valid model, such as 'Al & Bl & Cl & DI & E2 & Fl'. This process repeats until no further valid configurations exist, at which point the solver returns UNSAT (unsatisfied). With each satisfiability question, the solver load increases as new constraints are dynamically added to negate each previous configuration, as follows:1. ! (Al &B1 &C1 &D1 &E1 &F1)2. ! (Al &B1 &C1 &D1 &E2&F1)3. ! (Al &B1 &C1 &D1 &E2&F2)4. ! (Al &B1 &C2&D1 &E1 &F1)5. ! (Al &B1 &C2&D1 &E2&F1)6. ! (Al &B1 &C2&D1 &E2&F2)7. ! (A2&B2&C1 &D1 &E1 &F1)8. ! (A2&B2&C1 &D1 &E2&F1)9. ! (A2&B2&C1 &D1 &E2&F2)10. ! (A2 & B2 & Cl & D2 & El & Fl)11. ! (A2&B2&C1 &D2&E2&F1)12. ! (A2 & B2 & Cl & D2 & E2 & F2)13. ! (A2 & B2 & C2 & DI & El & Fl)14. ! (A2 & B2 & C2 & DI & E2 & Fl)15. ! (A2 & B2 & C2 & DI & E2 & F2)16. ! (A2 & B2 & C2 & D2 & El & Fl)17. ! (A2 & B2 & C2 & D2 & E2 & Fl)18. ! (A2 & B2 & C2 & D2 & E2 & F2)

[0011] This incremental constraint addition results in high computational load and diminished performance. For example, extracting the 10th valid combination requires adding nine negated constraints, each increasing solver complexity. By the 18th combination, 17 negated constraints are in place. Consequently, as the number of configurations scales, the solver’s time to respond increases significantly, creating a non-linear, non-scalable solution. The current brute-force approach is summarized as follows: (1) obtain the constraint set and build an SMT model; (2) generate the next valid configuration; and (3) deny the currentmodel in subsequent calculations until the desired number of configurations is reached or UNSAT is achieved.

[0012] However, the computational complexity increases with each additional model, leading to an exponential rise in computation time. Thus, a need exists for a system and method that enables scalable and efficient product configuration.SUMMARY

[0013] A method and system for configuring a product is disclosed. This disclosure proposes a solution to address these performance and scalability issues. Instead of a bruteforce approach, the disclosure breaks the problem into branches and tackles each branch individually, allowing for a scalable solution to identify all valid buildable product configurations.

[0014] In an aspect, a method of configuring a product in a Product Data Management (PDM) system is disclosed. The method includes obtaining, by a processor of the PDM system, a plurality of options and one or more constraints defined for the product from a product database, wherein each of the options has one or more variants. The method further includes generating ordered logical groups from the plurality of options obtained, based on a weight associated with each of the options, wherein each of the logical groups comprises exclusive combinations of the one or more of the options.

[0015] In an embodiment, the weight of the options is computed based on the one or more constraints associated with the options. The method further includes using a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver.

[0016] In an embodiment, the branch and bound algorithm uses the order logical groups to generate a search tree comprising nodes, each node having a branch expression indicative of a buildable combination of variants complying with the one or more constraints. In an embodiment, in the branch and bound algorithm, a traversal from a root node of the search tree, a branch expression corresponding to a first node acts as a pseudo constraint for a second node connected to the first node, wherein a logical group of the first node precedes a logical group of the second node in the ordered logical groups.

[0017] Furthermore, the method further includes, outputting the one or more buildable product configurations on an output device.

[0018] In an embodiment, the method additionally includes configuring the product based on at least one of the buildable product configurations.

[0019] In another aspect, a Product Data Management (PDM) system having a processor and an accessible memory coupled to the processor is disclosed. The memory comprises a PDM module in the form of machine-readable instructions, which, when executed by the processor, causes the processor to obtain a plurality of options and one or more constraints defined for the product from a product database, wherein each of the options has one or more variant.

[0020] The PDM module, when executed by the processor, further causes the processor to generate ordered logical groups from the plurality of options obtained, based on a weight associated with each of the options, wherein each of the logical groups comprises exclusive combinations of the one or more of the options.

[0021] The PDM module, when executed by the processor, further causes the processor to use a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver.

[0022] The PDM module, when executed by the processor, further causes the processor to output the one or more buildable product configurations on an output device. In an embodiment, the PDM module when executed by the processor, further causes the processor to configure the product based on at least one of the buildable product configurations.

[0023] In yet another aspect, a non-transitory computer-readable storage medium having instructions stored therein, which, when executed by a Product Data Management (PDM) system, causes the PDM system to perform method steps including: obtaining, by a processor of the PDM system, a plurality of options and one or more constraints defined for the product from a product database, wherein each of the options has one or more variants; generating ordered logical groups from the plurality of options obtained, based on a weight associated with each of the options, wherein each of the logical groups comprises exclusive combinations of the one or more of the options; using a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver; and outputting the one or more buildable product configurations on an output device.BRIEF DESCRIPTION OF THE DRAWINGS

[0024] A more complete appreciation of the present disclosure and attendant aspects thereof are obtained as the same becomes better understood by reference to the following description when considered in connection with the accompanying drawings:

[0025] FIG 1 illustrates a block diagram of a Product Data Management (PDM) system for configuring a product, in accordance with an embodiment.

[0026] FIG 2 is a process flowchart illustrating an exemplary method of configuring a product in the PDM system, in accordance with an embodiment.

[0027] FIG 3 is a process flowchart illustrating branching heuristics for options used in generating buildable product configurations from a search tree, in accordance with an embodiment.

[0028] FIG 4 is a process flowchart illustrating branch and bound algorithm used in generating buildable product configurations implementable on a search tree, in accordance with an embodiment.

[0029] FIG 5 is an illustration showing visual branching of branch and bound algorithm, in accordance with an embodiment.DETAILED DESCRIPTION

[0030] FIG 1 illustrates a block diagram of a Product Data Management (PDM) system 100 in which an embodiment can be implemented, for example, as a data processing system particularly configured by software or otherwise to perform the processes as described herein. The PDM system 100 may be a personal computer, a laptop computer, a tablet, and the like. In FIG 1, the PDM system 100 includes a processor 102, an accessible memory 104, a storage unit 106, an input unit 108, a display unit 110, and a bus 112.

[0031] The processor 102, as used herein, means any type of computational circuit, such as, but not limited to, a microprocessor, microcontroller, complex instruction set computing microprocessor, reduced instruction set computing microprocessor, very long instruction word microprocessor, explicitly parallel instruction computing microprocessor, graphics processor, digital signal processor, or any other type of processing circuit. The processor 102 may also include embedded controllers, such as generic or programmable logic devices or arrays, application specific integrated circuits, single-chip computers, and the like.

[0032] The memory 104 may be volatile memory and non-volatile memory. The memory 104 may be coupled for communication with the processor 102. The processor 102 may execute instructions and / or code stored in the memory 104. A variety of computer-readablestorage media may be stored in and accessed from the memory 104. The memory 104 may include any suitable elements for storing data and machine-readable instructions, such as read only memory, random access memory, erasable programmable read only memory, electrically erasable programmable read only memory, a hard drive, a removable media drive for handling compact disks, digital video disks, diskettes, magnetic tape cartridges, memory cards, and the like. In the present embodiment, the memory 104 includes a PDM module 114 stored in the form of machine-readable instructions on any of the above-mentioned storage media and may be in communication to and executed by processor 102. When executed by the processor 102, the PDM module 114 causes the processor 102 to obtain a plurality of options and a plurality of constraints defined for the product from a product database, wherein each of the options has one or more variants, generate ordered logical groups from the plurality of options obtained based on a weight associated with each of the options, use a branch and bound algorithm to determine one or more buildable product configurations based on variants of the options in each of the ordered logical groups and one or more of the constraints applicable to the options, and output the one or more product configurations on an output device. Method steps performed by the processor 102 to achieve the above functionality are described in greater detail in FIG 2.

[0033] The storage unit 106 may be a non-transitory storage medium which stores a product database 116. The product database 116 stores one or more constraints pre-defined for a product for configuring the product. The input unit 108 may include input means such as keypad, touch-sensitive display, camera (such as a camera receiving gesture-based inputs), etc. capable of receiving input signal such as a file including requirement data associated with the product. The display unit 110 may be means for displaying a graphical user interface which visualizes buildable product configurations and / or a multi-dimensional representation of a geometric model of the configured product. The bus 112 acts as interconnect between the processor 102, the memory 104, the storage unit 106, the input unit 108, and the output unit 110.

[0034] Those of ordinary skilled in the art will appreciate that the hardware depicted in FIG 1 may vary for particular implementations. For example, other peripheral devices such as an optical disk drive and the like, Local Area Network (LAN) / Wide Area Network (WAN) / Wireless (e.g., Wi-Fi) adapter, graphics adapter, disk controller, input / output (I / O) adapter also may be used in addition or in place of the hardware depicted. The depicted example isprovided for the purpose of explanation only and is not meant to imply architectural limitations with respect to the present disclosure.

[0035] A PDM system in accordance with an embodiment of the present disclosure includes an operating system employing a graphical user interface. The operating system permits multiple display windows to be presented in the graphical user interface simultaneously with each display window providing an interface to a different application or to a different instance of the same application. A cursor in the graphical user interface may be manipulated by a user through the pointing device. The position of the cursor may be changed and / or an event such as clicking a mouse button, generated to actuate a desired response.

[0036] One of various commercial operating systems, such as a version of Microsoft Windows™, a product of Microsoft Corporation located in Redmond, Washington may be employed if suitably modified. The operating system is modified or created in accordance with the present disclosure as described.

[0037] Disclosed embodiments provide systems and methods that configure a product.

[0038] FIG 2 is a process flowchart 200 illustrating an exemplary method of configuring a product in the PDM system 100, according to an embodiment.

[0039] At step 202, a plurality of options and one or more constraints defined for the product are obtained from a product database. Each option has one or more variants.

[0040] At step 204, ordered logical groups are generated from the plurality of options obtained, based on a weight associated with each of the options. In an embodiment, the weight of the options is computed based on the plurality of constraint. In another embodiment, the weight of the options may also be computed based on other factors, for example, manually assigned weights, in addition to the constraints. Each of the logical groups comprises exclusive combinations of the one or more of the options. In an implementation, a weight associated with each of the options is determined based on number of constraints associated with each of the options. In an implementation, a hit count associated with each of the options in the one or more constraints is computed. Further, a weight is assigned to each of the options based on the hit count and number of variants associated with the options. Further, the options are sorted in ascending order of weights.

[0041] Upon sorting of the options, the options are grouped into logical groups such that number of theoretical combinations of variants corresponding to all options in a logical groupdoes not exceed a predefined threshold, say 1024. In an embodiment, the threshold is determined based on parameters such as processor speed and memory available in the PDM.

[0042] At step 206, a branch and bound algorithm is used to determine one or more buildable product configurations based on the options in each of the ordered logical groups and one or more of the constraints applicable to the options. The applicability of the one or more constraints is determined using a Satisfiability Modulo Theory (SMT)-based solver. The SMT based solver determines applicability of the constraints based on a satisfiability model generated based on the plurality of constraints obtained from the product database. In the present embodiment, since the logical groups are ordered as {A,B{, {C,D{ and {E,F{, firstly the logical group {A,B{ is considered in order to systematically explore the solution space by creating a search tree for each branch. In an embodiment, the branch and bound algorithm uses the order logical groups to generate a search tree comprising nodes, each node having a branch expression indicative of a buildable combination of variants complying with the one or more constraints. In particular, the logical groups are used to form nodes / branches of the search tree. The search tree is a solution space formed based on the variants available for each of the options.

[0043] In the branch and bound algorithm, a traversal from a root node of the search tree, a branch expression corresponding to a first node acts as a pseudo constraint for a second node connected to the first node, wherein a logical group of the first node precedes a logical group of the second node in the ordered logical groups.

[0044] At step 208, the one or more buildable product configurations are outputted on the display unit 110 of the PDM system 100. In an embodiment, each of the buildable product configuration is outputted as a multi-dimensional representation of the product configuration on a graphical user interface of the PDM system. In a further embodiment, the product is configured based on at least one of the buildable product configurations.

[0045] FIG 3 is a flowchart 300 illustrating branching heuristics for creating a search tree based on options and constraints, in accordance with an exemplary embodiment of the present disclosure. The method starts at step 302.

[0046] For example, a product configuration may have six options A, B, C, D, E, and F, with each option having 2 variants. For example, the option A may have two variants {Al, A2{ B may have two variants {Bl, B2{, C may have two variants {Cl, C2{, D may have two variants {DI, D2{, E may have two variants {El, E2{, and F may have two variants {Fl, F2{. In other words, each of the options may take any one value from the respective set ofvariants. Thus, a plurality of buildable product configurations for the product configuration may be generated for the product based on the above options.

[0047] At step 304, a map of options versus number of variants associated with each of the options is created. Herein, the set of variants may be obtained as: A={A1, A2], B={B1, B2}, C={C1, C2}, D={D1, D2}, E={E1, E2}, F={F1, F2}.

[0048] The number of variants associated with each of the options is stored in a variable ‘MaxOptionLoad.’ In the present example, the MaxOptionLoad corresponding to each of the options A, B, C, D, E, and F is 2.

[0049] At step 306, each constraint among the one or more constraints is iterated through and a map of options versus hit count of the options in the constraints is created. In the present example, the constraints may be as below:Constraint 1 : Al -> B l (i.e., Al can only be paired with Bl in the option B, and not with B2);Constraint 2: A2B2 (i.e., A2 can only be paired with B2 in the option B, and not with Bl);Constraint 3: B2 - DI (i.e., B2 can only be paired with DI in the option D, and not with D2); andConstraint 4: ElFl (i.e., El can only be paired with Fl in the option F, and not with F2).

[0050] The hit count is stored in a variable OptionConstraintLoad. In the present example, the constraints associated with option A are Constraint 1, and Constraint 2; the constraints associated with option B are Constraint 1, Constraint 2 and Constraint 3; the constraint associated with option D is Constraint 3; the constraints associated with option E is Constraint 4; the constraint associated with option F is Constraint 4; and zero constraints are associated with option C. Therefore, the hit count associated with options A, B, C, D, E, and F are 2, 3, 0, 1, 1, and 1, respectively.

[0051] At step 308, a weight associated with each of the options is computed based on the hit count. In an example, the weight is computed based on the hit count and the number of variants associated with the options. The higher the hit count of an option, the lower the weight of the option. Further, the higher the number of variations in an option, the higher the weight of the option. In an embodiment, the weight of each option is computed by determining whether the following condition is satisfied:MaxOptionLoad+1 > 2* OptionConstraintLoad.

[0052] If the condition is satisfied for the option, the weight of the option (denoted by variable OptionWeight) is set as:OptionWeight = MaxOptionLoad - OptionConstraintLoad / 2; Otherwise, OptionWeight is set to 1.

[0053] At step 310, a sorted list of options based on the corresponding values of OptionWeight corresponding to each of the options is generated. For ease of explanation, it is assumed that the order of the options in order of ascending weights is A, B, C, D, E, F.Further, two variables CurrentBranchLoad and MaxBranchLoad (threshold) are initialized to 1 and 1024 respectively. Further, an empty option set is also created. Furthermore, each option from the sorted list of options is iterated through to create option sets (logical groups).

[0054] At step 312, it is determined whether an end of the list of options is reached. If yes, step 314 is performed. Otherwise, step 318 is performed.

[0055] At step 314, a current option set, if not empty, is added to a branch option set. Further, the method ends at step 316.

[0056] At step 318, the current option set is added to the option set created at step 310.

[0057] At step 320, CurrentBranchLoad is updated using the formula:CurrentBranchLoad = CurrentBranchLoad*CurrentOptionWeight

[0058] At step 322, it is determined whether the following condition is satisfied: CurrentBranchLoad >= MaxBranchLoad.

[0059] If the condition is not satisfied, step 312 is repeated. If the condition is satisfied, steps 324 and 326 are performed before repeating step 312. Herein, the option sets are created such that a number of theoretical combinations of variants corresponding to the options in an option set is less than or equal to the MaxBranchLoad value of 1024.

[0060] At step 324, the current option set is added to the branch option set.

[0061] At step 326, the updated option set is reset to create an empty option set as in step310.

[0062] In the present example, the ordered logical groups may be identified as {A, B}, {C, D}, {E, F}. As seen, each of the logical groups comprises exclusive combinations of theone or more options, with no overlapping options between the logical groups. Herein, it may be understood that since the options are order in ascending order of weight, the logical group {A, B} may have the lowest variation due to a greater number of constraints imposed on the options, whereas {C, D} and {E, F} may have higher variations due to lesser number of constraints imposed on the options.

[0063] FIG 4 is a flowchart 400 illustrating execution of the branch and bound algorithm on the search tree, in accordance with an embodiment of the present disclosure.

[0064] The method begins at step 402.

[0065] At step 404, a constraint set for configuring a product is determined. In the present example, the constraint set is:Constraint 1 : Al - BlConstraintConstraint 3: B2 - DIConstraint 4: El -> Fl

[0066] At step 406, options associated with the product are divided into logical groups as explained earlier with reference to FIG 3.

[0067] At step 408, a Satisfiability Modulo Theory (SMT) constraint model is built based on the constraints obtained at step 402.

[0068] At step 410, a first container is initialized to enable storing of buildable product configurations associated with the product configuration. Further, two variables Branchindex and PreviousBranchExpression are initialized to ‘0’ and ‘null’ respectively. Herein, the variable Branchindex indicates branch index, and the variable PreviousBranchExpression indicates a previous branch expression, i.e., a branch expression corresponding to a previous iteration. The term ‘branch expression’ as used herein refers to combinations of variants. For example, Al & Bl is a branch expression.

[0069] At step 412, a second container is initialized to enable storing of values of Branchindex.

[0070] At step 414, a third container is initialized to enable storing of branch expressions.

[0071] At step 416, a local constraint set is determined for the current iteration.

[0072] At step 418, it is determined whether a previous branch expression satisfies the constraint set of step 416. If yes, steps 420 to 424 are performed. Otherwise, step 426 is performed.

[0073] At step 420, a satisfiability model is determined as proof of satisfying the constraint set for second container from step 414. The satisfiability model is an AND-ed combination of branch expressions corresponding to the previous nodes and the current node in a traversal from a root node, say A2&B2. For example, the satisfiability model at C1&D2 may be determined as A2&B2&C1&D2.

[0074] At step 422, the third container of step 412 is updated with the satisfiability model from step 416 as the current value of BranchExpression.

[0075] At step 424, a pseudo constraint is added as negated satisfiability model to the local constraint set of step 416. Further, step 418 is repeated.

[0076] At step 426, it is determined whether a branch expression is the last one amongst the set of branch expressions formed by the options. If yes, step 430 is performed. Otherwise, step 428 is performed.

[0077] At step 428, the Branchindex is incremented by 1 and for each BranchExpression of the third container, PreviousBranchExpression is updated in the second container as: PreviousBranchExpression = BranchExpression & PreviousBranchExpression.

[0078] Further, step 412 is repeated.

[0079] At step 430, each BranchExpression is appended with the PreviousBranchExpression and the first container is updated.

[0080] At step 432, the first container containing the buildable product configurations is read.

[0081] The method ends at step 434.

[0082] The execution of the method of FIG 4 is explained with an example below. For first iteration, all combinations for the first logical group {A, B] is generated. Here, buildable product configurations for options A and B considering the plurality of constraints, specifically constraint 1 and constraint 2, are Al & Bl, A2 & B2. Hereinafter, it must be understood that each buildable product configuration is a combination of a pair of variants, and such a buildable product configuration forms a node in the search tree. In the present example, the nodes corresponding to Al & Bl and A2 & B2 form two different root nodes of the search tree. For all generated buildable product configurations from a current node each buildable product configuration of the current node act as context expression for the next node connected to the current node. To achieve this, the buildable product configuration of current node, say A1&B1, is considered as pseudo constraint for the next node comprisingbuildable product configurations corresponding to the logical group {C, D}. More specifically, buildable product configurations are generated for the logical group {C, D} considering the plurality of constraints and pseudo constraint from the previous node (corresponding to the logical group {A, B}). For example, in the node Al & Bl, the variant Bl may be only paired with DI and not with D2, as per the constraint Bl - D1. This forms a pseudo constraint for the next node from logical group {C, D}. There are no constraints with respect to option C. Therefore, the nodes Cl & DI and C2 & DI are connected to the nodes Al & Bl. Likewise, for the next nodes corresponding to the logical group {E, F}, connected to the node C1&D1 (as well as C2&D1), the buildable product configurations are El & Fl, E2 & Fl, E2 & F2, due to the constraint El -> Fl. Similarly, the search tree may be built for A2& B2 as well using the above logic. FIG 5 shows a visual branching of branch and bound algorithm to generate each of the buildable product configurations. As seen, if the search tree is traversed, starting from the first branch corresponding to the logical group {A, B}, up until the connected branch for logical group {E, F}, a buildable product configuration is identified based on the values in each traversal from the root node (say Al & Bl) to the leaf node (say E1&F1). For example, the topmost branch when traversed, gives the buildable product configuration A1&B1&C1&D1&D1&E1&F1. The next buildable product configuration is A1&B1&C1&D1&D1&E2&F1, followed by A1&B1 &C1&D1&D1&E2&F2, and so on. Similarly, branches originating from the root node A2 & B2 are also generated.

[0083] Advantageously, with the proposed approach, maximum number of pseudo constraint added to SMT solver is 4 for the sample options and constraints described above. For first branch of the search tree originating from the root node A1&B1, they are:1. A1 & B1 & C1 & D12. !(E1 & F1)3. !(E2 & F1)4. !(E2 & F2)

[0084] For the same sample data, in the brute force approach according to prior art, maximum number of pseudo constraint added to SMT solver is 18. Advantageously, the present disclosure reduces the number of pseudo constraints. Lowering the number of runtime negated constraints is crux to improve scalability and performance with the proposed approach. The present disclosure also enables parallel execution corresponding to each of the branches, as opposed to serialized execution in the prior art.

[0085] Those skilled in the art will recognize that, unless specifically indicated or required by the sequence of operations, certain steps in the processes described above may be omitted, performed concurrently or sequentially, or performed in a different order.

[0086] Those skilled in the art will recognize that, for simplicity and clarity, the full structure and operation of all Product Data Management (PDM) systems suitable for use with the present disclosure is not being depicted or described herein. Instead, only so much of a PDM system as is unique to the present disclosure or necessary for an understanding of the present disclosure is depicted and described. The remainder of the construction and operation of the PDM system 200 may conform to any of the various current implementation and practices known in the art.

[0087] It is to be understood that the system and methods described herein may be implemented in various forms of hardware, software, firmware, special purpose processors, or a combination thereof. One or more of the present embodiments may take a form of a computer program product comprising program modules accessible from computer-usable or computer-readable medium storing program code for use by or in connection with one or more computers, processors, or instruction execution system. For the purpose of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation mediums in and of themselves as signal carriers are not included in the definition of physical computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, random access memory (RAM), a read only memory (ROM), a rigid magnetic disk and optical disk such as compact disk readonly memory (CD-ROM), compact disk read / write, and digital versatile disc (DVD). Both processors and program code for implementing each aspect of the technology can be centralized or distributed (or a combination thereof) as known to those skilled in the art.LIST OF REFERENCES100 PDM system102 processor104 memory106 storage unit108 input unit110 display unit112 bus114 PDM module116 product database

Claims

CLAIMS1. A method of configuring a product in a Product Data Management (PDM) system (100), the method comprising: obtaining, by a processor (102) of the PDM system (100), a plurality of options and one or more constraints defined for the product from a product database (116), wherein each option of the plurality of options has one or more variants; generating ordered logical groups from the plurality of options obtained, based on a weight associated with each option of the plurality of options, wherein each logical group of the logical groups comprises exclusive combinations of one or more options of the plurality of options; using a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the plurality of options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver; and outputting the one or more buildable product configurations on an output device (HO).

2. The method of claim 1, wherein the weights of the plurality of options are computed based on the one or more constraints associated with the plurality of options.

3. The method of claim 1, wherein the branch and bound algorithm uses the order logical groups to generate a search tree comprising nodes, each node having a branch expression indicative of a buildable combination of variants complying with the one or more constraints.

4. The method of claim 3, wherein in the branch and bound algorithm, a traversal from a root node of the search tree, a branch expression corresponding to a first node acts as a pseudo constraint for a second node connected to the first node, and wherein a logical group of the first node precedes a logical group of the second node in the ordered logical groups.

5. The method of claim 1, further comprising: configuring the product based on at least one of the buildable product configurations.

6. A Product Data Management (PDM) system (100) comprising: a processor (102); and an accessible memory (104) coupled to the processor (102), wherein the accessible memory (104) comprises a PDM module (114) in a form of machine-readable instructions, which, when executed by the processor (102), causes the processor (102) to: obtain a plurality of options and one or more constraints defined for a product from a product database (116), wherein each option of the plurality of options has one or more variants; generate ordered logical groups from the plurality of options obtained, based on a weight associated with each option of the plurality of options, wherein each logical group of the logical groups comprises exclusive combinations of one or more options of the plurality of options; use a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver; and output the one or more buildable product configurations on an output device (110).

7. The PDM system (100) of claim 6, wherein the weights of the plurality of options are computed based on the one or more constraints associated with the options.

8. The PDM system (100) of claim 6, wherein the branch and bound algorithm uses the order logical groups to generate a search tree comprising nodes, each node having a branch expression indicative of a buildable combination of variants complying with the one or more constraints.

9. The PDM system (100) of claim 8, wherein in the branch and bound algorithm, a traversal from a root node of the search tree, a branch expression corresponding to a first node acts as a pseudo constraint for a second node connected to the first node, and wherein a logical group of the first node precedes a logical group of the second node in the ordered logical groups.

10. The PDM system (100) of claim 6, wherein the PDM module, when executed by the processor 104, is further configured to: configure the product based on at least one of the buildable product configurations.

11. A non-transitory computer-readable storage medium having instructions stored therein, which, when executed by a Product Data Management (PDM) system (100), causes the PDM system (100) to: obtain, by a processor (102) of the PDM system (100), a plurality of options and one or more constraints defined for a product from a product database (116), wherein each option of the plurality of options has one or more variants; generate ordered logical groups from the plurality of options obtained, based on a weight associated with each option of the plurality of options, wherein each logical group of the logical groups comprises exclusive combinations of one or more options of the plurality of options; use a branch and bound algorithm to determine one or more buildable product configurations based on the ordered logical groups and one or more of the constraints applicable to the options, wherein applicability of the one or more constraints is determined using a Satisfiability Modulo Theory-based solver; and output the one or more buildable product configurations on an output device (110).

12. The storage medium of claim 11, wherein the weights of the plurality of options are computed based on the one or more constraints associated with the options.

13. The storage medium of claim 11, wherein the branch and bound algorithm uses the order logical groups to generate a search tree comprising nodes, each node having a branch expression indicative of a buildable combination of variants complying with the one or more constraints.

14. The storage medium of claim 13, wherein in the branch and bound algorithm, a traversal from a root node of the search tree, a branch expression corresponding to a first node acts as a pseudo constraint for a second node connected to the first node, and wherein alogical group of the first node precedes a logical group of the second node in the ordered logical groups.

15. The storage medium of claim 11, wherein the instructions, when executed by the PDM system, is further configured to cause the PDM system to: configure the product based on at least one of the buildable product configurations.

Citation Information

Patent Citations

  • Method and system for managing constraint-based violations in a product data management environment

    US11113737B2

  • IN202331081509A