EP3213267A1 - Software architecture for expert system - Google Patents

Software architecture for expert system

Info

Publication number
EP3213267A1
EP3213267A1 EP15771155.7A EP15771155A EP3213267A1 EP 3213267 A1 EP3213267 A1 EP 3213267A1 EP 15771155 A EP15771155 A EP 15771155A EP 3213267 A1 EP3213267 A1 EP 3213267A1
Authority
EP
European Patent Office
Prior art keywords
input
value
values
input value
rule
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.)
Withdrawn
Application number
EP15771155.7A
Other languages
German (de)
French (fr)
Inventor
Jean-Philippe Poli
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.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Publication of EP3213267A1 publication Critical patent/EP3213267A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic

Definitions

  • the invention relates to the field of artificial intelligence in general and the field of rule-based expert systems in particular, in particular based on fuzzy logic.
  • Fuzzy Intelligent Systems or fuzzy expert systems - are systems that integrate or implement human expertise and that seek to automate or mimic the reasoning of human experts with complex systems. These eminently technical systems can be based on different aspects of mathematical logic and in particular on logic called "fuzzy logic”.
  • fuzzy expert systems generally require more calculations than standard or conventional expert systems. In addition, these systems generally require the repetition of these significant calculations over time (for example when they are applied to dynamic systems that change over time).
  • fuzzy expert systems usually require computing power.
  • scientists developing fuzzy expert systems are usually led to build increasingly complex and “rich” operators. The computation time can then become more important than the conjunctions, disjunctions and negations that are generally found with classical expert systems.
  • fuzzy expert systems require the repetition of these calculations. Indeed, in classical expert systems, only certain rules are activated at a given moment whereas with fuzzy expert systems, all the rules must be recalculated (at least a large part of them).
  • the only currently available means to manage an input data stream i.e., multiple data received over time
  • the devices and devices involved may not have sufficient computing power, even if the calculation would be distributed between several devices cooperating with each other.
  • that of the Internet of Things it is for example generally expected a very large number of objects in interaction but these objects do not necessarily have appropriate computing means.
  • a computer-implemented method comprising the steps of receiving an input value to be evaluated; thread the input value into a queue; select from the queue a pending entry value; determining an output value by inferring by the rule base the selected input pending value.
  • Developments describe the dissemination of one or more output values, the planning in time and / or space of assessments of pending input values (particularly in terms of computing resources), the selective evaluation of input values, the use of a dependency graph, expiration parameters of rules in time, the use of fuzzy logic inference.
  • System aspects, including components, and software are described.
  • a software architecture for obtaining optimized performance, to identify the different output data according to the rules and data input. More precisely, according to one embodiment of the invention, a fuzzy expert system capable of managing a flow (continuous or regular or discontinuous or irregular or periodic or aperiodic or intermittent) of inputs and of progressively restoring is disclosed (e.g. in the course of the water ”) the values of the corresponding outputs.
  • the various embodiments of the invention are advantageously used in technical fields such as home automation or industrial control.
  • the invention will find application to monitor ("monitoring") a given system or object by means of several sensors (“sensors”) which measure different phenomena continuously (or at possibly different frequencies, intermittently or from periodically).
  • Sensors sensors
  • Methods and systems according to the invention can implement a home automation control system.
  • a fuzzy expert system according to the invention can measure over time (discretely or continuously) the variations in temperature, brightness and occupation of the parts to deduce and / or actuate corresponding commands (for example opening of the shutters).
  • the writing of the rules according to the invention is done in natural language (rather than by means of mathematical operators).
  • This hides - at least partially - the operator who enters his expert rules the mathematical complexity underlying the running model.
  • the use of natural language also improves the expressiveness of the expert system. This characteristic makes it possible to obtain a better coverage of the real situations by the rules.
  • a fuzzy expert system based on rules expressed in natural language ultimately allows a better "capture" of reality.
  • some embodiments advantageously manipulate rules or expressions using the vocabulary of natural language, improving the understanding (and therefore the subsequent manipulation) of these rules or expressions.
  • Fuzzy logic is an extension of classical logic to approximate reasoning. By its numerical aspects, it is opposed to modal logics.
  • fuzzy logic allows the truth value of a condition to traverse a domain other than the ⁇ true, false ⁇ pair.
  • fuzzy logic there are degrees in the satisfaction of a condition. Fuzzy logic assigns degrees of truth to a relationship of the style x is closer to y than z, constructed and / or refined by learning.
  • fuzzy relationships will allow the coding of graduated, empirical or typical knowledge acquired directly or through heuristics, inductions, etc.
  • the transitions used can be linear, hyperbolic (e.g. sigmoid or hyperbolic tangent), exponential, Gaussian, etc.
  • the methods and systems of the invention generally facilitate human-machine interactions. In particular, they can help to relieve the user of tedious manipulations, sometimes repetitive and often complex.
  • the various embodiments of the invention lead to the optimization of the cognitive effort to be provided by the user when using the expert system according to the invention.
  • the technical effects related to certain aspects of the invention correspond to a reduction in the cognitive load of the user. Description of figures
  • FIG. 1 schematizes the general architecture of an exemplary method according to the invention
  • Figure 2 illustrates an example of a rule represented as a graph
  • Figure 3 illustrates an example of a graph with nodes having priorities.
  • a rule-based system is a tool capable of reproducing the cognitive mechanisms of an expert in a particular field. More precisely, an expert system is a software capable of answering questions, making reasoning based on known facts and rules. It can be used as a tool for decision support.
  • An expert system consists of three parts: a fact base, a rule base, and an inference engine. The inference engine is able to use facts and rules to produce new facts, until reaching the answer to the expert question asked.
  • An expert system can rely on formal logic mechanisms and use deductive reasoning. It can for example be based on the logic of the propositions ("logical order 0"), or the logic of the first-order predicates ("first-order logic"). Fuzzy logic techniques can also be used.
  • the algorithms for performing the inference calculation are various and may in particular be specific to the nature of the logic that is implemented.
  • the forward chaining or backward chaining algorithms Allow to start from the facts and to deduce the conclusions (or conversely to start from the conclusions to know the facts which are at the origin).
  • the Rete and Novel algorithms replaced these chaining algorithms by proposing a step of filtering the rules impacted by the facts.
  • chaining algorithms are used in conjunction with a unification algorithm to instantiate a predicate for one or more individuals in the space under consideration.
  • the methods and systems of the invention perform one or more operations or steps, including steps of a) storage b) measurement or observation c) planning the evaluation d) evaluation itself and e) of diffusion. More specifically, the method comprises one or more steps among
  • the queue according to the invention can delete, and / or merge elements (for example if the refresh rate of the inputs is too high).
  • the queue may not be "passive” (in the sense of a simple temporary storage space) but instead be "active", i.e. actively participate in the overall system;
  • steps of measurement or observation or monitoring or monitoring of the current context including and not limited to the monitoring of the state of the machine, ie processor load or activity or calculation means, instantaneous use of the memory, etc.; in addition, these steps may further comprise steps of selecting certain elements to be removed from the queue, for example with a view to their processing (according to the implemented policy);
  • the scheduling component can select one or more entries (or a group of entries) that have changed or have been modified and can decide to assign its evaluation to an entity (a heart, a calculator) and / or or may just not take into account a group of entries if it considers that the machine is too busy and / or that these changes are not informative or redundant.
  • the modes of said diffusion can be carried out in various ways and for the purpose of either various sub-entities (generally out of the expert system fuzzy, but in special cases to components internal to this system).
  • a method implemented on a computer for managing a rule base 150 comprising the steps of receiving an input value 101 to be evaluated; inferentially evaluating by means of the rule base 150 an output value 102 corresponding to the input value 101; characterized in that the method comprises the steps of threading the input value into a queue 1 10; select 1 12 in the queue 1 10 a pending entry value; and determining an output value 102 by inferring by the rule base 150 the selected pending input value.
  • An input value can be a numerical value (for example "38”) or a symbolic data item or a variable (for example "a”) or even a sequence of characters (for example "38 ° C").
  • Rule base 150 includes rules.
  • a rule - within the meaning of the invention - consists of several elements: propositions, expressions (unary, binary, ...) and conclusions. Proposals may include variables in the context of fuzzy logic.
  • a rule includes several expressions (first fruits, conclusions) and one or more operators (for example standard predefined logical operators “if", “then”, etc. as well as specific operators “before”, “after”, “as long as” ). For example a rule can be "if the temperature is high then open the window”).
  • An expression may include a sequence of characters (for example "if the temperature is high” or "open the window”).
  • An expression can be a regular expression.
  • An expression can be a regular expression.
  • An expression can be a formal expression.
  • a rule or an expression manipulated by the method according to the invention comprises vocabulary belonging to the natural language (ie the words or sequences of characters are words of the natural language), improving the understanding of the rules by the user and reinforcing the expressiveness of these same rules (eg their ability to "capture” the real world).
  • An input value according to the invention is "threaded” ("to queue” in English) or "placed in a queue”.
  • An input value is then selected from pending values.
  • this selection may be due to the queue itself (for example, when the storage capacity of the queue is reached, the queue may "push" one or more input values to the queue. evaluation or to other components of the system).
  • the selection is due to the planning module (ie the stages of planning the evaluations), for example according to a pull mode.
  • the planning component (the planning steps) participates in the control of the system thus defined.
  • the threading may be of the type "First In First Ouf.”
  • the queuing may involve processing on the values. to a "policy", that is to say a set of rules.These rules are predefined.They can be of logical type (according to various modalities, for example classical logic.They are sometimes configurable (in a previous way and / or on demand ie running the process or global system.) In this case, in queuing, the waiting values can be "ordered” and / or “sorted” and / or “grouped together. “and / or” erased. "The processing criteria are variable (weights, correlations, scoring, etc.).
  • the queuing step (i.e. the input queuing component) can place perceived changes to entries in a queue so that no information is lost.
  • the queue (or the corresponding system component) is not necessarily of limited capacity as a buffer can be; a queue according to the invention can optionally be adapted to the management of a large amount of data.
  • the input queuing component may delete items or merge them, for example if an entry changes values without the change being significant. In another example, it also allows to group by arrival time.
  • an input value is selected. Subsequently the input value is "executed” (ie "the expression or rule is evaluated”).
  • the evaluation component receives a group of modified entries and by inference with respect to the rule base calculates the outputs.
  • the value of the speed input (“The speed is high?") Can be evaluated: a value can be determined at the output.
  • a value can be determined at the output.
  • an entry will be a temperature value (eg "41 ° C”). not strong below 38 ° C, and that it is strong above 40 ° C according to the base of rules (ie gradually more and more strong between 38 ° C and 40 ° C (linearly, exponentially, or according to continuous functions)
  • An output value will be an expression "administering aspirin” or a value / quantification eg "X" milligrams of aspirin.
  • Inference is a movement of thought that goes from principles to conclusion.
  • the term refers to the actions of linking a set of propositions, resulting in a demonstration of truth, falsity or probability, in the form of a proposition called conclusion.
  • the inference can be deductive or inductive or even abductive.
  • the method further comprises a step of broadcasting one or more output values 102.
  • the scheduling component in application of its policy, can select a particular output value.
  • the broadcasting component can also, depending on its policy, over-select values before communicating them (ie select previously selected values). For example, the broadcast component may communicate or broadcast output values at regular intervals in time and / or when a particular event occurs and / or if certain conditions are satisfied, etc. Taking account of the history can for example contribute to the fusion or the assimilation of the input values; taking into account certain predefined thresholds may cause the broadcast component not to reiterate the broadcast of a result associated with an entry if a very close value (eg within the limits of predefined thresholds) has already been communicated in the past, at the very least during a predefined time window etc
  • the broadcast step includes a step of communicating the output values outside the fuzzy expert system according to its policy. It can thus diffuse the values of the only outputs having changed values and / or to join there the information of interpretation (all or part of the values making it possible to trace the inference for example) and / or to communicate the values of the outputs have experienced a significant change (greater than a threshold) and / or values of outputs that have not changed in value but whose interpretation information is different.
  • the component or unit or unit in charge of the "diffusion” or “communication” or “publication” itself of this output value 102 may be the component 130 for example.
  • “diffusion” or “communication” or “publication” is meant a diffusion or external or external communication (the other exchanges or passages message is made internally to the system 100.
  • the system 100 from the point of view of the user or from a systemic point of view appears as a "black box", which processes (according to a regulation or internal clean processing ) a number of data and publishes some output values.
  • the communication methods are numerous: visual display (LCD screen, flashing light, etc.), data transmission or message passing (eg email, data channel, RSS feed), audio signal or broadcast, vibratile signal (or a combination of these methods of communication).
  • the step of evaluating a selected pending entry value includes a step of scheduling in time and / or in space the evaluations of pending entry values.
  • the evaluation step may in fact comprise steps consisting in allocating the calculation tasks to the different calculation means (physical and also temporal distribution).
  • planning means "organizing” (i.e. scheduling in time and space). Planning in time and / or space includes, for example, ordering or organizing or orchestrating calculations (for example, “threads” or any other computing subtask corresponding to different levels of granularity) as well as 'to assign them to units of calculations, that is to say an allocation of computational tasks in space (physically between the different processors or processor cores, CPU multicore or manycore).
  • Evaluation or execution can be selective.
  • the method according to the invention can indeed not calculate or evaluate certain input values. In a positive way, only certain expressions or input values are evaluated.
  • the method is computationally efficient.
  • the method may evaluate one or more input values only when necessary.
  • the threading step or unit can group entries for example according to the modification context (for example, the time at which the entries have changed) and the planning step or scheduler can retrieve a group of entries associated with this same context.
  • the context may be the place where the entries have changed. Other variants use combinations of date and place etc.
  • the method further comprises a step of separating the graph corresponding to the rule base 150 into several disjoint sub-graphs, a step of selecting at least one sub-graph comprising a node corresponding to a value of selected waiting entry and a step of evaluating said selected sub-graph.
  • a representation of the rules in the form of a graph makes it possible to isolate the nodes (corresponding to the different rules or expressions making up these rules) from which it is advantageous to carry out the reevaluation.
  • the rule base can be represented as a graph rather than as a forest (a set of trees) because in doing so it is possible to ensure the uniqueness of the nodes.
  • a part of a rule (a proposition, an expression, a conclusion, an entry, an exit 7) can only be represented by a single node.
  • a certain subset of the inputs changes at a time t, only the nodes that are affected can indeed be reevaluated. It is advantageous to identify different disjoint subgraphs of the graph (which represents the entire rule base).
  • the graph G corresponding to the base of all the rules will be disjoint into several connected graphs Gi for which there is no common edge between these different Gi.
  • the disjointed graphs do not have any nodes in common, so no common parts, so no input or output in common.
  • the graph is oriented (for example, node A oriented towards node B).
  • the evaluation of a given node can have a consequence on the evaluation of a node that depends on it.
  • To proceed with the evaluation of the nodes of the graph said graph can be traversed.
  • each node is associated with a certain evaluation "priority" relative to its depth in the graph (in one embodiment, the input values can be associated with with a priority equal to zero, other nodes may have the same priority but usually the different nodes are associated with different priorities).
  • certain nodes - determined by the paths connecting them to the nodes representing an input of the system - are recalculated. Nodes are evaluated in turn only if at least one of their predecessors has changed in value. If a node does not change value, evaluation of the paths starting from itself does not take place.
  • the global graph associated or representing the rule base is first disjoint into several disjointed sub-graphs, which allows processing or analysis in parallel (the sub-graphs are "independent").
  • the method selects one or more subgraphs.
  • a criterion of selection includes detecting one or more nodes representing, for example, the only sufficiently modified input values that have been selected by the scheduler from the queue containing the input values. Finally, the subgraph is evaluated.
  • Disjoining the graph into several subgraphs therefore makes it possible to parallelize the calculations and to allocate these calculations to independent cores and / or threads.
  • this parallelization reduces the possibility of errors in the calculations, improves the processing speed, optimizes the use of resources or calculation means, etc.
  • the step of evaluating a subgraph comprises a step of traversing said subgraph, a step of recursively associating a priority with each node of the subgraph and a step of evaluating the nodes by priority growing.
  • the priority is more generally a coefficient or a parameter or a value.
  • Other embodiments of the invention involve not a priority value but a "depth". There are various ways to annotate the graph. It is possible in one embodiment to associate the inputs with a value equal to zero and to proceed incrementally as the graph is traversed (the nodes associated with the lowest priority values being then processed first). Other embodiments of the invention may use other weighting or scoring techniques.
  • the method further comprises a step of comparing the character strings composing the expressions making up the rules of the rule base, a step removing redundancies between said expressions to obtain unique expressions and a step of evaluating said unique expressions.
  • a step of comparing the character strings composing the expressions making up the rules of the rule base a step removing redundancies between said expressions to obtain unique expressions and a step of evaluating said unique expressions.
  • An expression can be present in several rules. For example the expression “the temperature is high” can be present in a first rule “if the temperature is high then open the window” and a second rule "if the temperature is high then administer aspirin". It is possible to uniquely represent expressions that appear multiple times in the rule base.
  • One way of doing things includes string comparison operations that make up expressions or rules. Redundancies can be partially or completely removed.
  • a portion of a policy rule 150 is associated with a timeout parameter / value.
  • no rule (or even rule rule) expires, i.e. the validity of the rule is persistent over time.
  • one or more rules may expire in time (according to various settings)
  • a portion or portion of a rule may expire in time ("expire”, become “obsolete” or “deciduous” or “non-operable” or “no effect”).
  • a rule party can be a proposition or an expression for example.
  • Expirable rule parts are therefore objects that have a limited lifetime (or whose calculated value has a limited duration in time).
  • the planner (among other units in the system) may decide not to evaluate the rule portion in question.
  • the planner can check whether the expired expression is used in one of the calculations as planned in time and / or space. Where appropriate, the expression is evaluated; otherwise, the expression is left unchanged with its expired value. In some cases, the expired expression is deleted.
  • the expression “tomorrow H will be fine” can change value for two reasons: either the weather forecast have changed (in this case it is not really an expiration but a simple change in value depending on the entries of the system) or the value changes (for example due to the passage of the day from Wednesday midnight to Thursday). Even if the value of the weather forecast for Wednesday remains unchanged, the expression will expire (in this case, it expires every 24 hours).
  • each expression may expire according to different temporal parameters.
  • advanced time parameters are used (time slots but also and for example according to time derivatives, ie trend acceleration etc.).
  • Expressions or parts of rules can expire in very different time scales (eg every second or millisecond for reactive systems).
  • the expiry of the validity of the rule parts can be modulated in a more sophisticated manner, for example according to parameters, tests, circumstances or various conditions. For example, space parameters can be taken into account to determine the expiration or the non-expiration of a rule (eg geo location or "geofencing" conditions, etc.).
  • the evaluation by inference is done according to the logic of order 0 or the logic of order 1 or according to the fuzzy logic.
  • a computer program product comprising code instructions for performing one or more of the method steps, when said program is run on a computer.
  • the system comprises means for receiving an input value 101 to be evaluated; inference evaluation means by means of the rule base 150 of an output value 102 corresponding to the input value 101; and is characterized in that the system comprises storage means for threading the input value 101; calculation means for selecting an input value threaded and for scheduling in time and / or in space the evaluations of one or more pending input values; calculating means for evaluating the selected waiting input value threaded into an output value 102; input / output means for broadcasting one or more output values 102;
  • Storage means for example, volatile or persistent memories (e.g. flash memory, hard disk, DDRAM, SRAM, etc.).
  • the computing means are processors or cores of processors.
  • the input / output means (or "I / O” or “I / O” for "Input / output” in English) are means of communication of different types (radio, wireless, wired eg Ethernet) using a variety of TCP / IP protocols or others).
  • the system includes an input / output component for receiving one or more input values; a donning component adapted to perform one or more of the steps among those consisting of storing, grouping, merging and deleting input values; a scheduling component adapted to perform one or more of the steps of selecting, deleting, grouping, merging, allocating input values threaded; an evaluation component adapted to evaluate one or more input values threaded and manipulated by the inference planning component using the rule base; a broadcast component adapted to select and communicate one or more input values.
  • a policy associated with a component or unit corresponds to a set of rules "internal" to the component or unit.
  • a policy can be static, i.e. predefined and constant over time.
  • a policy can also be dynamic, i.e. variable over time.
  • Speaking of a system composed of a set of components each associated with such "policies”, a "general” policy can emerge, in the sense of an emergence or an observation, resulting from the combination of the different policies set implemented effectively locally for each component.
  • the set of policies of the different components can set the overall behavior of the overall system.
  • different policy configuration files implemented in the different components can be made available (e.g., defined by the user, the operator of the monitoring service, via the network etc.).
  • the various policies are generally expressed by rules linking descriptive attributes of the problem or the aspect of the system to be monitored (eg as regards the time of refreshing the inputs, frequency of refreshing the outputs, etc.) or the descriptive attributes of the platform on which the system runs (eg number and processor occupation, amount of available and used memory ...) and thresholds.
  • a rule may be that if an entry changes value more than once in less than one second, only the last value will be selected.
  • the planning component if the platform has several available cores, the execution can be parallelized.
  • a "FORWARD" operator For example, a "version" of the operator - specific to the problem or aspect of the monitored system - for example a variant of the implementation of the operator can be implemented.
  • a policy may be to broadcast the changes every second, for example.
  • a component policy may consider that modifications relating to two different inputs occurring within a few milliseconds of intervals are actually concomitant ("substantially" concomitant) and will therefore be treated as one and the same input .
  • a policy can configure or predefine data assimilations or mergers or aggregations.
  • a data merge or aggregation or data assimilation policy can advantageously be used when it is known that the values of the inputs are provided by a means of communication with a certain latency (network ).
  • a policy is therefore a way to configure or parameterize a component with respect to a given application.
  • the scheduling component can "select” and “allocate” previously entered input values: in other words, it can “propagate” particular input values (it can in particular select these values from the knowledge of the graph of addiction).
  • the broadcast component may perform the communication at a later time and thus “defer” the communication or broadcast.
  • a component policy includes a set of rules in relation to tangible ways of executing those rules.
  • the policy associated with a component makes it possible to parameterize and modify the behavior (“emergent") of the component to which it applies.
  • a policy typically includes a set of operations selected from the operations of filtering, ordering, sorting, segmenting, splitting, merging, deleting, skipping, adding, substituting, concatenating, compressing, storing one or more input values.
  • a policy can be parameterized (e.g. previously) or configurable (e.g. according to variables for example ). In other words, a policy can be configured or configurable.
  • a policy may be "universal" in the sense that the different policies associated with the different components may be interchangeable. In another embodiment, the policies may not precisely be interchangeable between the different components. For example, regarding the operation of filtering, the threading unit will not apply the same type of filtering as the broadcast unit or even the planner.
  • the threading component is adapted to perform one or more of the steps of storing, grouping, merging, and deleting input values or data;
  • the planning component is adapted to perform one or more of the steps among those consisting of deleting, canceling, skipping, merging, allocating (to computing resources for example), associating or annotating (eg by state values) input values;
  • the broadcast component is adapted to perform one or more of the steps of selecting (eg according to predefined criteria or thresholds), grouping, differing, choosing times in time, canceling input values or data;
  • the evaluation component is adapted to perform one or more of the steps of restricting or extending the evaluable operators (by choosing predefined implementation variants for example, ie changing the semantics of the operators)
  • FIG. 1 schematizes the general architecture of an exemplary method according to the invention.
  • the architecture of a fuzzy expert system 100 is composed of a rule base 150, a set of inputs 101 (or “I” for “input”) and a set of outputs 102 (or “O” “for” Output ").
  • This architecture is that of a "classic” fuzzy expert system.
  • the component 1 10 is a queuing component ("threading” or "Q” for "queuing") of the inputs 101.
  • this component captures these changes.
  • this component may apply different queuing policies. For example, certain rules - or policies - for filtering may take into account the capacity of the machine (eg the host machine or the machine being monitored) and / or the nature of the changes themselves (for example, if the value of an output has not changed by less than 1%, no need to consider its new value), or else group the changes (not exhaustive).
  • the component 130 is a diffusion component of the outputs. Outputs 102 change over time. This component according to the invention advantageously makes it possible to "broadcast” (or “notify” or “communicate” or “transmit") the new output values 102. In some embodiments, explanations on the change of the output values may be also communicated.
  • the component 130 like the component 1 10 can apply different predefined policies. For example, the component 1 10 can inform value changes of the outputs 102 at a predefined time interval (for example every N seconds) and / or inform as soon as an activation value has changed, according to thresholds or ranges. thresholds (non-exhaustive).
  • the component 120 is a planning component of the calculations. This component 120 is informed or notified in step 1 12 of the arrival of one or more changes by the threading unit component 1 10. The component 120 can then trigger or actuate or solicit or control the component component 130 of broadcast outputs. Depending on the current state of the machine or all the machines, the component 120 is able to affect the calculations to a processor or a heart on a particular machine, to prioritize a calculation or a sub-task calculation (eg thread), etc.
  • the set of entries 101 having changed are queued by the threading unit 1 10 (possibly treated according to its policy).
  • the threading unit then notifies in step 1 1 2 the planning unit 120 that new entries are available.
  • This planning unit 1 then applies its policy and uses the evaluation unit 140 in step 1 22.
  • the evaluation unit 140 at the end of the calculation, informs or notifies back (step 1 23) the planning unit 120 that the evaluation is completed.
  • the component 1 20 informs in step 1 21 the broadcast unit 130 that it can broadcast the changes of the outputs (if any).
  • the component 120 also executes its own policy, if any.
  • Figure 2 shows an example of a rule in the form of a graph.
  • the rule base of the expert system can be optimized, in particular the representation of this rule base.
  • the evaluation unit can also be optimized.
  • the evaluation 140 may be selective, that is to say, evaluate the only expressions impacted by the change found for certain inputs 1 01.
  • the method according to the invention aims at optimizing the calculations or arithmetic operations to the only necessary operations or calculations.
  • the method avoids the execution of a portion of code whose results are not (really or strictly) necessary, (eg it is useless to calculate a result that is not used).
  • the method according to the invention is advantageously economical in calculation, improving the associated response times.
  • the method according to the invention for calculating an expression or rule of the expert system only when necessary it is advantageous to represent the dependence between all the elements that make up the rule or the expression. In this way, optimizations can be conducted (redundancy deletions, calculations restricted to the only necessary calculations, etc.).
  • a rule - within the meaning of the invention - consists of several elements: propositions, expressions (unary, binary, ...) and conclusions.
  • Proposals can include inputs (eg linguistic variables in the context of fuzzy logic).
  • the rule base can be represented using a graph in which each node represents an entity (eg variable, expression, conclusion, rule, etc.).
  • An arc between two nodes A and B, denoted by A ⁇ B, indicate that the evaluation of B depends on the evaluation of A.
  • a changes value the value of B must be recalculated.
  • a rule is represented by a tree and thus a rule base corresponds to a tree forest.
  • a tree is not sufficient because it is possible that rules share entities (for example the same proposal).
  • the graph representation advantageously makes it possible to obtain the uniqueness of the representation of each expression or entity. This uniqueness avoids the redundancy of calculations. By means of a graphical representation, it is sufficient to check in all the nodes of the graph if none of them carries the same information.
  • This representation of the rule base as a graph combined with rules expressed in natural language is particularly advantageous for the manipulation of a fuzzy expert system. Indeed, for the same physical variable, depending on the membership function, the same fuzzy value can be associated with different values after "fuzzyfication", ie application of fuzzy logic techniques. For example, if the variable under consideration is the temperature, if the membership function is a trapezium whose small base is between the values 15 ° and 25 ° and at 1 on the ordinates, then all the values of temperature between 15 ° and 25 °. ° and 25 ° are worth 1 after fuzzyfication. In this case, there will be no calculation beyond the fuzzyfication of the temperature. This aspect makes the implementation of the method practical the sensors provide values that oscillate slightly or in a limited way.
  • Figure 3 illustrates an example of a graph with nodes having priorities.
  • the representation of the rule base by a graph may not be sufficient.
  • the parent nodes will be evaluated until the evaluation of the expression 220 "the temperature is warm and the air n" is evaluated. is not wet.
  • the path between the "humidity" input 202 and this expression 220 is longer than that from the "temperature” input 201.
  • the expression 220 "the temperature is hot and the air is not humid” will be evaluated twice: first time as dependent on the expression 215 "the temperature is hot” and a second time as dependent on the expression expression 213 "the air is not wet”.
  • a priority queue is created which first processes the nodes whose priority is the lowest and which does not accept that the same object is present twice in the queue.
  • a zero priority ie equal to 0 these entries must be evaluated first in all cases
  • the expression 201 "temperature sensor” and the expression 202 “humidity sensor” are placed in the queue.
  • both expressions being equal priority
  • the expression 201 "temperature sensor” will for example be evaluated and the expression 215 "the temperature is hot” will be added to the queue.
  • the expression 202 “humidity sensor” will be evaluated and the expression 213 "the air is wet” will be added to the queue.
  • the expression “hot temperature” is then evaluated and the expression “the temperature is hot and the air is not humid” is placed in the queue with priority.
  • the expression “wet air” has priority (its weight or priority coefficient 2131 is equal to 1 while the other expression 220 is associated with a priority 2201 equal to 3), it is evaluated and the expression 214 "the air is not wet” is added to the queue. Since the 2141 priority of the expression 214 is 2, this expression 214 will be evaluated first and the expression 220 "the temperature is hot and the air is not wet” should be added. However, this expression 220 "the temperature is hot and the air is not wet” is already present in the priority queue so it is not added. Then, the expression 220 is in turn evaluated. In this way, it is avoided to carry out a double evaluation of the expression 220 "the temperature is hot and the air is not humid".
  • the unit 1 10 (signal notification of changes in the value of the inputs) watches for each of the entries of the system changes in value. In this case, the changes are put in a queue in a certain order (eg according to the policy of this unit).
  • the unit 1 10 for queuing the notifications of the input changes communicates or notifies in step 1 12 the values of the new entries to the planning unit 120.
  • a policy may express the need to merge changes in values that have occurred so consecutive.
  • a policy may also consider that modifications of two different inputs occurring within a few milliseconds of intervals are actually concomitant ("substantially" concomitant).
  • a policy can configure or predefine data assimilations or mergers or aggregations. This last policy can be used when it is known that the values of the inputs are provided by a means of communication with a certain latency (network ).
  • the scheduling unit 120 that receives a communication or notification from the unit 110 responds according to its own policy.
  • a simple policy may be to immediately trigger the evaluation of the neighboring nodes of each of the nodes representing the entries that have been changed. It is also possible to implement having one or more more sophisticated policies that may consist of, for example, managing parallel computing or calculation distribution.
  • the calculations can indeed be spread over several cores and / or multiple multi-core machines. More precisely, either the different times are processed on different cores or machines, or for a given time t, the entities to be evaluated are separated (if this is possible) in order to be evaluated independently.
  • this separation can be implemented as follows: in the graph G which represents the rule base, it is selected a graph G 'included in G, so that there is a path starting from the entries that have just been modified. Then it is searched in G ', if they exist, Gi connected graphs for which there is no common edge between these different Gi.
  • Each connected graph Gi can then be evaluated in parallel (ie be the subject of parallel calculations).
  • other policies may be implemented to take into account, for example, the capacity and the occupancy rate of the machines used.
  • time management rules are added and combined with rule base rules.
  • a system for which one or more expiration values are associated with the expressions or rules that are manipulated In an expert system for continuously processing data, it is for example advantageous to express an expression in the form: "if an event occurred in the last 10 minutes then ". Assuming that such an event occurred at t0, at t0 + 5 minutes, the proposition is true. On the other hand, it will no longer be true at t0 + 15 minutes because the time window of 10 minutes will have expired. An expression such as "an event has occurred in the last 10 minutes” can therefore evolve, ie change expression or value, without an entry changing its value.
  • certain expressions may be "expirable", that is to say that their value has a limited duration and / or that these expressions are aware that they must be recalculated after a certain time (which can be parameterized or parameterizable eg variable function or configured / configurable).
  • these expressions are communicated by the planning unit 120 to the evaluation unit 140.
  • the scheduling unit 120 decides in particular when the expression should to be reassessed.
  • the present invention can be implemented from hardware and / or software elements. It may be available as a computer program product on a computer readable medium.
  • the support can be electronic, magnetic, optical or electromagnetic.
  • the device can use one or more dedicated electronic circuits or a general purpose circuit.
  • the technique of the invention can be realized on a reprogrammable calculation machine (a processor or a microcontroller for example) executing a program comprising a sequence of instructions, or on a dedicated calculation machine (for example a set of logic gates). as an FPGA or an ASIC, or any other hardware module).
  • the device comprises a computer readable storage medium (RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk carrier, magnetic cassette, magnetic tape , magnetic storage disk or other storage device, or other non-transitory computer readable storage medium) encoded with a computer program (i.e., multiple executable instructions) which, when executed on a processor or several processors performs the functions of the previously described embodiments.
  • a computer program i.e., multiple executable instructions
  • a device may comprise a communication bus to which a central processing unit or microprocessor (CPU, acronym for "Central Processing Unit”), which processor can be "multi-core” or “many-core”; a read-only memory (ROM, acronym for “Read Only Memory” in English) that may include the programs necessary for the implementation of the invention; a random access memory or RAM (Random Access Memory) with registers adapted to record variables and parameters created and modified during the execution of the aforementioned programs; and a communication interface or I / O (I / O acronym for "Input / ouput” in English) adapted to transmit and receive data.
  • CPU central processing unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • the corresponding program (that is to say the sequence of instructions) can be stored in or on a removable storage medium (for example an SD card , a DVD or Bluray, a mass storage means such as a hard disk eg SSD) or non-removable, volatile or non-volatile, this storage medium is readable partially or completely by a computer or a processor.
  • the computer readable medium may be transportable or communicable or mobile or transmissible (i.e. by a 2G, 3G, 4G, Wifi, BLE, fiber optic or other telecommunication network).
  • the reference to a computer program that, when executed, performs any of the functions described above, is not limited to an application program running on a single host computer.
  • the terms computer program and software are used herein in a general sense to refer to any type of computer code (for example, application software, firmware, microcode, or any other form of computer code).
  • computer instruction that can be used to program one or more processors to implement aspects of the techniques described herein.
  • the means or computing resources can be distributed, eg with Cloud Computing, or with peer-to-peer technologies.
  • the software code may be executed on any suitable processor (for example, a microprocessor) or a processor core or set of processors, whether provided in a single computing device or distributed among a plurality of computing devices (eg example as possibly accessible in the environment of the device).
  • the executable code of each program enabling the programmable device to implement the processes according to the invention can be stored, for example, in the hard disk or in read-only memory.
  • the program or programs may be loaded into one of the storage means of the device before being executed.
  • the central unit can control and direct the execution of instructions or portions of software code of the program or programs according to the invention, instructions that are stored in the hard disk or in the ROM or in the other storage elements mentioned above.
  • the sensors may comprise one or more of the sensors or sensors selected from pressure, flow, temperature, oxygen, velocity, motion, position, location, radioactivity, energy, chemical products or components (eg nitrogen monoxide, ozone, smoke, pollutants, etc.) or biological products or components (eg viruses, contaminants, pollen, etc.).
  • the sensors can include one or more MEMS, magnetometers, hygrometers, gyroscopes, accelerometers, biosensors, radars, sonars, cameras, 3D scanners etc.
  • the actuators or actuators may be pneumatic, hydraulic, electrical, mechanical, magnetic, pelletier, piezoelectric or electroluminescent, etc. They may for example comprise one or more cylinders, motors, heating resistors, lamps, acoustic enclosures, electromagnets, or even thermo coolers, ionizers, valves, valves, reels, etc.
  • the sensors and actuators can be those used in the context of home automation applications.
  • the actuators may include switches, keypads, dimmers, temperature sensors, flow sensors, occupancy sensors, humidity sensors, brightness sensors, smoke detectors, and the like.
  • the invention will advantageously find application for the management of lighting systems, heating, air conditioning, opening / closing flaps, garden watering, video surveillance, opening / closing of doors, ventilation, lighting, access or any other system that can be controlled by a home automation system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Automation & Control Theory (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Biophysics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

There is disclosed a method implemented on computer comprising the steps consisting in receiving an input value to be evaluated; queuing the input value in a queue; selecting within the queue a waiting input value; determining an output value by evaluating by inference by means of the rule base the waiting input value selected. Developments describe the dissemination of one or more output values, the planning over time and/or in space of the evaluations of the waiting input values (in particular as regards computation resources), the selective evaluation of input values, the use of a dependency graph, parameters for the expiry of parts of rules over time, the use of inference according to fuzzy logic. System aspects, in particular regarding components, and software are described.

Description

ARCHITECTURE LOGICIELLE POUR SYSTEME EXPERT  SOFTWARE ARCHITECTURE FOR EXPERT SYSTEM
Domaine de l'invention Field of the invention
L'invention concerne le domaine de l'intelligence artificielle en général et le domaine des systèmes experts à base de règles en particulier, notamment fondés sur la logique floue. The invention relates to the field of artificial intelligence in general and the field of rule-based expert systems in particular, in particular based on fuzzy logic.
Etat de la Technique State of the art
Les Systèmes Intelligents Flous (SIF) - ou systèmes experts flous - sont des systèmes qui intègrent ou implémentent de l'expertise humaine et qui visent à automatiser ou imiter le raisonnement d'experts humains face à des systèmes complexes. Ces systèmes éminemment techniques peuvent se fonder sur différentes aspects de la logique mathématique et en particulier sur la logique dite "logique floue". Fuzzy Intelligent Systems (FIS) - or fuzzy expert systems - are systems that integrate or implement human expertise and that seek to automate or mimic the reasoning of human experts with complex systems. These eminently technical systems can be based on different aspects of mathematical logic and in particular on logic called "fuzzy logic".
Les systèmes experts dits "flous" nécessitent généralement plus de calculs que les systèmes experts standards ou classiques. Par ailleurs, ces systèmes requièrent généralement de réitérer dans le temps ces calculs significatifs (par exemple lorsqu'ils sont appliqués à des systèmes dynamiques qui changent au cours du temps). So-called "fuzzy" expert systems generally require more calculations than standard or conventional expert systems. In addition, these systems generally require the repetition of these significant calculations over time (for example when they are applied to dynamic systems that change over time).
Les systèmes experts dits "flous" nécessitent généralement de la puissance de calcul. Les scientifiques développant des systèmes experts flous sont généralement amenés à construire des opérateurs de plus en plus complexes et "riches". Le temps de calcul peut alors devenir plus important que les conjonctions, disjonctions et négations que l'on trouve généralement avec les systèmes experts classiques. Par ailleurs, les systèmes experts flous nécessitent la répétition de ces calculs. En effet, dans les systèmes experts classiques, seules certaines règles sont activées à un moment donné alors qu'avec les systèmes experts flous, toutes les règles doivent être recalculées (à tout le moins une grande partie d'entre elles). Selon l'état de l'art des systèmes experts actuellement commercialisés (e.g. offerts au téléchargement ou à l'achat), le seul moyen disponible actuellement afin de gérer un flux de données d'entrée (c'est-à-dire de multiples données reçues au cours du temps) consiste à relancer l'évaluation à chaque pas de temps. Cette approche nécessite en particulier de réévaluer les règles mises en œuvre dans un tel système expert flou et de manière répétée dans le temps (par exemple toutes les secondes). Cette approche produit l'effet d'une prise de décision continue (e.g. "au fil de l'eau" ou "progressivement" ou "au fur et à mesure" ou "de manière continue", voire dans certains cas une décision "interactive" ou même "temps-réel" ou "quasi-temps réel" ou "en flux tendu"). Un problème technique qui se pose est que toutes les règles doivent être réévaluées à chaque itération, y compris celles dont les entrées n'ont pas changées. Cela est d'autant plus coûteux en termes de calcul que des opérateurs dont l'évaluation peut être fort complexe peuvent être impliqués dans ces calculs. Cette situation sous-optimisée est en soi insatisfaisante. En pratique également, les dispositifs et appareils impliqués peuvent ne pas disposer de la puissance de calcul suffisante, quand bien même le calcul serait-il distribué entre plusieurs appareils coopérant les uns avec les autres. Dans un cadre d'utilisation particulier, celui de l'Internet des objets, il est par exemple généralement prévu un très grand nombre d'objets en interaction mais ces objets ne disposent pas nécessairement de moyens de calcul appropriés. So-called "fuzzy" expert systems usually require computing power. Scientists developing fuzzy expert systems are usually led to build increasingly complex and "rich" operators. The computation time can then become more important than the conjunctions, disjunctions and negations that are generally found with classical expert systems. In addition, fuzzy expert systems require the repetition of these calculations. Indeed, in classical expert systems, only certain rules are activated at a given moment whereas with fuzzy expert systems, all the rules must be recalculated (at least a large part of them). According to the state of the art of the currently marketed expert systems (eg offered for download or purchase), the only currently available means to manage an input data stream (i.e., multiple data received over time) consists of restarting the evaluation at each time step. This approach requires in particular to reevaluate the rules implemented in such a fuzzy expert system and repeatedly over time (for example every second). This approach produces the effect of continuous decision making (eg "on the water" or "progressively" or "as and when" or "continuously", or in some cases an "interactive" decision "or even" real-time "or" near-real-time "or" just-in-time "). A technical problem is that all rules must be re-evaluated at each iteration, including those whose entries have not changed. This is all the more expensive in terms of calculation that operators whose evaluation can be very complex can be involved in these calculations. This under-optimized situation is unsatisfactory in itself. In practice also, the devices and devices involved may not have sufficient computing power, even if the calculation would be distributed between several devices cooperating with each other. In a particular context of use, that of the Internet of Things, it is for example generally expected a very large number of objects in interaction but these objects do not necessarily have appropriate computing means.
Afin de résoudre ces différents aspects, la littérature brevet reste silencieuse en matière de logique floue. De rares documents de brevet traitent du problème technique initial mais dans le cadre de systèmes experts classiques, c'est-à-dire sans prendre en compte les spécificités relatives à la logique floue. Dans le cadre classique, le document US 821431 6 enseigne que l'évaluation des règles (e.g. "forward chaining") peut être soumise à une notification des entrées changées. Les autres documents connus ne traitent pas de logique floue. In order to solve these different aspects, the patent literature remains silent in terms of fuzzy logic. Rare patent documents deal with the initial technical problem, but in the context of classical experts, that is to say without taking into account the specificities relating to fuzzy logic. In the conventional framework, document US 821431 6 teaches that the evaluation of the rules (eg "forward chaining") may be subject to a notification of the changed entries. Other known documents do not deal with fuzzy logic.
L'invention proposée dans le présent document permet de répondre à ces besoins ou limitations, au moins en partie. Résumé de l'invention The invention proposed in this document makes it possible to meet these needs or limitations, at least in part. Summary of the invention
Il est divulgué un procédé mis en œuvre sur ordinateur comprenant les étapes consistant à recevoir une valeur d'entrée à évaluer; enfiler la valeur d'entrée dans une file d'attente; sélectionner au sein de la file d'attente une valeur d'entrée en attente; déterminer une valeur de sortie en évaluant par inférence au moyen de la base de règles la valeur d'entrée en attente sélectionnée. Des développements décrivent la diffusion d'une ou plusieurs valeurs de sortie, la planification dans le temps et/ou dans l'espace des évaluations des valeurs d'entrées en attente (notamment en matière de ressources de calcul), l'évaluation sélective de valeurs d'entrée, l'utilisation d'un graphe de dépendance, des paramètres d'expiration de parties de règles dans le temps, l'utilisation de l'inférence selon la logique floue. Des aspects de système, notamment de composants, et de logiciels sont décrits. There is disclosed a computer-implemented method comprising the steps of receiving an input value to be evaluated; thread the input value into a queue; select from the queue a pending entry value; determining an output value by inferring by the rule base the selected input pending value. Developments describe the dissemination of one or more output values, the planning in time and / or space of assessments of pending input values (particularly in terms of computing resources), the selective evaluation of input values, the use of a dependency graph, expiration parameters of rules in time, the use of fuzzy logic inference. System aspects, including components, and software are described.
Selon un aspect général de l'invention, il est divulgué une architecture logicielle permettant d'obtenir des performances optimisées, visant à identifier les différentes données en sortie en fonction des règles et des données en entrée. Plus précisément, selon un mode de réalisation de l'invention, il est divulgué un système expert flou capable de gérer un flux (continu ou régulier ou discontinu ou irrégulier ou périodique ou apériodique ou intermittent) d'entrées et de restituer progressivement (e.g. "au fil de l'eau") les valeurs des sorties correspondantes. According to a general aspect of the invention, it is disclosed a software architecture for obtaining optimized performance, to identify the different output data according to the rules and data input. More precisely, according to one embodiment of the invention, a fuzzy expert system capable of managing a flow (continuous or regular or discontinuous or irregular or periodic or aperiodic or intermittent) of inputs and of progressively restoring is disclosed (e.g. in the course of the water ") the values of the corresponding outputs.
Les différents modes de réalisation de l'invention sont avantageusement utilisés dans des domaines techniques tels que la domotique ou la régulation industrielle. De manière générale, l'invention trouvera application pour surveiller ("monitoring") un système ou un objet donné au moyen de plusieurs capteurs ("senseurs") qui mesurent différents phénomènes en continu (ou à des fréquences éventuellement différentes, par intermittence ou de manière périodique). Des procédés et des systèmes selon l'invention peuvent permettre d'implémenter un système de régulation en domotique. Par exemple, un système expert flou selon l'invention peut mesurer au cours du temps (de manière discrète ou en continu) les variations de températures, de luminosité et d'occupation des pièces pour déduire et/ou actionner des commandes correspondantes (par exemple d'ouverture des volets). The various embodiments of the invention are advantageously used in technical fields such as home automation or industrial control. In general, the invention will find application to monitor ("monitoring") a given system or object by means of several sensors ("sensors") which measure different phenomena continuously (or at possibly different frequencies, intermittently or from periodically). Methods and systems according to the invention can implement a home automation control system. For example, a fuzzy expert system according to the invention can measure over time (discretely or continuously) the variations in temperature, brightness and occupation of the parts to deduce and / or actuate corresponding commands (for example opening of the shutters).
Avantageusement, mais de manière facultative, l'écriture des règles selon l'invention s'effectue en langage naturel (plutôt qu'au moyen d'opérateurs mathématiques). Cela permet de cacher - au moins pour partie - à l'opérateur qui saisit ses règles expertes la complexité mathématique sous-jacente au modèle en cours d'exécution. L'utilisation du langage naturel permet également d'améliorer Y expressivité du système expert. Cette caractéristique permet d'obtenir une meilleure couverture des situations réelles par les règles. En d'autres termes, un système expert flou fondé sur des règles exprimées en langage naturel permet in fine une meilleure "capture" du réel. En d'autres termes, certains modes de réalisation manipule avantageusement des règles ou expressions utilisant le vocabulaire du langage naturel, améliorant la compréhension (et donc la manipulation ultérieure) des dites règles ou expressions. Advantageously, but optionally, the writing of the rules according to the invention is done in natural language (rather than by means of mathematical operators). This hides - at least partially - the operator who enters his expert rules the mathematical complexity underlying the running model. The use of natural language also improves the expressiveness of the expert system. This characteristic makes it possible to obtain a better coverage of the real situations by the rules. In other words, a fuzzy expert system based on rules expressed in natural language ultimately allows a better "capture" of reality. In other words, some embodiments advantageously manipulate rules or expressions using the vocabulary of natural language, improving the understanding (and therefore the subsequent manipulation) of these rules or expressions.
Cet avantage est inhérent à la logique floue, comme indiqué dans « The concept of a linguistic variable and its applications » de L.A. Zadeh. This advantage is inherent in fuzzy logic, as stated in L.A. Zadeh's The concept of a linguistic variable and its applications.
L'invention trouve avantageusement application pour des systèmes experts tant "classiques" que "flous". La logique floue ("fuzzy logic" en anglais) est une extension de la logique classique aux raisonnements approchés. Par ses aspects numériques, elle s'oppose aux logiques modales. A l'inverse de l'algèbre de Boole, la logique floue autorise la valeur de vérité d'une condition à parcourir un autre domaine que la paire {vrai, faux}. En logique floue, il existe des degrés dans la satisfaction d'une condition. La logique floue attribue des degrés de vérité à une relation du style x est plus près de y que de z, construite et/ou affinée par apprentissage. De façon générale, les relations floues permettront de coder des connaissances graduées, empiriques ou typiques, acquises directement ou par des heuristiques, des inductions, etc. Les transitions utilisées peuvent être de type linéaire, hyperbolique (e.g. sigmoïde ou tangente hyperbolique), exponentielle, gaussienne, etc. The invention is advantageously applicable for both "conventional" and "fuzzy" expert systems. Fuzzy logic is an extension of classical logic to approximate reasoning. By its numerical aspects, it is opposed to modal logics. In contrast to Boolean algebra, fuzzy logic allows the truth value of a condition to traverse a domain other than the {true, false} pair. In fuzzy logic, there are degrees in the satisfaction of a condition. Fuzzy logic assigns degrees of truth to a relationship of the style x is closer to y than z, constructed and / or refined by learning. Generally speaking, fuzzy relationships will allow the coding of graduated, empirical or typical knowledge acquired directly or through heuristics, inductions, etc. The transitions used can be linear, hyperbolic (e.g. sigmoid or hyperbolic tangent), exponential, Gaussian, etc.
Les procédés et systèmes selon l'invention facilitent de manière générale les interactions homme-machine. En particulier, ils peuvent permettre de décharger l'utilisateur de manipulations fastidieuses, parfois répétitives et souvent complexes. Généralement, les différents modes de réalisation de l'invention conduisent à l'optimisation de l'effort cognitif à fournir par l'utilisateur lors de l'utilisation du système expert selon l'invention. En d'autres termes, les effets techniques liés à certains aspects de l'invention correspondent à une réduction de la charge cognitive de l'utilisateur. Description des figures The methods and systems of the invention generally facilitate human-machine interactions. In particular, they can help to relieve the user of tedious manipulations, sometimes repetitive and often complex. Generally, the various embodiments of the invention lead to the optimization of the cognitive effort to be provided by the user when using the expert system according to the invention. In other words, the technical effects related to certain aspects of the invention correspond to a reduction in the cognitive load of the user. Description of figures
Différents aspects et avantages de l'invention vont apparaître en appui de la description d'un mode préféré d'implémentation de l'invention mais non limitatif, avec référence aux figures ci-dessous : Various aspects and advantages of the invention will appear in support of the description of a preferred embodiment of the invention, but not limiting, with reference to the figures below:
La figure 1 schématise l'architecture générale d'un exemple de procédé selon l'invention; La figure 2 illustre un exemple de règle représentée sous forme de graphe; FIG. 1 schematizes the general architecture of an exemplary method according to the invention; Figure 2 illustrates an example of a rule represented as a graph;
La figure 3 illustre un exemple de graphe avec des nœuds présentant des priorités. Figure 3 illustrates an example of a graph with nodes having priorities.
Description détaillée de l'invention Detailed description of the invention
D'une manière générale, un système à base de règles est un outil capable de reproduire les mécanismes cognitifs d'un expert, dans un domaine particulier. Plus précisément, un système expert est un logiciel capable de répondre à des questions, en effectuant un raisonnement à partir de faits et de règles connus. Il peut servir notamment comme outil d'aide à la décision. Un système expert se compose de trois parties: une base de faits, une base de règles et un moteur d'inférence. Le moteur d'inférence est capable d'utiliser faits et règles pour produire de nouveaux faits, jusqu'à parvenir à la réponse à la question experte posée. Un système expert peut reposer sur des mécanismes de logique formelle et utilisent le raisonnement déductif. Il peut par exemple s'appuyer sur la logique des propositions (« logique d'ordre 0 »), ou bien la logique des prédicats du premier ordre (« logique d'ordre 1 »). Des techniques de logique floue peuvent aussi être utilisées. In general, a rule-based system is a tool capable of reproducing the cognitive mechanisms of an expert in a particular field. More precisely, an expert system is a software capable of answering questions, making reasoning based on known facts and rules. It can be used as a tool for decision support. An expert system consists of three parts: a fact base, a rule base, and an inference engine. The inference engine is able to use facts and rules to produce new facts, until reaching the answer to the expert question asked. An expert system can rely on formal logic mechanisms and use deductive reasoning. It can for example be based on the logic of the propositions ("logical order 0"), or the logic of the first-order predicates ("first-order logic"). Fuzzy logic techniques can also be used.
Les algorithmes pour réaliser le calcul par inférence sont divers et peuvent notamment être spécifiques à la nature de la logique qui est implémentée. Par exemple, pour la logique d'ordre 0 - utilisée entre autres par les systèmes de gestion de règles business (« Business Rule Management Systems » ou BRMS) -, les algorithmes de chaînage avant ou arrière (« forward chaining » ou « backward chaining ») permettent de partir des faits et d'en déduire les conclusions (ou inversement de partir des conclusions pour connaître les faits qui en sont à l'origine). Dans les années 80, les algorithmes Rete et Novel ont remplacé ces algorithmes de chaînage en proposant une étape de filtrage des règles impactés par les faits. Pour la logique d'ordre 1 , les algorithmes de chaînage sont utilisés conjointement avec un algorithme d'unification qui permet d'instancier un prédicat pour un ou plusieurs individus dans l'espace considéré. Enfin en logique floue, les méthodes d'inférence de Zadeh, Mamdani et Sugeno peuvent être utilisées. Dans les systèmes à base de connaissances exprimées en langage naturel, une connaissance est généralement représentée par des règles de la forme : "si une grandeur est [adjectif] et une autre grandeur est [adjectif] alors la grandeur de la sortie est [adjectif]'. Par exemple: "si la température extérieure est très froide et que la pluie est fine alors le risque de verglas est grand'. The algorithms for performing the inference calculation are various and may in particular be specific to the nature of the logic that is implemented. For example, for the logic of order 0 - used among others by the business rules management systems (BRMS) -, the forward chaining or backward chaining algorithms ") Allow to start from the facts and to deduce the conclusions (or conversely to start from the conclusions to know the facts which are at the origin). In the 1980s, the Rete and Novel algorithms replaced these chaining algorithms by proposing a step of filtering the rules impacted by the facts. For order 1 logic, chaining algorithms are used in conjunction with a unification algorithm to instantiate a predicate for one or more individuals in the space under consideration. Finally, in fuzzy logic, the inference methods of Zadeh, Mamdani and Sugeno can be used. In knowledge-based systems expressed in natural language, knowledge is usually represented by rules of the form: "if a magnitude is [adjective] and another magnitude is [adjective] then the magnitude of the output is [adjective] For example: "if the outside temperature is very cold and the rain is fine then the risk of ice is high".
Les procédés et systèmes selon l'invention effectuent une ou plusieurs opérations ou étapes, parmi lesquelles des étapes de a) stockage b) de mesure ou d'observation c) de planification de l'évaluation d) d'évaluation proprement dite et e) de diffusion. Plus spécifiquement, le procédé comprend une ou plusieurs étapes parmiThe methods and systems of the invention perform one or more operations or steps, including steps of a) storage b) measurement or observation c) planning the evaluation d) evaluation itself and e) of diffusion. More specifically, the method comprises one or more steps among
- a) des étapes de stockage; les modifications observées quant aux entrées peuvent être stockées dans une file d'attente (cette file d'attente ou "buffer" permet avantageusement de manipuler des données en entrées qui pourraient changer ou s'accumuler plus vite que les capacités de traitement du système ne le permettent). Eventuellement, en application de sa politique propre, la file d'attente selon l'invention peut supprimer, et/ou fusionner des éléments (par exemple si la fréquence de rafraîchissement des entrées est trop élevée). En d'autres termes, la file d'attente peut ne pas être "passive" (au sens d'un simple espace de stockage temporaire) mais au contraire être "active", i.e. participer activement au système global; - a) storage steps; the modifications observed with respect to the entries can be stored in a queue (this queue or "buffer" advantageously makes it possible to manipulate input data which could change or accumulate faster than the processing capacities of the system allow it). Optionally, in application of its own policy, the queue according to the invention can delete, and / or merge elements (for example if the refresh rate of the inputs is too high). In other words, the queue may not be "passive" (in the sense of a simple temporary storage space) but instead be "active", i.e. actively participate in the overall system;
- b) des étapes de mesure ou d'observation ou de surveillance ou de suivi du contexte courant (comprenant et non limité à la surveillance de l'état de la machine, i.e. charge ou activité processeur ou moyens de calcul, utilisation instantanée de la mémoire, etc); de surcroît, ces étapes peuvent en outre comprendre des étapes de sélection de certains éléments à retirer de la file d'attente, par exemple en vue de leur traitement (selon la politique implémentée);  - b) steps of measurement or observation or monitoring or monitoring of the current context (including and not limited to the monitoring of the state of the machine, ie processor load or activity or calculation means, instantaneous use of the memory, etc.); in addition, these steps may further comprise steps of selecting certain elements to be removed from the queue, for example with a view to their processing (according to the implemented policy);
- c) des étapes de planification quant à l'évaluation des éléments sélectionnés sur les différents moyens de calculs physiques (suivant les différents niveaux de granularité accessibles, depuis les grappes de serveurs, les serveurs, les processeurs au sein des serveurs, les cœurs au sein des processeurs; également la subdivision des tâches de calcul, par exemple les threads de calcul, etc). Par exemple, si les éléments sont indépendants (c'est-à-dire qu'ils n'influent pas sur les mêmes sorties), il est possible dans certains cas de procéder à des calculs en parallèle. En d'autres termes, le composant de planification peut sélectionner une ou plusieurs entrées (ou un groupe d'entrées) ayant changées ou ayant été modifiées et peut décider d'affecter son évaluation à une entité (un cœur, un calculateur) et/ou peut simplement ne pas prendre en compte un groupe d'entrées s'il juge que la machine est trop occupée et/ou que ces modifications ne sont pas informatives ou redondantes. - c) planning steps for the evaluation of the selected elements on the various physical calculation means (according to the different granularity levels accessible, from the server clusters, the servers, the processors within the servers, the cores at the within the processors, also the subdivision of calculation tasks, for example calculation threads, etc.). For example, if the elements are independent (that is, they do not influence the same outputs), it is possible in some cases to perform calculations in parallel. In other words, the scheduling component can select one or more entries (or a group of entries) that have changed or have been modified and can decide to assign its evaluation to an entity (a heart, a calculator) and / or or may just not take into account a group of entries if it considers that the machine is too busy and / or that these changes are not informative or redundant.
- d) des étapes d'évaluation des sorties à partir des éléments sélectionnés en amont; d) steps for evaluating the outputs from the elements selected upstream;
- e) des étapes de diffusion des nouvelles valeurs de sortie (en considération de la politique de diffusion définie localement); les modalités de ladite diffusion peuvent s'effectuer de diverses manières et à l'intention soit de diverses sous-entités (généralement vers l'extérieur du système expert flou, mais dans des cas particuliers vers des composants internes à ce système). - e) steps to disseminate the new output values (in consideration of the locally defined dissemination policy); the modes of said diffusion can be carried out in various ways and for the purpose of either various sub-entities (generally out of the expert system fuzzy, but in special cases to components internal to this system).
De manière générale, il est divulgué un procédé mis en œuvre sur ordinateur de gestion d'une base de règles 150 le procédé comprenant les étapes consistant à recevoir une valeur d'entrée 101 à évaluer; évaluer par inférence au moyen de la base de règles 150 une valeur de sortie 102 correspondant à la valeur d'entrée 101 ; caractérisé en ce que le procédé comprend les étapes consistant à enfiler la valeur d'entrée dans une file d'attente 1 10; sélectionner 1 12 au sein de la file d'attente 1 10 une valeur d'entrée en attente; et déterminer une valeur de sortie 102 en évaluant par inférence au moyen de la base de règles 150 la valeur d'entrée en attente sélectionnée. In general, there is disclosed a method implemented on a computer for managing a rule base 150, the method comprising the steps of receiving an input value 101 to be evaluated; inferentially evaluating by means of the rule base 150 an output value 102 corresponding to the input value 101; characterized in that the method comprises the steps of threading the input value into a queue 1 10; select 1 12 in the queue 1 10 a pending entry value; and determining an output value 102 by inferring by the rule base 150 the selected pending input value.
Une valeur d'entrée peut être une valeur numérique (par exemple "38") ou une donnée symbolique ou bien une variable (par exemple "a") ou bien encore une suite de caractères (par exemple "38°C"). An input value can be a numerical value (for example "38") or a symbolic data item or a variable (for example "a") or even a sequence of characters (for example "38 ° C").
La base de règles 150 comprend des règles. Rule base 150 includes rules.
Une règle - au sens de l'invention - est constituée de plusieurs éléments: des propositions, des expressions (unaires, binaires, ...) et des conclusions. Les propositions peuvent comprendre des variables linguistiques dans le cadre de la logique floue. Une règle comprend plusieurs expressions (prémices, conclusions) et un ou plusieurs opérateurs (par exemple des opérateurs logiques prédéfinis standard "si", "alors", etc. ainsi que des opérateurs spécifiques "avant", "après", "tant que"). Par exemple une règle peut être "si la température est haute alors ouvrir la fenêtre"). Une expression peut notamment comprendre une suite de caractères (par exemple "si la température est haute" ou "ouvrir la fenêtre"). Une expression peut être une expression régulière. Une expression peut être une expression rationnelle. Une expression peut être une expression formelle. A rule - within the meaning of the invention - consists of several elements: propositions, expressions (unary, binary, ...) and conclusions. Proposals may include variables in the context of fuzzy logic. A rule includes several expressions (first fruits, conclusions) and one or more operators (for example standard predefined logical operators "if", "then", etc. as well as specific operators "before", "after", "as long as" ). For example a rule can be "if the temperature is high then open the window"). An expression may include a sequence of characters (for example "if the temperature is high" or "open the window"). An expression can be a regular expression. An expression can be a regular expression. An expression can be a formal expression.
Avantageusement une règle ou une expression manipulée par le procédé selon l'invention comprend du vocabulaire appartenant au langage naturel (i.e. les mots ou suites de caractères sont des mots du langage naturel), améliorant la compréhension des règles par l'utilisateur et renforçant l'expressivité de ces mêmes règles (e.g. leur capacité de "capture" du monde réel). Advantageously, a rule or an expression manipulated by the method according to the invention comprises vocabulary belonging to the natural language (ie the words or sequences of characters are words of the natural language), improving the understanding of the rules by the user and reinforcing the expressiveness of these same rules (eg their ability to "capture" the real world).
Une valeur d'entrée selon l'invention est "enfilée" ("to queue" en anglais) ou "placée dans une file d'attente". An input value according to the invention is "threaded" ("to queue" in English) or "placed in a queue".
Une valeur d'entrée est ensuite sélectionnée parmi les valeurs en attente. An input value is then selected from pending values.
Spécifiquement, cette sélection peut être du fait de la file d'attente elle- même (par exemple lorsque la capacité de stockage de la file d'attente est atteinte, cette dernière peut "pousser" une ou plusieurs valeurs d'entrée vers l'évaluation ou vers d'autres composants du système). Specifically, this selection may be due to the queue itself (for example, when the storage capacity of the queue is reached, the queue may "push" one or more input values to the queue. evaluation or to other components of the system).
De manière générale, la sélection est du fait du module de planification (i.e. des étapes consistant à planifier les évaluations), par exemple selon un mode "pull". Le composant de planification (les étapes de planification) participe du contrôle du système ainsi défini. In general, the selection is due to the planning module (ie the stages of planning the evaluations), for example according to a pull mode. The planning component (the planning steps) participates in the control of the system thus defined.
Dans certains modes de réalisation, l'enfilage peut être du type "First In First Ouf. Dans certains modes de réalisation, la mise en file d'attente peut impliquer des traitements sur les valeurs. La file d'attente peut en effet être associée à une "politique", c'est-à-dire un ensemble de règles. Ces règles sont prédéfinies. Elles peuvent être de type logique (selon diverses modalités, par exemple logique classique. Elles sont parfois configurables (de manière préalable et/ou à la demande i.e. en cours d'exécution du procédé ou système global). En l'espèce, en matière de file d'attente, les valeurs d'attente peuvent être "ordonnées" et/ou "triées" et/ou "regroupées" et/ou "effacées". Les critères de traitement sont variables (pondérations, corrélations, scoring, etc.). In some embodiments, the threading may be of the type "First In First Ouf." In some embodiments, the queuing may involve processing on the values. to a "policy", that is to say a set of rules.These rules are predefined.They can be of logical type (according to various modalities, for example classical logic.They are sometimes configurable (in a previous way and / or on demand ie running the process or global system.) In this case, in queuing, the waiting values can be "ordered" and / or "sorted" and / or "grouped together. "and / or" erased. "The processing criteria are variable (weights, correlations, scoring, etc.).
L'étape de mise en file (i.e. le composant de mise en file des entrées) peut placer les modifications perçues des entrées dans une file d'attente de manière à ne perdre aucune information. Dans un mode de réalisation la file d'attente (ou le composant système correspondant) n'est en effet pas nécessairement de capacité limitée comme un buffer peut l'être; une file d'attente selon l'invention peut éventuellement être adaptée à la gestion d'une grande quantité de données. En fonction de sa politique, le composant de mise en file des entrées peut supprimer des éléments ou les fusionner, par exemple si une entrée change de valeurs sans que le changement soit significatif. Dans un autre exemple, il permet aussi de les regrouper par heure d'arrivée. The queuing step (i.e. the input queuing component) can place perceived changes to entries in a queue so that no information is lost. In one embodiment, the queue (or the corresponding system component) is not necessarily of limited capacity as a buffer can be; a queue according to the invention can optionally be adapted to the management of a large amount of data. Depending on its policy, the input queuing component may delete items or merge them, for example if an entry changes values without the change being significant. In another example, it also allows to group by arrival time.
Activement sollicitée par l'étape de planification ou poussée par la gestion de la file d'attente, une valeur d'entrée est sélectionnée. Par la suite la valeur d'entrée est "exécutée" (i.e. "l'expression ou la règle est évaluée"). En d'autres termes, selon une vue systémique, le composant d'évaluation reçoit un groupe d'entrées modifiées et par inférence par rapport à la base de règles calcule les sorties. Actively solicited by the planning stage or pushed by the queue management, an input value is selected. Subsequently the input value is "executed" (ie "the expression or rule is evaluated"). In other words, according to a systemic view, the evaluation component receives a group of modified entries and by inference with respect to the rule base calculates the outputs.
Par exemple, la valeur de l'entrée vitesse (« La vitesse est-elle élevée ? ») peut être évaluée: une valeur peut être déterminée en sortie. En considérant la règle ou commande floue «si la fièvre est forte, alors administrer de l'aspirine", une entrée sera une valeur de température (par exemple "41 °C"). Il peut être considéré qu'une fièvre n'est pas forte en dessous de 38 °C, et qu'elle est forte au-dessus de 40 °C selon la base de règles (i.e. graduellement de plus en plus forte entre 38°C et 40°C (linéairement, exponentiellement, ou selon des fonctions continues). Une valeur de sortie sera une expression «administrer de l'aspirine » ou une valeur/quantification par exemple "X" milligrammes d'aspirine. For example, the value of the speed input ("The speed is high?") Can be evaluated: a value can be determined at the output. When considering the fuzzy rule or command "if the fever is high, then administering aspirin", an entry will be a temperature value (eg "41 ° C"). not strong below 38 ° C, and that it is strong above 40 ° C according to the base of rules (ie gradually more and more strong between 38 ° C and 40 ° C (linearly, exponentially, or according to continuous functions) An output value will be an expression "administering aspirin" or a value / quantification eg "X" milligrams of aspirin.
L'évaluation proprement dite s'effectue par inférence. L'inférence est un mouvement de la pensée qui va des principes à la conclusion. Le terme désigne les actions de mise en relation d'un ensemble de propositions, aboutissant à une démonstration de vérité, de fausseté ou de probabilité, sous la forme d'une proposition appelée conclusion. Selon l'invention, l'inférence peut être déductive ou inductive ou bien encore abductive. The actual evaluation is done by inference. Inference is a movement of thought that goes from principles to conclusion. The term refers to the actions of linking a set of propositions, resulting in a demonstration of truth, falsity or probability, in the form of a proposition called conclusion. According to the invention, the inference can be deductive or inductive or even abductive.
Dans un développement, le procédé comprend en outre une étape consistant à diffuser une ou plusieurs valeurs de sortie 102. In one development, the method further comprises a step of broadcasting one or more output values 102.
En termes de système, le composant de planification, en application de sa politique, peut sélectionner une valeur de sortie particulière. Le composant de diffusion peut, également en fonction de sa politique, sur-sélectionner des valeurs avant de les communiquer (i.e. sélectionner des valeurs préalablement sélectionnées). Par exemple, le composant de diffusion peut communiquer ou diffuser des valeurs de sortie à intervalle régulier dans le temps et/ou quand un événement particulier se produit et/ou si certaines conditions sont satisfaites, etc. La prise en compte de l'historique peut par exemple contribuer à la fusion ou à l'assimilation des valeurs d'entrée; la prise en compte de certains seuils prédéfinis peut conduire le composant de diffusion à ne pas réitérer la diffusion d'un résultat associé à une entrée si une valeur très proche (e.g. dans les limites de seuils prédéfinis) a déjà été communiquée par le passé, à tout le moins au cours d'une fenêtre temporelle également prédéfinie etc In terms of system, the scheduling component, in application of its policy, can select a particular output value. The broadcasting component can also, depending on its policy, over-select values before communicating them (ie select previously selected values). For example, the broadcast component may communicate or broadcast output values at regular intervals in time and / or when a particular event occurs and / or if certain conditions are satisfied, etc. Taking account of the history can for example contribute to the fusion or the assimilation of the input values; taking into account certain predefined thresholds may cause the broadcast component not to reiterate the broadcast of a result associated with an entry if a very close value (eg within the limits of predefined thresholds) has already been communicated in the past, at the very least during a predefined time window etc
En d'autres termes, l'étape de diffusion (respectivement le composant de diffusion) comprend une étape consistant à communiquer les valeurs des sorties à l'extérieur du système expert flou en fonction de sa politique. Il peut ainsi diffuser les valeurs des seules sorties ayant changées de valeurs et/ou d'y joindre les informations d'interprétation (tout ou partie des les valeurs permettant de retracer l'inférence par exemple) et/ou de communiquer les valeurs des sorties ayant connues un changement significatif (supérieur à un seuil) et/ou les valeurs des sorties qui n'ont pas changé pas de valeur mais dont les informations d'interprétation sont différentes. In other words, the broadcast step (respectively the broadcast component) includes a step of communicating the output values outside the fuzzy expert system according to its policy. It can thus diffuse the values of the only outputs having changed values and / or to join there the information of interpretation (all or part of the values making it possible to trace the inference for example) and / or to communicate the values of the outputs have experienced a significant change (greater than a threshold) and / or values of outputs that have not changed in value but whose interpretation information is different.
Le composant ou unité ou organe en charge de la "diffusion" ou "communication" ou "publication" proprement dite de cette valeur de sortie 102 peut être le composant 130 par exemple. Par "diffusion" ou "communication" ou "publication" il est signifié une diffusion ou communication extérieure ou externe (les autres échanges ou passages de message s'effectuent de manière interne au système 100. Le système 100 du point de vue de l'utilisateur ou d'un point de vue systémique apparaît comme une "boite noire", qui traite (selon une régulation ou des traitements internes propres) un certain nombre de données et publie certaines valeurs en sortie. Les modalités de communications sont nombreuses: affichage visuel (écran LCD, flash lumineux, etc), transmission de données ou passage de messages (e.g. email, canal données, flux RSS), signal ou émission audio, signal vibratile (ou selon une combinaison de ces modalités de communication). The component or unit or unit in charge of the "diffusion" or "communication" or "publication" itself of this output value 102 may be the component 130 for example. By "diffusion" or "communication" or "publication" is meant a diffusion or external or external communication (the other exchanges or passages message is made internally to the system 100. The system 100 from the point of view of the user or from a systemic point of view appears as a "black box", which processes (according to a regulation or internal clean processing ) a number of data and publishes some output values. The communication methods are numerous: visual display (LCD screen, flashing light, etc.), data transmission or message passing (eg email, data channel, RSS feed), audio signal or broadcast, vibratile signal (or a combination of these methods of communication).
Dans un développement, l'étape consistant à évaluer une valeur d'entrée en attente sélectionnée comprend une étape consistant à planifier dans le temps et/ou dans l'espace les évaluations des valeurs d'entrées en attente. In a development, the step of evaluating a selected pending entry value includes a step of scheduling in time and / or in space the evaluations of pending entry values.
Il est souligné qu'au moins une valeur d'entrée en attente sélectionnée en amont peut être évaluée. L'étape d'évaluation peut en effet comprendre des étapes consistant à allouer les tâches de calcul aux différents moyens de calcul (répartition physique et également temporelle). Le terme "planifier" veut dire "organiser" (i.e. ordonnancement dans le temps et dans l'espace). La planification dans le temps et/ou l'espace consiste notamment et par exemple à ordonner ou organiser ou orchestrer les calculs (par exemple les "threads" ou selon toute autre sous-tâche de calcul correspondant à des niveaux de granularité différents) ainsi qu'à les assigner à des unités de calculs, c'est-à-dire une allocation des tâches de calcul dans l'espace (de manière physique entre les différents processeurs ou cœurs de processeur, CPU multicore ou manycore). It is emphasized that at least one pending input value selected upstream can be evaluated. The evaluation step may in fact comprise steps consisting in allocating the calculation tasks to the different calculation means (physical and also temporal distribution). The term "planning" means "organizing" (i.e. scheduling in time and space). Planning in time and / or space includes, for example, ordering or organizing or orchestrating calculations (for example, "threads" or any other computing subtask corresponding to different levels of granularity) as well as 'to assign them to units of calculations, that is to say an allocation of computational tasks in space (physically between the different processors or processor cores, CPU multicore or manycore).
Dans un développement, une sélection de valeurs d'entrée (ayant été sélectionnées) est évaluée à son tour. L'évaluation ou exécution peut être sélective. In a development, a selection of input values (having been selected) is evaluated in turn. Evaluation or execution can be selective.
Parmi les valeurs d'entrée sélectionnées dans la file d'attente, par exemple par le composant de planification, seule une fraction peut être éventuellement évaluée in fine. En d'autres termes, une sélection de valeurs d'entrées préalablement sélectionnées peut être évaluée. Of the input values selected in the queue, for example by the scheduling component, only a fraction may ultimately be evaluated. In other words, a selection of input values previously selected can be evaluated.
Le procédé selon l'invention peut en effet ne pas calculer ou évaluer certaines valeurs d'entrée. De manière positive, seules certaines expressions ou valeurs d'entrées sont évaluées. The method according to the invention can indeed not calculate or evaluate certain input values. In a positive way, only certain expressions or input values are evaluated.
Cette sélection peut se faire en raison de différentes contraintes ou raisons (e.g. économie de calculs, vitesse, etc.). Selon un aspect de l'invention, le procédé est économe en calculs. This selection can be done because of different constraints or reasons (e.g. economy of calculations, speed, etc.). According to one aspect of the invention, the method is computationally efficient.
La manière de sélectionner les expressions ou valeurs qui seront seules évaluées peut se faire de différentes manières (e.g. critères de pertinence, seuils, etc.). Le procédé peut n'évaluer une ou plusieurs valeurs d'entrée que lorsque cela est nécessaire. How to select the expressions or values that will be evaluated alone can be done in different ways (eg relevance criteria, thresholds, etc.). The method may evaluate one or more input values only when necessary.
Dans un mode de réalisation, l'étape ou unité d'enfilage peut regrouper des entrées par exemple en fonction du contexte de modification (par exemple, l'heure à laquelle les entrées ont changé) et l'étape de planification ou le planificateur peut récupérer un groupe d'entrées associé à ce même contexte. Dans une variante, le contexte peut être le lieu où les entrées ont changé. D'autres variantes utilisent des combinaisons de date et de lieu etc. Dans un développement, le procédé comprend en outre une étape consistant à disjoindre le graphe correspondant à la base de règles 150 en plusieurs sous-graphes disjoints, une étape consistant à sélectionner au moins un sous-graphe comprenant un nœud correspondant à une valeur d'entrée en attente sélectionnée et une étape consistant à évaluer ledit sous-graphe sélectionné. In one embodiment, the threading step or unit can group entries for example according to the modification context (for example, the time at which the entries have changed) and the planning step or scheduler can retrieve a group of entries associated with this same context. In one variant, the context may be the place where the entries have changed. Other variants use combinations of date and place etc. In a development, the method further comprises a step of separating the graph corresponding to the rule base 150 into several disjoint sub-graphs, a step of selecting at least one sub-graph comprising a node corresponding to a value of selected waiting entry and a step of evaluating said selected sub-graph.
Afin de déterminer quelles sont les valeurs d'entrée dont l'évaluation est nécessaire, il est avantageux de représenter la dépendance entre tous les éléments qui composent la règle ou l'expression. De la sorte des optimisations peuvent être conduites (suppressions des redondances, calculs restreints aux seuls calculs nécessaires, etc.). In order to determine which input values are needed for evaluation, it is advantageous to represent the dependency between all the elements that make up the rule or expression. In this way, optimizations can be carried out (redundancy deletions, calculations restricted to the only necessary calculations, etc.).
Deux méthodes sont décrites ci-après. Two methods are described below.
Dans un mode de réalisation particulier, une représentation des règles sous forme de graphe permet d'isoler les nœuds (correspondant aux différentes règles ou expressions composant ces règles) dont il est avantageux de procéder à la réévaluation. In a particular embodiment, a representation of the rules in the form of a graph makes it possible to isolate the nodes (corresponding to the different rules or expressions making up these rules) from which it is advantageous to carry out the reevaluation.
La base de règles peut être représentée sous la forme d'un graphe plutôt que sous la forme d'une forêt (un ensemble d'arbres) car ce faisant il est possible de s'assurer de l'unicité des nœuds. Selon cet aspect, une partie d'une règle (une proposition, une expression, une conclusion, une entrée, une sortie...) ne peut être représentée que par un seul nœud. En d'autres termes, il existe une bijection des nœuds vers les parties de règles et les règles elles-mêmes. Ainsi, si une même partie de règle apparaît plusieurs fois dans différentes règles, elle peut n'être évaluée qu'une seule fois. Lorsqu'un certain sous-ensemble des entrées change à un temps t, seuls les nœuds qui sont affectés peuvent en effet être réévalués. Il est avantageux d'identifier différents sous-graphes disjoints du graphe (lequel représente toute la base de règles). Concrètement, le graphe G correspondant à la base de toutes les règles sera disjoint en plusieurs graphes Gi connexes pour lesquels il n'existe pas d'arête commune entre ces différents Gi. Les graphes disjoints n'ont ainsi aucun nœud en commun, donc aucune partie en commun donc aucune entrée ou sortie en commun. Ainsi, il devient possible d'évaluer parallèlement les différents sous graphes disjoints du graphe global. The rule base can be represented as a graph rather than as a forest (a set of trees) because in doing so it is possible to ensure the uniqueness of the nodes. According to this aspect, a part of a rule (a proposition, an expression, a conclusion, an entry, an exit ...) can only be represented by a single node. In other words, there is a bijection of the nodes to the parts of rules and the rules themselves. Thus, if the same rule part appears several times in different rules, it can only be evaluated once. When a certain subset of the inputs changes at a time t, only the nodes that are affected can indeed be reevaluated. It is advantageous to identify different disjoint subgraphs of the graph (which represents the entire rule base). Concretely, the graph G corresponding to the base of all the rules will be disjoint into several connected graphs Gi for which there is no common edge between these different Gi. The disjointed graphs do not have any nodes in common, so no common parts, so no input or output in common. Thus, it becomes possible to evaluate in parallel the different disjoint graphs of the global graph.
Le graphe est orienté (par exemple, le nœud A orienté vers le nœud B). L'évaluation d'un nœud donné peut avoir une conséquence sur l'évaluation d'un nœud qui en dépend. Pour procéder à l'évaluation des nœuds du graphe, ledit graphe peut être parcouru. Au chargement de la base de règles, lors de la construction du graphe, chaque nœud est associé à une certaine "priorité" d'évaluation relative à sa profondeur dans le graphe (dans un mode de réalisation, les valeurs d'entrée peuvent être associées avec une priorité égale à zéro ; d'autres nœuds peuvent avoir une même priorité mais généralement les différents nœuds sont associés à des priorités différentes). Une fois les différentes priorités (ou profondeurs) déterminées, certains nœuds - déterminés par les chemins les reliant aux nœuds représentant une entrée du système - sont recalculés. Les nœuds sont évalués tour à tour uniquement si au moins un de leurs prédécesseurs a changé de valeur. Si un nœud ne change pas de valeur, l'évaluation des chemins partant de lui-même ne s'effectue pas. The graph is oriented (for example, node A oriented towards node B). The evaluation of a given node can have a consequence on the evaluation of a node that depends on it. To proceed with the evaluation of the nodes of the graph, said graph can be traversed. When loading the rule base, during the construction of the graph, each node is associated with a certain evaluation "priority" relative to its depth in the graph (in one embodiment, the input values can be associated with with a priority equal to zero, other nodes may have the same priority but usually the different nodes are associated with different priorities). Once the various priorities (or depths) have been determined, certain nodes - determined by the paths connecting them to the nodes representing an input of the system - are recalculated. Nodes are evaluated in turn only if at least one of their predecessors has changed in value. If a node does not change value, evaluation of the paths starting from itself does not take place.
Le graphe global associé ou représentant la base de règles est d'abord disjoint en plusieurs sous-graphes disjoints, ce qui permet des traitements ou des analyses en parallèle (les sous-graphes sont "indépendants"). Le procédé sélectionne ensuite un ou plusieurs sous-graphes. Un critère de sélection comprend le fait de détecter un ou plusieurs nœuds représentant par exemple les seules valeurs d'entrée ayant changé suffisamment i.e. qui sont été sélectionnées par le planificateur parmi la file d'attente contenant les valeurs d'entrée. Enfin, le sous-graphe est évalué. The global graph associated or representing the rule base is first disjoint into several disjointed sub-graphs, which allows processing or analysis in parallel (the sub-graphs are "independent"). The method then selects one or more subgraphs. A criterion of selection includes detecting one or more nodes representing, for example, the only sufficiently modified input values that have been selected by the scheduler from the queue containing the input values. Finally, the subgraph is evaluated.
Disjoindre le graphe en plusieurs sous-graphes permet par suite de paralléliser les calculs et d'allouer ces calculs à des cœurs et/ou threads indépendants. Avantageusement, cette parallélisation amoindrit les possibilités d'erreurs dans les calculs, améliore la vitesse de traitement, optimise l'utilisation des ressources ou moyens de calcul, etc. Disjoining the graph into several subgraphs therefore makes it possible to parallelize the calculations and to allocate these calculations to independent cores and / or threads. Advantageously, this parallelization reduces the possibility of errors in the calculations, improves the processing speed, optimizes the use of resources or calculation means, etc.
Dans un développement, l'étape consistant à évaluer un sous-graphe comprend une étape consistant à parcourir ledit sous-graphe, une étape consistant à associer récursivement une priorité à chaque nœud du sous- graphe et une étape consistant à évaluer les nœuds par priorité croissante. In a development, the step of evaluating a subgraph comprises a step of traversing said subgraph, a step of recursively associating a priority with each node of the subgraph and a step of evaluating the nodes by priority growing.
La priorité est de manière plus générale un coefficient ou un paramètre ou une valeur. D'autres modes de réalisation de l'invention font intervenir non pas une valeur de priorité mais une "profondeur". Il existe diverses manières d'annoter le graphe. Il est possible dans un mode de réalisation d'associer les entrées à une valeur égale à zéro et de procéder par incrémentation à mesure que le graphe est parcouru (les nœuds associés aux valeurs de priorité les plus faibles étant alors traitées en premier lieu). D'autres modes de réalisation de l'invention peuvent utiliser d'autres techniques de pondération ou de scoring. The priority is more generally a coefficient or a parameter or a value. Other embodiments of the invention involve not a priority value but a "depth". There are various ways to annotate the graph. It is possible in one embodiment to associate the inputs with a value equal to zero and to proceed incrementally as the graph is traversed (the nodes associated with the lowest priority values being then processed first). Other embodiments of the invention may use other weighting or scoring techniques.
Dans un développement, le procédé comprend en outre une étape consistant à comparer les chaînes de caractères composant les expressions composant les règles de la base de règles, une étape consistant à supprimer les redondances entre lesdites expressions de manière à obtenir des expressions uniques et une étape consistant à évaluer lesdites expressions uniques. Alternativement à la représentation sous forme de graphe, i.e. sans recourir à un mode de représentation et/ou d'analyse des données sous forme de graphe (i.e. représentation seule, analyse seule, ou représentation et analyse sous forme de graphe), il est possible de procéder à des comparaisons de chaînes de caractères. In a development, the method further comprises a step of comparing the character strings composing the expressions making up the rules of the rule base, a step removing redundancies between said expressions to obtain unique expressions and a step of evaluating said unique expressions. Alternatively to the representation in the form of a graph, ie without resorting to a mode of representation and / or analysis of the data in the form of a graph (ie representation alone, analysis alone, or representation and analysis in the form of a graph), it is possible to make comparisons of strings.
Une expression peut être présente dans plusieurs règles. Par exemple l'expression "la température est haute" peut être présente dans une première règle "si la température est haute alors ouvrir la fenêtre" et une seconde règle "si la température est haute alors administrer de l'aspirine". II est possible de représenter de manière unique des expressions apparaissant plusieurs fois dans la base de règles. Une façon de faire comprend des opérations de comparaison de chaînes de caractères composant les expressions ou règles. Les redondances peuvent être partiellement ou totalement supprimées. An expression can be present in several rules. For example the expression "the temperature is high" can be present in a first rule "if the temperature is high then open the window" and a second rule "if the temperature is high then administer aspirin". It is possible to uniquely represent expressions that appear multiple times in the rule base. One way of doing things includes string comparison operations that make up expressions or rules. Redundancies can be partially or completely removed.
Dans un développement, une partie d'une règle de la base de règles 150 est associée à une paramètre/valeur d'expiration dans le temps. In a development, a portion of a policy rule 150 is associated with a timeout parameter / value.
Dans certains modes de réalisation, aucune règle (ou a fortiori partie de règle) n'expire, i.e. la validité de la règle est persistante dans le temps. Dans d'autres modes de réalisation, une ou plusieurs règles (ou parties de règles) peuvent expirer dans le temps (selon divers paramétrages) In some embodiments, no rule (or even rule rule) expires, i.e. the validity of the rule is persistent over time. In other embodiments, one or more rules (or parts of rules) may expire in time (according to various settings)
Selon un aspect de l'invention, une partie ou portion de règle peut expirer dans le temps ("se périmer", devenir "obsolète" ou "caduque" ou "non actionnable" ou "sans effet"). Une partie de règle peut être une proposition ou une expression par exemple. Les parties de règles expirables sont donc des objets qui ont une durée de vie limitée dans le temps (ou dont la valeur calculée a une durée limitée dans le temps). Lorsque cette durée est dépassée, i.e. expirée ou périmée, le planificateur (entre autres unités du système) peut prendre la décision de ne pas évaluer la partie de règle en question. En pratique, le planificateur peut vérifier si l'expression expirée est utilisée dans un des calculs tels que planifiés dans le temps et/ou l'espace. Le cas échéant, l'expression est évaluée; à défaut, l'expression est laissée inchangée avec sa valeur expirée. Dans certains cas, l'expression expirée est supprimée. According to one aspect of the invention, a portion or portion of a rule may expire in time ("expire", become "obsolete" or "deciduous" or "non-operable" or "no effect"). A rule party can be a proposition or an expression for example. Expirable rule parts are therefore objects that have a limited lifetime (or whose calculated value has a limited duration in time). When this time is exceeded, ie expired or expired, the planner (among other units in the system) may decide not to evaluate the rule portion in question. In practice, the planner can check whether the expired expression is used in one of the calculations as planned in time and / or space. Where appropriate, the expression is evaluated; otherwise, the expression is left unchanged with its expired value. In some cases, the expired expression is deleted.
Par exemple si une règle est de la forme « si demain H fera beau et qu'aujourd'hui H pleut alors retarder la lessive », l'expression « demain H fera beau » peut changer de valeur pour deux raisons: soit les prévisions météorologiques ont changé (dans ce cas il ne s'agit pas véritablement d'une expiration mais d'un simple changement de valeur en fonction des entrées du système) soit la valeur change (par exemple du fait du passage de la journée de mercredi minuit à jeudi). Même si la valeur de la prévision météorologique pour mercredi demeure inchangée, l'expression va expirer (en l'espèce, elle expire toutes les 24h). For example if a rule is of the form "if tomorrow H will be nice and today H then rain delay laundry", the expression "tomorrow H will be fine" can change value for two reasons: either the weather forecast have changed (in this case it is not really an expiration but a simple change in value depending on the entries of the system) or the value changes (for example due to the passage of the day from Wednesday midnight to Thursday). Even if the value of the weather forecast for Wednesday remains unchanged, the expression will expire (in this case, it expires every 24 hours).
De manière générale chaque expression peut expirer selon des paramètres temporels différents. Dans certains modes de réalisation, des paramètres temporels avancés sont utilisés (intervalles de temps mais également et par exemple selon les dérivées de temps, i.e. accélération de tendances etc). Des expressions ou parties de règles peuvent expirer selon des échelles de temps très diverses (e.g. toutes les secondes ou toutes les millisecondes pour des systèmes réactifs). L'expiration de la validité des parties de règles peut être modulée de manière plus sophistiquée, par exemple en fonction de paramètres, de tests, de circonstances ou de conditions diverses. Par exemple, des paramètres d'espace peuvent être pris en compte pour déterminer l'expiration ou la non-expiration d'une règle (e.g. conditions de géo localisation ou de " geofencing" , etc). In general, each expression may expire according to different temporal parameters. In some embodiments, advanced time parameters are used (time slots but also and for example according to time derivatives, ie trend acceleration etc.). Expressions or parts of rules can expire in very different time scales (eg every second or millisecond for reactive systems). The expiry of the validity of the rule parts can be modulated in a more sophisticated manner, for example according to parameters, tests, circumstances or various conditions. For example, space parameters can be taken into account to determine the expiration or the non-expiration of a rule (eg geo location or "geofencing" conditions, etc.).
Dans un développement, deux valeurs d'entrées sensiblement concomitantes sont assimilées à une seule et même entrée. In a development, two substantially concomitant input values are assimilated to one and the same input.
Dans modes de réalisation, il est possible de considérer que les modifications de deux entrées différentes intervenant à quelques millisecondes d'intervalles sont en fait concomitantes ("sensiblement" concomitantes) et par suite les fusionner ou les assimiler. L'emploi optionnel de seuils prédéfinis permet ladite assimilation. Dans un développement, au moins une règle est exprimée en langage naturel. In embodiments, it is possible to consider that the modifications of two different inputs occurring within a few milliseconds of intervals are actually concomitant ("substantially" concomitant) and consequently merge or assimilate them. The optional use of predefined thresholds allows said assimilation. In a development, at least one rule is expressed in natural language.
L'avantage associé au fait qu'une règle s'exprime en langage naturel, par opposition à un langage formel, réside dans l'expressivité de la base de règles ainsi constituée. En outre, dans un contexte d'édition de ces règles, cette forme est avantageuse car compréhensible pour l'utilisateur. The advantage associated with the fact that a rule is expressed in natural language, as opposed to a formal language, lies in the expressiveness of the rule base thus constituted. In addition, in a context of editing these rules, this form is advantageous because understandable for the user.
Dans un développement, l'évaluation par inférence s'effectue selon la logique d'ordre 0 ou la logique d'ordre 1 ou selon la logique floue. In a development, the evaluation by inference is done according to the logic of order 0 or the logic of order 1 or according to the fuzzy logic.
Différentes familles d'algorithmes existent pour la mise en œuvre de l'évaluation par inférence dans le procédé selon l'invention. L'une ou l'autre des logiques citées peut être utilisée selon les avantages associés à ces différentes logiques et aux contextes d'utilisation. Il est divulgué un produit programme d'ordinateur, ledit programme d'ordinateur comprenant des instructions de code permettant d'effectuer une ou plusieurs des étapes du procédé, lorsque ledit programme est exécuté sur un ordinateur. Different families of algorithms exist for the implementation of the evaluation by inference in the method according to the invention. One or the other logic mentioned can be used according to the advantages associated with these different logics and contexts of use. A computer program product is disclosed, said computer program comprising code instructions for performing one or more of the method steps, when said program is run on a computer.
Il est divulgué un système comprenant des moyens pour la mise en œuvre d'une ou plusieurs des étapes du procédé. There is disclosed a system comprising means for carrying out one or more of the steps of the method.
Dans un développement, le système comprend des moyens de réception d'une valeur d'entrée 101 à évaluer; des moyens d'évaluation par inférence au moyen de la base de règles 150 d'une valeur de sortie 102 correspondant à la valeur d'entrée 101 ; et est caractérisé en ce que le système comprend des moyens de stockage pour enfiler la valeur d'entrée 101 ; des moyens de calcul pour sélectionner une valeur d'entrée enfilée et pour planifier dans le temps et/ou dans l'espace les évaluations d'une ou de plusieurs valeurs d'entrées en attente; des moyens de calcul pour évaluer la valeur d'entrée en attente sélectionnée enfilée en une valeur de sortie 102; des moyens d'entrée/sortie pour diffuser une ou de plusieurs valeurs de sortie 102; In a development, the system comprises means for receiving an input value 101 to be evaluated; inference evaluation means by means of the rule base 150 of an output value 102 corresponding to the input value 101; and is characterized in that the system comprises storage means for threading the input value 101; calculation means for selecting an input value threaded and for scheduling in time and / or in space the evaluations of one or more pending input values; calculating means for evaluating the selected waiting input value threaded into an output value 102; input / output means for broadcasting one or more output values 102;
Les moyens de stockage désignent par exemple des mémoires volatiles ou persistantes (e.g. mémoire flash, disque dur, DDRAM, SRAM, etc). Les moyens de calcul sont des processeurs ou des cœurs de processeurs. Les moyens d'entrée/sortie (ou "E/S" ou "I/O" pour "Input/output" en anglais) sont des moyens de communication de différents types (radio, sans-fil, câblé e.g. Ethernet; utilisant une variété de protocoles TCP/IP ou autres). Storage means, for example, volatile or persistent memories (e.g. flash memory, hard disk, DDRAM, SRAM, etc.). The computing means are processors or cores of processors. The input / output means (or "I / O" or "I / O" for "Input / output" in English) are means of communication of different types (radio, wireless, wired eg Ethernet) using a variety of TCP / IP protocols or others).
Dans un développement, le système comprend un composant d'entrée/sortie pour recevoir une ou plusieurs valeurs d'entrée; un composant d'enfilage adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à stocker, regrouper, fusionner et supprimer des valeurs d'entrées; un composant de planification adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à sélectionner, supprime^ regrouper, fusionner, allouer des valeurs d'entrées enfilées; un composant d'évaluation adapté pour évaluer une ou plusieurs valeurs d'entrée enfilées et manipulées par le composant de planification par inférence au moyen de la base de règles; un composant de diffusion adapté pour sélectionner et communiquer une ou plusieurs valeurs d'entrées. In a development, the system includes an input / output component for receiving one or more input values; a donning component adapted to perform one or more of the steps among those consisting of storing, grouping, merging and deleting input values; a scheduling component adapted to perform one or more of the steps of selecting, deleting, grouping, merging, allocating input values threaded; an evaluation component adapted to evaluate one or more input values threaded and manipulated by the inference planning component using the rule base; a broadcast component adapted to select and communicate one or more input values.
Une politique {"policy" en anglais) associée à un composant ou à une unité correspond à un ensemble de règles "internes" au composant ou à l'unité. Une politique peut être statique, i.e. prédéfinie et constante au cours du temps. Une politique peut aussi être dynamique, i.e. variable au cours du temps. Parlant d'un système composé d'un ensemble de composants associé chacun avec de telles "politiques", une politique « générale » peut se dégager, au sens d'une émergence ou d'une constatation, résultant de la combinaison des différentes politiques mis en œuvre de manière effective localement pour chaque composant. En d'autres termes, l'ensemble des politiques des différents composants peuvent paramétrer le comportement global du système global. En particulier, différents fichiers de configuration des politiques mises en œuvre dans les différents composants peuvent être mis à disposition (e.g. définis par l'utilisateur, l'opérateur du service de surveillance, via le réseau etc). A policy ("policy") associated with a component or unit corresponds to a set of rules "internal" to the component or unit. A policy can be static, i.e. predefined and constant over time. A policy can also be dynamic, i.e. variable over time. Speaking of a system composed of a set of components each associated with such "policies", a "general" policy can emerge, in the sense of an emergence or an observation, resulting from the combination of the different policies set implemented effectively locally for each component. In other words, the set of policies of the different components can set the overall behavior of the overall system. In particular, different policy configuration files implemented in the different components can be made available (e.g., defined by the user, the operator of the monitoring service, via the network etc.).
Les différentes politiques sont généralement exprimées par des règles liant des attributs descriptifs du problème ou de l'aspect du système à surveiller (e.g. en matière de temps de rafraîchissement des entrées, fréquence de rafraîchissement des sorties...) ou des attributs descriptifs de la plateforme sur laquelle le système s'exécute (e.g. nombre et occupation des processeurs, quantité de mémoire disponible et utilisée...) et des seuils. Par exemple pour le composant de mise en file, une règle peut-être que si une entrée change de valeur plusieurs fois en moins d'une seconde, seule la dernière valeur sera sélectionnée. Pour le composant de planification, si la plateforme dispose de plusieurs cœurs disponibles, l'exécution pourra être parallélisée. Pour le composant d'évaluation, si un opérateur « AVANT » est utilisé par exemple, une « version » de l'opérateur - spécifique au problème ou à l'aspect du système surveillé -, par exemple une variante de l'implémentation de l'opérateur pourra être mise en œuvre. Pour le composant de diffusion, une politique pourra consister à diffuser les modifications toutes les secondes par exemple. The various policies are generally expressed by rules linking descriptive attributes of the problem or the aspect of the system to be monitored (eg as regards the time of refreshing the inputs, frequency of refreshing the outputs, etc.) or the descriptive attributes of the platform on which the system runs (eg number and processor occupation, amount of available and used memory ...) and thresholds. For example, for the queuing component, a rule may be that if an entry changes value more than once in less than one second, only the last value will be selected. For the planning component, if the platform has several available cores, the execution can be parallelized. For the evaluation component, if a "FORWARD" operator is used for example, a "version" of the operator - specific to the problem or aspect of the monitored system - for example a variant of the implementation of the operator can be implemented. For the broadcast component, a policy may be to broadcast the changes every second, for example.
En particulier, concernant l'aspect temporel, une politique de composant peut considérer que des modifications relatives à deux entrées différentes intervenant à quelques millisecondes d'intervalles sont en fait concomitantes ("sensiblement" concomitantes) et seront donc assimilées à une seule et même entrée. Une politique peut configurer ou prédéfinir des assimilations ou fusions ou agrégations de données. Une politique de fusion ou agrégation ou assimilation de données peut avantageusement être utilisée lorsqu'on sait que les valeurs des entrées sont apportées par un moyen de communication avec une certaine latence (réseau...). In particular, regarding the temporal aspect, a component policy may consider that modifications relating to two different inputs occurring within a few milliseconds of intervals are actually concomitant ("substantially" concomitant) and will therefore be treated as one and the same input . A policy can configure or predefine data assimilations or mergers or aggregations. A data merge or aggregation or data assimilation policy can advantageously be used when it is known that the values of the inputs are provided by a means of communication with a certain latency (network ...).
Une politique est donc un moyen de configurer ou de paramétrer un composant par rapport à une application donnée. A policy is therefore a way to configure or parameterize a component with respect to a given application.
Le composant de planification peut « sélectionner » et « allouer » des valeurs d'entrées préalablement enfilées : en d'autres termes il peut « propager » des valeurs d'entrée particulières (il peut notamment sélectionner ces valeurs de par la connaissance du graphe de dépendance). Le composant de diffusion peut effectuer la communication à un temps ultérieur et donc « différer » la communication ou la diffusion. The scheduling component can "select" and "allocate" previously entered input values: in other words, it can "propagate" particular input values (it can in particular select these values from the knowledge of the graph of addiction). The broadcast component may perform the communication at a later time and thus "defer" the communication or broadcast.
Une politique de composant comprend un ensemble de règles en relation avec des moyens d'exécution tangibles pour exécuter ces règles. La politique associée à un composant permet de paramétrer et de modifier le comportement ("émergent") du composant auquel il s'applique. A component policy includes a set of rules in relation to tangible ways of executing those rules. The policy associated with a component makes it possible to parameterize and modify the behavior ("emergent") of the component to which it applies.
Une politique comprend généralement un ensemble d'opérations choisies parmi les opérations consistant à filtrer, ordonner, trier, segmenter, diviser, fusionner, supprimer, ignorer, ajouter, substituer, concaténer, compresser, stocker une ou plusieurs valeurs d'entrée. A policy typically includes a set of operations selected from the operations of filtering, ordering, sorting, segmenting, splitting, merging, deleting, skipping, adding, substituting, concatenating, compressing, storing one or more input values.
Une politique peut être paramétrée (e.g. préalablement) ou paramétrable (e.g. en fonction de variables par exemple...). En d'autres termes, une politique peut être configurée ou configurable. A policy can be parameterized (e.g. previously) or configurable (e.g. according to variables for example ...). In other words, a policy can be configured or configurable.
Dans un mode de réalisation, une politique peut être "universelle", au sens où les différentes politiques associées aux différents composants peuvent être interchangeables. Dans un autre mode de réalisation, les politiques peuvent précisément ne pas être interchangeables entre les différents composants. Par exemple, concernant l'opération consistant à filtrer, l'unité d'enfilage n'appliquera pas le même type de filtrage que l'unité de diffusion ou bien encore que le planificateur. In one embodiment, a policy may be "universal" in the sense that the different policies associated with the different components may be interchangeable. In another embodiment, the policies may not precisely be interchangeable between the different components. For example, regarding the operation of filtering, the threading unit will not apply the same type of filtering as the broadcast unit or even the planner.
Certains modes de réalisation particuliers associent préférentiellement certains types opérations à certains composants. Dans ces modes de réalisation particuliers, le composant d'enfilage est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à stocker, regrouper, fusionner et supprimer des valeurs d'entrées ou des données; le composant de planification est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à supprimer, annuler, sauter, fusionner, allouer (vers des ressources de calcul par exemple), associer ou annoter (e.g. par des valeurs d'état) des valeurs d'entrées; le composant de diffusion est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à sélectionner (e.g. selon des critères ou des seuils prédéfinis), regrouper, différer, choisir des instants dans le temps, annuler des valeurs d'entrées ou des données; le composant d'évaluation est adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à restreindre ou étendre les opérateurs évaluables (en choisissant des variantes d'implémentation prédéfinies par exemple, i.e. changer la sémantique des operateurs) Certain particular embodiments preferentially associate certain types of operations with certain components. In these particular embodiments, the threading component is adapted to perform one or more of the steps of storing, grouping, merging, and deleting input values or data; the planning component is adapted to perform one or more of the steps among those consisting of deleting, canceling, skipping, merging, allocating (to computing resources for example), associating or annotating (eg by state values) input values; the broadcast component is adapted to perform one or more of the steps of selecting (eg according to predefined criteria or thresholds), grouping, differing, choosing times in time, canceling input values or data; the evaluation component is adapted to perform one or more of the steps of restricting or extending the evaluable operators (by choosing predefined implementation variants for example, ie changing the semantics of the operators)
La figure 1 schématise l'architecture générale d'un exemple de procédé selon l'invention. FIG. 1 schematizes the general architecture of an exemplary method according to the invention.
L'architecture d'un système expert flou 100 est composée d'une base de règles 150, d'un ensemble d'entrées 101 (ou "I" pour "input") et d'un ensemble de sorties 102 (ou "O" pour "Output"). Lorsque les entrées 101 changent, les sorties 102 sont calculées en fonction de la base de règles 150. Cette architecture est celle d'un système expert flou "classique". The architecture of a fuzzy expert system 100 is composed of a rule base 150, a set of inputs 101 (or "I" for "input") and a set of outputs 102 (or "O" "for" Output "). When the inputs 101 change, the outputs 102 are calculated according to the rule base 150. This architecture is that of a "classic" fuzzy expert system.
Selon l'invention, il est ajouté trois composants spécifiques à cette architecture. Le composant 1 10 est un composant de mise en file ("enfilage" ou "Q" pour "queueing") des entrées 101 . Dans le cadre d'un système dont les entrées changent de valeur au cours du temps, e.g. progressivement ou "au fil de l'eau", ce composant permet de capturer ces changements. Dans certains modes de réalisation, ce composant peut appliquer différentes politiques de mise en file. Par exemple, certaines règles - ou politiques {"policy" en anglais) - de filtrage peuvent tenir compte des capacités de la machine (e.g. de la machine-hôte ou de la machine monitoréë) et/ou de la nature même des changements (par exemple si la valeur d'une sortie n'a changé de moins de 1 %, il n'est pas utile de considérer sa nouvelle valeur), ou bien encore grouper les modifications (non exhaustif). According to the invention, three components specific to this architecture are added. The component 1 10 is a queuing component ("threading" or "Q" for "queuing") of the inputs 101. In a system whose inputs change in value over time, eg progressively or "run-of-the-river", this component captures these changes. In some embodiments, this component may apply different queuing policies. For example, certain rules - or policies - for filtering may take into account the capacity of the machine (eg the host machine or the machine being monitored) and / or the nature of the changes themselves (for example, if the value of an output has not changed by less than 1%, no need to consider its new value), or else group the changes (not exhaustive).
Le composant 130 est un composant de diffusion des sorties. Les sorties 102 changent au cours du temps. Ce composant selon l'invention permet avantageusement de "diffuser" (ou "notifier" ou "communiquer" ou "transmettre") les nouvelles valeurs en sortie 102. Dans certains modes de réalisation, des explications sur le changement des valeurs des sorties peuvent être également communiquées. Le composant 130 à l'instar du composant 1 10 peut appliquer différentes politiques prédéfinies. Par exemple, le composant 1 10 peut informer des changements de valeur des sorties 102 à un intervalle temporel prédéfini (par exemple toutes les N secondes) et/ou informer dès qu'une valeur d'activation a changé, selon des seuils ou des plages de seuils (non exhaustif). The component 130 is a diffusion component of the outputs. Outputs 102 change over time. This component according to the invention advantageously makes it possible to "broadcast" (or "notify" or "communicate" or "transmit") the new output values 102. In some embodiments, explanations on the change of the output values may be also communicated. The component 130 like the component 1 10 can apply different predefined policies. For example, the component 1 10 can inform value changes of the outputs 102 at a predefined time interval (for example every N seconds) and / or inform as soon as an activation value has changed, according to thresholds or ranges. thresholds (non-exhaustive).
Le composant 120 est un composant de planification des calculs. Ce composant 120 est informé ou notifier à l'étape 1 12 de l'arrivée d'un ou de plusieurs changements par le composant unité d'enfilage 1 10. Le composant 120 peut alors déclencher ou actionner ou solliciter ou commander le composant le composant 130 de diffusion des sorties. En fonction de l'état courant de la machine ou de l'ensemble des machines, le composant 120 est capable d'affecter les calculs à un processeur ou à un cœur sur une machine en particulier, de prioriser un calcul ou une sous-tâche de calcul (e.g. thread), etc .. The component 120 is a planning component of the calculations. This component 120 is informed or notified in step 1 12 of the arrival of one or more changes by the threading unit component 1 10. The component 120 can then trigger or actuate or solicit or control the component component 130 of broadcast outputs. Depending on the current state of the machine or all the machines, the component 120 is able to affect the calculations to a processor or a heart on a particular machine, to prioritize a calculation or a sub-task calculation (eg thread), etc.
Comme le montre la figure 1 , à chaque instant t, l'ensemble des entrées 101 ayant changées sont mises en file par l'unité d'enfilage 1 10 (éventuellement traitée selon sa politique). Pendant l'évaluation 140, si de nouvelles modifications des valeurs d'entrée 1 01 arrivent, ces dernières ne seront pas perdues mais mise à la suite de la file au sein du composant 1 1 0. L'unité d'enfilage notifie ensuite à l'étape 1 1 2 l'unité de planification 120 que de nouvelles entrées sont disponibles. Cette unité de planification 1 20 applique alors sa politique et fait appel à l'unité d'évaluation 140 a l'étape 1 22. L'unité d'évaluation 140, à la fin du calcul, informe ou notifie en retour (étape 1 23) l'unité de planification 120 que l'évaluation est terminée. Le composant 1 20 informe a l'étape 1 21 l'unité de diffusion 130 qu'elle peut diffuser les modifications des sorties (s'il y a lieu). Le composant 120 exécute également sa propre politique, le cas échéant. As shown in Figure 1, at each moment t, the set of entries 101 having changed are queued by the threading unit 1 10 (possibly treated according to its policy). During evaluation 140, if new modifications of the input values 1 01 arrive, the latter will not be lost but put following the queue within the component 1 1 0. The threading unit then notifies in step 1 1 2 the planning unit 120 that new entries are available. This planning unit 1 then applies its policy and uses the evaluation unit 140 in step 1 22. The evaluation unit 140, at the end of the calculation, informs or notifies back (step 1 23) the planning unit 120 that the evaluation is completed. The component 1 20 informs in step 1 21 the broadcast unit 130 that it can broadcast the changes of the outputs (if any). The component 120 also executes its own policy, if any.
La figure 2 représente un exemple de règle sous forme de graphe. Selon un aspect de l'invention, la base de règles du système expert peut être optimisée, en particulier la représentation de cette base de règles. Figure 2 shows an example of a rule in the form of a graph. According to one aspect of the invention, the rule base of the expert system can be optimized, in particular the representation of this rule base.
En outre, selon un autre aspect de l'invention, l'unité d'évaluation peut également être optimisée. En particulier, l'évaluation 140 peut être sélective, c'est-à-dire procéder à l'évaluation des seules expressions impactées par le changement constaté quant à certaines entrées 1 01 . In addition, according to another aspect of the invention, the evaluation unit can also be optimized. In particular, the evaluation 140 may be selective, that is to say, evaluate the only expressions impacted by the change found for certain inputs 1 01.
Avantageusement, le procédé selon l'invention vise à optimiser les calculs ou opérations arithmétiques aux seules opérations ou calculs nécessaires. En particulier, le procédé évite l'exécution d'une portion de code dont les résultats ne sont pas (réellement ou strictement) nécessaires, (e.g. il est inutile de calculer un résultat qui n'est pas utilisé). Le procédé selon l'invention est avantageusement économe en calcul, améliorant les temps de réponse associés. Concrètement, le procédé selon l'invention pour calculer une expression ou règle du système expert uniquement lorsque cela est nécessaire, il est avantageux de représenter la dépendance entre tous les éléments qui composent la règle ou l'expression. De la sorte des optimisations peuvent être conduites (suppressions des redondances, calculs restreints aux seuls calculs nécessaires, etc). Advantageously, the method according to the invention aims at optimizing the calculations or arithmetic operations to the only necessary operations or calculations. In particular, the method avoids the execution of a portion of code whose results are not (really or strictly) necessary, (eg it is useless to calculate a result that is not used). The method according to the invention is advantageously economical in calculation, improving the associated response times. Concretely, the method according to the invention for calculating an expression or rule of the expert system only when necessary, it is advantageous to represent the dependence between all the elements that make up the rule or the expression. In this way, optimizations can be conducted (redundancy deletions, calculations restricted to the only necessary calculations, etc.).
Une règle - au sens de l'invention - est constituée de plusieurs éléments: des propositions, des expressions (unaires, binaires, ...) et des conclusions. Les propositions peuvent comprendre des entrées (par exemple des variables linguistiques dans le cadre de la logique floue). A rule - within the meaning of the invention - consists of several elements: propositions, expressions (unary, binary, ...) and conclusions. Proposals can include inputs (eg linguistic variables in the context of fuzzy logic).
Par exemple, sur la figure 2, dans la règle ou expression 230 «si la température est chaude et que l'air n'est pas humide alors le risque est nul», l'expression 215 «la température est chaude» est une première proposition, l'expression 213 «l'air est humide» est une seconde proposition. L'expression 214 «l'air n'est pas humide» est une expression unaire, l'expression 220 «la température est chaude et l'air n'est pas humide» est une expression binaire et l'expression «te risque est nul» est une conclusion. Pour pouvoir évaluer la conclusion, il faut évaluer l'expression «la température est chaude et que l'air n'est pas humide», qui dépend de l'expression 215 «la température est chaude» et de l'expression 214 «l'air n'est pas humide», qui dépend de l'expression 213 «l'air est humide», qui dépendent de la température et de la mesure de l'humidité de l'air. Afin de représenter ces dépendances efficacement, il est avantageux de vérifier que chaque expression n'existe qu'une seule fois dans la représentation choisie. For example, in Figure 2, in the rule or expression 230 "if the temperature is hot and the air is not wet then the risk is zero", the expression 215 "the temperature is hot" is a first proposition, the phrase "the air is wet" is a second proposition. Expression 214 "the air is not wet" is a unary expression, the expression 220 "the temperature is hot and the air is not humid" is a binary expression and the expression "the risk is null "is a conclusion. In order to be able to evaluate the conclusion, it is necessary to evaluate the expression "the temperature is hot and the air is not humid", which depends on the expression 215 "the temperature is hot" and the expression 214 "l 'air is not humid', which depends on the expression 'air is wet', which depends on the temperature and the measurement of the humidity of the air. In order to represent these dependencies effectively, it is advantageous to check that each expression exists only once in the chosen representation.
Selon un mode de réalisation avantageux, la base de règle peut être représentée à l'aide d'un graphe dans lequel chaque nœud représente une entité (e.g. variable, expression, conclusion, règle, etc.). Un arc entre deux nœuds A et B, noté A→ B, indique que l'évaluation de B dépend de l'évaluation de A. Autrement dit, lorsque A change de valeur, la valeur de B doit être recalculée. Ainsi, lorsqu'un certain sous-ensemble des entrées change à un temps t, seuls les nœuds affectés sont réévalués. According to an advantageous embodiment, the rule base can be represented using a graph in which each node represents an entity (eg variable, expression, conclusion, rule, etc.). An arc between two nodes A and B, denoted by A → B, indicate that the evaluation of B depends on the evaluation of A. In other words, when A changes value, the value of B must be recalculated. Thus, when a certain subset of the inputs changes at a time t, only the affected nodes are reevaluated.
Dans la plupart des systèmes existants, une règle est représentée par un arbre et donc une base de règles correspond à une forêt d'arbres. Dans le cadre de l'invention, une arborescence ne suffit pas car il est possible que des règles partagent des entités (par exemple une même proposition). La représentation en graphe permet avantageusement d'obtenir l'unicité de la représentation de chaque expression ou entité. Cette unicité évite la redondance des calculs. Au moyen d'une représentation par graphe, il suffit de vérifier dans l'ensemble des nœuds du graphe si aucun d'eux n'est porteur de la même information. In most existing systems, a rule is represented by a tree and thus a rule base corresponds to a tree forest. In the context of the invention, a tree is not sufficient because it is possible that rules share entities (for example the same proposal). The graph representation advantageously makes it possible to obtain the uniqueness of the representation of each expression or entity. This uniqueness avoids the redundancy of calculations. By means of a graphical representation, it is sufficient to check in all the nodes of the graph if none of them carries the same information.
Cette représentation de la base de règles sous forme de graphe combinée avec des règles exprimées en langage naturel est particulièrement avantageuse pour la manipulation d'un système expert flou. En effet, pour une même variable physique, en fonction de la fonction d'appartenance, la même valeur floue peut être associée à différentes valeurs après "fuzzyfication", i.e. application des techniques de logique floue. Par exemple, pour si la variable considérée est la température, si la fonction d'appartenance est un trapèze dont la petite base se trouve entre les valeurs 15° et 25° et à 1 sur les ordonnées, alors toutes les valeurs de température entre 15° et 25° ont pour valeur 1 après fuzzyfication. Dans ce cas-là, il n'y aura aucun calcul au-delà de la fuzzyfication de la température. Cet aspect rend la mise en œuvre du procédé pratique les capteurs fournissent des valeurs qui oscillent légèrement ou de manière limitée. Selon cette implémentation, si la valeur d'un nœud ne change pas, ses nœuds voisins ne sont pas réévalués, économisant des calculs. La figure 3 illustre un exemple de graphe avec des nœuds présentant des priorités. Dans certains modes de réalisation, la représentation de la base de règles par un graphe peut ne pas suffire. Comme le montre la figure 2, si la température et l'humidité changent au même temps t, les nœuds parents vont être évalués jusqu'à arriver à l'évaluation de l'expression 220 «la température est chaude et l'air n'est pas humide». Cependant, le chemin entre l'entrée 202 "humidité" et cette expression 220 est plus long que celui partant de l'entrée 201 "température". L'expression 220 «la température est chaude et l'air n'est pas humide» va être évaluée deux fois: une première fois comme dépendante de l'expression 215 «la température est chaude» et une seconde fois comme dépendante de l'expression 213 «l'air n'est pas humide». This representation of the rule base as a graph combined with rules expressed in natural language is particularly advantageous for the manipulation of a fuzzy expert system. Indeed, for the same physical variable, depending on the membership function, the same fuzzy value can be associated with different values after "fuzzyfication", ie application of fuzzy logic techniques. For example, if the variable under consideration is the temperature, if the membership function is a trapezium whose small base is between the values 15 ° and 25 ° and at 1 on the ordinates, then all the values of temperature between 15 ° and 25 °. ° and 25 ° are worth 1 after fuzzyfication. In this case, there will be no calculation beyond the fuzzyfication of the temperature. This aspect makes the implementation of the method practical the sensors provide values that oscillate slightly or in a limited way. According to this implementation, if the value of a node does not change, its neighboring nodes are not reevaluated, saving calculations. Figure 3 illustrates an example of a graph with nodes having priorities. In some embodiments, the representation of the rule base by a graph may not be sufficient. As shown in Figure 2, if the temperature and the humidity change at the same time t, the parent nodes will be evaluated until the evaluation of the expression 220 "the temperature is warm and the air n" is evaluated. is not wet. However, the path between the "humidity" input 202 and this expression 220 is longer than that from the "temperature" input 201. The expression 220 "the temperature is hot and the air is not humid" will be evaluated twice: first time as dependent on the expression 215 "the temperature is hot" and a second time as dependent on the expression expression 213 "the air is not wet".
Pour éviter ce type d'inconvénients, il est avantageux d'utiliser un graphe orienté, i.e. de donner un ordre aux nœuds. Différents modes de réalisation sont possibles. Selon un premier mode de réalisation, une file à priorité est créée qui traite en premier les nœuds dont la priorité est la plus faible et qui n'accepte pas qu'un même objet soit présent deux fois dans la file. Pour donner une priorité aux nœuds, il est possible de donner aux entrées une priorité nulle i.e. égale à 0 (ces entrées doivent être évaluées en premier dans tous les cas), puis donner à un nœud d'un autre type le maximum des priorités de ses antécédents incrémenté de un. To avoid this type of disadvantage, it is advantageous to use an oriented graph, i.e. to give an order to the nodes. Different embodiments are possible. According to a first embodiment, a priority queue is created which first processes the nodes whose priority is the lowest and which does not accept that the same object is present twice in the queue. To give priority to the nodes, it is possible to give the inputs a zero priority ie equal to 0 (these entries must be evaluated first in all cases), then give to a node of another type the maximum of the priorities of the nodes. his antecedents incremented by one.
Avec une file à priorité selon un développement de l'invention, l'expression 201 «capteur de température» et l'expression 202 «capteur d'humidité» sont placées dans la file. Dans l'exemple fourni, les deux expressions étant à égalité de priorité, l'expression 201 «capteur de température» sera par exemple évaluée et l'expression 215 «la température est chaude» sera ajoutée à la file. Ensuite, l'expression 202 «capteur d'humidité» sera évaluée et l'expression 213 «l'air est humide» sera rajoutée à la file. L'expression 215 «la température est chaude» est ensuite évaluée et l'expression «la température est chaude et l'air n'est pas humide» est mise dans la file à priorité. Cependant, comme l'expression 213 «l'air est humide» est prioritaire (son poids ou coefficient de priorité 2131 est égal à 1 alors que l'autre expression 220 est associée à une priorité 2201 égale à 3), elle est évaluée et l'expression 214 «l'air n'est pas humide» est ajoutée à la file. Comme la priorité 2141 de l'expression 214 est égale à 2, cette expression 214 sera évaluée en premier et l'expression 220 «la température est chaude et l'air n'est pas humide» devrait être rajoutée. Cependant, cette expression 220 «la température est chaude et l'air n'est pas humide» est déjà présente dans la file à priorité donc elle n'est pas ajoutée. Ensuite, l'expression 220 est à son tour évaluée. De la sorte, il est évité de procéder à une double évaluation de l'expression 220 «la température est chaude et l'air n'est pas humide». With a priority queue according to a development of the invention, the expression 201 "temperature sensor" and the expression 202 "humidity sensor" are placed in the queue. In the example provided, both expressions being equal priority, the expression 201 "temperature sensor" will for example be evaluated and the expression 215 "the temperature is hot" will be added to the queue. Then, the expression 202 "humidity sensor" will be evaluated and the expression 213 "the air is wet" will be added to the queue. The expression "hot temperature" is then evaluated and the expression "the temperature is hot and the air is not humid" is placed in the queue with priority. However, since the expression "wet air" has priority (its weight or priority coefficient 2131 is equal to 1 while the other expression 220 is associated with a priority 2201 equal to 3), it is evaluated and the expression 214 "the air is not wet" is added to the queue. Since the 2141 priority of the expression 214 is 2, this expression 214 will be evaluated first and the expression 220 "the temperature is hot and the air is not wet" should be added. However, this expression 220 "the temperature is hot and the air is not wet" is already present in the priority queue so it is not added. Then, the expression 220 is in turn evaluated. In this way, it is avoided to carry out a double evaluation of the expression 220 "the temperature is hot and the air is not humid".
Concernant le composant 120 de planification des calculs, l'unité 1 10 (de mise en file des notifications des changements de valeur des entrées) guette pour chacune des entrées du système les changements de valeur. Le cas échéant, les changements sont mis dans une file d'attente dans un certain ordre (e.g. selon la politique de cette unité). A un temps t, l'unité 1 10 de mise en file des notifications des changements d'entrées communique ou notifie à l'étape 1 12 les valeurs des nouvelles entrées à l'unité de planification 120. Entre autres exemples, une politique peut exprimer la nécessité de fusionner des changements de valeurs qui se sont produits de manière consécutive. Une politique peut également considérer que des modifications de deux entrées différentes intervenant à quelques millisecondes d'intervalles sont en fait concomitantes ("sensiblement" concomitantes). En d'autres termes, une politique peut configurer ou prédéfinir des assimilations ou fusions ou agrégations de données. Cette dernière politique peut être utilisée lorsqu'on sait que les valeurs des entrées sont apportées par un moyen de communication avec une certaine latence (réseau...). L'unité de planification 120 qui reçoit une communication ou une notification depuis l'unité 1 10 réagit en fonction de sa propre politique. Une politique simple peut consister à déclencher immédiatement l'évaluation des nœuds voisins de chacun des nœuds représentant les entrées qui ont été changées. Il est également possible d'implémenter d'avoir une ou plusieurs politiques plus sophistiquée qui peuvent consister, par exemple, à gérer le calcul parallèle ou la distribution des calculs. Concerning the calculation planning component 120, the unit 1 10 (signal notification of changes in the value of the inputs) watches for each of the entries of the system changes in value. In this case, the changes are put in a queue in a certain order (eg according to the policy of this unit). At a time t, the unit 1 10 for queuing the notifications of the input changes communicates or notifies in step 1 12 the values of the new entries to the planning unit 120. Among other examples, a policy may express the need to merge changes in values that have occurred so consecutive. A policy may also consider that modifications of two different inputs occurring within a few milliseconds of intervals are actually concomitant ("substantially" concomitant). In other words, a policy can configure or predefine data assimilations or mergers or aggregations. This last policy can be used when it is known that the values of the inputs are provided by a means of communication with a certain latency (network ...). The scheduling unit 120 that receives a communication or notification from the unit 110 responds according to its own policy. A simple policy may be to immediately trigger the evaluation of the neighboring nodes of each of the nodes representing the entries that have been changed. It is also possible to implement having one or more more sophisticated policies that may consist of, for example, managing parallel computing or calculation distribution.
Dans certains cas, les calculs peuvent en effet être répartis sur plusieurs cœurs et/ou plusieurs machines multi-cœurs. Plus précisément, soit les différents temps sont traités sur des cœurs ou des machines différentes, soit pour un temps t donné, les entités à évaluer sont séparées (si cela est possible) afin d'être évaluées de manière indépendante. Selon un mode de réalisation de l'invention (combinant une représentation sous forme de graphe de la base de règles), cette séparation peut être mise en œuvre de la façon suivante: dans le graphe G qui représente la base de règles, il est sélectionné un graphe G' inclus dans G, de manière à ce qu'il existe un chemin partant des entrées qui viennent d'être modifiées. Puis il est cherché dans G', s'ils existent, des graphes Gi connexes pour lesquels il n'existe pas d'arête commune entre ces différents Gi. Ce cas de figure se produit par exemple en présence de deux règles qui ne partagent aucune expression ou entité commune. Chaque graphe connexe Gi peut être ensuite évalué en parallèle (i.e. faire l'objet de calculs parallélisés). Optionnellement, à des fins d'optimisation complémentaire, d'autres politiques peuvent être mises en œuvre pour tenir compte, par exemple, des capacités et du taux d'occupation des machines utilisées. Une fois qu'un graphe Gi a fini d'être traité par l'unité d'évaluation 140, le résultat est fourni à l'unité 130 de diffusion des résultats. Cette unité 130, en fonction de sa politique, peut indiquer les nouvelles valeurs des sorties modifiées. L'unité 130 peut également diffuser ou communiquer plus d'informations, si nécessaire (par exemple, des informations pour l'Interprétation ou la compréhension des résultats). In some cases, the calculations can indeed be spread over several cores and / or multiple multi-core machines. More precisely, either the different times are processed on different cores or machines, or for a given time t, the entities to be evaluated are separated (if this is possible) in order to be evaluated independently. According to one embodiment of the invention (combining a representation in the form of a graph of the rule base), this separation can be implemented as follows: in the graph G which represents the rule base, it is selected a graph G 'included in G, so that there is a path starting from the entries that have just been modified. Then it is searched in G ', if they exist, Gi connected graphs for which there is no common edge between these different Gi. This case occurs for example in the presence of two rules that do not share no expression or common entity. Each connected graph Gi can then be evaluated in parallel (ie be the subject of parallel calculations). Optionally, for additional optimization purposes, other policies may be implemented to take into account, for example, the capacity and the occupancy rate of the machines used. Once a graph Gi has finished being processed by the evaluation unit 140, the result is provided to the result dissemination unit 130. This unit 130, depending on its policy, can indicate the new values of the modified outputs. The unit 130 may also broadcast or communicate more information, if necessary (for example, information for interpretation or understanding of the results).
Dans un développement, des règles de gestion temporelle sont ajoutées et combinées aux règles de la base de règles. Il est notamment divulgué un système pour lequel une ou plusieurs valeurs d'expiration sont associées aux expressions ou règles qui sont manipulées. Dans un système expert destiné à traiter en continu des données, il est par exemple avantageux d'exprimer une expression sous la forme: "si un événement s'est produit dans les 10 dernières minutes alors... ". En supposant qu'un tel événement s'est produit à tO, à tO+5 minutes, la proposition est vraie. En revanche, elle ne sera plus vraie à tO+15 minutes car la fenêtre temporelle de 10 minutes aura expiré. Une expression comme « un événement s'est produit dans les 10 dernières minutes» peut donc évoluer, i.e. changer d'expression ou de valeur, et ce sans qu'une entrée ne change de valeur. Selon un mode de réalisation de cette technique d'expiration, certaines expressions (e.g. des expressions temporelles ou contenant des références au temps) peuvent être " expirables" , c'est-à-dire que leur valeur a une durée limitée et/ou que ces expressions ont connaissance qu'elles doivent être recalculées au bout d'un certain temps (lequel peut être paramétré ou paramétrable e.g. fonction de variables ou bien configuré/configurable). A expiration de leur valeur, ces expressions sont communiquées par l'unité de planification 120 à l'unité d'évaluation 140. En fonction de la file des entrées et de sa politique, l'unité de planification 120 décide en particulier à quel moment l'expression doit être réévaluée. In a development, time management rules are added and combined with rule base rules. In particular, it is disclosed a system for which one or more expiration values are associated with the expressions or rules that are manipulated. In an expert system for continuously processing data, it is for example advantageous to express an expression in the form: "if an event occurred in the last 10 minutes then ...". Assuming that such an event occurred at t0, at t0 + 5 minutes, the proposition is true. On the other hand, it will no longer be true at t0 + 15 minutes because the time window of 10 minutes will have expired. An expression such as "an event has occurred in the last 10 minutes" can therefore evolve, ie change expression or value, without an entry changing its value. According to one embodiment of this expiry technique, certain expressions (eg temporal expressions or containing references to time) may be "expirable", that is to say that their value has a limited duration and / or that these expressions are aware that they must be recalculated after a certain time (which can be parameterized or parameterizable eg variable function or configured / configurable). At the end of their value, these expressions are communicated by the planning unit 120 to the evaluation unit 140. Depending on the input queue and its policy, the scheduling unit 120 decides in particular when the expression should to be reassessed.
La présente invention peut s'implémenter à partir d'éléments matériel et/ou logiciel. Elle peut être disponible en tant que produit programme d'ordinateur sur un support lisible par ordinateur. Le support peut être électronique, magnétique, optique ou électromagnétique. The present invention can be implemented from hardware and / or software elements. It may be available as a computer program product on a computer readable medium. The support can be electronic, magnetic, optical or electromagnetic.
Le dispositif peut utiliser un ou plusieurs circuits électroniques dédiés ou un circuit à usage général. La technique de l'invention peut se réaliser sur une machine de calcul reprogrammable (un processeur ou un micro contrôleur par exemple) exécutant un programme comprenant une séquence d'instructions, ou sur une machine de calcul dédiée (par exemple un ensemble de portes logiques comme un FPGA ou un ASIC, ou tout autre module matériel). The device can use one or more dedicated electronic circuits or a general purpose circuit. The technique of the invention can be realized on a reprogrammable calculation machine (a processor or a microcontroller for example) executing a program comprising a sequence of instructions, or on a dedicated calculation machine (for example a set of logic gates). as an FPGA or an ASIC, or any other hardware module).
Selon un mode de réalisation, le dispositif comprend un support de stockage lisible par ordinateur (RAM, ROM, EEPROM, mémoire flash ou une autre technologie de mémoire, CD-ROM, DVD ou un autre support à disque optique, cassette magnétique, bande magnétique, disque de stockage magnétique ou un autre dispositif de stockage, ou un autre support de stockage non transitoire lisible par ordinateur) codé avec un programme d'ordinateur (c'est-à-dire plusieurs instructions exécutables) qui, lorsqu'il est exécuté sur un processeur ou plusieurs processeurs, effectue les fonctions des modes de réalisation décrits précédemment. According to one embodiment, the device comprises a computer readable storage medium (RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk carrier, magnetic cassette, magnetic tape , magnetic storage disk or other storage device, or other non-transitory computer readable storage medium) encoded with a computer program (i.e., multiple executable instructions) which, when executed on a processor or several processors performs the functions of the previously described embodiments.
A titre d'exemple d'architecture matérielle adaptée à mettre en œuvre l'invention, un dispositif peut comporter un bus de communication auquel sont reliés une unité centrale de traitement ou microprocesseur (CPU, acronyme de « Central Processing Unit » en anglais), lequel processeur peut être "multi-core" ou "many-core"; une mémoire morte (ROM, acronyme de « Read Only Memory » en anglais) pouvant comporter les programmes nécessaires à la mise en œuvre de l'invention; une mémoire vive ou mémoire cache (RAM, acronyme de « Random Access Memory » en anglais) comportant des registres adaptés à enregistrer des variables et paramètres créés et modifiés au cours de l'exécution des programmes précités ; et une interface de communication ou E/S (I/O acronyme de « Input/ouput » en anglais) adaptée à transmettre et à recevoir des données. As an example of hardware architecture adapted to implement the invention, a device may comprise a communication bus to which a central processing unit or microprocessor (CPU, acronym for "Central Processing Unit"), which processor can be "multi-core" or "many-core"; a read-only memory (ROM, acronym for "Read Only Memory" in English) that may include the programs necessary for the implementation of the invention; a random access memory or RAM (Random Access Memory) with registers adapted to record variables and parameters created and modified during the execution of the aforementioned programs; and a communication interface or I / O (I / O acronym for "Input / ouput" in English) adapted to transmit and receive data.
Dans le cas où l'invention est implantée sur une machine de calcul reprogrammable, le programme correspondant (c'est-à-dire la séquence d'instructions) peut être stocké dans ou sur un médium de stockage amovible (par exemple une carte SD, un DVD ou Bluray, un moyen de stockage de masse tel que un disque dur e.g. un SSD) ou non-amovible, volatile ou non-volatile, ce médium de stockage étant lisible partiellement ou totalement par un ordinateur ou un processeur. Le support lisible par ordinateur peut être transportable ou communicable ou mobile ou transmissible (i.e. par un réseau de télécommunication 2G, 3G, 4G, Wifi, BLE, fibre optique ou autre). In the case where the invention is implanted on a reprogrammable calculation machine, the corresponding program (that is to say the sequence of instructions) can be stored in or on a removable storage medium (for example an SD card , a DVD or Bluray, a mass storage means such as a hard disk eg SSD) or non-removable, volatile or non-volatile, this storage medium is readable partially or completely by a computer or a processor. The computer readable medium may be transportable or communicable or mobile or transmissible (i.e. by a 2G, 3G, 4G, Wifi, BLE, fiber optic or other telecommunication network).
La référence à un programme d'ordinateur qui, lorsqu'il est exécuté, effectue l'une quelconque des fonctions décrites précédemment, ne se limite pas à un programme d'application s'exécutant sur un ordinateur hôte unique. Au contraire, les termes programme d'ordinateur et logiciel sont utilisés ici dans un sens général pour faire référence à tout type de code informatique (par exemple, un logiciel d'application, un micro logiciel, un microcode, ou toute autre forme d'instruction d'ordinateur) qui peut être utilisé pour programmer un ou plusieurs processeurs pour mettre en œuvre des aspects des techniques décrites ici. Les moyens ou ressources informatiques peuvent notamment être distribués {"Cloud Computing"), éventuellement avec ou selon des technologies de pair-à- pair. Le code logiciel peut être exécuté sur n'importe quel processeur approprié (par exemple, un microprocesseur) ou cœur de processeur ou un ensemble de processeurs, qu'ils soient prévus dans un dispositif de calcul unique ou répartis entre plusieurs dispositifs de calcul (par exemple tels qu'éventuellement accessibles dans l'environnement du dispositif). Le code exécutable de chaque programme permettant au dispositif programmable de mettre en œuvre les processus selon l'invention, peut être stocké, par exemple, dans le disque dur ou en mémoire morte. De manière générale, le ou les programmes pourront être chargés dans un des moyens de stockage du dispositif avant d'être exécutés. L'unité centrale peut commander et diriger l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées dans le disque dur ou dans la mémoire morte ou bien dans les autres éléments de stockage précités. The reference to a computer program that, when executed, performs any of the functions described above, is not limited to an application program running on a single host computer. On the contrary, the terms computer program and software are used herein in a general sense to refer to any type of computer code (for example, application software, firmware, microcode, or any other form of computer code). computer instruction) that can be used to program one or more processors to implement aspects of the techniques described herein. The means or computing resources can be distributed, eg with Cloud Computing, or with peer-to-peer technologies. The software code may be executed on any suitable processor (for example, a microprocessor) or a processor core or set of processors, whether provided in a single computing device or distributed among a plurality of computing devices (eg example as possibly accessible in the environment of the device). The executable code of each program enabling the programmable device to implement the processes according to the invention can be stored, for example, in the hard disk or in read-only memory. In general, the program or programs may be loaded into one of the storage means of the device before being executed. The central unit can control and direct the execution of instructions or portions of software code of the program or programs according to the invention, instructions that are stored in the hard disk or in the ROM or in the other storage elements mentioned above.
De manière non limitative, les senseurs (ou capteurs) peuvent comprendre un ou plusieurs des senseurs ou capteurs choisis parmi des capteurs de pression, de flux, de température, d'oxygène, de vitesse, de mouvement, de position, de localisation, de radioactivité, d'énergie, de produits ou de composants chimiques (e.g. monoxyde d'azote, ozone, fumée, polluants, etc) ou de produits ou composants biologiques (e.g. virus, contaminants, pollens, etc). Les capteurs peuvent comprendre un ou plusieurs MEMS, magnétomètres, hygromètres, gyroscopes, accéléromètres, bio-senseurs, radars, sonars, caméras, scanners 3D etc. Les actuateurs ou actionneurs peuvent être de type pneumatique, hydraulique, électrique, mécanique, magnétique, à effet Pelletier, piézoélectrique ou à électroluminescence, etc. Ils peuvent par exemple comprendre un ou plusieurs vérins, moteurs, résistances chauffantes, lampes, enceintes acoustiques, électroaimants, ou bien encore des thermo refroidisseurs, des ioniseurs, des vannes, des soupapes, des enrouleurs, etc. Without limitation, the sensors (or sensors) may comprise one or more of the sensors or sensors selected from pressure, flow, temperature, oxygen, velocity, motion, position, location, radioactivity, energy, chemical products or components (eg nitrogen monoxide, ozone, smoke, pollutants, etc.) or biological products or components (eg viruses, contaminants, pollen, etc.). The sensors can include one or more MEMS, magnetometers, hygrometers, gyroscopes, accelerometers, biosensors, radars, sonars, cameras, 3D scanners etc. The actuators or actuators may be pneumatic, hydraulic, electrical, mechanical, magnetic, pelletier, piezoelectric or electroluminescent, etc. They may for example comprise one or more cylinders, motors, heating resistors, lamps, acoustic enclosures, electromagnets, or even thermo coolers, ionizers, valves, valves, reels, etc.
En l'espèce, les capteurs et actionneurs (« sensors and actuators ») selon l'invention peuvent être ceux utilisés dans le cadre des applications de la domotique. Les actionneurs peuvent comprendre des interrupteurs, claviers, gradateurs, des capteurs de température, des capteurs de passage, des capteurs de présence, des capteurs d'humidité, des capteurs de luminosité, des détecteurs de fumée et analogues. L'invention trouvera avantageusement application pour la gestion des systèmes d'éclairage, chauffage, de climatisation, d'ouverture/fermeture de volets, d'arrosage de jardin, de vidéosurveillance, d'ouverture/fermeture de porte, de ventilation, d'éclairage, d'accès ou de tout autre système pouvant être commandé par un système domotique In this case, the sensors and actuators ("sensors and actuators") according to the invention can be those used in the context of home automation applications. The actuators may include switches, keypads, dimmers, temperature sensors, flow sensors, occupancy sensors, humidity sensors, brightness sensors, smoke detectors, and the like. The invention will advantageously find application for the management of lighting systems, heating, air conditioning, opening / closing flaps, garden watering, video surveillance, opening / closing of doors, ventilation, lighting, access or any other system that can be controlled by a home automation system

Claims

Revendications claims
1 . Procédé mis en œuvre sur ordinateur de gestion d'une base de règles floues 150 le procédé comprenant les étapes consistant à: 1. Method implemented on computer for managing a fuzzy rule base 150 the method comprising the steps of:
- recevoir une valeur d'entrée 101 à évaluer; - receive an input value 101 to evaluate;
- enfiler la valeur d'entrée dans une file d'attente 1 10;  - put the input value in a queue 1 10;
- sélectionner au sein de la file d'attente 1 10 une valeur d'entrée en attente;  selecting, in the queue 1, a pending input value;
- déterminer une valeur de sortie 102 en évaluant par inférence les parties de règles de la base de règles floues 150 la valeur d'entrée en attente sélectionnée en évaluant.  determining an output value 102 by inferring the policy portions of the fuzzy rule base 150 to the selected pending input value by evaluating.
2. Procédé selon la revendication 1 , comprenant en outre une étape consistant à diffuser une ou plusieurs valeurs de sortie 102. The method of claim 1, further comprising a step of broadcasting one or more output values 102.
3. Procédé selon la revendication 1 , l'étape consistant à évaluer une valeur d'entrée en attente sélectionnée comprenant une étape consistant à planifier dans le temps et/ou dans l'espace les évaluations des valeurs d'entrées en attente. The method of claim 1, wherein the step of evaluating a selected pending input value includes a step of scheduling in time and / or in space the evaluations of pending input values.
4. Procédé selon l'une quelconque de revendications précédentes, une sélection de valeurs d'entrée ayant été sélectionnées étant évaluée. A method as claimed in any one of the preceding claims, wherein a selection of input values having been selected is evaluated.
5. Procédé selon l'une quelconque des revendications précédentes, le procédé comprenant en outre une étape consistant à disjoindre le graphe correspondant à la base de règles 150 en plusieurs sous-graphes disjoints, une étape consistant à sélectionner au moins un sous-graphe comprenant un nœud correspondant à une valeur d'entrée en attente sélectionnée et une étape consistant à évaluer ledit sous-graphe sélectionné. A method according to any one of the preceding claims, the method further comprising a step of separating the graph corresponding to the rule base 150 into several disjoint subgraphs, a step of selecting at least one subgraph comprising a node corresponding to a selected pending input value and a step of evaluating said selected subgraph.
6. Procédé selon la revendication 5, l'étape consistant à évaluer un sous- graphe comprenant une étape consistant à parcourir ledit sous-graphe, une étape consistant à associer récursivement une priorité à chaque nœud du sous-graphe et une étape consistant à évaluer les nœuds par priorité croissante. The method of claim 5, the step of evaluating a subgraph comprising a step of traversing said subgraph, a step of recursively associating a priority with each node of the subgraph and a step of evaluating nodes by increasing priority.
7. Procédé selon l'une quelconque des revendications précédentes, le procédé comprenant en outre une étape consistant à comparer les chaînes de caractères composant les expressions composant les règles de la base de règles, une étape consistant à supprimer les redondances entre lesdites expressions de manière à obtenir des expressions uniques et une étape consistant à évaluer lesdites expressions uniques. A method according to any one of the preceding claims, the method further comprising a step of comparing the character strings composing the expressions making up the rules of the rule base, a step of deleting the redundancies between said expressions so as to to obtain unique expressions and a step of evaluating said unique expressions.
8. Procédé selon l'une quelconque des revendications précédentes, une partie d'une règle de la base de règles 150 étant associée à une paramètre/valeur d'expiration dans le temps. The method of any one of the preceding claims, wherein a portion of a policy rule 150 is associated with a timeout parameter / value.
9. Procédé selon l'une quelconque des revendications précédentes, deux valeurs d'entrées sensiblement concomitantes étant assimilées à une seule et même valeur d'entrée. 9. Method according to any one of the preceding claims, two substantially concomitant input values being assimilated to one and the same input value.
10. Procédé selon l'une quelconque des revendications précédentes, au moins une règle étant exprimée en langage naturel. 10. Method according to any one of the preceding claims, at least one rule being expressed in natural language.
1 1 . Procédé selon l'une quelconque des revendications précédentes, l'évaluation par inférence s'effectuant selon la logique d'ordre 0, la logique d'ordre 1 ou selon la logique floue. 1 1. Method according to one of the preceding claims, the inference evaluation being carried out according to the logic of order 0, the logic of order 1 or according to the fuzzy logic.
12. Un produit programme d'ordinateur, ledit programme d'ordinateur comprenant des instructions de code permettant d'effectuer les étapes du procédé selon l'une quelconque des revendications 1 à 1 1 , lorsque ledit programme est exécuté sur un ordinateur. 12. A computer program product, said computer program comprising code instructions for performing the steps of the method according to any of claims 1 to 1 1, when said program is run on a computer.
13. Système comprenant des moyens pour la mise en œuvre du procédé selon l'une quelconque des revendications 1 à 1 1 . 13. System comprising means for implementing the method according to any one of claims 1 to 1 1.
14. Système selon la revendication 13, comprenant The system of claim 13, comprising
- des moyens de réception d'une valeur d'entrée 101 à évaluer;  means for receiving an input value 101 to be evaluated;
- des moyens d'évaluation par inférence au moyen de la base de règles 150 d'une valeur de sortie 102 correspondant à la valeur d'entrée 101 ;  - inference evaluation means by means of the rule base 150 of an output value 102 corresponding to the input value 101;
caractérisé en ce que le système comprend: characterized in that the system comprises:
- des moyens de stockage pour enfiler la valeur d'entrée 101 ;  storage means for threading the input value 101;
- des moyens de calcul pour sélectionner une valeur d'entrée enfilée et pour planifier dans le temps et/ou dans l'espace les évaluations d'une ou de plusieurs valeurs d'entrées en attente;  calculating means for selecting an input value threaded and for scheduling the evaluations of one or more pending input values in time and / or in space;
- des moyens de calcul pour évaluer la valeur d'entrée en attente sélectionnée enfilée en une valeur de sortie 102;  calculating means for evaluating the selected pending input value threaded into an output value 102;
- des moyens d'entrée/sortie pour diffuser une ou de plusieurs valeurs de sortie 102;  input / output means for broadcasting one or more output values 102;
15. Système selon la revendication 13 ou 14 comprenant: The system of claim 13 or 14 comprising:
- un composant d'entrée/sortie pour recevoir une ou plusieurs valeurs d'entrée;  an input / output component for receiving one or more input values;
- un composant d'enfilage adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à stocker, regrouper, fusionner et supprimer des valeurs d'entrées; a donning component adapted to perform one or more of the steps of storing, grouping, merging and deleting input values;
- un composant de planification adapté pour effectuer une ou plusieurs des étapes parmi celles consistant à sélectionner, supprime^ regrouper, fusionner, allouer des valeurs d'entrées enfilées; - un composant d'évaluation adapté pour évaluer une ou plusieurs valeurs d'entrée enfilées et manipulées par le composant de planification par inférence au moyen de la base de règles; a planning component adapted to perform one or more of the steps of selecting, deleting, grouping, merging, allocating input values threaded; an evaluation component adapted to evaluate one or more input values threaded and manipulated by the inference planning component by means of the rule base;
- un composant de diffusion adapté pour sélectionner et communiquer une ou plusieurs valeurs d'entrées.  a broadcast component adapted to select and communicate one or more input values.
EP15771155.7A 2014-10-29 2015-09-30 Software architecture for expert system Withdrawn EP3213267A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1460382A FR3028076B1 (en) 2014-10-29 2014-10-29 SOFTWARE ARCHITECTURE FOR EXPERT SYSTEM
PCT/EP2015/072603 WO2016066364A1 (en) 2014-10-29 2015-09-30 Software architecture for expert system

Publications (1)

Publication Number Publication Date
EP3213267A1 true EP3213267A1 (en) 2017-09-06

Family

ID=52692736

Family Applications (1)

Application Number Title Priority Date Filing Date
EP15771155.7A Withdrawn EP3213267A1 (en) 2014-10-29 2015-09-30 Software architecture for expert system

Country Status (4)

Country Link
US (1) US20170300804A1 (en)
EP (1) EP3213267A1 (en)
FR (1) FR3028076B1 (en)
WO (1) WO2016066364A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013513B2 (en) 2014-10-31 2018-07-03 International Business Machines Corporation Accelerating particle-swarm algorithms
CN108984843B (en) * 2018-06-20 2021-02-09 北京大学 Interval information analysis method based on guard calculation
EP3843016A1 (en) 2019-12-23 2021-06-30 Commissariat à l'Energie Atomique et aux Energies Alternatives Method for screening data implemented by computer
DE102020206325A1 (en) * 2020-05-20 2021-11-25 Robert Bosch Gesellschaft mit beschränkter Haftung Computer-implemented method for testing a technical system
CN114004360B (en) * 2021-12-30 2022-04-01 北京壬工智能科技有限公司 Intelligent equipment diagnosis equipment and method based on fuzzy expert model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778402A (en) * 1995-06-07 1998-07-07 Microsoft Corporation Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
WO2001030612A1 (en) * 1999-10-27 2001-05-03 Ims Inc. Air bag system controlled by fuzzy logic
US8176527B1 (en) * 2002-12-02 2012-05-08 Hewlett-Packard Development Company, L. P. Correlation engine with support for time-based rules
US8214316B2 (en) 2009-03-23 2012-07-03 Microsoft Corporation Notification-based forward chaining
US9984327B2 (en) * 2010-06-17 2018-05-29 Palo Alto Research Center Incorporated System and method for parallel graph searching utilizing parallel edge partitioning

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ER NAVJOT KAUR ET AL: "Review of Expert Systems based on Fuzzy logic", INTERNATIONAL JOURNAL OF ADVANCED RESEARCH IN COMPUTER AND COMMUNICATION ENGINEERING, 31 March 2013 (2013-03-31), pages 2319 - 5940, XP055696806, Retrieved from the Internet <URL:https://www.ijarcce.com/upload/2013/march/4-anand%20nayyar%20-%20Review%20of%20Expert-c.pdf> [retrieved on 20200519] *

Also Published As

Publication number Publication date
FR3028076A1 (en) 2016-05-06
US20170300804A1 (en) 2017-10-19
WO2016066364A1 (en) 2016-05-06
FR3028076B1 (en) 2017-12-01

Similar Documents

Publication Publication Date Title
US11263241B2 (en) Systems and methods for predicting actionable tasks using contextual models
EP3213267A1 (en) Software architecture for expert system
US11157844B2 (en) Monitoring source code development processes for automatic task scheduling
JP6523354B2 (en) State machine builder with improved interface and handling of state independent events
KR102454201B1 (en) Event stream transformations
US20210125083A1 (en) Edge devices, systems and methods for processing extreme data
US11595415B2 (en) Root cause analysis in multivariate unsupervised anomaly detection
EP2364467B1 (en) Method for recognising sequential patterns for a method for fault message processing
US20210158147A1 (en) Training approach determination for large deep learning models
US20190260831A1 (en) Distributed integrated fabric
US11595269B1 (en) Identifying upgrades to an edge network by artificial intelligence
WO2012007489A1 (en) Processor for situational analysis
CA2908951A1 (en) Task time allocation method allowing deterministic error recovery in real time
US12039287B2 (en) Identifying regulator and driver signals in data systems
US20220091897A1 (en) Rule-based assignment of event-driven application
US20210133209A1 (en) Blockchain-based central repository and analytical platform for communications in the internet of things
US20220051112A1 (en) Automated model pipeline generation with entity monitoring, interaction, and intervention
US11556650B2 (en) Methods and systems for preventing utilization of problematic software
Kim et al. Goal-driven scheduling model in edge computing for smart city applications
US11889149B2 (en) Intelligent mitigation of concentration conflicts
US20200311900A1 (en) Automated trend detection by self-learning models through image generation and recognition
US20170315822A1 (en) Identifying a common action flow
EP3881515B1 (en) System for the formal supervision of communications
US12086817B2 (en) Personalized alert generation based on information dissemination
WO2018206871A1 (en) Method, implemented by computer, for searching for rules of association in a database

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20170404

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20200602

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: GRANT OF PATENT IS INTENDED

INTG Intention to grant announced

Effective date: 20230825

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20240105