WO2011036768A1 - シミュレーション装置 - Google Patents

シミュレーション装置 Download PDF

Info

Publication number
WO2011036768A1
WO2011036768A1 PCT/JP2009/066672 JP2009066672W WO2011036768A1 WO 2011036768 A1 WO2011036768 A1 WO 2011036768A1 JP 2009066672 W JP2009066672 W JP 2009066672W WO 2011036768 A1 WO2011036768 A1 WO 2011036768A1
Authority
WO
WIPO (PCT)
Prior art keywords
variable
equation
simulation
initial value
description data
Prior art date
Application number
PCT/JP2009/066672
Other languages
English (en)
French (fr)
Inventor
充伸 吉田
博正 進
幹人 岩政
侑介 遠藤
伊知郎 豊嶋
Original Assignee
株式会社 東芝
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 株式会社 東芝 filed Critical 株式会社 東芝
Priority to PCT/JP2009/066672 priority Critical patent/WO2011036768A1/ja
Publication of WO2011036768A1 publication Critical patent/WO2011036768A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Definitions

  • the present invention relates to a simulation apparatus for simulating a behavior to be verified using, for example, a computer.
  • hybrid modeling is used when simulating the behavior of machines and plants using a computer.
  • the simulation using the hybrid model is called “hybrid simulation”.
  • a system having such a simulation behavior is sometimes called a “hybrid system”.
  • the hybrid model created for the purpose of simulation is conceptually a continuous system model that is expressed by simultaneous equations that are a combination of ordinary differential equations and algebraic equations, and a state transition model for expressing state transitions associated with event occurrences. It is a model that combines. According to the hybrid model, it is possible to express a system in which the state expressed by the continuous system model is instantaneously switched by an event from the outside.
  • HCC Hybrid Concurrent Constraint Programming
  • Palo Alto Research Laboratories of Xerox Corporation trademark
  • Non-Patent Document 1 Non-Patent Document 1 below.
  • HCC is in the process of development and is still being studied at the Ames Research Center in NASA, USA.
  • HCC is a kind of technology called constraint processing programming (constraint programming). It treats ordinary differential equations and algebraic equations that represent continuous system models as constraints, and these equations can be described as they are in any order.
  • a hybrid model of the HCC language is completed by adding a description for controlling state transition to such a constraint description. According to HCC, equations can be listed (programmed) as constraints as they are, and complex models can be described.
  • HCC of Xerox (trademark) in the United States is an interpreter-type programming language.
  • the control software receives an operation command to the actuator sent to the mechanism from the outside of the simulator as a control signal.
  • it is necessary to define external functions individually, and a considerable amount of ingenuity is required in programming.
  • the present invention provides a simulation apparatus capable of executing a high-speed simulation.
  • a simulation device for the behavior of the target mechanism A plurality of equations of motion of the target mechanism including at least N (N is an integer greater than or equal to 1) rounds of the first variable modified by control statements associated with different conditions, and at least one including the first variable
  • An input means for inputting descriptive data including the first equation; Parsing the description data to detect the first equation, finding the initial value of the first variable by solving the detected first equation for the first variable included in the detected first equation, An initial condition analyzer that generates the first description data by deleting the first equation from the description data and adding an initial value declaration of the first variable to the description data; By parsing the first description data, a determination function for determining whether the condition corresponding to each control statement is correct or not, and solving the equations of motion for the first variable, the value of the first variable Control analysis means for generating a plurality of execution functions to be calculated using API functions prepared in advance for the determination function and the execution function; Simulation means for repeatedly executing the execution function of the equation of motion modified by the detected control statement by detecting the condition that is
  • high-speed simulation can be executed.
  • FIG. 6 is a diagram showing a description obtained by processing the hybrid model description of FIG. 5 by an initial condition analysis unit.
  • FIG. 7 is a diagram showing a description obtained by processing the description of FIG. 6 by a constant condition analysis unit. It is a flowchart which shows the flow of the process by an initial condition analysis part.
  • FIG. 1 is a block diagram showing a schematic configuration of a mechanism simulator according to an embodiment of the present invention.
  • This simulator is mainly composed of a hybrid model preprocessing unit 1001, a hybrid model simulation execution unit 1014, and a variable value time history storage unit 1008.
  • the hybrid model description 1000 is a source program described in a hybrid model description language and is an input to the hybrid model preprocessing unit 1001.
  • the output from the hybrid model simulation execution unit 1014 is a variable value obtained as a simulation result and its time history, and this output is stored in the variable value time history storage unit 1008.
  • the hybrid model preprocessing unit 1001 includes an initial condition analysis unit 1002, a constant condition analysis unit 1003, and a control information analysis unit 1004.
  • the hybrid model simulation execution unit 1014 includes an event processing unit 1010, an equation syntax analysis unit 1012, an equation data storage unit 1013, a continuous system equation switching unit 1011, and a continuous system simulation unit 1009.
  • the present embodiment can be configured using a general computer, and the basic hardware configuration is not shown, but a central processing unit (CPU), a memory, an external recording device, a communication interface (I / F) ), And input devices such as a display device, a keyboard, and a mouse.
  • a central processing unit CPU
  • memory e.g., a hard disk drive
  • I / F e.g., a hard disk drive
  • I / F e.g., a keyboard
  • OS operating system
  • the mechanism simulator according to the embodiment of the present invention can be implemented as application software that operates on such an operating system.
  • FIGS. 2 and 3 are diagrams showing a mechanical device (target mechanism) that is a description target of a hybrid model according to a specific example.
  • This mechanical device is a cylinder device having a simple structure including a valve 4001, a spring 4003, and a piston 4002.
  • the valve 4001 opens and closes in response to an external command (event).
  • the event that changes the air flow in the cylinder device to the right as shown in FIG. 2 is called “Right”, and the event that changes the air flow to the left as shown in FIG. 3 is called “Left”.
  • FIG. 2 shows a state in which a right event is given to the valve 4001, and a force to the left of the page is acting on the piston 4002.
  • FIG. 4 shows a state transition diagram showing such a state change and a motion equation corresponding to each state.
  • the hybrid model indicates a state transition as shown in FIG. 4 and a description of each state expressed by a differential equation, an algebraic equation or a simultaneous equation thereof.
  • FIG. 4 shows that there are two states and there is a state transition between these two states.
  • Figure 5 is a DCML language that expands the contents of the hybrid model to HCC (Hybrid4ConcurrentCConstraint Programming) based on the state transition diagram of Fig. 4 and extends declaration statements such as continuous variable cont and event type variable event. It is a figure which shows an example of the described hybrid model description (hybrid model program).
  • the description logical line numbers are assumed to be L1 to L10.
  • L3, L4, L5, L6, and L10 correspond to descriptions of operating conditions such as the initial state of the mechanical device and valve operation timing
  • L7 and L8 are the description descriptions of the state transition shown in FIG.
  • the equation of motion can be described as it is in the program.
  • the condition for transitioning to each state is called a precondition and is described after “when”.
  • a condition for transition from each state is referred to as a transition condition, and is described after “watching”.
  • “Always”, “when”, “do”, “watching”, and the like correspond to control statements.
  • the equation of motion eq1 can be said to be modified by three control statements “when”, “do”, and “always”. Note that always requires that the modifying equation always holds.
  • the program is not executed in the order of program description (the order of logical line numbers L1 ⁇ L10 in FIG. 5).
  • the individual program descriptions that are established along the time axis for executing the simulation are searched for and executed. That is, the order of the logical line numbers L1 ⁇ L10 is not related to the execution order. For example, when the simulation is started, only L3, L4, L5, and L10 are effective.
  • L6 becomes valid
  • event Left occurs
  • L8 transition condition (below “watching”, ie, Left) becomes valid
  • L8's equation of motion eq2 becomes invalid.
  • the precondition of L7 is valid and the equation of motion eq1 is valid.
  • the equations eq1 and eq2 correspond to the equation of motion of the present invention, for example.
  • f ′ 100
  • the variable x corresponds to the first variable of the present invention, for example.
  • the variables f and m correspond to the second variable of the present invention, for example.
  • the program example described above describes the case where the state transitions due to an external event (Left, Right), that is, depending on the condition relating to the occurrence of the event.
  • the state may be changed depending on the internal situation.
  • the valve 301 is not switched in FIG. 2, the moving piston 4002 comes into contact with the spring 4003 and receives a reaction force from the spring 4003. That is, regarding the position of the piston 4002, there may be a case where state transition occurs even when there is no external event.
  • the necessity of state transition can be determined by evaluating an evaluation formula (inequality) whether x is positive.
  • a hybrid model is a model that combines a continuous system model expressed by simultaneous equations in which ordinary differential equations and algebraic equations are combined, and a state transition model for expressing state transitions accompanying event occurrence.
  • the hybrid model it is possible to express a system in which the state expressed by the continuous system model is instantaneously switched by an event from the outside.
  • the initial condition analysis unit 1002 analyzes an expression (equation without a control statement such as always) defined to be called only once at time 0 at the time of simulation execution.
  • type declarations are described, and type information for variable names used in equations is determined.
  • a cont type indicating that the variable is used inside the continuous system equation is declared for the variable a.
  • Equations are described in L2 and L3.
  • equations without control statements such as always do, and when are described.
  • a valid flag is set only at time 0 during simulation, and an invalid flag is set otherwise.
  • the equation described in the HCC model program is registered in the equation data storage unit 1013, and valid / invalid are determined each time the time is counted, and the valid equation is executed) .
  • a valid flag is set for all simulation times and is valid. If the number of registered equations is large, the increase in the validity / invalidity determination processing slows down the simulation speed and increases the flag storage area.
  • the initial analysis unit 1002 analyzes a variable that is effective only at time 0, such as L2, and acquires the value (initial value) of the variable. Then, the equation of L2 is removed from the hybrid model description, and the hybrid model description after the removal is rewritten by adding information that the initial value of a is 1.
  • the number of equations stored in can be reduced to speed up the simulation.
  • FIG. 8 is a flowchart showing a typical processing flow by the initial condition analysis unit 1002.
  • the hybrid model description 1000 is parsed to create a parse tree (parse data) (ST2000).
  • FIG. 9 shows a syntax tree generated from Equation 1 above.
  • control statements related to equations are extracted (ST2002). At this time, it is checked whether there is an initial value declaration of the variable (for example, see L3 in FIG. 5). If there is, the variable and its initial value are stored in the list 1006.
  • the list 1006 contains nothing at first.
  • control statements are assigned to all equations (ST2003). If control statements are assigned to all equations (YES in ST2003), the hybrid model description is passed to the constant condition analysis unit 1003 in the next stage without any change, and the process is terminated.
  • the variable and value are read from the equation (ST2007), and the read value is registered in the list 1006 as the initial value of the variable (ST2009).
  • the description of the equation is deleted from the original description, and the declaration description of the initial value of the variable is added.
  • the left leaf is the single variable “a '”
  • the right leaf is the constant “1”
  • a description for calculating the initial value of the variable is generated based on the equation and generated
  • the initial value of the variable is obtained by solving the description (ST2006). For example, if the equation contains only one variable and the rest are constants, generate a description to solve the single equation, and if it contains multiple variables, solve it by combining it with other equations containing the same variable Generate a description for Then, the obtained initial value of the variable is registered in the list 1006, the description of the equation is deleted, and the initial value declaration description of the variable is added.
  • variable a This consists of the equation extracted in ST2003 (initial condition equation instructed to be executed only once at the start of simulation) and the variable declaration part used in the equation.
  • the value of variable a is obtained as the initial value.
  • the control information analysis unit, the equation syntax analysis unit, and the continuous system simulation unit, which will be described later, are used for simulation, and the simulation result is obtained from the variable value time history storage unit 1008.
  • the L2 equation does not satisfy ST2004 conditions, and the L3 equation satisfies ST2004 and ST2005 conditions.
  • step ST2006 the following expression 4-1 is generated. That is, the initial value declaration (equation) including the same variables is made simultaneous.
  • the constant condition analysis unit 1003 performs a constant condition analysis process on the hybrid model description (first description data) that has passed through the initial condition analysis unit 1002, using the list 1006 obtained by the initial condition analysis unit 1002.
  • L2 and L3 form a constant condition.
  • L3 is not registered in the equation (L2 is determined not to be registered as an equation in the initial condition analysis unit), and a in other constraint conditions using a (here, L4 and L5) is 2
  • L4 and L5 a in other constraint conditions using a
  • FIG. 10 is a flowchart showing the flow of processing by the constant condition analysis unit 1003.
  • the hybrid model description (first description data) passed through the initial condition analysis unit 1002 is parsed to generate a parse tree (syntax analysis data) (ST3000).
  • a parse tree syntax analysis data
  • an equation is extracted based on the parse tree (ST3001).
  • control statements related to the equations are extracted (ST3002).
  • an equation having only an always statement as a control statement is targeted (YES in ST3003). It is evaluated whether a variable in the equation to which only the always statement is assigned has a differential symbol, the differential value of the variable is 0, and whether or not the variable is registered in the list 1006 (ST3004).
  • Equation 5 The operation will be described in detail using Equation 5 above.
  • the initial value of the variable a is 2.
  • the initial value 2 of the variable a is registered in the list 1006, and the following expression 5-1 is generated.
  • the constant condition analysis unit 1003 performs syntax analysis on the description of [Equation 5-1] in step ST3000, thereby creating a syntax tree shown in FIG. Note that the initial value declaration is omitted for simplicity.
  • evaluation is performed for id: 1 and id: 2. Evaluate if there is an equal sign node immediately below the always node, and if one of the variables below the equal sign node has a differential symbol and the other is 0.
  • FIG. 12 is a flowchart showing another operation example of the constant condition analysis unit 1003.
  • Steps ST3000 to S3003 are the same as in FIG. 10, and the processing in the case of NO in step ST3004 is significantly different from that in FIG. Also, the flow after step ST3005 returns to step ST3004, except when all the target equations in ST3004 have been handled.
  • step ST3004 that is, the variable in the equation to which only the always statement is assigned has a differential symbol
  • the differential value of the variable is 0, and the variable is registered in the above list 1006
  • the always statement is removed from the equation to which only the always statement is given, and the equation is solved for the differentiation of the variable (ST3006). If it is not possible to solve only with the equation, it may be solved with another equation including the differentiation of the same variable. Then, it is determined whether the differential value of the variable included in the equation is 0 (ST3007). If 0, the variable of each equation including that variable is replaced with a constant (initial value registered in list 1006) (ST3005). At this time, the initial value declaration of the variable replaced with the initial value is deleted, and the equation is deleted together with the always statement.
  • the initial condition analysis unit 1002 registers in the list 1006 that the initial value of the variable a is 2 and the initial value of the variable b is 0.
  • the output (first description data) of the initial condition analysis unit 1002 is expressed by the following [Equation 6-1].
  • the syntax tree shown in FIG. 13 is output by performing syntax analysis in step ST3000. Because it is simple, the display of the initial value declaration is omitted. Evaluate for id: 1 to id: 3, there is always a node directly below, the node directly below the always node is an equal sign, one variable below the equal sign node has a differential symbol, the other is 0, It is determined whether the initial value of the variable is registered. id: 1 is false (NO in ST3004), id: 2 is true (YES in ST3004), and id: 3 is false (NO in ST3004). Therefore, if id: 2 is replaced in ST3005, a syntax tree as shown in FIG. 14 is obtained.
  • step ST3004 is executed again.
  • id: 1 in FIG. 14 is true (YES in ST3004).
  • step ST3005 is executed again, the syntax tree of FIG. 15 is obtained.
  • step ST3000 syntax analysis is performed in step ST3000 to generate the syntax tree of FIG.
  • id: 1 and id: 2 are extracted. Both of these expressions are YES in step ST3003.
  • step ST3004 both are NO.
  • the control information analysis unit 1004 analyzes the hybrid model description (second description data) (see FIG. 7) that has passed through the initial condition analysis unit 1002 and the constant condition analysis unit 1003 to obtain a model equation registration program 1005 and an event control program 1007. Is generated.
  • a function for registering a model equation and a function for switching a continuous system equation are provided in advance as an API (Application Program Interface) function.
  • the model equation registration program 1005 and the event control program 1007 are programs in which descriptions for calling the corresponding API functions are appropriately combined along the hybrid model description, and are generated by the control information analysis unit 1004.
  • the hybrid model preprocessing unit 1001 is considered as a kind of compiler in which the input is a hybrid model description and the output is a C program (source) including, for example, a C API function call description. You can also.
  • the model equation registration program 1005 and the event control program 203 are further compiled by a compiler such as C language, and for example, a library that can be linked dynamically at the time of execution is generated.
  • a compiler such as C language
  • the hybrid model simulation execution unit 1014 is linked with the generated dynamic link library, completes a simulation program that faithfully reproduces the input hybrid model, and becomes executable.
  • an API function for starting the equation syntax analysis unit 1012 is first called, and then a continuous system switching API function group is executed to perform the simulation.
  • the programming language is C language. int XXX_AddEqnData (char * eqn, int * err) int XXX_ActivateEqn (int eqnid) int XXX_DeActivateEqn (int eqnid) int XXX_SetInitVal (char * var, double val)
  • XXX_AddEqnData specifies a string pointer representing one continuous system equation as an argument.
  • XXX_AddEqnData parses this continuous system equation, converts the description of the continuous equation into a data structure (internal data representation) that can be simulated (see FIG. 17 described later), and stores the internal data representation in the equation data storage unit 1013. Perform the registration process. If any error occurs in this process, an error code is set in err. If the process is completed normally, an ID number is assigned to the registered equation.
  • the second API function XXX_ActivateEqn activates the equation corresponding to the equation ID number specified in the argument. If an already valid equation is specified, nothing is done. In this case, an error code is returned as a return value.
  • the fourth API function XXX_SetInitVal has a string representing one variable name as the first argument. It also has the initial value of the variable as the second argument.
  • the XXX_SetInitVal function sets the initial value of the variable that matches the first argument among the variables converted into the internal data representation by the XXX_AddEqnData function. This value is an initial value when the continuous system simulation unit 1009 performs numerical calculation.
  • the control information analysis unit 1004 first generates a function (InitEqnData) that calls XXX_AddEqnData in order for necessary equations, that is, an execution function. This corresponds to the model equation registration program 1005.
  • control information analysis unit 1004 also generates a function (ChangeEqn) that performs condition check and equation change (replacement) every time the time advances ⁇ t, that is, a determination function, during simulation execution.
  • a function ChangeEqn
  • the ChangeEqn function detects the occurrence of an event using the GetEvent function.
  • the ChangeEqn function is called from the event processing unit 1010 for each time step during simulation execution.
  • GetEvent is a function that checks whether an event specified by a name has occurred.
  • SetEvent is a function that causes an event specified by a name, and time is a variable that represents a simulation time.
  • the above programs are compiled by a C compiler as described above, further arranged in a dynamic link library format, and linked at the time of execution.
  • the hybrid model simulation execution unit 1014 is activated and the simulation execution is performed by calculating the value of the continuous system equation.
  • the equation syntax analysis unit 1012 corresponds to the model equation registration program 1005 and calls an API function (the above-described function XXX_AddEqnData) inside.
  • the character string constituting the description of the continuous system equation is passed as an argument to this API function (function XXX_AddEqnData).
  • function XXX_AddEqnData the description data of the continuous system equation is converted into a data structure (internal data expression) that can be simulated, and the converted data is registered in the equation data storage unit 1013.
  • a unique ID number is assigned to each continuous system equation.
  • a tree structure as shown in FIG. 17 is generated as the internal data representation.
  • reference numeral 61 is a parent node (clause) of a linear polynomial
  • 62 is a node of multiplication
  • 63 is a node of division
  • 64 is a node of an external function (meaning other than four arithmetic operations)
  • 65 is a linear polynomial. It represents the node of each item that composes.
  • everything corresponding to the leaves of the tree structure is a variable (a, b, c), and a real number coefficient is added to these to form a linear form.
  • the line format can be an argument of an external function such as cos, or it can be the target of multiplication or division.
  • a variable is separately provided with a flag indicating whether or not a value has been determined, and the current value of the variable is held based on such tree structure data. If the values of all the leaves of the tree structure (ie, the values of the variables) are fixed, the value of the expression can be calculated.
  • a tree structure is formed in advance by connecting internal data structures so that the value of the expression can be calculated at high speed.
  • the initial value of the variable and the initial state of the target mechanism are also acquired and stored in the equation data storage unit 1013.
  • a flag indicating that the value of the variable is fixed is set for the tree structure including the variable.
  • the continuous system equation switching unit 1011 is called inside the event processing unit 1010, refers to the contents of the model equation control information storage unit 1013, and executes switching of the continuous system equations using the valid / invalid flag.
  • the event processing unit 1010 corresponds to the event control program 1007 (ChangeEqu ()) (determination function) as described above.
  • the equation of motion eq1 in FIG. 7 is invalid, and the equation of motion eq2 is valid.
  • the flag is operated so as to enable the motion equation eq1 of FIG. 7 and disable the motion equation eq2.
  • These valid / invalid flags are managed as attribute data of each equation stored in the equation data storage unit 114.
  • the continuous system simulation unit 1009 refers to the equation data storage unit 1013, and performs numerical integration for each time step using the internal data representation of the continuous system equation stored in the storage unit 1013 in the form of a tree structure as an operation target. .
  • FIG. 18 is a flowchart showing a series of processing procedures in the simulation according to the embodiment of the present invention.
  • the initial condition analysis unit 1002 performs initial condition analysis processing on the hybrid model description 1000, and the constant condition analysis unit 1003 performs constant condition analysis on the hybrid model description after being processed by the initial condition analysis unit 1002.
  • the control information analysis unit 1004 generates a model equation registration program 1005 and an event control program 1007 by parsing the hybrid model description that has undergone the processing of ST9001.
  • the pre-processing for the simulation execution is completed, and the simulation execution stage is started from here.
  • the equation syntax analysis unit 1012 is called from the hybrid model simulation execution unit 1014.
  • the equation syntax analysis unit 1012 corresponds to the model equation registration program 1005, and internally calls the API function XXX_AddEqnData, converts the description data of the equation into a data structure that can be simulated (for example, tree structure data), and stores the equation data storage unit Register in 1013 (step 9002).
  • the initial value of the variable and the initial state of the target mechanism are also registered in the equation data storage unit 1013.
  • the event processing unit 1010 checks whether an event has occurred (for example, checks whether a control signal indicating the occurrence of a vent has been received from an external device that controls the event) (step 9003). However, in step ST9003 in the first time of this flow, the simulation unit 1009 receives a simulation execution start instruction.
  • the continuous system equation switching unit 1011 determines in step 9004 whether or not it is necessary to switch the continuous system equation accompanying the state transition. If necessary, the continuous system equation switching unit 1011 switches the active continuous system equation by operating the valid / invalid flag (step 9005). For this reason, the API function XXX_ActivateEqu or XXX_DeActivateEqn is called. However, in step ST9003 in the first time of this flow, an equation corresponding to the initial state is selected.
  • step ST9006 in the first time of this flow, numerical integration at time 0 (initial time or start time) is executed.
  • a predetermined end condition is determined (for example, whether the time has reached a predetermined simulation end time) (step 9009).
  • the simulation execution is ended.
  • the time is advanced by one step (step 9010), the process returns to step 9003, and the same processing procedure is repeated.
  • simulation can be executed at high speed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

