[go: up one dir, main page]

WO2005071609A1 - 制約条件解決方法、制約条件解決装置、及び制約条件解決システム - Google Patents

制約条件解決方法、制約条件解決装置、及び制約条件解決システム Download PDF

Info

Publication number
WO2005071609A1
WO2005071609A1 PCT/JP2005/000752 JP2005000752W WO2005071609A1 WO 2005071609 A1 WO2005071609 A1 WO 2005071609A1 JP 2005000752 W JP2005000752 W JP 2005000752W WO 2005071609 A1 WO2005071609 A1 WO 2005071609A1
Authority
WO
WIPO (PCT)
Prior art keywords
constraint
constraint condition
variable
input
variable value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2005/000752
Other languages
English (en)
French (fr)
Inventor
Toshio Fukui
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Metalogic Inc
Original Assignee
Metalogic Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Metalogic Inc filed Critical Metalogic Inc
Priority to CA2554580A priority Critical patent/CA2554580C/en
Priority to EP05703973A priority patent/EP1710736A4/en
Priority to CN2005800029969A priority patent/CN1910601B/zh
Priority to JP2005517273A priority patent/JP4669788B2/ja
Publication of WO2005071609A1 publication Critical patent/WO2005071609A1/ja
Priority to US11/447,765 priority patent/US7499764B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Definitions

  • the present invention relates to an efficient solution to a problem composed of arbitrary constraint conditions, and particularly to a constraint condition in which a procedure of constraint propagation is considered and a constraint condition that can be executed only by setting variable values.
  • the present invention relates to a solution method, a constraint solution device, and a constraint solution system.
  • the user only has to describe the constraints and wait for the solution to be output, but on the other hand, it has a feature that the CPU cannot interfere with the procedure of performing the data processing. are doing.
  • the procedural programming method is mainly used among the two roughly divided programming methods described above.
  • Patent Document 1 Japanese Patent Application Laid-Open No. Hei 5-3548
  • Patent Document 2 Japanese Patent Application Laid-Open No. Hei 9 81387
  • the declarative programming technique requires at least a description of a constraint and a data value used in the constraint, and when applied to an actual problem, the constraint and data Will be very large.
  • X, X, ⁇ , X is a combinatorial optimization problem that minimizes the value. That is, as shown in FIG.
  • the computer searches for data that satisfies all constraints simultaneously.
  • an object of the present invention is to reliably solve a target problem that does not describe an algorithm that is a data processing procedure on a computer in a short calculation time.
  • a constraint solving method includes a constraint input process in which a user inputs a constraint in which a process procedure of constraint propagation relating to a target problem is taken into consideration, and a constraint input by the constraint input.
  • a variable value setting process for setting an initial value or a variable value of a variable to be used, and a constraint condition related to the value set by the variable value setting process is extracted from the constraint conditions input by the constraint condition input process. Substituting the initial value or the variable value of the variable into all the constraints extracted by the constraint extraction processing, based on the constraint propagation processing procedure considered by the user.
  • the constraint solution calculation process for calculating the solution of the constraint condition, and the solution calculated by the constraint solution calculation process are set as new fluctuation values in the variable value setting process.
  • the constraint condition solving method of the present invention includes a constraint condition input process for inputting a constraint condition, a variable value setting process for setting a value of a variable used for the constraint condition input by the constraint condition input process, A constraint condition extraction process for extracting, from the constraint conditions input by the constraint condition input process, a constraint condition related to the value set by the variable value setting process, and a constraint condition extraction process of the constraint condition extracted by the constraint condition extraction process.
  • a constraint condition solving device includes a constraint condition input means for inputting a constraint condition in which a processing procedure of constraint propagation relating to a target problem is considered by a user, and a constraint condition input device for the constraint condition input means.
  • a variable value setting means for setting an initial value or a variable value of a variable to be used, and a constraint condition relating to the value set by the variable value setting means is extracted from the constraint conditions inputted by the constraint condition input means. And assigning an initial value or a variation value of the variable to all of the constraints extracted by the constraint extracting means based on the constraint propagation processing procedure considered by the user.
  • the constraint solution calculating means for calculating the solution of the constraint condition, and the solution calculated by the constraint solution calculating means are set as new fluctuation values in the variable value setting means.
  • Variable value resetting means wherein the variable condition resetting means repeatedly performs the constraint condition extracting means and the constraint condition solution calculating means while a new fluctuation value to be reset exists.
  • the constraint condition solving device of the present invention comprises: constraint condition input means for inputting a constraint condition; variable value setting means for setting a value of a variable used for the constraint condition input by the constraint condition input means; A constraint condition extracting unit for extracting, from the constraint conditions input by the constraint condition input unit, a constraint condition related to the value set by the variable value setting unit; and a constraint condition extracting unit for extracting the constraint condition extracted by the constraint condition extracting unit.
  • Constraints for calculating solution A constraint solution including a solution calculation means, the constraint condition includes a current number of array elements, the variable has a plurality of values, and a search based on element values of a structure array. , And at least one of character string and numeric conversion by default rules.
  • a constraint solving system is a constraint solving system in which a plurality of devices are communicably connected to each other, wherein at least one of the devices has the constraint described in any one of the above. It has the function of a solution device.
  • a constraint condition considering a processing procedure of constraint propagation for a target problem and a value (initial value) of a variable used for the constraint condition are input, a constraint related to the value of the variable is input.
  • a solution that satisfies each of the constraints is derived, and the process of finding a solution for each of the above constraints by substituting the derived solution as a new value (variable value) of the variable is performed.
  • FIG. 18 is a diagram conceptually showing the positioning of a conventional programming language environment and a constraint solving system for solving a constraint condition according to the present invention.
  • the conventional programming language environment includes a program language processing system, a program code, and data, and the program language processing system controls the program code and data.
  • the program language processing system controls the program code and data.
  • a constraint expression train condition
  • a constraint solving system are provided, and each is connected so that information can be mutually exchanged.
  • FIG. 19 is also a conventional programming language environment, and is a configuration diagram when the conventional constraint solving system is configured in the form of a library.
  • FIG. 1 is an overall configuration diagram showing basic components of the constraint condition solving device 100.
  • the constraint condition solving device 100 includes a constraint condition input unit 1, a variable value setting unit 2, a constraint condition extracting unit 3, a constraint condition solution calculating unit 4, and a variable value resetting unit 5. Contains.
  • the constraint condition input means 1 is for the user to input a constraint condition determined with the processing procedure of constraint propagation by a computer (CPU) in mind.
  • variable value setting means 2 is for setting a specific initial value specified by the user to each variable constituting the constraint condition input by the constraint condition input means 1. Although details will be described later, values other than initial values (hereinafter, referred to as fluctuation values) are set for each variable.
  • the constraint condition input means 1 and the variable value setting means 2 are so-called UZIs for data input and include various tools that can easily perform input without any particular limitation.
  • a display (monitor) screen that can be checked can be provided.
  • This output display means can also have a display (monitor) screen on which the output value can be confirmed.
  • an input / output means capable of inputting / outputting data may be used as one of the constraint condition input means 1 (including the variable value setting means 2) and the output display means.
  • the constraint condition extracting means 3 extracts, from the input constraint conditions, a constraint condition having each variable in which an initial value or a variation value is set as a component.
  • the constraint condition extracting means 3 is configured to collectively extract the corresponding constraint conditions, but after obtaining a solution of a certain constraint condition by the constraint condition solution calculating means 4 described later, The restriction conditions may be extracted one by one such that the extraction of the restriction condition is repeated sequentially.
  • the constraint condition solution calculating means 4 solves each constraint condition in which an initial value or a fluctuation value is substituted.
  • the predetermined order is an order indicated by a constraint condition input by a user (programmer) in consideration of a processing procedure of constraint propagation.
  • Typical examples used as illustrations to facilitate understanding of declarative programming techniques include the following accounting problems.
  • Equation 1 and (Equation 2) are, in particular, the setting of variable data among the constraints.
  • Equation 5 defines variable data
  • Equation 6) (Equation 7) assigns values to variables
  • (Equation 5) 8) — (Equation 9) is a concrete execution expression.
  • the & operator is a string concatenation operator. As shown in (Equation 6)-(Equation 7), the character string name and message are arbitrarily rewritten to generate HTML text output by output.
  • Equation 10 (Equation 10) and (Equation 11) are definitions of variable data, and (Equation 12) is a concrete execution expression.
  • Equation 12 is a concrete execution expression. In the constraint propagation by changing the value of the character string str in this example, each time the value of the character string add is changed, the value of the character string add is added to the character string str repeatedly.
  • the constraint condition does not need to be an expression represented by an equal sign or an inequality sign as shown in the above (A)-(C).
  • the truth is the answer, and if, for example, only f (x) is described as a constraint condition, as in C language, this f (X) is executed. Is determined and processed depending on whether is true or false.
  • variable value resetting means 5 uses the constraint solution extracting means 3 and the constraint solution calculating means 4 to obtain the second and subsequent solutions. Is set as a new value, that is, a fluctuation value. Then, the process of obtaining a solution of a series of constraint conditions is performed when the constraint condition solving device 100 receives a separate end command after the solution to be changed by the constraint condition solution calculating means 4 no longer exists and reaches the final solution. To end.
  • one of the features of the present invention is that it repeats the process of sequentially substituting a value for the extracted variable of each constraint and solving each constraint one by one. For this purpose, it is assumed that the user sets the constraint conditions in advance in consideration of the procedure of constraint propagation.
  • FIG. 2 is a flowchart showing the operation procedure of the constraint condition solving device 100.
  • step S20 it is determined whether or not an initial value has been set for a variable used for a constraint condition. As a result of the determination, if the initial values have not yet been set for each of the variables constituting the constraint condition input by the constraint condition input means 1, in step S21, the variable value setting means 2 sets the initial value specified by the user. Set the value.
  • step S22 the constraint condition extracting means 3 determines whether or not the value of each variable has been changed.
  • the process proceeds to the next step S22 as an initial change.
  • the constraint condition solving apparatus 100 remains in a waiting state until the value of the new variable is changed in step S22.
  • end is not shown in this flowchart, when an operation end instruction command is input from outside, the constraint condition solving apparatus 100 executes a predetermined operation process (not shown) to execute a series of operations. It is controlled to end.
  • step S23 the constraint condition extracting means 3 generates a set S having the variables changed in step S22 as elements.
  • generating the set S means, for example, writing a name of the changed variable or a suffix capable of identifying an array element of the variable in a certain storage area on the computer.
  • the constraint condition extracting means 3 determines whether or not the force exists in the set S, that is, whether or not there is a variable whose value has been changed by the variable value setting means 2 (step S24). As a result of the determination, when there is an element in the set S (when the set S is not an empty set), the constraint condition extracting means 3 extracts the elements Sm one by one from the set S (step S25).
  • step S26 a set Q of constraint conditions related to the extracted element Sm is generated. To achieve. That is, if there is a constraint condition including the element Sm, the constraint condition extracting means 3 outputs this to the set Q. Next, while there is an element in the set Q in step S27, the following steps S28 to S30 are repeated.
  • step S28 the constraint condition solution calculation means 4 extracts one constraint condition Qm from the set Q. Then, the constraint condition solution calculation means 4 solves the constraint condition Qm extracted in step S28, and obtains a variable to be changed to satisfy the constraint condition Qm and its value (step S29).
  • step S29 the details of the processing in step S29 are as follows.
  • the above (2) is not always the case with the forces and other (1) and (3) that are essential as the processing in step S29.
  • the user may determine whether or not the user has the necessary power according to the target problem, and may be configured to explicitly or implicitly indicate the restriction condition.
  • step S30 the variable value resetting means 5 resets the value obtained for the variable obtained in step S29, and in the subsequent processing, determines whether the constraint condition is solved based on the reset value. It is.
  • step S28 if it is determined in step S27 that there is no element in the set Q, a series of processing returns to step 24, and the next variable Sm is extracted from the set S. And the same processing is repeated.
  • the processing of the constraint condition solving device 100 corresponds to a situation in which a stable state is entered. As described above, any variable used for the constraint condition is newly added. It waits in step S22 until a new value is set.
  • the order in which the variables Sm are extracted and the order in which the constraints Qm are extracted in step S28 are determined by the user by explicitly specifying the order (priority) in consideration of the processing procedure of constraint propagation. Is the method of setting the constraints to be performed. Specifically, for example, the priorities are achieved in such a way that the priorities are in the order in which the constraints are described. A specific example is shown below.
  • the execution order of the constraints is determined at execution time, but the order in which the set S and set Q force elements are extracted is uncertain.
  • an explicit method for determining this there is a method of judging in the order of description or setting a priority in the constraint expression.
  • the computer may automatically perform the above-described priority order! / ⁇ .
  • step S27 it is determined that there is an element in the set Q.
  • step 30 the changed value 750 is set in the subtotal [2], and the subtotal [2] is set.
  • step S27 Only one forceful element is extracted from the previous set Q. Since set Q is an empty set, the process proceeds to step S24.
  • step S24 the subtotal [2] of the set S that has been added is determined, and the subtotal [2] is extracted in step S25.
  • step S28 the relevant constraint condition is extracted.
  • step S30 this change is made to the variable (total). Set the value to 1700.
  • the (sum) of the variables is stored in the set S. Subsequently, steps S27, S24, S25, and S26 are executed, and since there is no related constraint expression, no element is added to the set Q.
  • step S29 the difference is eliminated by using only the changed value instead of performing the addition again when finding the solution to the constraint condition.
  • step S30 since there is no constraint related to the sum, it is evident that no element is added to the set S in order to reduce the calculation time.
  • step S27 The force that returns to step S27 again.
  • the element that had only one was taken out from the previous set Q. Since the new set Q is an empty set, the process proceeds to step S22, and the constraint condition solving apparatus 100 waits until the next external data change.
  • step S28 in the operation of the constraint condition solving apparatus 100 described above, the process of taking out the constraint conditions Qm one by one from the set Q and finding the solution is described, but it is necessary to take out one by one. None. If it is possible to find the solutions of the constraints at the same time, we will extract two or more constraints from the set Q. As a result, the target problem that can be solved can be broadened.
  • the actual solution of the constraint condition Qm is not limited to the method of solving it by simple equation transformation like the accounting problem. It is assumed that all the solutions for the existing formulas can be used, and that the solution of the n-th order equation can be introduced.
  • FIG. 24 shows an example of a screen on which the user inputs constraint conditions and values using actual input / output means (for example, constraint condition input means 1).
  • the screen example in Fig. 24 is equivalent to the screen example of the constraint condition input means 1 and the variable value setting means 2 having the output function, and has a structure on UNIX that has an input / output interface equivalent to a general programming language. This is an implementation example implemented.
  • the inputs and outputs in Fig. 24 (a)-(h) are a series and are shown separately for convenience.
  • the constraint expression 242 here abstracts the sum calculation as a function array total total 0, but it can also be expressed by a constraint expression as shown in FIG. You can also write procedural loop structures directly (see Fusion with functional languages). Then, when the difference of the total calculation is eliminated in the processing of step S29, the constraint condition solving apparatus 100 determines and performs the automatic processing, and the user is not aware.
  • Step S22 the force at which the processing shown in step S30 is executed.
  • the remaining input values are read into the file by "load”.
  • the subtotal and total are calculated and set, and by inputting “total” at 246, the current total value is displayed and the execution result can be obtained.
  • step S26 in FIG. 2 is executed.
  • Figure 20 shows the concept of this classification.
  • This class can be inherited.For example, when there is a class A having a variable 1, a variable 2 and a constraint expression 1 shown in FIG. 20 and a class B having a variable 3, as shown in FIG. It is possible to generate the class shown in Figure 20 that inherits class B and further inherits constraint equation 2.
  • the present invention does not set an evaluation formula (evaluation condition) that all constraints do not violate constraints. .
  • processing for determining a solution to a constraint condition is often performed to determine whether or not there is a conflict between the constraint conditions based on the evaluation formula. This is because the present invention presupposes that the user sets the constraint conditions so that no inconsistency occurs. Therefore, the constraint condition solving apparatus 100 can always find the solution at the end, and if the solution is not found, it is an error in setting the constraint condition by the user.
  • the constraint condition solving apparatus 100 of the present embodiment when the constraint condition regarding the target problem and the initial value or the variation value of the variable used for the constraint condition are set, the constraint condition related to the variable is extracted. Then, the solution for each constraint condition is sequentially obtained, and this solution is repeated as a new variable value to find the solution for each constraint condition.
  • the target problem can be solved by the constraints that connect the data.
  • the constraints to be set are defined by including directives corresponding to this algorithm in the data structure without describing an algorithm for solving the target problem as in conventional procedural programming, and Describe in accordance with the processing procedure, and all constraints
  • the constraint conditions are determined one by one without finding the optimal solution that satisfies, so the route to find the solution is clear, and the significantly simplified constraints (e.g., one-way equations ), It is possible to surely reach the final solution, and the arithmetic processing can be performed much faster.
  • the constraint condition input means 1 the variable value setting means 2, the constraint condition extracting means 3, the constraint condition solution calculating means 4, and the variable value resetting means
  • the constraint condition solving device 200 includes the constraint condition storing device 6 in addition to the respective constituent devices 115 in the constraint condition solving device 100 according to the first embodiment.
  • a variable value storage means 7 Note that the same reference numerals are given to the components common to the configuration of the constraint condition solving device 200 according to the present embodiment and the constraint condition solving device 100 according to the first embodiment, and a detailed description thereof will be given. Omitted.
  • FIG. 3 shows the overall configuration of the constraint solving apparatus 200 of the present embodiment.
  • the constraint condition storage means 6 stores the constraint conditions input by the constraint condition input means 1 in a predetermined storage area. Further, the variable value storage means 7 stores the variable values (initial values, fluctuation values) set by the variable value setting means 2.
  • the constraint condition extracting means 8 of the present embodiment stores the newly set constraint condition or variation value in the storage area in addition to the function of the constraint condition extracting means 3 in the first embodiment. It has a function of extracting a constraint condition only when the two do not match as compared with the constraint condition or value. Note that the constraint condition extracting means 8 may extract the constraint condition and the variable value from the constraint condition storing means 6 and the variable value storing means 7 which do not always need to perform the comparison. Needless to say,! /.
  • FIG. 4A is a diagram showing an example of an embodiment in which the constraint condition storage means 6 stores constraint conditions in a storage area (for example, a memory or a magnetic disk) of a computer.
  • the variable X has three constraints It is assumed that there is a constraint referred to by an equation (constraint equation 1, constraint equation 2, constraint equation 3), and how to represent the storage area when the value X is set to the variable X is shown.
  • Figures 6 and 5 show examples of the above-mentioned accounting calculation constraint constraints expressed in this format.
  • it is not limited to such a representation.
  • the constraint expression may be stored as a character string without being divided as a structure.
  • the present invention is not limited to the data structure shown in FIG. 5, but may be, for example, a storage area shown below.
  • Variable values are classified, and some values are recorded only in memory. Other values are recorded in a file or database, so that the values in the recording area can be made permanent or a time system. And the like may have a special meaning.
  • a configuration may be used in which a variable name constraint expression is searched without a constraint expression list.
  • it is not limited to the memory and pointer structure as shown in FIG.
  • all data types that exist innumerably due to the above-described modification are included.
  • the constraint condition solving device 200 of the present embodiment the constraint condition relating to the target problem and the initial value or the variation value of the variable used for the constraint condition are temporarily or permanently stored in a predetermined recording area. Therefore, only when a change occurs in the constraint or the variable value, the constraint condition extracting means 8 of the present embodiment solves the constraint condition Qm related to the changed variable Sm and changes it to satisfy Qm. It is possible to perform the process of finding the variable to be used and its value.
  • the constraint condition solving device 100 of the first embodiment described above the constraint condition input means 1, the variable value setting means 2, the constraint condition extracting means 3, the constraint condition solution calculating means 4, and the variable value resetting means 5
  • the constraint condition solving device 200 of the second embodiment described above further comprises a constraint condition storage means 6 and a variable value storage means 7.
  • the condition solving device 300 is characterized by including a function definition holding means 9 and a function definition executing means 10.
  • Either the constraint solving device 100 according to the first embodiment or the constraint solving device 200 according to the second embodiment should be configured to further include the function definition holding unit 9 and the function definition executing unit 10. However, in order to simplify the explanation, the explanation will be made with the configuration added to the constraint condition solving device 100.
  • the role of the configuration of the constraint condition solving device 300 of the present embodiment viewed from the programming method is that the first embodiment solves the problem by a complete declarative programming method,
  • the embodiment is that the conventional procedural programming technique is fused. This is because some problems that are difficult to solve by declarative programming can be flexibly solved by using procedural programming techniques, regardless of the target problem.
  • FIG. 8 shows the overall configuration of the constraint solving apparatus 300 according to the present embodiment.
  • the function definition holding means 9 holds the procedure described by the user in the conventional procedural programming and the variable value by the constraint input means 1 and the variable value setting means 2.
  • the function definition holding means 9 is connected to the constraint condition extracting means 3 so that data can be input and output to and from each other.
  • variable value setting means 2 may be provided with a variable value setting means dedicated to a variable of a procedure described in a procedure type.
  • the function definition executing means 10 causes the computer to actually execute the procedure held by the function definition holding means 9.
  • the function definition executing means 10 is connected to the constraint condition solution calculating means 4 so that data can be input and output to and from each other.
  • an expression that can be normally expressed as a constraint expression is also converted into a solution format as shown in FIG. If it is configured to be deformed and held, it is expected that the speed at the time of executing the process will be improved.
  • the function definition holding unit 9 and the function definition executing unit 10 are included, so that the constraint condition and the conventional programming are used to define the constraint condition. It is possible for the user to freely set the solution as a constraint condition and the solution using the conventional programming method according to the nature or characteristics of the target problem. Become. Accordingly, description of constraint conditions including inverse operation processing, etc., which cannot be solved by the constraint condition solving apparatuses 100 and 200 of the first embodiment and the second embodiment, is greatly facilitated.
  • the constraint condition solving device 400 of the present embodiment includes a database, Characteristically, a variable value can be set by utilizing the above.
  • FIG. 10 shows an overall configuration diagram of a constraint condition solving device 400 of the present embodiment.
  • the constraint condition solving device 2 of the second embodiment is used.
  • some or all of the variables in the constraint conditions are recorded in the database 11 and the system resources 12. Values and variables in the system that are linked to other events, such as time, etc., and manage variables in a way that matches variables outside of the constraint solver 400 with those of constraints. Can be easily performed.
  • operators for the one-dimensional arrays vecl and vec2 are defined as follows. vecl + vec2... an array obtained by adding all the elements of each one-dimensional array,
  • vecl * vec2 an array obtained by multiplying all the elements of each one-dimensional array
  • vecl vec2... comparison or assignment of arrays where the elements of each one-dimensional array are all the same,
  • vecl & vec2 An array in which all the elements of each one-dimensional array are connected.
  • the first embodiment It can be handled in the same way as the constraint expression in the fourth embodiment.
  • an operator as shown in FIG. 21 may be prepared. Any operator can be used for this operator.
  • vec [n. .M, 1..k, i.. J] is an array obtained by extracting the n-m-th, 1-k-th, and i-1-th elements of the dimensional array If we represent
  • vecl [0..3] vec2 [0..I] & vec2 [4..5] + vec3 [0..3] and! / (Restrictions).
  • HTML hypertext markup language
  • HTML data " ⁇ HTML> ⁇ BODY>” & date [0..3] & “year” & date [5..6] & “month” & date [8..9] & "day” & "name : "& Name &” content: "& content &” ku ZBODYX / HTML> ,,;
  • a conversion rule for arbitrary data conversion is prepared, and it can be specified by default.
  • Xn a number of n digits or less
  • vail can be referred to as a character string of 14 characters, signed and mantissa part 9 digits or less, decimal point, fixed to 3 digits, and right-justified.
  • val2 can refer to val2 as an unsigned, zero-suppressed, 8-digit character string of all eight characters.
  • the constraint expression to be executed is selected according to the priority value. If there are multiple values with the same priority, execute all To be done. By defining such a constraint expression with priority, it becomes effective when only the constraint expression with the smallest or largest priority is executed, or when the execution order of the constraint expression is specified. .
  • the data of the structure exists in a database or a file.
  • access to the “content” related to the sequence number 5 is performed, for example, by using “bulletin board data [5].
  • Contents In addition, when accessing the data of this structure, the search processing is described as a constraint by defining a string matching operator for the members (date, name, contents, and HTML data). Will be able to do it.
  • FIGS. 12 (a) and 12 (b) showing slightly practical examples using the various data structures described above, some rules are added. 12 (a) and 12 (b) are shown in one diagram, but are shown as separate diagrams for convenience.
  • strtrunc (argl, arg2) — Power to copy the string of argl If the length is longer than the string length specified by arg2, the characters are truncated.
  • Output_html means a multi-element value sequence in which all output_html (see Figure 12 (a)) in the array are arranged. When comparison with a character string or assignment operation is performed, all It is treated as one string that concatenates elements,
  • vsize (output—block) list—count: A constraint expression indicating the number of arrays, that is, the relationship between array sizes and variables. However, reference to the value obtained by vsizeO is a normal value.Since a force change must mean a change in the array size, the change in the value is abstracted inside the processing system. Abstraction processing such as the method call processing by the force object that defines the function call to mean the function call is required.
  • Fig. 11 shows a conceptual diagram of a system that inputs and displays data in combination with this Web server, and shows an example of the information stored in the function type definition holding means and the constraint condition storage means, and the constraint conditions.
  • Figures 12 (a) and 12 (b) show this.
  • a general window interface as shown in Fig. 13 is configured to map each item to a variable, so that the relationship between data and the user interface is changed. Can be described with constraint conditions, and it is easy to describe and easily understand a general user interface. As a result, higher productivity can be achieved as compared with the conventional programming method.
  • the processing procedure and the processing content to be solved by the constraint condition are provided as history information (update history), so that the user interface on the application is improved.
  • the UNDO function which is one of the concepts, makes it possible to implement database transactions.
  • FIG. 14 shows three windows, it goes without saying that any number of windows can be handled.
  • FIG. 15 shows a client in a Z server system that implements a window system. It is a figure which shows the structure of an ant side notionally. The system configuration on the server side is the same as that shown in Figs.
  • the GUI client has a GUI processing unit and a GUI control unit, and the GUI control unit controls the operation of each part as shown in FIG.
  • the contents of the GUI control section here have the same configuration as in Figs. 1, 3, 8, and 10, and the state change of each part is performed by the IZF for the input / output IZF in Figs. 1, 3, 8, and 10 in the client. This is performed for the control unit.
  • cooperation rules between each part consistency check of input data to be processed by the client, input assistance, processing rules for data to be passed to the server side, etc. are described and processed.
  • the data processed and processed by the GUI control unit is transmitted to the server via transmission variables.
  • system configuration can be flexibly modified and used, such as processing the GUI processing part of the client and the constraint processing system of the server collectively.
  • the function of the sequential solving method of the constraint condition according to the change of the value of the variable which is a feature of the present invention, is provided not only in the client Z server system as a whole but also in the GUI control unit.
  • the data transfer between the client and the Z server may be in a proprietary format, but by using a standardized data format such as XML, it is possible to realize an open protocol compatible with the conventional method. is there.
  • the GUI controls the operation of the GUI, checks the consistency of data to be transmitted, assists input, changes the state of the GUI according to the state of data, and notifies the server. On the basis of the description.
  • window information For example, the following structure is defined as window information.
  • window information [1] position window information [0] position.
  • X window information [n] size.
  • Window information [1] .Position.y Window information [0] .Position.y; To fix the size of the window, change the window information [n] .size.x and change the window information [n] .size.y after providing a variable that can be changed to a variable and a Z impossible attribute. It should be made impossible. [0094] As described above, according to the window system or the multi-window system in the GUI environment, in the conventional programming method, when an event occurs, the related operation depending on the event state is performed when the event of the window and the application operation in the window occur. In contrast to the power that must be described one by one, the motion control according to the present invention makes it possible to simply and easily describe the complicated movement of an application based on simple and clear constraint conditions. .
  • the operation in the window system can be controlled by the description of the constraint condition is not only used when outputting the force data on the screen in the GUI environment, but the content processed using the window can be arbitrarily determined. It can be easily conceived by those skilled in the technical field of the present invention that the present invention can be applied to the realization of an output system (for example, a form printing system) for outputting to a medium (for example, paper). Needless to say.
  • an output system for example, a form printing system
  • a medium for example, paper
  • the present invention can be applied to the problem of parallel processing, which is a troublesome problem in procedural programming.
  • parallel processing there are roughly two types of operations. That is, some CPUs execute the algorithm of step S23-step S30, and the other is to construct variables and relational expressions by architecture like a data flow machine.
  • step S23 step S30 starting from the change of the variable value in step S22 in the algorithm of FIG. Can achieve parallel processing without being aware of direct parallel processing.
  • step S22 for another process a series of operations by changing the variable value in step S22 for another process is executed even during execution of step S23 to step S30 for a certain process.
  • the relational expression between the variables is, for example, a communication channel when physically realized on a parallel computer.
  • parallel processors are connected by complicated communication paths, and the communication cost differs depending on the paths.
  • this communication cost By expressing this communication cost by priority, it is possible to automatically select a data path.
  • the constraint Constraint with priority listed as an example of the constraint can be used.
  • the present invention can be applied to the entire system generally constructed.
  • system refers to a complex composed of a plurality of computers and special-purpose machines with different characteristics and network power connecting them, and is a general corporate system or social system. You.
  • the present invention when the present invention is applied to the entire system, it is conceptually very similar to the parallel processing realization method in the data flow machine, and the computer constituted by the present invention is It is connected to a variable that is an interface of another computer via a variable that is an interface between them.
  • the relational expression between the variables is the communication path, and the communication cost is the priority. Therefore, according to the present invention, the entire system can be designed and constructed.
  • the present invention provides an event that solves a problem composed of arbitrary constraints by changing the value of a variable in response to an instruction (event) from an external unit (such as a user) and propagating the constraint. It deals with the principle of driving calculation.
  • the existing procedural programming language is used in the function definition holding means and function definition execution means as described above, the combination with the existing programming language is also shown in Fig. 18. It assumes that it is possible. Therefore, it will be described in further detail that the present invention can be integrated with an existing programming language.
  • the function defconstraint creates a solution expression for the symbols (variables) a and b from the arguments in order to realize the data structure of FIG.
  • each data may be shared, and the relationship between variables and data is not necessarily one-to-one. Absent. For this reason, when changing certain data, whether or not it is related to a particular symbol is usually not powerful when assigning a value to a variable. Therefore, such a relational structure between variables and data poses a problem when implementing the constraint elimination of the present invention, and will be described.
  • FIG. 22 shows an example in which the symbol c indicating the same data as the symbol b has been added, and the internal data structure of the ordinary LISP language centering on the symbols a, b, and c has been extremely simplified.
  • the LISP language all symbols are recorded in knockouts and stored by namespace, so the package power is also described here. Also, since the standard namespace name is “user”, the symbols a, b, and c are registered in “user”. In this example, the symbol b is also registered in another package.
  • the function setf that executes the substitution of the force value must perform matching with the constraint expression defined by the function defconstraint2 above.
  • the data passed to the function setf is a pointer indicated by (*) in FIG. 22 in ordinary LISP, and there is no information to be matched. Therefore, in the case of such a simple example, a method is conceivable in which not only the evaluation result but also the information of the evaluated expression is retained until the function setf is executed.
  • it becomes a very complicated expression so the data to be carried around becomes huge, and it is difficult to cope with the case where b [l] is changed by (setf (aref c 1) 12).
  • FIG. 23 shows an example of the data structure in the figure.
  • the array reference by the function aref indicated by (*) in FIG. 23 also has information of the array itself, not only the pointers in the array so as to be entered in the opposite direction. All data including sequence information Is bound, and saves various information so that the information of the symbol can be tracked.
  • the fusion with the functional programming language (A) allows the present invention to be applied on the LISP language, and makes it ideal as an implementation on a functional programming language, for example, setf Since the matching of constraint expressions is required every time an assignment operation such as is performed, the execution efficiency deteriorates in principle. In particular, when matching with a constraint expression in the opposite direction at the time of substitution (matching in the opposite direction), it is not possible to determine whether the definition of the relevant constraint expression exists unless the user goes back to the upper level. For example, only the index information such as [1] is effective at the time of the pointer. Even a simple constraint expression has a structure such as a [x] and b [x]. Then, it is only possible to judge whether there is a constraint to be matched only when there are limited special conditions.
  • a function having local variables and a loop structure, including all the basic elements of the C language, is interpreted as follows.
  • the present invention can be applied in combination with a design method.
  • development design methods There are many different types of development design methods.Firstly, analyze the requirements to be realized, then determine the specifications of the target to be developed to fulfill the requirements, and then satisfy the specifications. Developing a program is a common concept. However, in the case of the conventional procedural programming method, no matter what development method was used, it was ultimately necessary to describe the behavior of the CPU as program code. Meanwhile, declarative programming The method has the potential to solve this problem, but as mentioned at the beginning, the problem is that the execution efficiency of the computer is not good. For this reason, current general programming tasks and V often refer to procedural programming techniques, for example.
  • One of the system design techniques is data-centered orientation. Although data-centric orientation is known as a method for successfully designing business systems, even if a system design that fulfills the requirements is performed by this, coding work is ultimately required, and program code is required. Must be described as CPU behavior. Even when software engineering has been developed, the description of the movement of the CPU essentially depends on the experience and intuition of the programmer, and the development and design work still existing in the area of human creative work is difficult. It is the present situation. Tools to reduce development design work include CASE tools. However, while they could reduce development effort, they still did not solve the essential problem of eliminating the need for humans to describe CPU behavior.
  • the present invention although it is necessary to consider the movement of the computer, there is no need to consider the complicated movement as in the related art. In other words, the programmer is freed from the task of directly describing the behavior of the CPU, which is a problem common to various design methods, and does not need to perform creative work during coding. Therefore, according to the present invention, as a development of a tool similar to the CASE tool or the CA SE tool and other tools, it is possible to automatically generate a program code from the specification, thereby realizing automatic programming.
  • each point is a three-dimensional vector represented by a vector having three coordinates (X, y, z)
  • the rotation of each joint is represented by a 3 ⁇ 3 rotation matrix. Note that this rotation matrix may further include a translation component to form a 4 ⁇ 4 matrix.
  • A, B, C, and D indicate rotation matrices of the corresponding joints.
  • the rotation matrices A and D are the angles of the motors that control the joints, this can be applied to mouth bot control. Also, if the three-dimensional coordinates a–e are perspective-transformed and rendered on a display device, etc., this is the same as when applied to computer graphics. There is as well.
  • each element in the chemical formula In order to treat each element in the chemical formula as an object, define it as a class for each type of element and instantiate the element you want to use as necessary.
  • Each element object has binding conditions with other elements and element properties as constraints.
  • combinations of elements are managed by compound objects, and are represented by registering the element objects in the compound object.
  • the properties and combination conditions when combined are used as constraint expressions.
  • the present invention can efficiently represent chemical phenomena, physical phenomena, and the like. This is a modeling of a certain situation and a simulation of a phenomenon with respect to the occurrence of an event. The elimination of the constraints on the change itself is the specific phenomenon itself. It goes without saying that this method can be used effectively in many simulation fields, not limited to chemical phenomena and physical phenomena.
  • the present invention is typically applied to linear programming such as a simplex method. It is applicable that the constraint conditions described in the method, the integer programming method, the transportation problem, etc. can be applied if the user can input the constraint conditions considering the processing procedure of the constraint propagation for the target problem. It is obvious for a trader.
  • the -Euron model in a neural network can be described by a constraint equation using a threshold as a variable. From this point of view, the -Euron model connection of the neural network is a special form of the constraint relation handled in this method, and can be regarded as a subset.
  • Setting the threshold value of the neuron model is an operation of setting the value of a variable, and can be regarded as programming by the method described in the present invention. Therefore, the present invention can be applied to a neural network. That is, according to the present invention, it is possible to realize a learning method by setting a part or all of the thresholds in consideration of a motion that is not merely adjusted automatically.
  • an object of the present invention is to provide a storage medium storing software program codes for realizing the functions of the constraint condition solving apparatuses 100, 200, 300, and 400 of the above-described embodiment in a system or an apparatus.
  • the present invention can also be achieved by supplying and executing the program code stored in the storage medium by the computer (or CPU or MPU) of the system or the device.
  • the readout program code itself is stored in the storage medium.
  • the storage medium storing the program code and the program code constitute the present invention.
  • a storage medium for supplying the program code a ROM, a flexible disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a CD-R, a magnetic tape, a nonvolatile memory card, and the like can be used.
  • FIG. 1 is an overall configuration diagram showing basic components of a constraint solving apparatus according to a first embodiment of the present invention.
  • FIG. 2 is a flowchart showing an operation procedure of the constraint condition solving device according to the first exemplary embodiment of the present invention.
  • FIG. 3 is an overall configuration diagram of a constraint solving device according to a second embodiment of the present invention.
  • FIG. 4 is a diagram showing an example of an embodiment in which a constraint condition storage unit of the constraint condition solving device according to the first embodiment stores constraint conditions in a storage area of a computer.
  • FIG. 5 is a diagram showing an example of a data structure relating to an accounting calculation problem.
  • FIG. 6 is a diagram showing an example of a storage form of a constraint condition relating to an accounting calculation problem.
  • FIG. 7 is a diagram showing an example of a data structure.
  • FIG. 8 is an overall configuration diagram of a constraint condition solving device according to a third embodiment of the present invention.
  • FIG. 9 is a diagram showing an execution procedure of a solution by the constraint condition extracting means.
  • FIG. 10 is an overall configuration diagram of a constraint condition solving device according to a fourth embodiment of the present invention.
  • FIG. ll A conceptual diagram of a system for displaying data in combination with a Web server.
  • FIG. 12 is a diagram showing an example of information and constraints stored in a function type definition holding unit and a constraint condition storing unit in the system shown in FIG.
  • FIG. 13 is a diagram showing an example of describing a relationship between data and a user interface by a constraint condition in a general window interface.
  • FIG. 14 is a diagram showing an example of a multi-window system.
  • FIG. 15 is a diagram conceptually showing a client-side configuration in a client Z server system that realizes a window system.
  • FIG. 16 is a diagram for explaining that a GUI control unit controls the operation of each part in a GUI client.
  • FIG. 17 is a diagram showing a solution procedure in a conventional declarative programming technique.
  • FIG. 18 is a diagram conceptually showing the positioning of a conventional programming language environment and a constraint solving system for solving a constraint condition according to the present invention.
  • FIG. 19 is a diagram conceptually showing the configuration of a conventional programming language environment.
  • FIG. 20 is a diagram showing a concept of classifying a data definition and a constraint expression.
  • FIG. 21 is a diagram showing an example of an operator when accessing a constraint condition of an array structure.
  • FIG. 22 is a diagram showing an example of a very simple internal data structure of a normal LISP language.
  • FIG. 23 is a diagram showing an example in which the basic data structure of the LISP language can be bidirectionally input.
  • [24 (a)-(h)] is a diagram showing an example of a screen on which a user inputs constraints and values and outputs calculation results and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Game Theory and Decision Science (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Marketing (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

 計算機上でのデータ処理手順であるアルゴリズムを記述することなく、対象問題を少ない計算時間で確実に解決することを目的とする。解決手段としては、対象問題に関する制約条件及び当該制約条件に用いられる変数の初期値または変動値が変数値設定手段2により設定されると、制約条件抽出手段3はその変数に関連した制約条件を抽出して、制約条件解算出手段4は各制約条件ごとの解を順次求め、変数値再設定手段5はこの求めた解を新たな変数値として各制約条件の解を求めることを繰り返すように構成したので、解を求める道筋が明確になるとともに、格段に単純化された各制約条件を解けばよいことから最終的な解まで確実に到達することが可能となり、これにより演算処理を格段に高速化させることができるようになる。

Description

明 細 書
制約条件解決方法、制約条件解決装置、及び制約条件解決システム 技術分野
[0001] 本発明は、任意の制約条件力 構成される問題に対する効率的な解決に関し、特 に、制約伝播の処理手順が考慮された制約条件及び変数値の設定のみで実行可 能な制約条件解決方法、制約条件解決装置、及び制約条件解決システムに関する ものである。
背景技術
[0002] 様々なアプリケーションプログラムに対する現在の一般的なプログラミング手法は、 例えば、 C言語、 JAVA等のようなプログラミング言語を使って、データ構造を手続き 的に宣言した上でそのデータの処理手順 (アルゴリズム)をユーザが逐次記述する手 続き型プログラミング手法が主流である。コンパイラの最適化機能により最適化が図 られること等を除けば、この手続き型プログラミング手法によるデータの処理手順は、 計算機が実際に実行する処理手順と一致しているのが原則である。したがって、手 続き型プログラミング手法は、計算機 (CPU)の動きを詳細に記述することによって各 種の問題に柔軟に対応できる解決方法である。
[0003] このような CPUの動きを記述する手続き型プログラミング手法に対するものとして、 宣言的プログラミング手法がある。これは、対象問題に対応した制約条件がユーザに より定義されるとその後の実際のデータ処理手順については、 CPUにすベて任せて しまう手法であり、特定の問題領域には好都合な問題解決手法であるとして従来より 用いられて 、る(例えば、特許文献 1または特許文献 2)。
前記宣言的プログラミングにおいては、ユーザは、制約条件を記述するのみで解が 出力されるのを待つだけで良い半面、 CPUがデータ処理をどのような手順で行うか については干渉できないという特徴を有している。現在の計算機環境では、前述した ような大きく 2つに分けられるプログラミング手法のうち、手続き型プログラミング手法 が主に使用されている。
[0004] この手続き型プログラミング手法によってプログラム開発を行う場合、ユーザがデー タ構造の定義を行った時点で、そのデータ構造によって記述すべきアルゴリズムも連 動して事実上決定されてしまうのが殆どである。しかもそのアルゴリズムは類似した対 象問題では同様な手順で表現され、パターン化することが可能である。
[0005] このため、各アプリケーションで同じようなプログラミング作業が重複して行われるこ とが多ぐプログラム開発の非効率ィ匕が従来より問題となっていた。この問題に対処 するため、現在では汎用的に使用されるプログラミング部分のライブラリイ匕やオブジェ タト指向に基づくソフトウェア開発によってソフトウェアの部品化を積極的に導入し、 既存のプログラムにない部分に集中したプログラム作業の高効率ィ匕が推進されてい る。
[0006] 特許文献 1:特開平 5— 3548号公報
特許文献 2:特開平 9 81387号公報
発明の開示
発明が解決しょうとする課題
[0007] し力しながら、現実的にはライブラリ化されるソフトウェア部品は膨大であってし力も 年々その数は増カロしている。各プログラマーが、この膨大な部品群力も対象問題に 最適なものを抽出する際には選択ミスが少な力 ずあり、再度選択し直すことで開発 作業をやり直さなければならない危険性があることを考慮すると、ソフトゥ ア部品を 利用せずに始め力も各プログラマーがコーディング作業を行うケースも多々あるという 問題があった。
また、オブジェクト指向によるソフトウェア開発は一定のスキルが要求されることから 、どのプログラマーでもオブジェクト指向のプログラミング作業ができるとはかぎらず、 全体的にみれば作業効率の向上がさほど上がらないという問題があった。
このように、プログラム開発作業には、個人技量に依存した閉鎖的な面や非効率的 な面が依然として解消して ヽな ヽと 、う問題があるのが現状である。
[0008] 一方、前述したように、宣言的プログラミング手法では、少なくとも制約条件の記述 と、当該制約条件で用いるデータ値とが必要であって、実際の問題に適用した場合 、その制約条件及びデータの数は非常に多くなる。ここで、実際の問題とは、例えば f (X , X , · ··, X )≤b (k= l, 2, · ··, m)の連立式を満たし、且つ、評価関数 f ( k 1 2 n k 0
X , X , · ··, X )を最小値にするような組合せ最適化問題である。つまり、図 17に示
1 2 η
すように、 m個の連立式及び評価関数 fで表した制約条件を計算機側に与えると、
0
計算機(図 17の制約解消系)は全ての制約条件を同時に満たすデータを一括して 探索することが行われる。
[0009] この組合せ最適化問題は、変数 X及び連立式の数が増加するほど解空間における 組合せの可能性が指数関数的に増加することから、計算機上での処理が複雑かつ 膨大となる。しかも、特に関数 f
kが非線形関数の場合は、分散した複数の解空間が存 在することもあり、解が存在しない解空間をひたすら探索してしまって無限ループに 陥ることのないよう効率的に解を求める工夫等が必要になる。なお、組合せ最適化問 題の他にも、組合せ充足問題、整数計画法などについても同様の問題点がある。
[0010] さらに、制約条件の条件式または入力データの一部を変更する必要が生じたときは
、先に計算した同様の制約条件問題をまた最初力 計算し直さなければならず、リソ ースの無駄使いになるとともに非常に非効率的であるという問題があった。
[0011] そこで、本発明は前述した問題点に鑑み、計算機上でのデータ処理手順であるァ ルゴリズムを記述することなぐ対象問題を少ない計算時間で確実に解決することを 目的としている。
課題を解決するための手段
[0012] 本発明の制約条件解決方法は、ユーザにより対象問題に関する制約伝播の処理 手順が考慮された制約条件を入力する制約条件入力処理と、前記制約条件入力処 理により入力された制約条件に用いられる変数の初期値または変動値を設定する変 数値設定処理と、前記制約条件入力処理により入力された制約条件の中から、前記 変数値設定処理により設定された値に関係する制約条件を抽出する制約条件抽出 処理と、前記制約条件抽出処理により抽出された制約条件全てに対して、前記ユー ザにより考慮された制約伝播の処理手順に基づいて前記変数の初期値または変動 値を代入して当該制約条件の解を算出する制約条件解算出処理と、前記制約条件 解算出処理により算出された解を前記変数値設定処理での新たな変動値として設定 する変数値再設定処理とを含み、前記変数値再設定処理は、再設定される新たな 変動値が存在する間は、前記制約条件抽出処理及び前記制約条件解算出処理を 繰り返し行うことを特徴とする。
[0013] 本発明の制約条件解決方法は、制約条件を入力する制約条件入力処理と、前記 制約条件入力処理により入力された制約条件に用いられる変数の値を設定する変 数値設定処理と、前記制約条件入力処理により入力された制約条件の中から、前記 変数値設定処理により設定された値に関係する制約条件を抽出する制約条件抽出 処理と、前記制約条件抽出処理により抽出された制約条件の解を算出する制約条 件解算出処理とを含む制約条件解決方法において、前記制約条件は、現在の配列 要素数を含んでいること、前記変数に複数個の値を持たせること、構造体配列の要 素値による検索を含んでいること、及びデフォルト規則による文字列数値変換の少な くとも何れかを特徴として構成される。
[0014] 本発明の制約条件解決装置は、ユーザにより対象問題に関する制約伝播の処理 手順が考慮された制約条件を入力する制約条件入力手段と、前記制約条件入力手 段により入力された制約条件に用いられる変数の初期値または変動値を設定する変 数値設定手段と、前記制約条件入力手段により入力された制約条件の中から、前記 変数値設定手段により設定された値に関係する制約条件を抽出する制約条件抽出 手段と、前記制約条件抽出手段により抽出された制約条件全てに対して、前記ユー ザにより考慮された制約伝播の処理手順に基づいて前記変数の初期値または変動 値を代入して当該制約条件の解を算出する制約条件解算出手段と、前記制約条件 解算出手段により算出された解を前記変数値設定手段での新たな変動値として設定 する変数値再設定手段とを含み、前記変数値再設定手段は、再設定される新たな 変動値が存在する間は、前記制約条件抽出手段及び前記制約条件解算出手段が 繰り返し行うことを特徴とする。
[0015] 本発明の制約条件解決装置は、制約条件を入力する制約条件入力手段と、前記 制約条件入力手段により入力された制約条件に用いられる変数の値を設定する変 数値設定手段と、前記制約条件入力手段により入力された制約条件の中から、前記 変数値設定手段により設定された値に関係する制約条件を抽出する制約条件抽出 手段と、前記制約条件抽出手段により抽出された制約条件の解を算出する制約条 件解算出手段とを含む制約条件解決方法において、前記制約条件は、現在の配列 要素数を含んでいること、前記変数に複数個の値を持たせること、構造体配列の要 素値による検索を含んでいること、及びデフォルト規則による文字列数値変換の少な くとも何れかを特徴として構成される。
[0016] 本発明の制約条件解決システムは、複数の機器が互いに通信可能に接続されて いる制約条件解決システムであって、上記機器のうち少なくとも 1つの機器は、前記 何れかに記載の制約条件解決装置の機能を有することを特徴とする。
発明の効果
[0017] 本発明によれば、対象問題に対する制約伝播の処理手順が考慮された制約条件 、及び制約条件に用いられる変数の値 (初期値)を入力すると、当該変数の値に関 連する制約条件を抽出した上でその制約条件のそれぞれを満たす解を導くとともに 、導かれた解を変数の新たな値 (変動値)として代入して前記各制約条件の解を求め る処理を繰り返すように構成したので、他の制約条件との AND関係をもつことなく各 制約条件単独での解を求めることが可能となり、計算処理を高速に行いながら最終 解を得ることができる。
発明を実施するための最良の形態
[0018] 以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
図 18は、従来のプログラミング言語環境と、本発明の制約条件の解を求める制約 解消系との位置付けを概念的に示した図である。図 18に示すように、従来のプロダラ ミング言語環境には、プログラム言語処理系と、プログラムコードと、データとがあって 、プログラム言語処理系がプログラムコード及びデータを制御する形態になって 、る 。本発明では従来のプログラミング言語環境におけるデータの他に、制約式 (制約条 件)及び制約解消系を備え、それぞれが相互に情報のやり取りを行うことができるよう に接続される構成である。
また、図 19も従来のプログラミング言語環境であるが、前記従来の制約解消系をラ イブラリの形で構成したときの構成図である。
[0019] (第 1の実施形態)
まず、本発明の第 1の実施形態における制約条件解決装置の基本構成及びその 基本動作について説明する。
<制約条件解決装置 100の基本構成 >
図 1は制約条件解決装置 100の基本的な構成要素を示す全体構成図である。 図 1に示すように制約条件解決装置 100は、制約条件入力手段 1と、変数値設定 手段 2と、制約条件抽出手段 3と、制約条件解算出手段 4と、変数値再設定手段 5と を含んでいる。
[0020] 制約条件入力手段 1は、ユーザが計算機 (CPU)による制約伝播の処理手順を頭 に思い浮かべて決定した制約条件を入力するためのものである。
変数値設定手段 2は、制約条件入力手段 1により入力された制約条件を構成する 各変数にユーザが指定した具体的な初期値を設定するためのものである。また、詳 細は後述するが、各変数に対して初期値以外の値 (以下、変動値と称する)を設定 することも行う。
また、制約条件入力手段 1及び変数値設定手段 2は、いわゆるデータ入力用の U ZIであり特に限定するものではなぐ入力を容易に行える様々なツールを含むもの であり、ユーザが入力した値を確認することができる表示 (モニタ)画面を備えることが できる。なお、制約条件解決装置 100により計算された値をユーザに提示する出力 表示手段 (不図示)を含む構成にしてもよい。この出力表示手段も出力値を確認する ことができる表示 (モニタ)画面を備えることができる。さらに、制約条件入力手段 1 (変 数値設定手段 2を含む)及び出力表示手段の一つにして、データを入出力が行える 入出力手段であってもよい。
[0021] 制約条件抽出手段 3は、入力された制約条件の中から、初期値または変動値が設 定された各変数を構成要素として有する制約条件を抽出する。本実施形態では、制 約条件抽出手段 3は、該当する制約条件をまとめて抽出するように構成したが、後述 する制約条件解算出手段 4によってある 1つの制約条件の解を求めた後、次の制約 条件を抽出することを順次繰り返すように、一つずつ抽出するようにしても構わな 、。
[0022] 制約条件解算出手段 4は、初期値または変動値を代入した各制約条件を解くが、 本発明の特徴として、制約条件すべてを満足するようないわゆる連立解として一括し て解くのではなぐ各制約条件の一つずつを対象にして解くようにしている。このため 、ある変数の値が設定または変更されると、制約条件の 1回目の解がシーケンス的に 所定の順序に従って順次求まることになる。ここで、前記所定の順序とは、ユーザ (プ ログラマー)が制約伝播の処理手順を考慮して入力した制約条件で示す順序である
[0023] ここで、制約条件の具体例を以下に示す。
(A)制約条件の例 1
宣言的プログラミング手法を容易に理解するために説明として使用される典型的な 例題としては、以下の会計計算問題が挙げられる。
いま、 4つの物品の値段と個数をそれぞれ、(1) 100円, 2個、(2) 200円, 3個、(3 ) 300円, 2個、(4) 50円, 3個としたとき、値段、個数、及び小計の配列変数を用い て、本発明のいう制約条件をあらわせば、
値段 [1] = 100、値段 [2] = 200、値段 [3] = 300、値段 [4] = 50 …(式 1) 個数 [1] = 2、個数 [2] = 3、個数 [3] = 2、個数 [4] = 3 · · ·(式 2)
小計 [i] =値段 [i] X個数 [i] (i= 1一 4) · · · (式 3)
合計 =∑小計 [i] (i= l一 4) …(式 4)
となる。(式 1)及び (式 2)は、制約条件のうちの特に変数データの設定である。
[0024] 前記 (式 1)一(式 4)の記述から明らかなように、手続き型プログラミングの場合に必 要な 0→合計 (→は代入を表す、以下同じ)、合計 +小計 [1]→合計、合計 +小計 [2] →合計、合計 +小計 [3]→合計、合計 +小計 [4]→合計という繰り返しループの記述 力 宣言的プログラミングの場合には不要である。
[0025] (B)制約条件の例 2
string name, message, outputs, output; ··· (式 5ノ
name = "特許太郎" · · ·(式 6)
message = "こんにちは。この文章は HTML文書の本です。 " …(式 7) outputs = 名目 ιΤ & name & メッセージ & message; …(式 8)
output = " < HTML > < BODY > " & outputs &く/ BODY > < /HTML > · · · ( 式 9)
前記 (式 5)が変数データの定義、(式 6)—(式 7)が変数への値代入、及び前記 (式 8)— (式 9)が具体的な実行式である。また、 &演算子は文字列連結演算子である。 前記(式 6)—(式 7)のように、文字列 name、 messageを任意に書き換えて outputで出 力される HTML用テキストが生成される。
[0026] (C)制約条件の例 3
文字列 strに別の文字列 addを次々連結して!/、く動作を記述した制約条件を次に示 す。
string str; … CIO)
string add; ··· (式 1丄ノ
str = str & add ··· (式 12)
前記 (式 10)及び (式 11)は変数データの定義であり、前記 (式 12)が具体的な実 行式である。本例での文字列 strの値変更による制約伝播は、文字列 addの値が変更 されるたびに、文字列 strへ文字列 addの値が追加されることが繰り返される。
[0027] ここで、制約条件は、前記 (A)— (C)で示すような等号または不等号で表される式 である必要はないことに留意されたい。そして、制約式の評価は最終的に真カ 為を 答えとし、 C言語等と同様に例えば f (x)だけが制約条件として記述されていた場合に はこの f (X)を実行し、結果が真または偽かによつて判断され処理される。
[0028] 変数値再設定手段 5は、制約条件抽出手段 3及び制約条件解算出手段 4により 2 回目以降の解を求めるために、制約条件解算出手段 4で求めた 1回目の解を各変数 の新たな値、すなわち変動値として設定する。そして、一連の制約条件の解を求める 処理は、制約条件解算出手段 4で変更される解が存在しなくなって最終解に到達し た後、制約条件解決装置 100が別途終了指令を受信したときに終了する。
[0029] 前述したように、本発明の特徴の 1つは、抽出した各制約条件の変数に値を代入し て制約条件 1つずつを順次解 、て 、くことを繰り返すことである。このためには制約 伝播の処理手順を考慮して制約条件にあらかじめユーザが設定しておくことが前提 となる。
[0030] なお、制約条件解算出手段 4による処理中に、解を求めることができない解不能、 または解を特定することができない解不定の状態に陥った場合は、計算機に予め定 義した適切な例外処理を実行するようにしておくことで、プログラムエラーとして出力 されるようにするが、これはユーザが解けない制約条件を定義したことを意味する。本 実施形態の制約条件解決装置 100において、ユーザは、本来解ける答の処理手順 になるように、計算機の処理手順を考慮した制約条件を設定しなければならな!/、負 担を負うが、これは従来の手続き型プログラミング作業に較べはるかに楽な作業であ る。
[0031] <制約条件解決装置 100の全体動作 >
次に、前述した構成の制約条件解決装置 100の全体動作について説明する。 図 2は、制約条件解決装置 100の動作手順を示すフローチャートである。 まず、ステップ S 20で、制約条件に用いられる変数に初期値が設定されているか否 かを判断する。前記判断の結果、制約条件入力手段 1により入力された制約条件を 構成する各変数に対してまだ初期値が設定されていない場合、ステップ S21で、変 数値設定手段 2は、ユーザが指定した初期値を設定する。
[0032] 次に、ステップ S22で、制約条件抽出手段 3は、各変数の値が変更されていないか を判断する。制約条件として変数に初期値を設定したときは、最初の変更であるとし て次のステップ S22へ進む。一度、初期値を設定後、後述するステップの処理が終 了すると、制約条件解決装置 100は、このステップ S22で新たな変数の値変更があ るまで待ちの状態が維持されている。なお、本フローチャートには「終了」を示してい ないが、動作終了指示命令が外部から入力されたとき、制約条件解決装置 100は、 所定の動作処理 (不図示)を実行して一連の動作を終了するように制御されて 、る。
[0033] ステップ S23では、制約条件抽出手段 3は、ステップ S22で変更された変数を要素 とする集合 Sを生成する。ここで集合 Sを生成するとは、例えば、計算機上のある記憶 領域に、前記変更された変数の名前や、または変数の配列要素を識別できるサフィ ックスを書き込むこと等を意味する。
さらに、制約条件抽出手段 3は、前記集合 Sに要素が存在する力否か、すなわち、 変数値設定手段 2により値を変更した変数があるか否かを判断する (ステップ S24)。 前記判断の結果、集合 Sに要素があるとき (集合 Sが空集合でないとき)は、制約条件 抽出手段 3は、集合 Sから要素 Smを 1つずつ取り出す (ステップ S25)。
[0034] 次に、ステップ S26で、前記取り出した要素 Smに関連した制約条件の集合 Qを生 成する。つまり、要素 Smを含んで構成される制約条件があれば、制約条件抽出手段 3はこれを集合 Qに出力する。次に、ステップ S27で前記集合 Qに要素がある間は、 以下のステップ S28—ステップ S30を繰り返して行う。
[0035] ステップ S28で、制約条件解算出手段 4は、集合 Qから 1つの制約条件 Qmを取り 出す。そして、制約条件解算出手段 4は、ステップ S28で取り出した制約条件 Qmを 解 、て、制約条件 Qmを満たすために変更するべき変数及びその値を求める (ステツ プ S29)。
ここで、ステップ S29における処理の詳細な内容は以下に示す通りである。
(1)制約条件 Qmが満たされているかどうかをチェックして、満たされているときは本 ステップ S29を終了する。
(2)制約条件 Qmを満たすために変更するべき変数とその値を求める。
(3)前記(2)で求めた変数の値が正 、かどうかを検証する。
前記(2)はステップ S29の処理として必須である力 その他の(1)及び(3)につ ヽ ては必ずしもそうとは限らない。対象問題に応じてユーザが必要力否かを判断し、制 約条件として明示的または黙示的に指示するように構成してよい。
[0036] さらに、ステップ S30で、変数値再設定手段 5は、ステップ S29で求めた変数に求 めた値を再設定して、その後の処理ではその再設定した値を基に制約条件が解か れる。
したがって、ある変数が変更される場合、その変数に関連する複数個の制約条件 があれば、 1つずつ取り出された制約条件ごとの解が順次求まり、同時に、得られた 解によって集合 Sの最後部にその変数が追加されるようになる。
[0037] 一方、ステップ S28によって制約条件 Qmが取り出された結果、集合 Qに要素がな いとステップ S27で判断された場合、一連の処理はステップ 24へ戻り、集合 Sから次 の変数 Smが取り出されて同様の処理が繰り返される。
この結果、集合 Sに要素がなくなったとき、制約条件解決装置 100の処理としては 安定状態に入った状況に相当することになり、前述したように、制約条件に用いられ る任意の変数に新たな値が設定されるまでステップ S22で待ちの状態になる。
[0038] 本実施形態では、ステップ S 25において集合 Sに複数の変数 Smを含んでいたとき の変数 Smを取り出す順序や、ステップ S 28にお 、て制約条件 Qmを取り出す順序 は、制約伝播の処理手順を考慮して、ユーザがその順序 (優先順位)を明示的に指 定して計算機に行わせる制約条件の設定方法にしている。具体的には例えば、その 優先順位は制約条件の記載した順序であると 、うようにあら力じめ決めておくことで 達成される。この具体例を以下に示す。
[0039] 前述した会計計算問題を再び用いる。
制約条件は、
値段 [1] = 100、値段 [2] = 200、値段 [3] = 300、値段 [4] = 50…(式 1) 個数 [1] = 2、個数 [2] = 3、個数 [3] = 2、個数 [4] = 3 · · ·(式 2)
小計 [i] =値段 [i] X個数 [i] (i= 1一 4) · · · (式 3)
合計 =∑小計 [i] (i= l一 4) …(式 4)
である。
前記 (式 1)一(式 4)の記載順序には意味がある。例えば、 1番目に記載した制約条 件 (制約式)が最も優先順位が高ぐ以下順に低くなるものとする。この場合、(式 1) 及び (式 2)により各変数に値を設定することが優先的に行われ、(式 3)、(式 4)はそ の後に制約式を計算機内部へ登録することを意味している。
制約式の実行順序は実行時に決まるが、集合 S、集合 Q力 要素を取り出す順番 が不確定である。これを決定するためには明示的な方法として、記載順序で判断した り制約式に優先順位を設定する方法がある。
[0040] その他、前述した優先順位を計算機 (CPU)が自動的に行うように構成してもよ!/ヽ。
この場合、ユーザは、計算機がどのような順序で行っても計算過程で矛盾が生じない ような内容及び記載順序力 なる制約条件を設定する必要があるが、これはユーザ がプログラマ一として通常の知識や経験を備えて 、れば容易に成し得る作業である
[0041] 次に、図 2のフローチャートに示す動作手順を、前述した会計計算の例を用いて具 体的な制約条件の変数値の変化を追いながら説明する。
例えば、値段 [2]を、 200→250に変更したときを想定する。初期値の設定ではなく データの変更なので、ステップ S20力らステップ S22へ進む。ステップ S23によって、 集合 S = {値段 [2]}となる。ステップ S24で集合 Sには要素があると判断されるので、 ステップ S25で値段 [2]が取り出される。
[0042] 次に、ステップ S26で、値段 [2]だけに関連する制約条件である、小計 [2] =値段 [2]
X個数 [2]が集合 Qの要素となる。つまり、集合 Q= {小計 [2] =値段 [2] X個数 [2]}が 生成される。
次に、ステップ S27で集合 Qには要素があると判断されるので、ステップ S28で、小 計 [2] =値段 [2] X個数 [2]という制約条件が取り出される。ステップ S29で、制約条件 の解、つまり、小計 [2] = 250 X 3 = 750が計算されて、ステップ 30では、小計 [2]にこ の変更値 750を設定し、小計 [2]を集合 Sに追加して、集合 S= {小計 [2]}を生成する
[0043] そしてステップ S27に戻る力 先の集合 Qから 1つしかな力つた要素を取り出してし ま 、集合 Qは空集合であるので、この後ステップ S 24へ進む。
ステップ S24では、先ほど追カ卩した集合 Sの小計 [2]を判断して、ステップ S25でこ の小計 [2]を取り出す。
[0044] 次に、ステップ S26で、小計 [2]だけに関連する制約条件である、合計 =∑小計 [i] ( i= l一 4)を要素とする集合 Qを生成する。つまり、
集合 Q= {合計 =∑小計 [i] (i= l一 4) }が生成される。ステップ S28で当該制約条 件を取り出し、ステップ S29で、制約条件の解、つまり、合計 = 200 + 750 + 600+ 1 50 = 1700を計算して、ステップ S30で、変数の(合計)にこの変更値 1700を設定す る。同時に変数の (合計)は集合 Sへ格納される。続いて、ステップ S27、 S24、 S25、 S26が実行され、関連のある制約式が存在しないので、集合 Qには追加される要素 がない。
この時、計算時間を短縮するために以下のように単純ィ匕することが可能である。す なわち、ステップ S29で、制約条件の解を求める時に加算をもう一度行うのではなぐ 変化した値のみを利用して差分解消する。そして、ステップ S30では、合計に関連す る制約条件は存在しな 、ことがわ力つて 、るので、計算時間短縮のために集合 Sに は要素を追加しな 、ようにする。
[0045] 再びステップ S27に戻る力 先の集合 Qから 1つしかなかった要素を取り出してしま い集合 Qは空集合であるのでこの後ステップ S22へ進み、制約条件解決装置 100は 次に外部力ものデータ変更があるまで待ち状態になる。
なお、前述した制約条件解決装置 100の動作におけるステップ S28の処理では、 集合 Qより制約条件 Qmを 1つずつ取り出してその解を求めていく処理を説明したが 、必ずしも 1つずつ取り出さなければならないことはない。制約式の解を同時に求め ることが可能な場合、集合 Qから 2以上の制約条件を取り出すこととする。これにより、 解決可能な対象問題をより広げることができるようになる。
さらに、制約条件 Qmの実際の解法は、会計問題のような単純な式変形で解くやり 方に限っていない。既存の式に関する解法はすべて使用可能であるものとしており、 これにより n次方程式の解法を導入することも認めて 、る。
[0046] また、別の具体的例として、制約条件に用いるデータの件数そのものを追カ卩 ·削除 するときの処理について説明する。
前述した会計計算の例では、値段及び個数の変数をそれぞれ配列で表現してデ ータ件数を各 4個に固定して制約条件を設定したが、データ件数そのものを変数に したときの制約条件を考える。現在の制約条件に値段 [5]、個数 [5]を加えて以下の ように変更する。
値段 [1] = 100、値段 [2] = 250、値段 [3] = 300、値段 [4] = 50、値段 [5] = 310· ··( 式 13)
個数 [1] = 2、個数 [2] = 3、個数 [3] = 2、個数 [4] = 3、個数 [5] = 3 …(式 14) 項目総数 = 5 …(式 15)
小計 [i] =値段 [i] X個数 [i] (iは任意の整数) …(式 16)
合計 =∑小計 [i] (i= l一項目総数) …(式 17)
[0047] 前述した処理を全く同様に行えば、
小計 [5] =値段 [5] X個数 [5] = 310 X 3 = 930、
合計 =∑ /J、計 [i] = 200 + 750 + 600 + 150 + 930 = 2630となり、未解決のままの 制約条件を残すことなく解を導くことが可能である。このような変更は変数または制約 条件の削除する場合でも同様であり、可変長配列などで表された変数の個数を変更 することも可會である。 [0048] これを実際の入出力手段 (例えば、制約条件入力手段 1)を用いてユーザが制約条 件及び値を入力する画面例を図 24に示す。なお、図 24の画面例は出力機能を有す る制約条件入力手段 1及び変数値設定手段 2の画面例に相当し、 UNIX上へ一般 的なプログラミング言語と同等の入出力インタフェースを持つ構造として実装した実 行例である。図 24 (a)—(h)の入出力は一連のものである力 便宜上、分けて表示し ている。
図 24 (a)のように、まず「 $」で示された UNIXプロンプトの後に、ユーザは「ripple」 を入力する(図 24 (b) )。これにより本発明の処理が実装されたプログラムがロードさ れて、画面上に「%」を示してユーザにデータの入力を促す(%以降がユーザの入力 データであり、改行されたその後すぐの行に、受信したデータ値や計算出力値を表 示している)。
[0049] そこでユーザは、初期値制約式入力する(図 24 (c)の 241)。 242の制約式はここ では合計計算を関数 配列全合計 0として抽象化しているが、図 21で示したような制 約式で表現することもできる。また、手続的なループ構造を直接記述することもできる (関数型言語との融合を参照)。そしてステップ S29の処理で合計計算の差分解消を 実現する時には、制約条件解決装置 100側が判断して自動処理され、ユーザは意 識していない。
[0050] 次に、ユーザは初期値を設定する(図 24 (d)の 243,244)。ステップ S22—ステツ プ S30に示した処理が実行される力 実行の効率を図るために明らかに必要ない時 には制約条件解決装置 100側の判断で実行させな ヽことができる。図 24 (e)の 245 では、「load」によって残りの入力値をファイル力 読み込む。この時点で小計、合計 は計算されて設定済となり、 246で「合計」を入力することによって、現在の合計値が 表示されて実行結果を取得できる。図 24 (f)の 247を入力すると、図 2のステップ S2 6が実行される。そして、計算途中の画面出力はないが、ステップ S22—ステップ S3 0に示した処理が実行され、 248の入力によって実行結果の合計値が表示される。 2 49, 250の入力は、制約条件に用いるデータの件数を追加設定している。そして、図 24 (g)の 251の入力よつて実行結果に合計値が表示され、図 24 (h)の 252の入力よ つて、終了指令の発行を行っている。 [0051] また、いくつかのデータ定義と制約式をまとめたものをクラス化概念における 1クラス として定義し、パラメータを与えて実例、すなわちインスタンス化させ、制約式と値をセ ットにするよう構成してもよい。これにより、設定される制約条件を複数に分割させるこ とができるので、必要最小限の処理のみを実行させる場合等に好都合となる。このク ラス化に関する概念を図 20に示す。このクラスは継承させることが可能であり、例え ば、図 20に示す変数 1、変数 2、及び制約式 1を有するクラス Aと、変数 3を有するク ラス Bとがあるとき、このクラス A及びクラス Bを継承し、さらに制約式 2を継承した図 20 のクラスを生成することができる。
[0052] なお、本実施形態の制約条件解決装置 100の構成及び動作から分かるように、本 発明では、例えば、すべての制約条件が制約違反をしないという評価式 (評価条件) を設定していない。従来の宣言的プログラミングでは、制約条件の解を求める際に当 該評価式に基づいて制約条件間で矛盾しないかを判断するように処理することが多 い。本発明では、制約条件の設定時に、矛盾が生じないようにユーザが設定すること を前提としているためである。したがって、制約条件解決装置 100は、最後に必ず解 を求めることが可能であり、解が求まらないときはユーザによる制約条件の設定誤りで ある。
実行時に制約違反の存在に関する評価式は必要ないが、補助機能として用意する ことによってデバッグ時等の問題発生時の対処やミスの発見に役立つことは言うまで もない。
[0053] 本実施形態の制約条件解決装置 100によれば、対象問題に関する制約条件及び 当該制約条件に用いられる変数の初期値または変動値が設定されると、その変数に 関連した制約条件を抽出して各制約条件ごとの解を順次求めて、この求めた解を新 たな変数値として各制約条件の解を求めることを繰り返すように構成したので、任意 のデータ構造と、そのデータ構造によるデータ間を連結させる制約条件とによって対 象問題を解決することができるようになる。
つまり、設定される制約条件は、従来の手続き型プログラミングのような対象問題を 解決するためのアルゴリズムを記述することなくこのアルゴリズムに相当する指令をデ ータ構造に含ませた上で制約伝播の処理手順に沿って記載し、すべての制約条件 が成立する最適解を求めずに制約条件 1つずつの解を求めるように構成したので、 解を求める道筋が明確になるとともに、格段に単純化された各制約条件 (例えば、 1 元の方程式)を解けばょ 、ことから最終的な解まで確実に到達することが可能で演算 処理を格段に高速ィ匕させることができるようになる。
[0054] また、問題の解決方法を制約条件において直接的に記述できるため、ユーザが従 来のようなプログラミング言語の特殊な専門知識を必ずしも有して 、る必要はなぐ対 象問題を容易に解くことができる。
[0055] (第 2の実施形態)
前述した第 1の実施形態では、制約条件解決装置 100において、制約条件入力手 段 1と、変数値設定手段 2と、制約条件抽出手段 3と、制約条件解算出手段 4と、変数 値再設定手段 5とを含むように構成したが、本実施形態の制約条件解決装置 200で は、第 1の実施形態の制約条件解決装置 100における各構成手段 1一 5に加えて、 制約条件格納手段 6及び変数値格納手段 7をさらに備えているのが特徴である。 なお、本実施の形態の制約条件解決装置 200の構成と、第 1の実施の形態におけ る制約条件解決装置 100とで共通する構成部分については同一の符号を付して、 詳細な説明を省略する。
[0056] 本実施形態の制約条件解決装置 200の全体構成を図 3に示す。
制約条件格納手段 6は、制約条件入力手段 1により入力された制約条件を所定の 記憶領域に格納する。また、変数値格納手段 7は、変数値設定手段 2により設定され た変数値 (初期値、変動値)を格納する。
また、本実施形態の制約条件抽出手段 8は、第 1の実施形態における制約条件抽 出手段 3の機能に加えて、新たに設定された制約条件または変動値を、前記記憶領 域に格納された制約条件または値と比較して、両者が一致しな 、場合のみ制約条件 の抽出を行う機能を有している。なお、制約条件抽出手段 8は前記比較を常に行う必 要はなぐ制約条件格納手段 6及び変数値格納手段 7から制約条件及び変数値を 抽出するようにしてもょ 、ことは言うまでもな!/、。
[0057] 図 4 (a)は、制約条件格納手段 6が計算機の記憶領域 (例えば、メモリ、磁気ディス クなど)へ制約条件を格納する形態例を示す図である。つまり、変数 Xを 3つの制約 式 (制約式 1、制約式 2、制約式 3)で参照する制約条件があるとし、この変数 Xに値 2 46が設定されたときの記憶領域の表し方を示して 、る。前述した会計計算問題の制 約条件をこの形式によって表したときの一例を図 6及び図 5に示す。
[0058] 例えば、図 4 (b)に示すように、数式 (x=y + z)は分割して格納される。ただし、この ような表し方に限定されるものではない。制約条件の格納形態として、値と制約式と でメモリ領域を必ずしも分割する必要はなぐ例えば制約式を構造として分割せずに 文字列などで持ってもよい。
また、図 5に示すようなデータ構造に限らず、例えば、以下に示すような記憶領域で も構わない。
•変数の値は種類分けされ、ある値はメモリ上のみに記録される力 他の値はファイル やデータベースへ記録されることで、記録領域上の値を永久的にしてもよぐまたは 時刻システム等において特別の意味を持たせるようにしてもよい。
•変数名をポインタで示す必要はなく、直接持ってもょ 、。
•変数の値を必ずしも直接的に保持することはな 、。
•プログラムのコンパイル時等では変数を識別する必要はないので、変数名は必須で はない。
•制約条件に用いる制約式はリストでなくてもよい。
•制約式リストを持たず、図 7に示すように、変数名力 制約式を検索する構成であつ てもよい。ただし、図 7に示すようなメモリとポインタ構造に限定するものではない。 その他、上記の変形による無数に存在するデータ型はすべて含むものとする。
[0059] 本実施形態の制約条件解決装置 200によれば、対象問題に関する制約条件及び 当該制約条件に用いられる変数の初期値または変動値を所定の記録領域に一時的 または永久的に保持するように構成したので、本実施形態の制約条件抽出手段 8は 、制約条件または変数値に変更が生じた場合のみ、変更された変数 Smに関連する 制約条件 Qmを解 、て Qmを満たすために変更すべき変数及びその値を求める処理 を行うことが可能となる。
これにより、制約条件に変更があつたとしても、複数の制約条件すべてについて最 初力 計算し直さなくても済む場合が生じ、計算時間の効率を図ることができるように なる。
[0060] (第 3の実施形態)
前述した第 1の実施形態の制約条件解決装置 100では、制約条件入力手段 1と、 変数値設定手段 2と、制約条件抽出手段 3と、制約条件解算出手段 4と、変数値再 設定手段 5とを含むように構成し、前述した第 2の実施形態の制約条件解決装置 20 0では、さらに、制約条件格納手段 6及び変数値格納手段 7を備えている構成にした 力 本実施形態の制約条件解決装置 300では、図 8に示すように、関数定義保持手 段 9及び関数定義実行手段 10を備えているのが特徴である。
第 1の実施形態の制約条件解決装置 100と、第 2の実施形態の制約条件解決装置 200のどちらであっても、関数定義保持手段 9及び関数定義実行手段 10をさらに備 える構成にすることができるが、説明を簡略化させるために制約条件解決装置 100 に付加した構成で説明することとする。
なお、本実施の形態の制約条件解決装置 300の構成と、第 1の実施の形態におけ る制約条件解決装置 100とで共通する構成部分については同一の符号を付して、 詳細な説明を省略する。
[0061] プログラミング手法からみた本実施形態の制約条件解決装置 300の構成が有する 役割は、第 1の実施形態が、問題解決を完全な宣言的プログラミング手法で行ってい たのに対し、第 3の実施形態は、従来の手続き型プログラミング手法を融合している 点にある。これは、宣言的プログラミングで解決することが困難な一部の問題につい ては、手続き型プログラミング手法を利用するようにして、どんな対象問題であっても 柔軟な問題解決を果たすためである。
[0062] 本実施形態の制約条件解決装置 300の全体構成を図 8に示す。
関数定義保持手段 9は、制約条件入力手段 1及び変数値設定手段 2によりユーザ が従来の手続き型プログラミングで記述する手続き、及び変数値を保持する。関数定 義保持手段 9は、制約条件抽出手段 3と相互にデータの入出力を行うことが可能であ るように接続されている。
なお、本実施形態の制約条件入力手段 1のような、必ずしも制約条件以外に手続 き型の記述を許可する構成にする必要はない。例えば、手続き型の記述専用の入力 手段を別途備えるような構成にしてもよい。変数値設定手段 2についても同様で、手 続き型で記述された手続きの変数専用の変数値設定手段を備えるようにしてもよい。
[0063] 関数定義実行手段 10は、関数定義保持手段 9で保持された手続きを計算機に実 際に実行させるものである。また、関数定義実行手段 10は、制約条件解算出手段 4 と相互にデータの入出力を行うことが可能であるように接続されている。
[0064] 本実施形態の制約条件解決装置 300の処理を具体例で説明する。 V、ま、制約条 件として記述された制約式の中に、 y=sin (x)、または y=逆関数のない関数 (X)等 が含まれて!/、る場合を想定する。
この場合、図 2に示すステップ S29において、変数 Xの値を求めるために x=sin )という式変形をして処理しょうとしたところ、逆関数 sin 1の値領域の関係で X値を求 めることが不可能なときがある。また、 y=逆関数のない関数 f (X)では、 y値から X値を 求めることができない。このようなときに、従来の手続き型プログラミングによるユーザ 関数を自由に取り入れて対処するようにする。
[0065] 例えば、制約式を解くにあたり、解決方法を複数の中から選択可能に記述すること を許可するようにしておく。制約条件を a = f (b)とすれば、変数 bの値を求めるために 、 {a = f (b) , b=f_reV(a) }を用意し、どちらかが適用できれば制約式を解くことができ るようにしておく。
また、 y=f(l, m)という制約式の変数 1, mの値が決まっていない場合、或いは y>x のような不等式の場合も、当該制約式を単純に解くことができない。不等式 y>xの場 合で、 Xの値力 となったとき、 yは nより大きいという情報のみが得られるだけで、変数 yの値は最終的な解が未確定とも 、える。このようなケースでは制約条件の設定エラ 一として処理してしまう他に、 y>nという情報^ yに関係する制約式にそのまま代入さ せて処理を続行させるようにしてもよ!、。 1つの方程式だけに注目すると解けな 、z = x+yについても同様で、複数の式と複数の値との間で連立方程式を扱うように許可 することで解決することちできる。
[0066] これにより、他の制約式の条件との関連で変数 yの値を限定できたり、より絞り込む ことが可能になったり、或いは y>nがそのまま解として成立することもあるためである 。このように、変数値として確定した値でなく不等式などをそのまま扱い、別の制約式 で解決可能なときに可能な限り解決するようにする。つまり、このときの制約条件抽出 手段 3は、図 9に示されるような関係にある解決方法を実行する。図 9における制約式 の X値が変更されると、 Xへ代入する形式でな!ヽすべての式 (解決方法 1一解決方法 3)を実行していくというように、制約式の解過程に柔軟性をもたせ、手続き型プロダラ ミングを用いている従来のプログラムと同様、またはそれ以上の解決能力を持たせる ことが可能となる。
[0067] また、逆関数等の問題で制約式として表すことが困難な場合に力ぎらず、制約式と して通常に表すことができる式についても図 9に示すような解決方法の形式に変形し て保持するように構成すれば、処理実行時の速度を向上させることも期待できる。
[0068] このように、本実施形態の制約条件解決装置 300によれば、関数定義保持手段 9 及び関数定義実行手段 10を含むように構成したので、制約条件と従来のプログラミ ングで定義していた関数等とが融合し、対象問題の性質または特長に応じて制約条 件としての解決方法、及び従来のプログラミング手法を用いた解決方法を、ユーザ側 が自由に切替えながら設定することが可能となる。これにより、第 1の実施形態及び 第 2の実施形態の制約条件解決装置 100, 200では解決できな 、逆演算処理など を包含する制約条件の記述が格段に容易になる。
[0069] (第 4の実施形態)
前述した第 1の実施形態一第 3の実施形態の制約条件解決装置 100, 200, 300 の各構成手段に加え、本実施形態の制約条件解決装置 400は、データベースゃシ ステムリソース等力もの情報を適宜利用して変数値を設定できることを特徴としている 図 10に本実施形態の制約条件解決装置 400の全体構成図を示す。
本実施形態の説明を簡略化させるために、第 2の実施形態の制約条件解決装置 2
00に付加した構成の制約条件解決装置 400により説明することとする。他の実施形 態の制約条件解決装置にぉ 、て、データベースやシステムリソース等からの情報を 利用できることは言うまでもない。
なお、本実施の形態の制約条件解決装置 400の構成と、第 2の実施の形態におけ る制約条件解決装置 200とで共通する構成部分については同一の符号を付して、 詳細な説明を省略する。
[0070] 図 10に示すように、本実施形態の制約条件解決装置 400の構成によれば、制約 条件内の変数の一部または全部が、前記データベース 11やシステムリソース 12内に 記録されて ヽる値や、時刻等の別の事象と連携されるシステム内の変数と連結するこ とが可能となり、本制約条件解決装置 400外の変数と制約条件の変数との整合を図 つた変数の管理を容易に行うことができるようになる。
[0071] 次に、制約条件の内容としてさらに複雑なデータ構造の変数を扱うことが可能な例 をいくつか示す。以下の具体例は、前記第 1の実施形態一第 4の実施形態における 制約条件解決装置 100, 200, 300, 400すべてにおいて実行可能である。
[0072] (変数に複数の値を定義した制約条件)
通常、変数へ値を代入する制約条件は、例えば、 x= 10のように記述するが、変数 Xに複数個の値を代入することを定義する。具体的には例えば、
x= { 10、 11、 12} ;
という記述を認める。この場合、変数同士の加減乗除の演算は、加算を例にすれば X +yは、各変数 X, yのそれぞれの要素について +演算を行うものとする。
[0073] (演算子が定義された配列構造の変数による制約条件)
いま、 1次元配列 vecを考える。この 1次元配列 vecを、 vec= 0, 200, 300}とし 、 i番目(0≤i≤文字列長— 1)の要素に対するアクセスを vec [i]で表すこととする。 1 次元配列 vecの各要素は、 vec [0] = 50, vec [1] = 200, vec [2] = 300である。 ここで、 1次元配列 vecl, vec2に対する演算子を次のように定義する。 vecl +vec2 …各々の 1次元配列の要素を全て加算した配列、
vecl-vec2 …各々の 1次元配列の要素を全て減算した配列、
vecl * vec2 …各々の 1次元配列の要素を全て乗算した配列、
vecl/vec2 …各々の 1次元配列の要素を全て除算した配列、
vecl =vec2 …各々の 1次元配列の要素が全て同一である配列の比較、もしくは 代入、
vecl &vec2 …各々の 1次元配列の要素を全て連結した配列。
1次元配列に対する演算子をこのように定義することにより、前記第 1の実施形態一 第 4の実施形態における制約式と同様に扱うことが可能になる。
配列構造の制約条件にアクセスするには、限定するものではないが、例えば図 21 に示すようなオペレータを用意すればよい。このオペレータには任意の関数を使用 することが可能となって 、る。
[0074] また、前記 1次元配列 vecの要素に対して柔軟性のあるアクセスを実現するために 、 vec [i]において範囲指定が可能なようにする。具体的には、 vec [n. . m, 1. . k, i. . j]を、次元配列の n— m番目、 1一 k番目、及び i一 j番目の要素を取り出して並べた 配列を表しているとすると、
vecl [0. . 3] =vec2 [0. . I] &vec2 [4. . 5] +vec3 [0. . 3]と! /、うような演算力 ^可 能となり、 1次元配列を制約式 (制約条件)として扱うことができる。
[0075] 例えば、前記 1次元配列(ここでは、 strとする)の各配列要素に文字を格納すれば s trは文字列となる。文字列 str= "Hello World ! "に対して、各 str [i]に任意の文 字を代入することや、文字列 1 = "Hello "、文字列 2 = "World ! "とすれば、文字 列 str=文字列 1 &文字列 2で表される制約式を扱うことが可能となる。さらに、文字 列のみの正規表現によるパターンマッチングや文字列置換を可能にするなどによつ て、制約式をさらに柔軟に記述することが可能となる。
[0076] これを応用して、例えば、変数値の変更に従って出力が変化する Webによる HTM L (hypertext markup language)出力を以下のように記述することができる。
日付け ="2003/01/01" ;
名前 = "特許 太郎";
内容 = "長文文章";
HTMLデータ = " < HTML> < BODY> "&日付 [0. . 3] &"年" &日付 [5. . 6] & "月" &日付 [8. . 9] &"日" &"名前:" &名前 &"内容:" &内容 & "く ZBODYX /HTML >,,;
[0077] (デフォルト変換規則を備えた制約条件)
任意のデータ変換についての変換規則を用意し、特にデフォルトで指定可能とす る。
特に数値から文字列へ変換する場合、参照毎に変換関数を毎回用いる方法がある 力 データ変換規則のデフォルトを用意することにより、効率的な記述が可能となる。 一例として、次のような規則を用意する。
•変換規則は必ず右詰めとする
•Sは符号を表し数が負の時のみ-を、それ以外の時は空白とする
•Xnは n桁以下の数を表す
•Ynは n桁固定の数を表す
•Znは n桁固定のゼロサプレスを表す
この時、例えば変数定義時に、
float("SX9.Y3") vail;
とすれば、符号付、仮数部 9桁以下、少数点、少数部 3桁固定で右詰めされた全 14 文字の文字列として vailを参照できる。
3;た、 unsigned int( 8 ) val2;
とすれば、 val2は符号無、ゼロサプレス付 8桁の全 8文字の文字列として val2を参照で きる。
もちろん、値参照時に直接 val2("Z10")等として記述することでデフォルト規則だけ ではなく適用時に別の規則を適用できることとする。
このようなデフォルト変換規則を備えた制約条件による変換規則を定義することで、 事務処理アプリケーション等における制約式を簡単に記述することができるようになる 他のデータ構造にも同様に応用できたり、変換規則のフォーマットとして以上のもの は 1例であり多種のものが存在することは言うまでもない。
(優先順位付き制約条件)
制約条件に重みを付加する場合の記述例を以下に示す。
{条件式 }[:優先順位] ;
or
{条件式 } [:優先順位]→{条件式が不成立時の処理 };
ここで、複数の制約式条件が合致した場合、優先順位の値に従って実行すべき制 約式が選択されるようにする。また、同じ優先順位の値が複数ある場合はすべて実行 されるようにする。このような優先順位付き制約式を定義することで、優先順位の最も 小さ 、または大き 、制約式のみを実行させたり、或 、は制約式の実行順序を指定さ せたりする場合に有効になる。
[0079] (構造体による制約条件)
構造体 (抽象的なデータ構造)は、複数のデータ型をまとめて扱うことが可能である 。前述した Web出力のデータをこの構造体で表現しょうとすると、
struct 構造体名 {
date 日付け;
name 名目 ij;
string 内谷;
}掲示板データ [] ;
のように表すことができる。実際の Webシステムでは、前記構造体のデータはデータ ベースやファイル上に存在することになり、前記構造体の場合、配列番号 5に関する "内容"に対するアクセスは、例えば、 "掲示板データ [5] .内容"により可能となる。 なお、本構造体のデータのアクセスにおいて、メンバ(日付け、名前、内容、及び H TMLデータのこと)に対する文字列マッチングの演算子などを定義することによって 、検索の処理を制約条件として記述することができるようになる。
[0080] (組み込み関数や追加演算子、規則追加による制約条件)
さらに前記の各種データ構造を利用して少し実用的な例題を示した図 12 (a)及び 図 12 (b)を実現するために、いくつかの規則を追加する。なお、図 12 (a)及び図 12 ( b)は 1つの図で示すところ、便宜上、別図として示している。
組み込み関数や演算子、規則として、例えば以下のものを用意する。
•vsize (arg) …引数 argで与えられた配列の大きさを求める組み込み関数。
• inttostr (arg) · · '整数を文字列へ変換する組み込み関数。
•strtrunc (argl, arg2) —arglの文字列を複写する力 arg2で指定された文字列長 より長い場合、その分の文字を切り捨て。
•配列範囲指定演算子 [ * ] · ··配列すベての要素を意味する。
·{}で囲まれたいくつかの制約式をブロックとしてまとめて処理する。 · [ $ i] …今までに登場した制約式のインデックス [i]と同等だ力 ブロックでのみまと まった制約条件の中ですベて同じ値を持つ。ここでは通常の変数との識別のために i ではなく $ iとして記述している。
以上によって、たとえば以下のような記述が可能である。
•output_block[ * ] . output_html …配列内のすべての output_html (図 12 (a)参 照)を並べた複数要素値列を意味し、文字列との比較、代入演算が行われる時は、 すべての要素を連結した一つの文字列として扱われる、
•vsize (output— block) =list— count …配列数、すなわち配列サイズと変数との関 係を示す制約式である。但し、 vsizeOで得られた値の参照は通常の数値である力 変 更は配列サイズの変更を意味する必要があるため、処理系の内部で値の変更が抽 象化されたサイズ変更のための関数呼び出しを意味するように定義付ける力 ォブジ ェクトによるメソッド呼び出し処理等の抽象化した処理が必要である。
[0081] 以上のような各種データ構造の制約条件を含む問題への入力データを与えるため には、該当の変数をユーザが直接変更したり、図 12 (a)に示した手続き型関数の bbs _additem ()を呼び出す等の処理を行うことになる。また図 12 (a) , (b)の例題では出 力については前記 output— htmlを参照する。以上の処理によって、 Webサービスを 実現することができるようになる。なお、出力を必ずしも HTMLフォーマットに限定す る必要はなぐ任意のクライアント Zサーバシステムにおけるサーバ側の入出力サー ビスを同様の方法で実現することも可能である。
[0082] なお、これまで 1次元配列 vecを示して説明した力 2次元配列等の多次元配列へ の拡張はもちろんのこと、配列長が異なる配列同士の演算やこのような配列と数値と の演算に関する定義が同様に行えることは言うまでもない。
また、前述したように、制約条件の内容としてさらに複雑なデータ構造の変数を扱う ことが可能な例を示したが、これらデータ構造に完全に一致する必要はなぐ当業者 であればこれら力 類推できる変形例が含まれることは言うまでもない。
[0083] 以上説明したように、制約条件を単なる数値でなく各種のデータ構造をも扱えるよう にしたので、現在格納されたデータと HTML出力の関係が制約条件 (制約式)によ つて記述可能となり、 Webアプリケーションにおけるサーバ側のプログラムを制約条 件だけで単純に記述することができるようになる。この Webサーノ と組合せてデータ 入力、表示を行うシステムの概念図を示したのが図 11であり、このときの関数型定義 保持手段及び制約条件格納手段に格納する情報や、制約条件の一例を示したのが 図 12 (a) , (b)である。
[0084] また、前述したような Webにおける HTMLに限らず、図 13に示すような一般のウイ ンドウインタフェースでは各項目を変数にマッピングするように構成することで、デー タとユーザインタフェースとの関係を制約条件で記述することが可能となり、一般的な ユーザインタフェースを記述しやすぐ且つ理解することが容易となる。これにより、従 来のプログラミング方式と比較して高い生産性を実現することができる。
[0085] <本発明の他の適用例:アプリケーションプログラム構築、トランザクション処理 > 次に、 WEB上の入力インタフェースを用いて任意のアプリケーションプログラムを 構築する問題、または任意のデータが蓄積されたデータベースを検索する際のトラン ザクシヨン処理問題に本発明が適用可能であることを説明する。
前記第 1の実施形態一第 4の実施形態における制約条件解決装置において、制約 条件により解決していく処理手順及び処理内容を、履歴情報(更新履歴)として持つ ことにより、アプリケーション上のユーザインタフェースの概念の 1つにある UNDO機 能、或 、はデータベースのトランザクションを実現することが可能となる。
[0086] この UNDO機能、或いはデータベースのトランザクション処理を実現できるようにす ることで、データの更新力 始まってデータ変更に伴う制約解を求める一連の動作が 行われな力つたものとすることが容易に行える。これにより、制約条件のデータ値を一 部変更して入力データに含まれる誤りを発見するという入力データの確認や、そのキ ヤンセル時における元のデータ値に復帰させるための処理を確実かつ迅速に行うこ とができるようになる。
[0087] 次に、 GUI環境における基本的な画面構成要素であるウィンドウを用いたウィンドウ システムまたはマルチウィンドウシステムに本発明が適用可能であることを示す。ここ では、図 14に示すようなウィンドウシステムを一例に説明する。なお、図 14では 3つの ウィンドウを示しているが、任意個のウィンドウを扱えることは言うまでもない。
[0088] 図 15は、ウィンドウシステムを実現するクライアント Zサーバシステムにおけるクライ アント側の構成を概念的に示す図である。サーバ側のシステム構成については図 1、 3、 8、 10に示すものと同様であるので省略する。
図 15に示すように、 GUIクライアントは GUI処理部と GUI制御部を有し、 GUI制御 部は図 16に示すような各パーツの動作を制御する。
ここでの GUI制御部の中身は、図 1、 3、 8、 10と同様の構成を持ち、各パーツの状 態変更は、クライアント内の図 1、 3、 8、 10の入出力 IZFに対する IZF制御部に対し て行われる。制約条件として、各パーツ間の連携規則、クライアントで処理するべき入 力データの整合性チェック、入力補助、サーバ側へ渡すべきデータへの加工規則な どが記述され、処理される。
GUI制御部でカ卩ェされて処理されたデータは、伝達用の変数を介してサーバへと 伝えられる。
もちろん、クライアントの GUI処理部分とサーバの制約処理系をまとめて 1台で処理 するなど、システム構成が柔軟に変形して使用できることは言うまでもな 、。
なお、本発明の特徴である変数の値変更に応じた制約条件の逐次解法の機能は、 クライアント Zサーバシステムの全体として有する他、前記 GUI制御部にお 、ても有 している。また、クライアント Zサーバ間のデータ転送は、独自形式でもよいが、 XML を使用する等、標準化したデータ形式を用いることで従来手法と互換性のあるォー プンなプロトコルを実現することが可能である。
[0089] このように、 GUI側では、 GUIの動作制御、伝達するデータの整合性の確認、入力 補助、データの状態に応じた GUIの状態変更、及びサーバ側への通知処理などを 制約条件の記述に基づ 、て行うことができる。
[0090] 次に、ウィンドウの動作について詳しく説明する。各ウィンドウ内の構築は、前述した 各種のデータ構造の扱 、を許可する制約条件の設定や、 UNDO機能或いはデータ ベースのトランザクション処理を実現できるユーザインタフェースによって可能である 1S このウィンドウ自体の動作は次のようにして記述する。
[0091] ウィンドウの情報として、例えば次の構造体を定義する。
struct {
x, y; サイズ x, y;
表示中フラグ;
}ウィンドウ情報 [] ;
なお、ウィンドウ情報 [0]…アプリケーションお
ウィンドウ情報 [ 1]…アプリケーション 2、
ウィンドウ情報 [2]…アプリケーション 3を表すものとする。
これらの変数値の参照更新は、図 10のシステムリソース 12と同様の扱いとし、実際 の GUIシステムのウィンドウと連動させるものとする。
[0092] アプリケーションを実行する画面上に表示されて 、るウィンドウの動作 (表示 Z非表 示、移動、サイズ変更)を制約条件で記述しょうとする場合の一例を次に示す。
(a)ウィンドウ nの表示 Z非表示
画面上にウィンドウを開く(表示)…ウィンドウ情報 [n] .表示中フラグ =true、 画面上のウィンドウを閉じる (非表示)…ウィンドウ情報 [n] .表示中フラグ =false、 また、画面上にウィンドウを閉じるための「closeボタン」があるときは、例えば、ウィン ドウ情報 [n] .表示中フラグ = ! closeボタンの状態(!は not演算子)とすればよい。
(b)ウィンドウ nの移動
ウィンドウ情報 [n] .位置. x=移動したい Xサイズ;
ウィンドウ情報 [n] .位置. y=移動したい yサイズ;
(c)ウィンドウのサイズ変更
ウィンドウ情報 [n] .サイズ. x =変更したい Xサイズ;
ウィンドウ情報 [n] .サイズ. y=変更したい yサイズ;
[0093] その他、アプリケーション 1の右にアプリケーション 2を隣接するようにするには、 ウィンドウ情報 [1] .位置. x=ウィンドウ情報 [0] .位置. x+ウィンドウ情報 [n] .サ ィズ. X;
ウィンドウ情報 [1] .位置. y=ウィンドウ情報 [0] .位置. y;とすればよい。 また、ウィンドウのサイズを固定にするには、変数に変更可能 Z不可能の属性を用 意した上で、ウィンドウ情報 [n] .サイズ. x、ウィンドウ情報 [n] .サイズ. y、を変更不 可能にすればよい。 [0094] このように、 GUI環境におけるウィンドウシステムまたはマルチウィンドウシステムに ぉ 、て、従来のプログラミング手法ではウィンドウの動作及びウィンドウ内のアプリケ ーシヨン動作をイベントが発生したらそのイベント状況に依存する関連動作を逐一記 述しなければならな力つたのに対し、本発明による動作制御によれば単純明快な制 約条件に基づいてアプリケーションの複雑な動きを簡潔且つ容易に記述することが でさるよう〖こなる。
[0095] なお、ウィンドウシステムにおける動作を制約条件の記述によって制御可能なことを GUI環境で前述した力 データを画面上に出力する場合に用いるだけでなぐウィン ドウを用いて処理した内容を任意の媒体 (例えば、紙)に出力する出力システム (例え ば、帳票印刷システム)を実現する際にも本発明を適用することができることは本発 明の技術分野における当業者であれば容易に想到できることは言うまでもない。 また、前述した説明では、クライアント Zサーバシステムにおける具体例を示したが 、必ずしもクライアント Zサーバシステムである必要はなぐクライアントとサーバとをそ れぞれ別個のシステムとして構築し、クライアントのみまたはサーバのみに前述した 処理が行えるように構成してもよ 、。
[0096] <本発明の他の適用例:並列化処理と構築された計算機システム >
また、本発明は、手続型プログラミングで面倒な問題である並列化処理の問題に適 用することが可能である。並列処理においては、大きく分けて 2種類の動作が考えら れる。すなわち、いくつかの CPUがステップ S23—ステップ S30のアルゴリズムを実 行する方法と、データフローマシンのようにアーキテクチャで変数と関係式を構築して しまう方法である。
[0097] 前者の場合、通常の手続型プログラミング手法で並列処理を行おうとすれば、アル ゴリズムを構築する段階で、ユーザは CPUの並列動作を意識しながらプログラミング の処理手順を分割して記述しなければならな 、。これに対して本発明を用いた並列 化処理の場合は、図 2のアルゴリズム中にあるステップ S22による変数値の変更から 開始されるステップ S23—ステップ S30の処理を並列に動作させるだけで、ユーザは 直接並列処理を意識することなく並列処理を実現できる。
[0098] 具体的には、前記第 1の実施形態一第 4の実施形態における制約条件解決装置 において、ある処理に対するステップ S23—ステップ S30の実行中にも、別の処理に 関してのステップ S22による変数値の変更による一連の動作を実行させることを行つ ている。
実際上、従来の手続き型プログラミング手法における並列アルゴリズムの実装と同 様に、この並列処理の実行中においては各変数間で排他制御や同期制御を実現す る必要がある力 従来の手続き型プログラミングでの手法をそのまま適用することがで きる。
[0099] 後者のアーキテクチャで変数と関係式を構築する場合、変数間の関係式は、例え ば並列計算機上に物理的に実現した時の通信路となる。この並列計算機上では、並 列プロセッサが複雑な通信路によって結合されており、通信コストが経路によって異 なる。この通信コストを優先度で表わすことによって、データ経路を自動的に選択す ることが可能である。優先順位につ 、ては、制約条件の一例として挙げた (優先順位 付き制約条件)を用いることができる。このような並列処理と同様の方法で、一般に構 築されたシステム全体に本発明を適用することが可能である。
なお、ここでいうシステムとは、複数の特性の異なる計算機や用途別専用機と、それ らを結合するネットワーク力 構成される複合物を意味しており、いわゆる一般の企業 システムや社会システムを旨す。
[0100] つまり、本発明をシステム全体へ適用する場合、概念的には、前記データフローマ シンでの並列処理実現方法と非常に似たものとなり、本発明によって構成される計算 機は、計算機間のインタフェースとなる変数を介して別の計算機のインタフェースで ある変数と結ばれる。変数間の関係式が通信路であり通信コストが優先度であり、し たがって本発明によって前記システム全体を設計し構築することができる。
[0101] <本発明の他の適用例:既存プログラミング言語との融合 >
これまで説明してきたように、本発明は任意の制約条件から構成される問題を、外 部 (ユーザ等)からの指示 (イベント)を契機に変数の値を変更して制約伝搬によって 解決するイベント駆動型の計算実行原理を扱って 、る。前述したように関数定義保 持手段や関数定義実行手段において既存の手続型プログラミング言語を利用する 等から明らかなように、図 18にも示したが既存のプログラミング言語との組み合わせ 可能なことを前提としている。そこで、本発明を既存プログラミング言語へ融合するこ とが可能であることをさらに詳述する。
[0102] なお、ここまで説明のために、プログラミング言語を分類した場合に、 1つは手続型 プログラミング、別の 1つは宣言的プログラミングであるとして大別してきた力 実際に はもつと細かなプログラミング言語の分類が存在する。すなわち、宣言的プロダラミン グ言語に対する非宣言的プログラミング言語には、手続型プログラミング言語と並ぶ プログラミング言語としての関数型プログラミング言語が含まれている。以下、本発明 と関数型プログラミング言語との融合にっ 、て扱う。
[0103] (A)関数型プログラミング言語との融合
ここでは、関数型プログラミング言語として最も歴史があり代表と言える LISP言語 (Common LISP)との自然な融合方法について述べる。いま、 2つの変数 a, bの初期 値、及び制約条件として、
a= { l l, 12, 13}
b= { l, 2, 3}
a[ $ i] = b[ $ i] + 10
を定義するとする。 a, bの値は共に 3つの要素を持つ配列である。また、本発明の実
Figure imgf000033_0001
、て制約式を定義する関数 defconstraintを新たに定義し、変数への代入を シンボルへのバインドに対応させるとすれば、 LISP言語では次のように記述できるだ ろう。
(set 'a # (11 12 13》
(set 'b # (1 2 3))
(defconstraint '(= (aref a $i) (+ (aref b $i) 10》 …(式 18)
[0104] ここで、関数 defconstraintは、図 9のデータ構造を実現するために引数からシンボル (変数) aと bに関する解決式を作成し、
(defconstraint2 (= (aref a $i) (+ (aref b $i) 10))
'(setf (aref a $i) (+ (aref b $i) 10))
'(setf (aref b $i) (- (aref a $i) 10)))
を実行して、関数 defconstraint2が図 9のデータ構造を維持する。式のデータ構造とし ては図 6等のデータ構造でよいのだ力 LISPでは LISP自体の機能のみで構造を自 然に記述することができるので、ここではこの LISPの特徴を生かして上記のような式 を記述している。
[0105] C言語のポインタ等についても同様なことが言えるのだ力 LISP言語においては 各データが共有されている可能性があり、変数とデータとの関係が 1対 1であるとは限 らない。このため、あるデータを変更する時にそれが特定のシンボルに関係している 力どうかは変数へ値を代入する時にはわ力もないのが通常である。したがって、この ような変数とデータとの関係構造は、本発明の制約解消を実現する際には問題とな るので、これを説明する。
[0106] いま、シンボル bと同じデータを指すシンボル cをカ卩えて、シンボル a,b,cを中心とし た通常の LISP言語の内部データ構造を極単純化した一例を図 22に示す。 LISP言 語では、すべてのシンボルはノ ッケージに記録され、名前空間別に保存されている のでここではパッケージ力も記述している。また、標準の名前空間名は「user」である ため、シンボル a,b,cは「user」に登録される力 この例ではシンボル bは別のパッケ一 ジにも登録されている。
[0107] LISP言語で、 b[l]=12を実行する場合、
(setf (aref b 1) 12)
を実行する力 値の代入を実行する関数 setfは上記の関数 defconstraint2で定義され た制約式とマッチングさせる必要がある。一方、関数 setfに渡されるデータは、通常の LISPでは図 22中の( * )で示すポインタであり、マッチングさせるべき情報は存在し ない。そこでこのような単純な例の場合、関数評価時に評価結果だけではなぐ評価 した式の情報を関数 setfの実行時まで持ちまわる方法が考えられる。しかし、実際に は非常に複雑な式になるため持ちまわるデータが巨大になることや、(setf (aref c 1) 12)で b[l]が変更された場合に対応が難しくなる。
[0108] これを解決するためには、 LISP言語の基本データ構造をすベて双方向に迪れるよ うに構成すればよい。そのデータ構造を一例として図に示すと、図 23のようになる。 図 23中の(* )で示した関数 arefによる配列参照は、逆方向へ迪れるように配列内の ポインタだけではなぐ配列そのものの情報も持つ。配列情報を含むすべてのデータ は、バインドされて 、るシンボルの情報を追えるように各種情報を保存する。
[0109] また、実際にはシンボルまでのみならず登録されたパッケージ情報まで迪らなけれ ばならず、したがって制約式のシンボルはパッケージを考慮する必要がある。 (* )か ら b[l] (パッケージを含めて user:b[l])を迪る時の道順を図 23では太線の矢印で示し ている。
[0110] まお、 Common LISPのシンボルにはもともとホームパッケージの情報を持つ力 1つ のシンボルが複数のパッケージに保存されることがある。このため登録されたすベて のパッケージを追うことができる新たなデータ構造の追カ卩が必要となる力 このように すれば、 setfの実行時に制約式のマッチングを検査することができるようになる。以上 説明したように、本発明を LISP言語を代表とする関数型プログラミング言語と完全に 融合させて自然に扱うことは可能である。
[0111] 前記 (A)の関数型プログラミング言語との融合によって、 LISP言語上で本発明を 適用することができるようになり、関数型プログラミング言語上への実装としては理想 的になる力 例えば setf等の代入操作が実行される度に制約式のマッチングが必要 となることから原理上、実行効率が悪くなる。特に、代入時の逆方向の制約式とのマ ツチング (逆方向のマッチング)に際しては、力なり上の方まで遡らなければ、該当す る制約式の定義が存在するかどうかわ力もない。例えばポインタの時点でわ力るのは [1]等のインデックス情報だけである力 単純な制約式でさえ a[x]、 b[x]のような構造を して 、るため、インデックス情報だけではマッチさせるべき制約条件が存在するかどう かを判断できるのは限定された特殊条件の時だけとなる。
[0112] これに対して、シンボル名(変数名)から迪るマッチングの場合、多くの場合で制約 条件が存在するかどうかが最初力もわ力つており、変数 (シンボル)そのものにそれら の情報を付加させることによって処理の高速ィ匕が可能である。
また、実際の制約式は a[x]等の単純な例が登場することは少なぐ逆方向とのマツ チングは常に相当に複雑な式をかなり上方、おそらくは完全に迪る必要がある。これ を実際の Common LISPの複雑なパッケージ機構上に実装することを考えると、実装 は実に複雑となり、実行時間については様々な方法によって多少の改善は期待でき ることを考慮しても、変数力 開始する制約式のマッチングに比べて明らかに実行効 率は非現実的なまでに悪くなつてしまう。
[0113] そこで、現実的解決方法として、完全な融合をあきらめて、制約条件を使用する場 合は、専用の式処理機構を用意してその中では必ず変数 (シンボル)力 し力値を参 照できない制限を加えれば前述した問題を防ぐことができる。例えば、文字列データ を 」で括って表わして 、るように、式データをデータ型の一つとして抽象化して例え ば「?」で括って表現し、専用の式処理機構を実行する関数 pevalを定義し、代入式 を関数 peval内で実行するならば、前記式(18)は、
(peval '? a={ll, 12, 13}?)
(peval '? b={l, 2, 3}?)
(defconstraint '? a[$i]=b[$i]+10?)
と記述できる。そして、 b[l]=12を実行する場合は、(peval '? b[l]=12?)を実行すればよ い。
[0114] この場合、必ず式処理の中では変数 (記号)からの参照し力、行えないことにするた め、逆方向のマッチングは必要ないので、前述した (A)で述べた LISP言語上での実 装の問題は発生せず、さらに LISP言語の他の機能にはまったく影響を与えないため 実行効率の問題が解決する。
[0115] ただし、プログラミング言語としては、言うまでもなくとても不自然である。そこで、プ ログラミング言語の文法そのものを新しく定義して、代入操作時に専用の式処理機構 を自然に使わせるように解釈するパーサー (構文解析器)を用意すればょ 、。これは 、入力時に文法を構文解析して LISPである内部表現に置き換えるので、本来の LIS P言語とは違うものであるが、 LISP言語の良 、ところと本方式を組み合わせた実行効 率が著しく低下しない能力を持つプログラミング言語の実現が可能となる。
[0116] なお、ここでは、式評価は常に peval関数の中で行うことを基本とした、最もメジャー な C言語風の文法を持つプログラミング言語の基本要素を示すことによって、 peval関 数を自然に使わせる方法について述べる。変換後を見ればわかるように、 C言語風 の文法を持ち C言語同様の記述ができるとはいえ、本質的には LISPであり、 LISPの 柔軟な記述能力を持っているという優位性がある。さらに、純粋な LISPプログラムとも 完全に混在させて実行することができる。 [0117] 本システムの基本単位と言える関数を含む式の解釈実行は次のように翻訳する。な お、ここでは型宣言に関しては本質的に関係ないため省略している。
入力:
a[l] = foncl(lOO);
実行関数:
(peval '? a[l]=foncl(100)?)
[0118] C言語の基本構造である局所変数を持つブロック構造は次のように解釈する。
入力: int X, y;
x= 10;
y=20; 実行関数:
(let (x y)
(peval '?χ=10?)
(peval '? y=10?》
[0119] C言語の大まかな基本要素をすベて含む、局所変数とループ構造を持つ関数は次 のように解釈する。
入力:
int ί( int V ) int l, n = v;
for (i = 0; iく 10; i++)
n++;
return n; 実行関数: (delun f (v)
(let (i, n)
(peval '? n=v?)
(prog 0
(peval '? i=0?)
loop
(if (not (peval '? i〈10?))
(return nil))
(peval '? n++?)
(peval '? i++?)
(go loop)
(return- from f n)))
[0120] 式の解釈と実行方法は様々なものが考えられ、これらの変換方法はほんの一例で しかないが、変換方法についてはすでに確立された様々なコンパイラ技術が適応で きることに留意されたい。このように、制約式の関係する式実行を自然に関数 pevalで 置き換えて実行する、本発明と LISPの特徴を組合せた極めて強力なプログラミング 言語を設計することは可能である。これを用いて、関数型言語と融合させた強力なプ ログラミング言語で図 12 (a) , (b)を記述することで、本発明の図 3,図 8,図 10に示した 制約条件解決装置が現存する手続型、関数型プログラミングの機能を網羅しながら 実際の実行効率を落とさずに実行することが可能となる。この際、図 21に示すォペレ ータは、関数 PEVAL内の式処理で実現されることとなる。
[0121] <本発明の他の適用例:設計手法との組み合わせ >
また、本発明は、設計手法に組合せて適用することが可能である。開発設計手法 には、実に様々なものがある力 どのような方法であれ、まず実現したい要求を分析 し、次に要求を実現するために開発するターゲットの仕様を決定し、そしてその仕様 を満たすプログラムを開発することが共通的な概念としてある。しかしながら、従来の 手続き型プログラミング手法の場合、どの開発手法であっても最終的には CPUの動 きをプログラムコードとして記述しなければならな力つた。一方、宣言的プログラミング 手法はこの問題を解決する可能性を秘めているが、冒頭で述べたように計算機の実 行効率が良くないという問題が大きい。そのため、現在の一般的プログラミング作業と V、えば、手続き型プログラミング手法のことを指すことが多 、。
[0122] さて、システム設計手法のひとつとして、データ中心指向がある。データ中心指向 は業務システムをうまく設計できる方法として知られて 、るが、これによつて要求を実 現するシステム設計を行ったとしても、最終的にはコーディング作業が必要であり、プ ログラムコードとして CPUの動きを記述しなければならない。 CPUの動きの記述につ いては、ソフトウェア工学が発達した現在でも本質的にはプログラマーの経験と勘に 頼っており、未だ人間の創造的作業の領域内に存在する開発設計作業が大変であ るのが現状である。開発設計作業を低減させる道具として CASEツール等がある。し かし、これらは開発作業を軽減することはできても、人間が CPUの動きを記述するこ とを不要にするという本質的な問題については依然として解決できていな力つた。
[0123] そこで従来の手法では、前記本質的問題の解決には目をつぶる代わりにプロダラ ムコードを再利用することに重点を置いている。例えばソフトウェアのライブラリイ匕ゃォ ブジェクト指向プログラミング言語は、この再利用を目的として概念化され生み出され てきたのである。
[0124] これに対して本発明は、計算機の動きを考慮する必要があるものの、従来のような 複雑な動きを考慮する必要が全くない。つまり、プログラマ一は各種設計手法に共通 する問題である CPUの動きを直接記述する作業力 解放され、コーディング時での 創造的作業を行う必要がない。したがって、本発明によれば、 CASEツール又は CA SEツールに類似したツール及びその他ツールの発展形として、仕様からプログラム コードを自動生成させることが可能となり、自動プログラミングを実現することができる
[0125] もし計算機単体ではなくシステム全体を本発明によって設計開発するならば、広大 なシステム全体を自動生成させることも可能である。この場合非常に多くの変数と関 係式が使用されるが、従来の設計手法と同様に、トップダウン的設計手法又はボトム アップ的設計手法が実現できたり、さらには機能による領域分割を行うことや、分割さ れた領域を再利用することも可能であることは言うまでもない。また、本発明がどのよ うな開発設計手法についても共通して適用できることは言うまでもない。
[0126] <本発明の他の適用例:グラフィックデータやロボットへの応用 >
本発明の更なる適用例として、コンピュータグラフィックのモデルやロボットの関節等 の可動部への応用について説明する。ここではロボット制御の精度といった本発明と 直接関係な 、複雑な問題は省略して、連結された関節の扱いにっ 、てのみ説明す る。
いま、結ばれた点 a,eの間に 4つの関節 A, B, C, Dがあるとして、関節 AB間の位 置を b、関節 BC間の位置を c、関節 CD間の位置を dとすれば、 a— e間の関係はこれ ら 5つの点で表現することができる。各点が(X, y, z)の 3つの座標を持つベクトルで 表わされた 3次元の場合、各関節の回転の動きは 3 X 3の回転行列で示される。なお 、この回転行列にさらに並行移動成分を入れて 4 X 4行列としてもょ 、。
[0127] 本問題を単純ィ匕するために、各点間の長さ等を省略した単なる回転のみを制約式 で表すとするならば、
b = a水 A · ·· (a)
c = b * B •••(b)
d=c * C - -- (c)
e = d* D · ·· ((!)
となる。ここで、 A, B, C, Dは対応する関節の回転行列を示す。
[0128] 通常、関節の移動範囲には制限があるため各回転行列 A— Dの値にも制限があり 、ユーザはこの制限を制約式で記述することになる。もし、 aが固定されていて関節 B が変化した場合、前記 (b)→ (c)→ (d)の順の制約伝搬が実行されることが必要であ る。また、もし、固定された aに対して動力したい位置 eがある場合、この制約伝搬によ つて、各回転行列 D, C, B, Aの必要な回転成分だけが修正されて自動的に定まる 。ここで aが固定されていることは、制約条件として固定されていることを示す変数を 追加するか、システムの変数や関係式へ属性として持たせること等で実現できる。そ こで、回転行列 A— Dをそれぞれ関節を制御するモーター等の角度とするとこれは口 ボット制御に適用することができる。また、 3次元座標 a— eを透視変換してディスプレ イデバイス等へ描画させれば、これはコンピュータグラフィックへ適用する場合とまつ たく同様にある。
[0129] このようなロボットの関節等の可動部へ本発明を適用する場合、現実的にはもつと 複雑になるが、それでも手続型プログラミング手法での実現よりは格段に単純で自然 な形で実現することができる。なお、ロボットの関節等の可動部への適用例はあくまで も一例に過ぎず、関節に類似した任意の問題をうまく解決できることは言うまでもない
[0130] <本発明の他の適用例:化学分野、物理分野、シミュレーション分野への応用 > また、本発明の更なる適用例として、化学分野への応用について説明する。
化学式を扱う場合には様々なモデルィ匕が考えられるが、ここでは説明のために簡 単ィ匕して本発明に直接関連する内容のみを説明する。
[0131] 化学式における各元素をオブジェクトとして扱うために、元素の種類別にクラスとし て定義し、使用したい元素を必要に応じてインスタンス化する。各元素オブジェクトは 、制約条件として他元素との結合条件や元素の性質を持つことにする。また、元素の 組合せは化合物オブジェクトで管理し、元素オブジェクトをィ匕合物オブジェクトへ登 録することによって表すようにする。化合物オブジェクト内では、組合せた時の性質や 組合せ条件を制約式で持つことにする。このように構成することによって、ユーザはォ ブジエタトの糸且合せを自由に変更できる力 一方で制約条件によって不可能な糸且合 せは禁止され、そして元素の変更が成功した時にはこれに応じて化合物の性質も更 新されたことを知ることができる。また、この時、例えば元素オブジェクト内に電子の状 態を変数 (属性)として持っているならば、電子変数に関する制約伝搬が発生して、 物理現象である電子の挙動を表すことができる。
[0132] 以上説明したように、本発明は化学現象や物理現象等を効率的に表すことができ るが、これはある状況のモデル化と、事象の発生に対する現象のシミュレーションで あり、変数値の変更に対する制約解消それ自体が特定の現象そのものとなって 、る 。なお、化学現象や物理現象等に限らず多くのシミュレーション分野で本方式が効果 的に使用できることは言うまでもない。
[0133] <本発明の他の適用例:線形計画法 (シンプレックス法等)への応用 >
また、これまでの説明から、本発明が、典型的にはシンプレックス法等の線形計画 法、整数計画法、輸送問題などに記載される制約条件において、対象問題に関する 制約伝播の処理手順が考慮された制約条件をユーザが入力することができる場合で あれば適用可能であることは当業者であれば明白である。
[0134] <本発明の他の適用例:ニューラルネットワークへの応用 >
ニューラルネットワークにおける-ユーロンモデルは、閾値を変数として制約式で記 述することができる。この観点で見るならば、ニューラルネットワークの-ユーロンモデ ルの結合は、本方式で扱う制約式関係の特殊形であり、サブセットとみなすことがで きる。
ニューラルネットワークでは、求めたい結果を得るためにネットワーク内の各-ユー ロンモデルの閾値を決定することを学習と呼ぶ力 この学習では所望の結果を得るた めの閾値をどのようにして設定させるかが課題であった。そしてその学習方法といえ ば、本方式に対する従来の制約プログラミングに概念的に近いものであった。しかし
、ニューロンモデルの閾値の設定は変数の値を設定する作業であり、本発明で述べ てきた方式によるプログラミングと見なすことができる。従って、本発明をニューラルネ ットワークへ応用することができる。すなわち、本発明によって、値を自動調整させる だけではなぐ動きを考慮して一部あるいは全部の閾値を設定することによる学習方 法を実現することができる。
[0135] なお、前述した内容はあくまでも本発明の技術思想を説明するための一例であって これらに限定されることはなぐ本発明の技術思想を実現するにあたり、本発明の技 術分野における通常の知識を有する者が、制約条件解決装置の各構成や制約条件 の定義の方法を追加'変更しても本発明の根本的な技術思想は不変であることには 変わりはないことは明らかである。
[0136] また、本発明の目的は、前述した実施形態の制約条件解決装置 100, 200, 300, 400の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システ ム或 、は装置に供給し、そのシステム或いは装置のコンピュータ(または CPUや MP U)が記憶媒体に格納されたプログラムコードを読みだして実行することによつても、 達成されることは言うまでちな 、。
[0137] この場合、記憶媒体力 読み出されたプログラムコード自体が本実施の形態の機 能を実現することとなり、そのプログラムコードを記憶した記憶媒体及び当該プロダラ ムコードは本発明を構成することとなる。プログラムコードを供給するための記憶媒体 としては、 ROM、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、 CD-ROM, CD-R,磁気テープ、不揮発性のメモリカード等を用いることができる。
[0138] また、コンピュータが読みだしたプログラムコードを実行することにより、上記本実施 の形態の機能が実現されるだけでなぐそのプログラムコードの指示に基づき、コンビ ユータ上で稼動して 、る OS等が実際の処理の一部または全部を行 、、その処理に よって本実施の形態の機能が実現される場合も含まれることは言うまでもない。 図面の簡単な説明
[0139] [図 1]本発明の第 1の実施形態における制約条件解決装置の基本的な構成要素を 示す全体構成図である。
[図 2]本発明の第 1の実施形態における制約条件解決装置の動作手順を示すフロー チャートである。
[図 3]本発明の第 2の実施形態における制約条件解決装置の全体構成図である。
[図 4]第 1の実施形態における制約条件解決装置の制約条件格納手段が計算機の 記憶領域へ制約条件を格納する形態例を示す図である。
[図 5]会計計算問題に関するデータ構造の一例を示す図である。
[図 6]会計計算問題に関する制約条件の格納形態の一例を示す図である。
[図 7]データ構造の一例を示す図である。
[図 8]本発明の第 3の実施形態における制約条件解決装置の全体構成図である。
[図 9]制約条件抽出手段による解決方法の実行手順を示す図である。
[図 10]本発明の第 4の実施形態における制約条件解決装置の全体構成図である。
[図 ll]Webサーバと組合せてデータ表示を行うシステムの概念図である。
[図 12(a)- (b)]図 11に示すシステムにお 、て、関数型定義保持手段及び制約条件格 納手段に格納する情報や制約条件の一例を示した図である。
[図 13]—般のウィンドウインタフェースにおいて、データとユーザインタフェースとの関 係を制約条件で記述する一例を示した図である。
[図 14]マルチウィンドウシステムの一例を示す図である。 [図 15]ウィンドウシステムを実現するクライアント Zサーバシステムにおけるクライアン ト側の構成を概念的に示す図である。
[図 16]GUIクライアントにおいて、 GUI制御部が各パーツの動作を制御することを説 明するための図である。
圆 17]従来の宣言的プログラミング手法における解法手順を示す図である。
圆 18]従来のプログラミング言語環境と、本発明の制約条件の解を求める制約解消 系との位置付けを概念的に示した図である。
[図 19]従来のプログラミング言語環境の構成を概念的に示した図である。
圆 20]データ定義と制約式をまとめたクラス化に関する概念を示じた図である。
[図 21]配列構造の制約条件にアクセス際のオペレータ例を示す図である。
[図 22]通常の LISP言語の内部データ構造を極単純ィ匕した一例を示す図である。
[図 23]LISP言語の基本データ構造を双方向に迪ることができるようにした一例を示 す図である。
圆 24(a)-(h)]ユーザが制約条件及び値を入力し、計算結果などを出力する画面例を 示す図である。
符号の説明
1 制約条件入力手段
2 変数値設定手段
3 制約条件抽出手段
4 制約条件解算出手段
5 変数値再設定手段
6 制約条件格納手段
7 変数値格納手段
8 制約条件抽出手段
9 関数定義保持手段
10 関数定義実行手段
11 データベース
12 システムリソース 100 制約条件解決装置 200 制約条件解決装置 300 制約条件解決装置 400 制約条件解決装置

Claims

請求の範囲
[1] ユーザにより対象問題に関する制約伝播の処理手順が考慮された制約条件を入 力する制約条件入力処理と、
前記制約条件入力処理により入力された制約条件に用いられる変数の初期値また は変動値を設定する変数値設定処理と、
前記制約条件入力処理により入力された制約条件の中から、前記変数値設定処 理により設定された値に関係する制約条件を抽出する制約条件抽出処理と、 前記制約条件抽出処理により抽出された制約条件全てに対して、前記ユーザによ り考慮された制約伝播の処理手順に基づいて前記変数の初期値または変動値を代 入して当該制約条件の解を算出する制約条件解算出処理と、
前記制約条件解算出処理により算出された解を前記変数値設定処理での新たな 変動値として設定する変数値再設定処理とを含み、
前記変数値再設定処理は、再設定される新たな変動値が存在する間は、前記制 約条件抽出処理及び前記制約条件解算出処理を繰り返し行うことを特徴とする制約 条件解決方法。
[2] 前記制約条件入力処理により入力された制約条件を格納する制約条件格納処理 と、
前記変数値設定処理により入力された変数の値を格納する変数値格納処理とをさ らに含み、
前記ユーザにより前記制約条件または前記変数値の追加、変更、削除が行われる と、前記制約条件抽出処理は、前記制約条件格納処理または前記変数値格納処理 により格納されて 、る制約条件または変数値と比較して、相違が生じた制約条件の みを抽出することを特徴とする請求項 1に記載の制約条件解決方法。
[3] 手続き型または関数型のアルゴリズムを設定可能な関数型定義保持処理と、 前記関数型定義保持処理により設定されたアルゴリズムに基づいて、前記対象問 題を手続き型または関数型で解決することを可能にする関数型定義実行処理とをさ らに含むことを特徴とする請求項 1または 2に記載の制約条件解決方法。
[4] 前記変数値設定処理及び前記変数値再設定処理により設定される変数は、数値 のみならず、文字、文字列、抽象的なデータ構造、組み込み関数を包含するデータ
、及びオブジェクト型データ構造の少なくとも何れかを含むことを特徴とする請求項 1 一 3の何れか 1項に記載の制約条件解決方法。
[5] 前記対象問題が、 WEB上の入力インタフェースを用いて任意のアプリケーションプ ログラムを構築する問題、または任意のデータが蓄積されたデータベースを検索する 際のトランザクション処理問題であって、
前記対象問題を前記制約条件により解決して!/ヽく処理手順及び処理内容を、履歴 情報として保持する履歴保持処理を含むことを特徴とする請求項 1一 4の何れか 1項 に記載の制約条件解決方法。
[6] GUI環境における基本的な画面構成要素であるウィンドウを用いたウィンドウシステ ムまたはマルチウィンドウシステム、または前記 GUI環境におけるウィンドウを用いて 処理した内容を出力する出力システムにおいて、前記アプリケーションプログラムの 構築処理を行うことを特徴とする請求項 5に記載の制約条件解決方法。
[7] 制約条件を入力する制約条件入力処理と、
前記制約条件入力処理により入力された制約条件に用いられる変数の値を設定す る変数値設定処理と、
前記制約条件入力処理により入力された制約条件の中から、前記変数値設定処 理により設定された値に関係する制約条件を抽出する制約条件抽出処理と、 前記制約条件抽出処理により抽出された制約条件の解を算出する制約条件解算 出処理とを含む制約条件解決方法にお!ヽて、
前記制約条件は、現在の配列要素数を含んでいること、前記変数に複数個の値を 持たせること、構造体配列の要素値による検索を含んでいること、及びデフォルト規 則による文字列数値変換の少なくとも何れかを特徴として構成される制約条件解決 方法。
[8] ユーザにより対象問題に関する制約伝播の処理手順が考慮された制約条件を入 力する制約条件入力手段と、
前記制約条件入力手段により入力された制約条件に用いられる変数の初期値また は変動値を設定する変数値設定手段と、 前記制約条件入力手段により入力された制約条件の中から、前記変数値設定手 段により設定された値に関係する制約条件を抽出する制約条件抽出手段と、 前記制約条件抽出手段により抽出された制約条件全てに対して、前記ユーザによ り考慮された制約伝播の処理手順に基づいて前記変数の初期値または変動値を代 入して当該制約条件の解を算出する制約条件解算出手段と、
前記制約条件解算出手段により算出された解を前記変数値設定手段での新たな 変動値として設定する変数値再設定手段とを含み、
前記変数値再設定手段は、再設定される新たな変動値が存在する間は、前記制 約条件抽出手段及び前記制約条件解算出手段が繰り返し行うことを特徴とする制約 条件解決装置。
[9] 前記制約条件入力手段により入力された制約条件を格納する制約条件格納手段 と、
前記変数値設定手段により入力された変数の値を格納する変数値格納手段とをさ らに含み、
前記ユーザにより前記制約条件または前記変数値の追加、変更、削除が行われる と、前記制約条件抽出手段は、前記制約条件格納手段または前記変数値格納手段 により格納されて 、る制約条件または変数値と比較して、相違が生じた制約条件の みを抽出することを特徴とする請求項 8に記載の制約条件解決装置。
[10] 手続き型または関数型のアルゴリズムを設定可能な関数型定義保持手段と、 前記関数型定義保持手段により設定されたアルゴリズムに基づいて、前記対象問 題を手続き型または関数型で解決することを可能にする関数型定義実行手段とをさ らに含むことを特徴とする請求項 8または 9に記載の制約条件解決装置。
[11] 前記変数値設定手段及び前記変数値再設定手段により設定される変数は、数値 のみならず、文字、文字列、抽象的なデータ構造、組み込み関数を包含するデータ 、及びオブジェクト型データ構造の少なくとも何れかを含むことを特徴とする請求項 8 一 10の何れか 1項に記載の制約条件解決装置。
[12] 前記対象問題が、 WEB上の入力インタフェースを用いて任意のアプリケーションプ ログラムを構築する問題、または任意のデータが蓄積されたデータベースを検索する 際のトランザクション処理問題であって、
前記対象問題を前記制約条件により解決して!/ヽく処理手順及び処理内容を、履歴 情報として保持する履歴保持手段を含むことを特徴とする請求項 8— 11の何れか 1 項に記載の制約条件解決装置。
[13] GUI環境における基本的な画面構成要素であるウィンドウを用いたウィンドウシステ ムまたはマルチウィンドウシステム、または前記 GUI環境におけるウィンドウを用いて 処理した内容を出力する出力システムにおいて、前記アプリケーションプログラムの 構築処理を行うことを特徴とする請求項 12に記載の制約条件解決装置。
[14] 制約条件を入力する制約条件入力手段と、
前記制約条件入力手段により入力された制約条件に用いられる変数の値を設定す る変数値設定手段と、
前記制約条件入力手段により入力された制約条件の中から、前記変数値設定手 段により設定された値に関係する制約条件を抽出する制約条件抽出手段と、 前記制約条件抽出手段により抽出された制約条件の解を算出する制約条件解算 出手段とを含む制約条件解決方法において、
前記制約条件は、現在の配列要素数を含んでいること、前記変数に複数個の値を 持たせること、構造体配列の要素値による検索を含んでいること、及びデフォルト規 則による文字列数値変換の少なくとも何れかを特徴として構成される制約条件解決 装置。
[15] 複数の機器が互いに通信可能に接続されている制約条件解決システムであって、 上記機器のうち少なくとも 1つの機器は、請求項 8— 14の何れかに記載の制約条 件解決装置の機能を有することを特徴とする制約条件解決システム。
PCT/JP2005/000752 2004-01-21 2005-01-21 制約条件解決方法、制約条件解決装置、及び制約条件解決システム Ceased WO2005071609A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CA2554580A CA2554580C (en) 2004-01-21 2005-01-21 Constraint condition solving method, constraint condition solving device, and constraint condition solving system
EP05703973A EP1710736A4 (en) 2004-01-21 2005-01-21 METHOD, DEVICE AND SYSTEM FOR RESOLVING RESTRICTIONS
CN2005800029969A CN1910601B (zh) 2004-01-21 2005-01-21 限制条件解决方法、限制条件解决装置、以及限制条件解决系统
JP2005517273A JP4669788B2 (ja) 2004-01-21 2005-01-21 制約条件解決方法、制約条件解決装置、及び制約条件解決システム
US11/447,765 US7499764B2 (en) 2004-01-21 2006-06-06 Constraint-based solution method, constraint-based solver and constraint-based solution system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004013629 2004-01-21
JP2004-013629 2004-01-21

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/447,765 Continuation-In-Part US7499764B2 (en) 2004-01-21 2006-06-06 Constraint-based solution method, constraint-based solver and constraint-based solution system

Publications (1)

Publication Number Publication Date
WO2005071609A1 true WO2005071609A1 (ja) 2005-08-04

Family

ID=34805390

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/000752 Ceased WO2005071609A1 (ja) 2004-01-21 2005-01-21 制約条件解決方法、制約条件解決装置、及び制約条件解決システム

Country Status (7)

Country Link
US (1) US7499764B2 (ja)
EP (1) EP1710736A4 (ja)
JP (1) JP4669788B2 (ja)
KR (1) KR100916745B1 (ja)
CN (1) CN1910601B (ja)
CA (1) CA2554580C (ja)
WO (1) WO2005071609A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226096A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd 制約伝播装置、制約伝播方法、およびプログラム
US10489149B2 (en) 2013-03-22 2019-11-26 International Business Machines Corporation Information processing apparatus, information processing method and program
WO2023089898A1 (ja) * 2021-11-16 2023-05-25 株式会社野村総合研究所 配送計画支援システム、配送計画支援方法およびコンピュータプログラム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700438B1 (en) * 2005-04-28 2014-04-15 Southwest Airlines Co. Constraint-based schedule generation for transportation resources
US7606776B1 (en) * 2005-09-28 2009-10-20 Actenum Corporation Flexible constraint propagation engine for combinatorial optimization applications
US20090089739A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Intelligent editing of relational models
US8082140B2 (en) * 2008-04-16 2011-12-20 GM Global Technology Operations LLC Parametric analysis of real time response guarantees on interacting software components
US8620635B2 (en) * 2008-06-27 2013-12-31 Microsoft Corporation Composition of analytics models
US8411085B2 (en) * 2008-06-27 2013-04-02 Microsoft Corporation Constructing view compositions for domain-specific environments
US9330503B2 (en) 2009-06-19 2016-05-03 Microsoft Technology Licensing, Llc Presaging and surfacing interactivity within data visualizations
US8692826B2 (en) * 2009-06-19 2014-04-08 Brian C. Beckman Solver-based visualization framework
US8788574B2 (en) * 2009-06-19 2014-07-22 Microsoft Corporation Data-driven visualization of pseudo-infinite scenes
US8531451B2 (en) * 2009-06-19 2013-09-10 Microsoft Corporation Data-driven visualization transformation
US8866818B2 (en) 2009-06-19 2014-10-21 Microsoft Corporation Composing shapes and data series in geometries
US20100325564A1 (en) * 2009-06-19 2010-12-23 Microsoft Corporation Charts in virtual environments
US8493406B2 (en) * 2009-06-19 2013-07-23 Microsoft Corporation Creating new charts and data visualizations
US8352397B2 (en) * 2009-09-10 2013-01-08 Microsoft Corporation Dependency graph in data-driven model
US8700592B2 (en) 2010-04-09 2014-04-15 Microsoft Corporation Shopping search engines
US9785987B2 (en) 2010-04-22 2017-10-10 Microsoft Technology Licensing, Llc User interface for information presentation system
US9043296B2 (en) 2010-07-30 2015-05-26 Microsoft Technology Licensing, Llc System of providing suggestions based on accessible and contextual information
US9128733B2 (en) * 2010-11-12 2015-09-08 Microsoft Technology Licensing, Llc Display and resolution of incompatible layout constraints
US20120198375A1 (en) * 2011-01-27 2012-08-02 Carter Stephen R Multi-condition resource planning
JP5318155B2 (ja) * 2011-06-14 2013-10-16 株式会社東芝 分散データベース検索装置、分散データベース検索方法、及びプログラム
FI124278B (fi) 2012-03-23 2014-05-30 Juno Medical Llc Mittalaite ja menetelmä rasitustilan indikoimiseksi
US20150160838A1 (en) * 2013-12-06 2015-06-11 Takeshi SHIRABE Method and apparatus for automatic graphic editing with map-dependent constraints
US10307855B2 (en) * 2016-03-29 2019-06-04 Illinois Tool Works Inc. Impending thermal shutdown alert system and thermal shutdown process
US11030386B2 (en) * 2016-05-17 2021-06-08 Google Llc Constraints-based layout system for efficient layout and control of user interface elements
US10169292B2 (en) 2017-04-30 2019-01-01 International Business Machines Corporation String variables reprsentation in solvers
CN109011580B (zh) * 2018-06-29 2021-12-21 腾讯科技(深圳)有限公司 残局牌面获取方法、装置、计算机设备及存储介质
US10956566B2 (en) 2018-10-12 2021-03-23 International Business Machines Corporation Multi-point causality tracking in cyber incident reasoning
US11184374B2 (en) 2018-10-12 2021-11-23 International Business Machines Corporation Endpoint inter-process activity extraction and pattern matching
US11941054B2 (en) 2018-10-12 2024-03-26 International Business Machines Corporation Iterative constraint solving in abstract graph matching for cyber incident reasoning
JP6841305B2 (ja) * 2019-07-04 2021-03-10 ダイキン工業株式会社 組合せ解決定システム
CN116457803A (zh) * 2020-11-05 2023-07-18 阿米巴能源股份有限公司 解探索系统、解探索方法及解探索程序
CN113110058B (zh) * 2021-01-25 2022-06-17 华东交通大学 一种通信受限的多智能体系统二分实用一致性控制方法
CN114167825B (zh) * 2021-11-22 2024-06-11 成都飞机工业(集团)有限责任公司 产品的控制图获得方法、装置、终端设备以及存储介质
CN117667103B (zh) * 2023-10-19 2024-10-29 北京邮电大学 基于c11弱内存模型的c语言程序验证方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165900A (ja) * 1991-12-11 1993-07-02 Hitachi Ltd 制約条件緩和方式及びこれを有する設計支援装置
JPH07175844A (ja) * 1993-12-16 1995-07-14 Chugoku Nippon Denki Software Kk 知的設計システム
JP2001243056A (ja) * 2000-02-28 2001-09-07 Nec Corp 対話画面ソースコード生成機能を有する情報処理装置、および、記録媒体
JP2002196927A (ja) * 2000-10-18 2002-07-12 Isac Inc 制約処理システム及びプログラム
JP2003149326A (ja) * 2001-11-15 2003-05-21 Hitachi Ltd マルチスタティックセンサ運用支援装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3873816A (en) * 1968-12-27 1975-03-25 Agency Ind Science Techn Automatic adaptive controller
US3878982A (en) * 1973-11-16 1975-04-22 Industrial Nucleonics Corp Automatic target management method and system
CA2031765C (en) * 1989-12-08 1996-02-20 Masahide Nomura Method and system for performing control conforming with characteristics of controlled system
JPH0561675A (ja) * 1991-08-30 1993-03-12 Agency Of Ind Science & Technol 推論方法
JP3557717B2 (ja) * 1995-05-18 2004-08-25 株式会社日立製作所 設計支援方法およびその装置
JPH0981387A (ja) * 1995-09-18 1997-03-28 Nec Corp 制約処理方式
US6047219A (en) * 1997-11-24 2000-04-04 Hewlett-Packard Company Specification interpreting distributed system
US6865562B2 (en) * 2001-06-04 2005-03-08 Xerox Corporation Adaptive constraint problem solving method and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165900A (ja) * 1991-12-11 1993-07-02 Hitachi Ltd 制約条件緩和方式及びこれを有する設計支援装置
JPH07175844A (ja) * 1993-12-16 1995-07-14 Chugoku Nippon Denki Software Kk 知的設計システム
JP2001243056A (ja) * 2000-02-28 2001-09-07 Nec Corp 対話画面ソースコード生成機能を有する情報処理装置、および、記録媒体
JP2002196927A (ja) * 2000-10-18 2002-07-12 Isac Inc 制約処理システム及びプログラム
JP2003149326A (ja) * 2001-11-15 2003-05-21 Hitachi Ltd マルチスタティックセンサ運用支援装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1710736A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226096A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd 制約伝播装置、制約伝播方法、およびプログラム
US10489149B2 (en) 2013-03-22 2019-11-26 International Business Machines Corporation Information processing apparatus, information processing method and program
WO2023089898A1 (ja) * 2021-11-16 2023-05-25 株式会社野村総合研究所 配送計画支援システム、配送計画支援方法およびコンピュータプログラム
JP7606010B2 (ja) 2021-11-16 2024-12-24 株式会社野村総合研究所 配送計画支援システム、配送計画支援方法およびコンピュータプログラム

Also Published As

Publication number Publication date
KR20060120188A (ko) 2006-11-24
CA2554580C (en) 2014-03-25
KR100916745B1 (ko) 2009-09-14
EP1710736A4 (en) 2011-11-16
JPWO2005071609A1 (ja) 2007-09-06
CN1910601B (zh) 2010-05-05
US7499764B2 (en) 2009-03-03
CA2554580A1 (en) 2005-08-04
CN1910601A (zh) 2007-02-07
JP4669788B2 (ja) 2011-04-13
US20070010901A1 (en) 2007-01-11
EP1710736A1 (en) 2006-10-11

Similar Documents

Publication Publication Date Title
JP4669788B2 (ja) 制約条件解決方法、制約条件解決装置、及び制約条件解決システム
US10713608B2 (en) Systems and methods for a real-time workflow platform
US9098310B2 (en) Constructing and deploying patterns of flows
EP3163436A1 (en) Visual software modeling method based on software meta-view for constructing software view
EP3163434A1 (en) Software element model-based universal software modelling method for constructing software model
US10572278B2 (en) Smart controls for user interface design and implementation
de Boer et al. Enterprise architecture analysis with xml
Kwong Hands-On Design Patterns and Best Practices with Julia: Proven solutions to common problems in software design for Julia 1. x
Pérez-Castillo et al. QRev: migrating quantum code towards hybrid information systems
Panach et al. A proposal for modelling usability in a holistic MDD method
Alfonso et al. Towards the interoperability of low-code platforms
Abughazala et al. Architecture description framework for data-intensive applications
de Brock Declarative semantics of actions and instructions
Polenov et al. Intellectualization of the models translation tools for distributed storage of models
CN115033212A (zh) 航电系统图元模型一体化构建方法、装置、计算机设备
Voit et al. The method of translation of the diagram with one type directed links into the inhibitor petri net
Wang et al. Test architecture generation by leveraging BERT and control and data flows
CN112130819A (zh) 页面处理方法、页面处理装置、电子设备和计算机可读介质
Gusarovs et al. Workflow Generation from the Two-Hemisphere Model.
Polenov et al. CLIPS Utilization for automation of models’ translation
Śmiałek et al. Pattern library for use-case-based application logic reuse
Gullí Parallelization
Loulergue et al. Verified High Performance Computing: The SyDPaCC Approach
Yüksel Standards-based modeling and generation of platform-specific Function-as-a-Service deployment packages
Vineetha et al. Generative Coding: Unlocking Ontological AI

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005517273

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020067010986

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 11447765

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2554580

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 200580002996.9

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2005703973

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 4503/DELNP/2006

Country of ref document: IN

WWP Wipo information: published in national office

Ref document number: 2005703973

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067010986

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 11447765

Country of ref document: US