[課題]シミュレーションを高速に行う。 [解決手段]本発明の装置は、それぞれ異なる条件に対応付けされた制御文によって修飾され第1変数のN回微分を含む対象機構の複数の運動方程式と、第1変数を含む第1方程式とを含む記述データを入力する入力手段と、記述データを構文解析して第1方程式を検出し、検出した第1方程式を第1変数について解くことにより第1変数の初期値を求め、記述データから第1方程式を削除し、第1変数の初期値宣言を記述データに追加して第1の記述データを生成する初期条件解析部と、第1の記述データを構文解析することにより各制御文に対応する条件の正否を判定する判定関数と、各運動方程式を第1変数について解くことにより第1変数の値を計算する複数の実行関数とを生成する制御解析手段と、判定関数と複数の実行関数に基づきシミュレーションを行うシミュレーション手段とを備える。

Description

シミュレーション装置
 本発明は、例えばコンピュータを用いて検証対象の挙動をシミュレーションするためのシミュレーション装置に関する。
 現在、コンピュータを用いて機械やプラント等の挙動のシミュレーションを行う際に、ハイブリッドモデリングと呼ばれる手法が使われている。ハイブリッドモデルを用いたシミュレーションは「ハイブリッドシミュレーション」と呼ばれている。このようなシミュレーション挙動をするシステムを「ハイブリッドシステム」と呼ぶこともある。
 シミュレーションの目的で作成されるハイブリッドモデルは、概念的には常微分方程式や代数方程式を連立させた連立方程式によって表現される連続系モデルと、イベント発生に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。ハイブリッドモデルによれば、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現することができる。
 ハイブリッドモデルを記述するための言語として、米国ゼロックス社(商標)のパロアルト研究所にて創作されたHCC(Hybrid Concurrent Constraint Programming)と呼ばれる言語がある(下記非特許文献1参照。)。HCCは発展途上にあり、現在も米国NASAのエイムズ研究所において研究が進められている。HCCは制約処理プログラミング(コンストレイントプログラミング)と呼ばれる技術の一種であり、連続系モデルを表現する常微分方程式や代数方程式を制約として扱い、これら方程式をそのまま順不同で記述することができる。このような制約記述に、状態遷移を制御する記述を付加してHCC言語のハイブリッドモデルは完成される。HCCによれば、方程式をそのまま制約として羅列する(プログラミングする)ことができ、複雑なモデルを記述可能である。
 このようにハイブリッドモデルの技術を用いれば、系の特性を常微分方程式などでモデル表現し、初期状態から時間の推移に従ってどのような挙動を示すかをシミュレーションすることができる。
 微分方程式などで表現可能な対象や現象を的確にモデル化できるハブリッドモデルの技術の応用例として、ソフトウエアにより機構が制御されるメカトロニクス機器の機構シミュレーションがある。かかる機構シミュレーションによれば、機構の実機が存在しない状況においても、当該機構を制御する制御ソフトウエアのプロトタイピング、テスト、あるいはデバッグなどが行えるようになる。
 しかし、ハイブリッドモデルを扱うことのできる公知のプログラム言語は、必ずしもメカトロニクス機器の機構シミュレーションに応用することを目的に開発されたものではなく、このため次のような問題点がある。
 例えば米国ゼロックス社(商標)のHCCは、インタプリタ型のプログラミング言語であり、例えば制御ソフトウエアが機構に送信するアクチュエータへの動作コマンドなどを、シミュレータの外部から制御信号として受け取るような構成とする場合、外部関数などを個別に定義する必要がある上、プログラミングにおいてかなりの工夫を必要とする。
 また、ハイブリッドシステムをC言語などの逐次処理型のプログラム言語に変換し、コンパイルすることで実行プログラムを作成する方法がある(下記特許文献1参照)。しかしこの方法では、常微分方程式の登録数が大きくなると計算量が大きくなり、シミュレーション速度が低下する。
<URL:http://www2.parc.com/spl/projects/mbc/publications.html#cclanguages>
 本発明は、高速なシミュレーションを実行可能なシミュレーション装置を提供する。
 対象機構の挙動のシミュレーション装置であって、
 それぞれ異なる条件に対応付けされた制御文によって修飾され第1変数の少なくともN(Nは1以上の整数)回微分を含む前記対象機構の複数の運動方程式と、前記第1変数を含む少なくとも1つの第1方程式と、を含む記述データを入力する入力手段と、
 前記記述データを構文解析して前記第1方程式を検出し、検出した第1方程式を前記検出した第1方程式に含まれる前記第1変数について解くことにより前記第1変数の初期値を求め、前記記述データから前記第1方程式を削除し、前記第1変数の初期値宣言を前記記述データに追加することにより第1の記述データを生成する初期条件解析部と、
 前記第1の記述データを構文解析することにより、各前記制御文に対応する条件の正否を判定する判定関数と、各前記運動方程式を前記第1変数について解くことにより前記第1変数の値を計算する複数の実行関数とを、前記判定関数と前記実行関数に対して事前に用意されたAPI関数を用いて生成する制御解析手段と、
 初期時刻から一定時間毎に前記判定関数を実行することにより各前記制御文のうち条件が成立するものを検出し検出した制御文により修飾される運動方程式の実行関数を実行することを繰り返すシミュレーション手段と、
 前記シミュレーション手段により一定時間毎に取得された前記第1変数の値の履歴を記憶する変数値履歴記憶部と、
 を備えたシミュレーション装置。
 本発明により、高速なシミュレーションが実行可能となる。
本発明の実施形態に係る機構シミュレータの概略構成を示すブロック図である。 ハイブリッドモデルの記述対象である機械装置の一状態を示す図である。 ハイブリッドモデルの記述対象である機械装置の他の状態を示す図である。 ハイブリッドモデルの記述対象である機械装置の状態遷移図である。 ハイブリッドモデル記述の一例を示す図である。 図5のハイブリッドモデル記述を初期条件解析部で処理して得られた記述を示す図である。 図6の記述を定数条件解析部で処理して得られた記述を示す図である。 初期条件解析部による処理の流れを示すフローチャートである。 初期条件解析部の処理の過程で生成される構文木の一例を示す図である。 定数条件解析部による処理の流れを示すフローチャートである。 定数条件解析部において構文解析を行うことで生成される構文木の例を示す図である。 定数条件解析部の他の動作例を示すフローチャートである。 定数条件解析部において構文解析を行うことで生成される構文木の他の例を示す図である。 定数条件解析部の処理過程で得られる構文木の例を示す図である。 定数条件解析部の処理過程で得られる構文木の他の例を示す図である。 定数条件解析部の処理過程で得られる構文木のさらに他の例を示す図である。 式から生成された木構造の一例を示す図。 本発明の実施形態に係るシミュレーションにおける一連の処理手順を示すフローチャートである。
 以下、図面を参照しながら本発明の実施形態を説明する。
 図1は本発明の実施形態に係る機構シミュレータの概略構成を示すブロック図である。
 このシミュレータは、大きくハイブリッドモデル前処理部1001と、ハイブリッドモデルシミュレーション実行部1014と、変数値時間履歴記憶部1008により構成されている。
 ハイブリッドモデル記述1000は、ハイブリッドモデル記述言語で記述されたソースプログラムであってハイブリッドモデル前処理部1001への入力となる。また、ハイブリッドモデルシミュレーション実行部1014からの出力は、シミュレーション結果として得られた変数値とその時間履歴であり、この出力は変数値時間履歴記憶部1008に記憶される。
 図1に示すように、ハイブリッドモデル前処理部1001は、初期条件解析部1002と、定数条件解析部1003と、制御情報解析部1004とを備える。また、ハイブリッドモデルシミュレーション実行部1014は、イベント処理部1010と、方程式構文解析部1012と、方程式データ記憶部1013と、連続系方程式切り替え部1011と、連続系シミュレーション部1009とを備える。
 なお、本実施形態は一般的なコンピュータを用いて構成することができ、その基本的なハードウェア構成として、図示しないが中央演算ユニット(CPU)、メモリ、外部記録装置、通信インターフェース(I/F)、および表示装置やキーボード、マウス等の入力装置を備える。また、これらのハードウェアを制御するためのオペレーティングシステム(OS)を備える。また、本発明の実施形態に係る機構シミュレータは、このようなオペレーティングシステム上で動作するアプリケーションソフトウェアとして実装することができる。
 このような本実施形態に係る機構シミュレータの構成及びその処理手順について説明する前に、ここではまずハイブリッドモデル1000がどのように記述されるか具体例を挙げて説明する。
 図2および図3は、具体例に係るハイブリッドモデルの記述対象である機械装置(対象機構)を示す図である。この機械装置は、バルブ4001、バネ4003、およびピストン4002を備えた簡素な構造を有するシリンダ装置である。
 バルブ4001は外部からの指令(イベント)に応じて開閉動作する。シリンダ装置内の空気の流れを図2のように右側に変更するイベントを「Right」と呼び、空気の流れを図3のように左側に変更するイベントを「Left」と呼ぶ。図2は、バルブ4001にRightのイベントが与えられた状態を示しており、ピストン4002には紙面左向きへの力が作用している。この状態を示す運動方程式はシリンダ装置の下部に示してあるように、「-F = m x’’」である。これに対し図3は、バルブ4001にLeftのイベントが与えられた状態を示しており、空気の流れの向きが変わり、運動方程式は同図のように「F = m x’’」に変化する。
 図4は、このような状態変化とそれぞれの状態に対応する運動方程式とを表す状態遷移図を示す。ハイブリッドモデルは、この図4に示されるような状態遷移と、各状態の記述が微分方程式や代数方程式あるいはそれらの連立方程式で表現されるものを指す。図4によれば、状態が2つあって、これら2つの状態間に状態遷移が存在することがわかる。
 図5は、図4の状態遷移図をもとに具体的なハイブリッドモデルの内容をHCC(Hybrid Concurrent Constraint Programming)に連続型変数contとイベント型の変数event等の宣言文を拡張したDCML言語で記述したハイブリッドモデル記述(ハイブリッドモデルプログラム)の一例を示す図である。図5において、記述の論理行番号を仮にL1~L10とする。L3,L4,L5、L6、およびL10は、この機械装置の初期状態やバルブ操作のタイミングなどの運転条件の記述に相当し、L7およびL8は図4に示した状態遷移の表現記述である。
 DCMLでは、図5のL7およびL8から分かるように運動方程式(連続系方程式)を、プログラム内でそのまま記述することができる。また、それぞれの状態へ遷移する条件を前提条件といい「when」に続いて記述される。また、それぞれの状態から遷移していく条件(すなわちそれぞれの状態をキャンセルする条件)を遷移条件といい、「watching」に続けて記述される。「always」「when」「do」「watching」等は制御文に相当する。たとえば運動方程式eq1は、「when」「do」「always」の3つの制御文によって修飾されているといえる。なおalwaysは修飾している方程式が常に成立することを要求する。
 なお、DCMLでは、プログラムの記述の順序(図5における論理行番号L1→L10の順序)に沿って実行されるわけではない。DCMLでは、個別のプログラム記述のうち、シミュレーションを実行する時間軸に沿って成立するものが探索され、実行される。すなわち、論理行番号L1→L10の順序は実行順序とは関係がない。例えば、シミュレーションを開始した時点では、L3,L4,L5およびL10のみが有効である。
 ここで、L5によりイベントRightが発生すると、L8の前提条件であるRightが有効となり、L8に記述されている運動方程式eq2が有効になる。つまり、図4の左側の状態からシミュレーションが実行されることになる。
 さらに、時間が50になるとL6が有効となり、イベントLeftが発生し、L8の遷移条件(「watching」以下、すなわちLeft)が有効となって、L8の運動方程式eq2が無効となる。これに代わって、L7の前提条件が有効となり、運動方程式eq1が有効となる。
 方程式eq1および方程式eq2はたとえば本発明の運動方程式に相当する。方程式x=0はたとえば本発明の第1方程式に対応する。f’=100,m’=1はたとえば本発明の第2方程式に対応する。変数xはたとえば本発明の第1変数に対応する。変数f,mはたとえば本発明の第2変数に対応する。
 以上のようなプログラム例は外部からのイベント(Left, Right)によって、すなわちイベントの生起に関する条件によって、状態が遷移する場合を記述したものであったが、勿論、これとは別の条件、たとえば内部の状況によって状態を変化させてもよい。例えば、図2においてバルブ301が切り替えられないままの場合には、移動するピストン4002がバネ4003に接触し、該バネ4003からの反力を受けるようになる。すなわちピストン4002の位置に関して、外部からのイベントが無い場合でも状態遷移が起こる場合が存在する。このような場合は、例えばxが正であるかどうかの評価式(不等式)を評価することで状態遷移の必要性を判断できる。
 一般的に、ハイブリッドモデルは、常微分方程式や代数方程式を連立させた連立方程式によって表現される連続系モデルと、イベント発生に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。ハイブリッドモデルによれば、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現することができる。
 次に、ハイブリッドモデル前処理部1001について説明する。
 初期条件解析部1002ではシミュレーション実行時に時刻0で一度だけ呼ばれることが定められた式(always等の制御文が付加されていない方程式)を解析する。
 理解の簡単のため、例えば以下の記述を考える。この記述は、説明のため、一例として示したものである。
   [式1]
L1:  cont a;
L2:  a=1;
L3:  always a’=1;
 L1では型宣言が記述されており、方程式で利用する変数名の型情報を決定する。ここでは、連続系方程式の内部で利用される変数であることを示すcont型を変数aに対して宣言している。
 L2およびL3では方程式が記述されている。L2ではalways, do, whenなどの制御文が付与されていない方程式が記述され、このような方程式に対してはシミュレーション時に時刻0のときのみ有効フラグが設定され、それ以外では無効フラグが設定される(後述のようにシミュレーション実行部では方程式データ記憶部1013に、HCCモデルプログラムに記述の方程式が登録され、時刻がカウントされるごとに有効、無効が判定され、有効の方程式が実行される)。またL3のようにalways文のみが付与されている方程式では、全てのシミュレーション時刻に対して有効フラグが立ち、有効とされる。方程式の登録数が多いとこのような有効・無効の判定処理の増加によりシミュレーション速度が遅くなるとともにフラグの記憶領域も増大する。そこで初期解析部1002ではL2のような時刻0でのみ有効となる変数を解析し、その変数の値(初期値)を取得する。そしてハイブリッドモデル記述からL2の方程式を除去し、除去後のハイブリッドモデル記述をaの初期値が1であるとの情報を付加して書き換える。
 具体的にハイブリッドモデル記述の型宣言 “cont a;” に“=1”を付加して“cont a=1;”とすることでaの初期値が1であるとの情報を付加できる。これにより以下の式2が得られる。
   [式2]
L1:  cont a=1;
L2:  always a’=1;
 これにより、aの型宣言とともに、aの初期値が1であると扱われ(“cont a=1;”は初期値宣言であり、方程式とは扱われない)、これにより方程式データ記憶部1013に記憶される方程式の個数を削減して、シミュレーションを高速化できる。
 もし仮に、上記式1を後述の制御情報解析部1004で処理するとL2の記述が方程式であると解釈されるため、L2,L3の方程式(構文木)がそれぞれ方程式データ記憶部1013に登録される。これに対し、上記式2の場合では1つの方程式のみ登録されるため、登録される方程式が削減されることとなる。またこれに応じて方程式毎の有効・無効フラグを保持するためのメモリ領域も削減することができる。
 図8は初期条件解析部1002による典型的な処理の流れを示すフローチャートである。
 まずハイブリッドモデル記述1000の構文解析を行い、構文解析木(構文解析データ)を作成する(ST2000)。上記式1から生成される構文木を図9に示す。
 次に構文木において方程式を抽出する(ST2001)。
 次に方程式に関連する制御文を抽出する(ST2002)。またこの際、変数の初期値宣言(例えば図5のL3参照)があるかどうかを検査し、もしある場合は、その変数とその初期値とを一覧1006に格納する。なお一覧1006には最初何も入っていない。
 次にすべて方程式に対して制御文が付与されているかを評価する(ST2003)。もしすべての方程式に制御文が付与されている場合は(ST2003のYES)、ハイブリッドモデル記述に変更を加えることなく、次段の定数条件解析部1003に渡し、処理を終了する。
 一方、制御文が付加されていない方程式が存在する場合は(ST2003のNO)、その方程式の構文木のノードとリーフの種別を特定し、その方程式が、等号”=”を除いたとき、1変数と定数とで構成されるか否かを判断する(ST2004)。
 ST2004の条件が成立するとき、次に、(A)方程式のノードが等号で、左のリーフが単一の変数、右のリーフが定数、もしくは、(B)方程式のノードが等号で、左のリーフが定数、右のリーフが単一の変数、のいずれかの条件が満足されるかを判断する(ST2005)。
 (A)または(B)の条件が成立する場合は、その方程式から変数と値とを読み出し(ST2007)、読み出した値を変数の初期値として、一覧1006に登録する(ST2009)。この際、元の記述からその方程式の記述を削除し、その変数の初期値の宣言記述を追加する。
 上記式1のL2の方程式では、ノードは等号”=”であり、左のリーフは単一の変数“a’”、右のリーフは定数“1”であり、その方程式は、等号”=”を除くと、1変数と定数とで構成され、左辺が変数a、右辺が定数1であるため、変数aの初期値が1であるとの情報を一覧1006に登録する。そして式2に示したように記述を式1から書き換える。
 ST2004の条件が成立しないとき、もしくはST2005の(A)および(B)のいずれの条件も成立しないときは、変数の初期値を算出するための記述をその方程式をもとに生成し、生成した記述を解くことで変数の初期値を求める(ST2006)。たとえばその方程式が1つの変数のみを含み、残りが定数であるときは、その方程式単体を解くための記述を生成し、複数の変数を含むときは同じ変数を含む他の方程式と連立させて解くための記述を生成する。そして求めた変数の初期値を一覧1006に登録し、その方程式の記述を削除し、その変数の初期値宣言記述を追加する。
 上記処理においてST2004の処理対象に複数の方程式が存在するときは、まずST2004、ST2005の両方を満たす方程式を優先的に検出および処理し、その後ST2009を経てST2004に戻り、次にST2004を満たしST2005を満たさない方程式を処理し、最後に、ST2004を満たさない方程式を処理するものとする。
 上記初期条件解析部の処理をより深く理解するため、例えば、以下の記述を考える。
 [式3]
L1:  cont a;
L2:  a-2=0;
L3:  always { a’=0; b’=0; }
 この場合、L2の方程式はST2003の条件に適合するが、ST2005の条件を満たさない。
 この場合、
 [式3-1]
L1:  cont a;
L2:  a-2=0;
という式を生成する。
 これはST2003で抽出された方程式(シミュレーションの開始時に一度だけ実行することを指示した初期条件方程式)と、方程式で使用される変数宣言部とからなる。この記述をシミュレーションで時刻0のみ計算することで変数aの値を初期値として取得する。計算の際は、後述の制御情報解析部、方程式構文解析部、連続系シミュレーション部を利用してシミュレーションを行わせ、シミュレーションの結果を変数値時間履歴記憶部1008から取得することで、aの初期値2を取得する。あるいは初期条件解析部内でL2の方程式を解くことによりaの初期値を取得してもよい。この値を当該変数の初期値として、一覧1006に登録する(ST2009)。そして上記式3からL2の文を削除し、“cont a;”を“cont a=2;”へ書き換える。
 また以下の式4のような場合でも同様にして処理可能である。
 [式4]
L1:  cont a,b;
L2:  a+b=2;
L3: b=1;
L4:  always { a’=0; b’=0; }
 この場合、L2の方程式はST2004の条件を満たさず、L3の方程式はST2004およびST2005の条件を満たす。この場合はまずL3の方程式に対してST2007の処理で変数bの初期値1を取得し、これを上記一覧1006に登録し(ST2009)、L3の「b=1」を削除し、「cont b=1;」の初期値宣言を追加する。
 その後、L2の方程式を評価するために、ステップST2006において以下の式4-1の記述を生成する。すなわち同じ変数を含む初期値宣言(方程式)を連立させる。
 [式4-1]
L1:  cont a,b=1;
L2:  a+b=2;
 この式4-1を解く(a+b=2と、b=1とを連立させて解く)ことで変数aの初期値が1であると分かる。よってST2009でaの初期値を1と登録し、該当する方程式「a+b=2」を削除し、「cont a=1;」の初期値宣言を追加する。最終的に式4は、以下のように書き換えられる。
 [式4-2]
L1: cont a=1, b=1;
L2: always{a’=0;b’=0}
 これにより登録される方程式の個数は、式4の場合の3つから1つへ削減され、シミュレーション速度を向上させることが出来る。
 ここで図5のハイブリッドモデル記述を対象とした場合の初期条件解析部1002の処理を説明する。この場合、制御文の付加されていない方程式として、ST2003でL10の「x=0」と「x’=0」が検出される。「x=0」は、ST2004のYES、ST2005のYESにより、xの初期値が0であることが分かり、この旨が一覧1006に追加される。この際、図5のL10から、方程式(x=0)が削除され、L2の行の“cont x”が “cont x=0”に書き換えられる。一方、「x’=0」は微分変数を含む方程式であるためST2006の処理から外すものとする。すなわちST2006の処理では微分変数を含む方程式は処理の対象から除外するものとする。結果として、書き換え後のハイブリッドモデル記述は図6に示すようになる。
 次に、定数条件解析部1003について説明する。定数条件解析部1003では、初期条件解析部1002で得られた一覧1006を用いて、初期条件解析部1002を経たハイブリッドモデル記述(第1の記述データ)に対し、定数条件の解析処理を行う。なお定数条件とは、初期値設定とその値の変化がない文の組み合わせである。たとえば、
 [式5]
L1:  cont a,b;
L2:  a =2;
L3:  always a’ =0;
L4:  always b = a+5;
L5:  always if(b!=0) b = a + 1;
 L2とL3は定数条件を形成する。このような場合、L3は方程式に登録せず(L2は初期条件解析部で方程式として登録されないことが確定する)、aを用いた他の拘束条件式(ここではL4、L5)のaを2に置換することで登録される方程式を削減し、シミュレーションの高速化を図る。
 図10は定数条件解析部1003による処理の流れを示すフローチャートである。
 まず初期条件解析部1002を経たハイブリッドモデル記述(第1の記述データ)の構文解析を行い、構文解析木(構文解析データ)を作成する(ST3000)。次に、構文解析木に基づき、方程式を抽出する(ST3001)。次に方程式に関連する制御文を抽出する(ST3002)。次に制御文としてalways文のみが付与されている方程式を対象とする(ST3003のYES)。always文のみが付与されている方程式中の変数に微分記号があり、その変数の微分値が0であり、かつその変数が一覧1006に登録済みか否かを評価する(ST3004)。そうである場合(ST3004のYES)は、その変数を含む各方程式のその変数の値をすべて定数(一覧1006に登録された初期値)に置換する(ST3005)。この際、ST3004の条件を満たした方程式をalways文とともに削除し、また、定数置換された変数の初期値宣言を削除する。そうでない場合は(ST3004のNO)、本フローを終了する。
 ここで上記処理においてST3004において条件を満たす方程式と満たさない方程式との両方が存在するときはまずは満たす方程式を優先的に選択してST3005の処理を行い、条件を満たす方程式がなくなったら、ST3004のNOに従って、本フローの処理を終了する。
 上記式5を用いて動作を詳述する。ます、初期条件解析部1002に式5を処理させると、これにより変数aの初期値が2であることが分かる。変数aの初期値2が一覧1006に登録され、以下の式5-1が生成される。
[式5-1]
L1:cont a=2,b;
L2:always a’=0;
L3:always b = a+5;
L4:always if(a!=0) b = a + 1;
である。
 次に定数条件解析部1003においてステップST3000で[式5-1]の記述に対し、構文解析を行うことで、図11示す構文木が作成される。なお表記の簡単のため初期値宣言の表示は省略している。次にeqnsノード直下にあるノードがalwaysであるかを判定する。id:1とid:2はalways以下のノードに他の制御文がないため抽出される(ST3003のYES)。id:3はalways以下にif文があるため抽出されない(ST3003のNO)。次にid:1とid:2について評価を行う。alwaysノード直下に等号ノードがあり、等号ノード以下の一片の変数に微分記号があり、他方が0であるか評価する。id:1がtrueであり(ST3004のYES)、id:2はfalseである(ST3004のNO)。以上から変数aが定数であり、その値が2であることが分かる。最後にST3004でtrueになったノード群id:1を除外し、id:2とid:3に対してaを2で置換し、「cont a=2」を削除する。以上から以下のような式が生成される。
[式5-2]
L1: cont b; 
L2: always b = 2 +5;
L3: always if(b!=0) b = 2 + 1;
 ここで初期条件解析部1002により生成された図6のハイブリッドモデル記述を対象とした場合の処理を説明する。一覧1006にはf、m、xの初期値がそれぞれ100,1,0として登録済みである。この場合、定数条件解析部1003では、ST3003がYESとなる方程式はL4の「f’=0」と「m’=0」である(いずれもalways文のみが付加されている)。これらの方程式はいずれもST3004でYESとなる。よって変数f,mを含むすべての方程式のf、mをそれぞれの初期値100,1で置換し、「always f’=0」と「always m’=0」を削除し、「cont f=100」,「cont m=1」も削除する。この結果、ハイブリッドモデル記述は図7に示すようになる。
 図12は定数条件解析部1003の他の動作例を示すフローチャートである。
 ステップST3000~S3003は図10と同様であり、ステップST3004でNOの場合の処理が図10と大きく異なる。またステップST3005の後のフローは、ST3004で対象となるすべての方程式が扱い済みとなった場合を除き、ステップST3004に戻る。
 ステップST3004でNOの場合、すなわちalways文のみが付与されている方程式中の変数に微分記号があり、その変数の微分値が0であり、その変数が上記一覧1006に登録されているとの条件が満たされない場合、そのalways文のみが付与された方程式からalways文を除去して、その方程式を変数の微分について解く(ST3006)。その方程式のみからでは解けない場合は同一の変数の微分を含む他の方程式と連立させて解いてもよい。そして、その方程式に含まれる変数の微分値が0であるかを判定する(ST3007)。もし0の場合はその変数を含む各方程式の変数を定数(一覧1006に登録された初期値)に置換する(ST3005)。この際、初期値に置換された変数の初期値宣言を削除し、その方程式をalways文とともに削除する。
 ここで上記処理においてST3004において条件を満たす方程式と満たさない方程式との両方が存在するときはまずは満たす方程式を優先的に選択してST3005の処理を行い、条件を満たす方程式がなくなったら、条件を満たさない方の方程式についてST3004のNOに従って、ST3006に進むとする。
 なおST3006の処理で方程式に変数の微分が含まれないときはその方程式は処理対象外としてST3007のNOに進む。この後ST3004の判断の対象とされていない方程式がまだあるときはST3004に戻り、ないときは本フローを終了するものとする。
 またST3005の処理を行った後、ST3004で対象となるすべての方程式が扱い済みとなった場合は、ST3004に戻ることなく、本フローを終了する。
 以下、定数条件解析部の処理をより深く理解するため、[式6]を用いて動作を詳述する。
[式6]
L1: cont a,b,c;
L2: a=2;
L3: b=0;
L4: always a’ = b;
L5; always b’ = 0;
L6: always c = a + b;
 まず初期条件解析部1002によって、変数aの初期値が2であり、変数bの初期値が0であることが一覧1006に登録される。そして初期条件解析部1002の出力(第1の記述データ)は、以下の[式6-1]となる。なお式6の「b=0」は例えば本発明の第3方程式に相当し、「always b’=0」は例えば本発明の第2方程式に相当する。
 [式6-1]
L1: cont a=2, b=0, c;
L2: always a’ = b;
L3; always b’ = 0;
L4: always c = a + b;
となる。
 次に構文解析をステップST3000で行うことで、図13に示す構文木が出力される。単のため初期値宣言の表示は省略している。id:1~id:3について評価を行い、直下にalwaysノードがあり、alwaysノード直下のノードは等号であり、等号ノード以下の一片の変数に微分記号があり、他方が0であり、その変数の初期値が登録されているか判断する。id:1がfalseであり(ST3004のNO)、id:2がtrue(ST3004のYES)、id:3はfalse(ST3004のNO)である。したがってid:2に関して、ST3005で置換を行うと図14のような構文木となる。すなわちST3004でYESの方程式があるときはこれを優先して処理するためST3005に進み、ST3004でNOの方程式は、ST3004でYESの方程式がなくなったあと、ST3006で処理するものとする。以上により[式6-1]から以下の[式6-2]が得られる。
[式6-2]
L1: cont a=2,b=0,c;
L2: always a’ = 0;
L3: always c = a + 0;
 次に、再度、ステップST3004を実行する。ここで図14のid:1がtrueである(ST3004でYESになる)あることが分かる。再度、ステップST3005を実行すると図15の構文木となる。
 この後、再度、ステップST3004に進み、評価を行うとfalseであり(ST3004のNO)、L3の方程式に変数の微分が含まれないことから、ST3006の処理は行われず、ST3007もfalse(NO)となり処理が終了する。最終的に以下のような記述が得られることとなる。
[式6-3]
L1: cont c; 
L2: always c = 2 +0;
 次に別の例として、[式7]を用いて動作を詳述する。
[式7]
L1: cont a,b;
L2: a=2;
L3: always a’ + 1 = 1;
L4: always b = a+5;
 先ず初期条件解析部1002によって、
[式7-1]
L1: cont a=2,b;
L2: always a’ + 1 = 1;
L3: always b = a+5;
を生成し、変数aの初期値が2であることを一覧1006に登録する。
 次にステップST3000で構文解析を行い図16の構文木を生成する。ステップST3002ではid:1、id:2が抽出される。この2つの式はどちらもステップST3003でYESとなる。ステップST3004はどちらもNOになる。この場合、ステップST3007において新たに以下のような式を生成する。
[式7-2]
L1: a’ + 1 = 1;
L2: b = a+5;
 この式を解くと、a’が0であることが分かる(ST3006のYES)。L2は処理の対象外となる。最後にa’が含まれる式id:1を削除し、id:2中のaを2に置換し、aの初期値宣言を削除することによって以下の式が生成される。
[式7-3]
L1: cont b;
L2: always b = 2 + 5;
 制御情報解析部1004は、初期条件解析部1002および定数条件解析部1003を経たハイブリッドモデル記述(第2の記述データ)(図7参照)を解析して、モデル方程式登録プログラム1005およびイベント制御プログラム1007を生成する。
 ここでハイブリッドモデルシミュレーション実行部1014を構成するソフトウエアモジュールとして、モデル方程式の登録を行うための関数および連続系方程式を切り替えるための関数がAPI(Application Program Interface)関数としてあらかじめ提供される。モデル方程式登録プログラム1005およびイベント制御プログラム1007は、該当する上記API関数を呼び出す記述を、ハイブリッドモデル記述に沿って適切に組み合わせたプログラムであり、制御情報解析部1004により生成される。この観点から考えると、ハイブリッドモデル前処理部1001は、入力をハイブリッドモデル記述とし、出力を例えばC言語のAPI関数呼び出しの記述を含むCプログラム(ソース)とするような、一種のコンパイラと考えることもできる。
 モデル方程式登録プログラム1005とイベント制御プログラム203は、さらにC言語などのコンパイラによりコンパイルされ、例えば実行時に動的にリンク可能なライブラリが生成される。ハイブリッドモデルシミュレーション実行部1014は、シミュレーション実行にあたっては、生成された動的リンクライブラリがリンクされ、入力ハイブリッドモデルを忠実に再現するシミュレーションプログラムが完成し、実行可能になる。シミュレーション実行時には、まず方程式構文解析部1012を起動するAPI関数が呼ばれ、その後に連続系切り替えのAPI関数群が実行されてシミュレーションは遂行される。
 ハイブリッドモデルシミュレーション実行部1014のアプリケーションインターフェースを構成する具体的なソフトウエアモジュールの仕様などは様々考えられるが、ここでは説明の都合上、以下の4つのAPI関数が最低定義されているとする。なお、プログラミング言語はC言語とする。
int XXX_AddEqnData(char *eqn, int *err)
int XXX_ActivateEqn(int eqnid)
int XXX_DeActivateEqn(int eqnid)
int XXX_SetInitVal(char *var, double val)
 1つ目のAPI関数XXX_AddEqnDataは、1つの連続系方程式を表す文字列のポインタを引数に指定する。XXX_AddEqnDataは、この連続系方程式を構文解析し、連続方程式の記述をシミュレーション実行可能なデータ構造(内部データ表現)(後述する図17参照)に変換し、かかる内部データ表現を方程式データ記憶部1013に登録する処理を行う。この処理において何らかのエラーが発生した場合には、errにエラーコードがセットされる。正常に処理が終了した場合は、登録された方程式にはID番号が割り当てられる。
 2番目のAPI関数XXX_ActivateEqnは、引数に指定された方程式ID番号に相当する方程式を有効にする。もし、すでに有効となっている方程式が指定されている場合には何もしない。この場合、返り値としてエラーコードを返す。
 3番目のAPI関数XXX_DeActivateEqnは、XXX_ActivateEqnとは逆に、引数に指定された方程式ID番号に相当する方程式を無効にする。すでに無効となっている方程式が指定された場合には何もしない。
 4番目のAPI関数XXX_SetInitValは、一つの変数名を表す文字列を1番目の引数に持つ。またその変数の初期値を2番目の引数に持つ。XXX_SetInitVal関数は、XXX_AddEqnData関数によって内部データ表現に変換された変数のうち、1番目の引数と一致する変数の初期値を設定する。この値は連続系シミュレーション部1009で数値計算を行う場合に、初期値となる。
 制御情報解析部1004はまずXXX_AddEqnDataを必要な方程式について順に呼ぶ関数(InitEqnData)すなわち実行関数を生成する。これがモデル方程式登録プログラム1005に相当する。
 また、制御情報解析部1004は、シミュレーション実行の際に、時間がΔt進むごとに条件のチェックおよび方程式の変更(入れ替え)を行う関数(ChangeEqn)、すなわち判定関数も生成する。これはイベント制御プログラム1007に相当する。ここでChangeEqn関数はイベントの発生をGetEvent関数におり検知する。ChangeEqn関数はシミュレーション実行時における時間ステップ毎にイベント処理部1010から呼び出される。
 例えば、図7に示したハイブリッドモデル例について、関数InitEqnDataおよび関数ChangeEqnを含む以下のようなC言語のソースプログラムが自動生成される。なお、GetEventは、名前で指定されたイベントが生起しているかどうかをチェックする関数である。また、SetEventは、名前で指定されたイベントを生起させる関数、timeはシミュレーション時刻を表す変数である。
static char eqn1[] = “100 =1* x’’”;
static char eqn2[] = “-100= 1* x’’”;
static char eqn3[] = “x’=0”;
static int eqn1id;
static int eqn2id;
static int eqn3id;
int InitEqnData()
{
 int err;
 eqn1id = XXX_AddEqnData(eqn1,&err);
 if(err != 0 ) return err;
 eqn2id = XXX_AddEqnData(eqn2,&err);
 if(err != 0 ) return err;
 eqn3id = XXX_AddEqnData(eqn3,&err);
 if(err != 0 ) return err;
 XXX_SetInitVal(“x”,0);
 return 0;
}
int ChangeEqn()
{
int err;
BOOL GetEvent(char *eventname);
if(GetEvent(“Left“) ){
  err = XXX_ActivateEqn(eqn1id);
  if( err != 0 ) return err;
  err = XXX_DeActivateEqn(eqn2id);
  if( err != 0 ) return err;
}
if( GetEvent(“Right“) ){
  err = XXX_ActivateEqn(eqn2id);
  if( err != 0 ) return err;
  err = XXX_DeActivateEqn(eqn1id);
  if( err != 0 ) return err;
}
if(time == 0 )SetEvent(“Right”);
if(time == 50 )SetEvent(“Left”);
err = XXX_DeActivateEqn(eqn3id);
if( err != 0 ) return err;
return 0;
}
 以上のプログラムは、上述したようにC言語のコンパイラによってコンパイルされ、さらに動的リンクライブラリの形式に整えられ、実行時にリンクされる。
 次にハイブリッドモデルシミュレーション実行部1014について説明する。
 シミュレーション実行時においては、ハイブリッドモデルシミュレーション実行部1014が起動され、連続系方程式の値を計算することでシミュレーション実行が行われる。
 方程式構文解析部1012はモデル方程式登録プログラム1005に対応し、その内部でAPI関数(上述した関数XXX_AddEqnData)を呼び出す。連続系方程式の記述を構成する文字列がこのAPI関数(関数XXX_AddEqnData)へ引数として渡される。これにより連続系方程式の記述データがシミュレーション実行可能なデータ構造(内部データ表現)に変換され、変換されたデータは、方程式データ記憶部1013に登録される。なお、上述したように、個々の連続系方程式には、ユニークなID番号が割り当てられる。
 例えば「ab/cos(a-(c+b))-3c」という式が与えられたと仮定すると、上記内部データ表現として図17のような木構造が生成される。この木構造において、例えば参照数字61は線形多項式の親ノード(節)、62は掛け算のノード、63は割り算のノード、64は外部関数(四則演算以外の意)のノード、65は線形多項式を構成する各項のノードを表している。本例において、木構造の葉に相当するものはすべて変数(a,b,c)であり、これらに実数の係数が加わって線形式となる。線形式はcosなどの外部関数の引数になったり、掛け算や割り算の対象となったりする。
 上記木構造において変数には、別途、値が確定しているか否かのフラグが設けられており、またこのような木構造のデータに基づいて該変数の現在の値が保持される。木構造のすべての葉の値(すなわち変数の値)が確定していれば、式の値を計算することができる。方程式データ記憶部1013では、式の値の計算などを高速に行うことができるように、予め内部のデータ構造をつなぎ合わせて木構造を構成してある。
 InitEqnData()等内で記述された関数も解析することにより、変数の初期値、対象機構の初期状態(Right or Lelf)の情報も取得し、方程式データ記憶部1013に格納しておく。当該変数の初期値に関して、当該変数を含む上記木構造については、その変数の値が確定していることを示すフラグが設定される。
 上記処理において何らかのエラーが発生した場合には、errにエラーコードがセットされる(上記関数InitEqnData()における“if(err != 0 ) return err”参照)。正常に処理が終了した場合は、登録された方程式のID番号を返り値とする(上記関数InitEqnData()における“eqn1id = XXX_AddEqnData(eqn1,&err)”参照)。
 連続系方程式切り替え部1011は、イベント処理部1010の内部で呼び出され、モデル方程式制御情報記憶部1013の内容を参照し、連続系方程式の切り替えを、有効・無効のフラグを用いて実行する。イベント処理部1010は上述したようにイベント制御プログラム1007(ChangeEqu())(判定関数)に対応する。図2の状態では、図7の運動方程式eq1は無効であり、運動方程式eq2が有効になっている。ここで、Leftのイベントが発生した図3の状況においては、図7の運動方程式eq1を有効にし、運動方程式eq2を無効にするようフラグを操作する。これら有効・無効のフラグは方程式データ記憶部114に記憶される方程式それぞれの属性データとして管理される。
 連続系シミュレーション部1009は、方程式データ記憶部1013を参照し、同記憶部1013に木構造の形式で格納されている連続系方程式の内部データ表現を演算対象として、時間ステップずつ数値積分を実行する。シミュレーションは、常微分方程式及び代数多項式の連立からなる非線形連立方程式についての初期値問題である。このため、例えば図2に示される初期状態が与えられている。具体意的には、例えば一般によく使われているルンゲクッタアルゴリズムを用いて解の値を計算する。またイベントに関連づけられていない他の方程式についても成立性(ここではx’=0)も満たされるようにする。
 必要なデータは機構シミュレータから出力を行い、さらに連続系方程式切り替え部1011の処理に戻り、上記の処理を繰り返すことにより必要な時間のシミュレーションを実行する。シミュレーション結果は、変数値時間時歴記憶部1008に保存され、シミュレーション終了後の分析などに利用される。
 図18は、本発明の実施形態に係るシミュレーションにおける一連の処理手順を示すフローチャートである。
 まず、ST9001では、初期条件解析部1002がハイブリッドモデル記述1000に対し初期条件解析処理を行い、定数条件解析部1003が初期条件解析部1002により処理された後のハイブリッドモデル記述に対して定数条件解析処理を行う。そして、制御情報解析部1004がST9001の処理を経たハイブリッドモデル記述を構文解析してモデル方程式登録プログラム1005とイベント制御プログラム1007を生成する。以上でシミュレーション実行のための前処理を終え、ここからシミュレーション実行の段階に移る。
 まずハイブリッドモデルシミュレーション実行部1014から方程式構文解析部1012が呼び出される。方程式構文解析部1012は、モデル方程式登録プログラム1005に対応し、その内部でAPI関数XXX_AddEqnDataを呼び出し、方程式の記述データをシミュレーション実行可能なデータ構造(例えば木構造データ)に変換して方程式データ記憶部1013に登録する(ステップ9002)。また上記したように変数の初期値、対象機構の初期状態も方程式データ記憶部1013に登録する。
 イベント処理部1010では、イベントが発生したか否かを検査する(例えばイベントを制御する外部装置からベント発生を示す制御信号を受信したか否かを検査する)(ステップ9003)。ただし本フローの1回目でのステップST9003では、シミュレーション部1009が、シミュレーション実行開始指示を受けるものとする。
 次に、連続系方程式切り替え部1011は、状態遷移に伴う連続系方程式の切り替えの必要有無をステップ9004にて判定する。必要な場合、連続系方程式切り替え部1011は、有効・無効のフラグを操作することにより、アクティブな連続系方程式の切り替えを行なう(ステップ9005)。このため、API関数XXX_ActivateEquまたはXXX_DeActivateEqnが呼び出される。ただし本フローの1回目でのステップST9003では初期状態に対応する方程式が選択されるものとする。
 次に、ステップ9006に進み、連続系シミュレーション部1009は数値積分を実行する。本フローの1回目でのステップST9006では時刻0(初期時刻あるいは開始時刻)での数値積分を実行する。
 次に、所定の終了条件の判定(例えば時間が所定のシミュレーション終了時間に達したか否か)を行う(ステップ9009)。所定の終了条件が成立したらシミュレーション実行を終了し、所定の終了条件が成立するまでは時間を1ステップ進めて(ステップ9010)、ステップ9003に戻り、同様の処理手順を繰り返す。
 以上のように本実施形態によればハイブリッドモデル記述に記述された方程式の数が増えた場合でも、高速にシミュレーションを実行することが出来る。

Claims (5)

  1.  対象機構の挙動のシミュレーション装置であって、
     それぞれ異なる条件に対応付けされた制御文によって修飾され第1変数の少なくともN(Nは1以上の整数)回微分を含む前記対象機構の複数の運動方程式と、前記第1変数を含む少なくとも1つの第1方程式と、を含む記述データを入力する入力手段と、
     前記記述データを構文解析して前記第1方程式を検出し、検出した第1方程式を前記検出した第1方程式に含まれる前記第1変数について解くことにより前記第1変数の初期値を求め、前記記述データから前記第1方程式を削除し、前記第1変数の初期値宣言を前記記述データに追加することにより第1の記述データを生成する初期条件解析部と、
     前記第1の記述データを構文解析することにより、各前記制御文に対応する条件の正否を判定する判定関数と、各前記運動方程式を前記第1変数について解くことにより前記第1変数の値を計算する複数の実行関数とを、前記判定関数と前記実行関数に対して事前に用意されたAPI関数を用いて生成する制御解析手段と、
     初期時刻から一定時間毎に前記判定関数を実行することにより各前記制御文のうち条件が成立するものを検出し検出した制御文により修飾される運動方程式の実行関数を実行することを繰り返すシミュレーション手段と、
     前記シミュレーション手段により一定時間毎に取得された前記第1変数の値の履歴を記憶する変数値履歴記憶部と、
     を備えたシミュレーション装置。
  2.  前記初期条件解析部は、前記第1方程式の左辺が前記第1変数で右辺が1つの定数、または前記左辺が1つの定数で前記右辺が前記第1変数のとき、前記右辺または左辺の前記定数を前記第1変数の初期値として取得することを特徴とする請求項1に記載のシミュレーション装置。
  3.  定数条件解析部をさらに備え、
     前記複数の運動方程式のうちの少なくとも1つは第2変数を含み、
     前記記述データは、
     常に成り立つことを要求する1つの制御文により修飾され、前記第2変数の1回微分を含む第2方程式を含み、
     前記第2変数を含む第3方程式をさらに含み、または前記第2変数の初期値宣言を含み、
     前記初期条件解析部は、前記第2変数を含む前記第3方程式が前記記述データに含まれるとき前記第3方程式を前記第2変数について解くことにより前記第2変数の初期値を求め、前記第2変数を含む第3方程式を前記記述データから削除し、前記第2変数の初期値宣言を前記記述データに追加し、
     前記定数条件解析部は、前記第1の記述データを解析して、前記1つの制御文により修飾された第2方程式を検出し、
     前記第2方程式に基づき前記第2変数の1回微分の値がゼロであるときは、前記第1の記述データにおいて前記第2変数を含む前記運動方程式の前記第2変数を前記第2変数の初期値に置換し、前記第1の記述データから前記1つの制御文と前記第2方程式と前記第2変数の初期値宣言とを削除することにより第2の記述データを生成し、
     前記解析手段は、前記第2の記述データを構文解析する
     ことを特徴とする請求項2に記載の装置。
  4.  前記定数条件解析部は、前記第2方程式の左辺または右辺が前記第2変数の1回微分であり、前記右辺または前記左辺がゼロであるとき、前記第2変数の1回微分の値がゼロであると決定することを特徴とする請求項3に記載の装置。
  5.  前記定数条件解析部は、前記第2変数の1回微分に関して前記第2方程式を解くことにより、前記第2変数の1回微分の値がゼロであるか否かを決定することを特徴とする請求項4に記載の装置。
PCT/JP2009/066672 2009-09-25 2009-09-25 シミュレーション装置 WO2011036768A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/066672 WO2011036768A1 (ja) 2009-09-25 2009-09-25 シミュレーション装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/066672 WO2011036768A1 (ja) 2009-09-25 2009-09-25 シミュレーション装置

Publications (1)

Publication Number Publication Date
WO2011036768A1 true WO2011036768A1 (ja) 2011-03-31

Family

ID=43795539

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/066672 WO2011036768A1 (ja) 2009-09-25 2009-09-25 シミュレーション装置

Country Status (1)

Country Link
WO (1) WO2011036768A1 (ja)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161501A (ja) * 1997-11-28 1999-06-18 Fujitsu Ltd コンパイル装置
JPH11305809A (ja) * 1998-04-16 1999-11-05 Fuji Electric Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラ支援装置、プログラマブルコントローラ、および、記録媒体
JP2003162416A (ja) * 2001-11-27 2003-06-06 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するためのコンピュータプログラム
JP2003271679A (ja) * 2002-03-15 2003-09-26 Toshiba Corp ハイブリッドモデル作成方法及びプログラム
JP2004021907A (ja) * 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd 性能評価用シミュレーションシステム
JP2004220577A (ja) * 2002-12-26 2004-08-05 Toshiba Corp シミュレーション方法およびシミュレーションプログラム
JP2004220566A (ja) * 2002-12-26 2004-08-05 Toshiba Corp 機構シミュレーション方法および機構シミュレーションプログラム
JP2007304998A (ja) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム
JP2008243042A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ハイブリッドモデルのシミュレーション装置、方法及びプログラム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161501A (ja) * 1997-11-28 1999-06-18 Fujitsu Ltd コンパイル装置
JPH11305809A (ja) * 1998-04-16 1999-11-05 Fuji Electric Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラ支援装置、プログラマブルコントローラ、および、記録媒体
JP2003162416A (ja) * 2001-11-27 2003-06-06 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するためのコンピュータプログラム
JP2003271679A (ja) * 2002-03-15 2003-09-26 Toshiba Corp ハイブリッドモデル作成方法及びプログラム
JP2004021907A (ja) * 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd 性能評価用シミュレーションシステム
JP2004220577A (ja) * 2002-12-26 2004-08-05 Toshiba Corp シミュレーション方法およびシミュレーションプログラム
JP2004220566A (ja) * 2002-12-26 2004-08-05 Toshiba Corp 機構シミュレーション方法および機構シミュレーションプログラム
JP2007304998A (ja) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム
JP2008243042A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ハイブリッドモデルのシミュレーション装置、方法及びプログラム

Similar Documents

Publication Publication Date Title
Gosain et al. Static analysis: A survey of techniques and tools
US11074049B2 (en) Method and system for generating program code modified by rule sets
JP3940665B2 (ja) ハイブリッドシミュレーション装置およびプログラム
Cavalcanti et al. Verified simulation for robotics
CN107608677A (zh) 一种编译处理方法、装置及电子设备
US6499132B1 (en) System and method for analyzing temporal expressions
Liebrenz et al. Deductive verification of hybrid control systems modeled in Simulink with KeYmaera X
Brahmakshatriya et al. Buildit: A type-based multi-stage programming framework for code generation in C++
Davis et al. The reflective Milawa theorem prover is sound (down to the machine code that runs it)
van Beusekom et al. Formalising the Dezyne modelling language in mCRL2
JP2004220566A (ja) 機構シミュレーション方法および機構シミュレーションプログラム
US11593076B2 (en) Method for merging architecture data
CN100498817C (zh) 模拟方法
Van Mierlo et al. Domain-specific modelling for human–computer interaction
Meinke Learning-based testing: recent progress and future prospects
Ratiu et al. FASTEN: An open extensible framework to experiment with formal specification approaches
US20210096830A1 (en) Incremental code generation method
Preoteasa et al. Type inference of Simulink hierarchical block diagrams in Isabelle
Leonard et al. Program synthesis from formal requirements specifications using APTS
JP4564255B2 (ja) シミュレーション装置
Barbot et al. Integrating simulink models into the model checker cosmos
Chen et al. A two-way path between formal and informal design of embedded systems
Adams Refactoring proofs with Tactician
Lyazidi et al. Formal verification of UML state machine diagrams using Petri nets
Daszczuk Verification of temporal properties in concurrent systems

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09849799

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09849799

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP