Part extraction device, part extraction method and recording medium

A part extraction device includes: at least one memory configured to store instructions; and at least one processor configured to execute the instructions to: acquire first information that shows a configuration of a system in a graph format; and extract second information that shows a configuration of a part of the system in a graph format, from the first information.

This application is based upon and claims the benefit of priority from Japanese patent application No. 2020-065028 filed on Mar. 31, 2020, the disclosure of which is incorporated herein in its entirety by reference.

TECHNICAL FIELD

The present invention relates to a part extraction device, a part extraction method and a recording medium.

BACKGROUND ART

Software may be divided into multiple parts, and each divided part may be designed or developed. Regarding the division of software, PCT International Publication No. WO 2018/066074 (hereinafter Patent Document 1) describes an information processing device that divides a program into program elements such as functions, and groups the program elements into a plurality of groups based on a relationship of access to an array between the program elements.

Further, Published Japanese Translation No. 2017-519300 of the PCT International Publication (hereinafter Patent Document 2) describes a method of accessing a database having an artifact of a software file, and specifying a design pattern of the software file based on the artifact.

In the technique described in PCT International Publication No. WO 2019/216082 (hereinafter Patent Document 3), a concretization rule prescribed by a method of concretizing abstract configuration information by determining an undefined portion of information (abstract configuration information) indicating the configuration of a system including the undefined portion, is stored in a storage unit. Then the abstract configuration information included in the configuration requirements of the system expressed in graph format, is concretized by using the stored concretization rule. As a result, system configuration information, which is information showing the configuration of a system that does not include the undefined portion is generated, based on the configuration requirements.

Y. Bengio, 3 others, “Curriculum learning”, In International Conference on Machine Learning, pp. 41-48, ACM, 2009 (hereinafter Non-Patent Document 1) discloses curriculum reinforcement learning. Curriculum reinforcement learning is a technique for learning efficiently by going through an approach of learning from simple problems in order, instead of learning difficult problems to be solved from the beginning. Such curriculum reinforcement learning is a means to solve a problem that, due to the large number of possible solution patterns, the frequency of rewards obtained even after repeated learning is low, so that a method for obtaining an appropriate solution cannot be learned well.

Takashi Maruyama, 4 others, “Acceralated Search for Search Based Network Design Generation Scheme with Reinforcement Learning”, IEICE Technical Report, vol. 118, no. 483, ICM2018-71, pp. 123-128, March 2019 (hereinafter Non-Patent Document 2) discloses a technique for efficiently generating system configuration information, by selecting a promising method using the results learned by reinforcement learning, in selecting one of the numerous choices for determining the undefined portion, in the technique shown in Patent Document 3.

SUMMARY

From the viewpoint of simplifying individual designs, it is preferable that the scale of each design target can be made relatively small, even in system design including hardware design as well as software design, for example by dividing up the system to be designed.

An example object of the present invention is to provide a part extraction device, a part extraction method, and a recording medium capable of solving the above-mentioned problems.

According to a first example aspect of the present invention, a part extraction device includes: at least one memory configured to store instructions; and at least one processor configured to execute the instructions to: acquire first information that shows a configuration of a system in a graph format; and extract second information that shows a configuration of a part of the system in a graph format, from the first information.

According to a second example aspect of the present invention, a part extraction method includes: acquiring first information that shows a configuration of a system in a graph format; and extracting second information that shows a configuration of a part of the system in a graph format, from the first information.

According to a third example aspect of the present invention, a non-transitory computer readable recording medium stores a program for causing a computer to execute: acquiring first information that shows a configuration of a system in a graph format; and extracting second information that shows a configuration of a part of the system in a graph format, from the first information.

According to some example embodiments of the present invention, in system design including hardware design, the scale of each design target can be made relatively small.

EXAMPLE EMBODIMENT

The applicant, for example, in Patent Document 3, proposes a technique for automatically designing a system. In addition, the present inventors, for example, in Non-Patent Document 2, propose a technique for applying machine learning to automatic design of a system. In this case, in the automatic design of a system, there is a problem that the probability of a successful design when performing reinforcement learning is small, and the frequency of rewards obtained is very low, due to the condition that the design scale of the product level system is huge. Therefore there is a problem that learning does not proceed well. In this case, as referred to in the background art section, it is assumed that curriculum reinforcement learning will be used. However, even if the system requirements are blindly divided for the purpose of generating system requirements that are relatively easy to learn, system requirements that are worth learning cannot be generated. On the other hand, the present inventors have made a finding that automatically generates from the original system requirement, a system requirement that is worth learning based on the know-how of the designer. The present invention based on such findings will be described in detail by exemplifying the example embodiments disclosed below.

Hereinafter, example embodiments of the present invention will be described, but the following example embodiments do not limit the invention as claimed. Also, all combinations of features described in the example embodiments may not be essential to the means of solving the invention.

FIG. 1is a schematic configuration diagram showing an example of a device configuration of a design system according to the example embodiment. In the configuration shown inFIG. 1, the design system1includes a reinforcement learning device11and a system design device12.

The design system1automatically or semi-automatically designs the system. Specifically, the system design device12acquires the system requirement (one set of system requirements) of the system to be designed. The system requirement referred to here is information that describes the configuration that the design target system should have. In the system requirement input to the system design device12, it is possible to abstractly describe the components of the system to be designed. On the other hand, the system design device12concretizes the system requirement to a level at which the system can be deployed, by repeatedly applying a predetermined conversion rule to the acquired system requirement.

FIG. 2is a diagram showing an example of a system requirement handled by the design system1.FIG. 2shows an example of a system requirement to be designed when the design system1designs a suspicious person detection system.

As in the example ofFIG. 2, the system requirement handled by the design system1is described in a graph format. In the described graph, attribute information can be added to any of the nodes and edges.

For example, the name or identification information of the function or device indicated by the node may be added to the node as attribute information. In the case of the example ofFIG. 2, the node N101represents a camera function (shooting function). Nodes N102and N109both represent network switches. Nodes N103and N110both represent routers. Node N104represents a face recognition function. Node N105represents a cloud infrastructure. Node N106represents a WAN (Wide Area Network). Node N107represents a monitor function (image display function). Node N108represents a server device.

Further, the degree of abstraction of the node may be added to the node as attribute information. In the case of the example ofFIG. 2, the nodes N101, N104, N105, and N107are abstract nodes. On the other hand, the nodes N102, N103, N106, N108, N109, and N110are concrete nodes. Here, the abstract node is a node that can be converted into a node that represents a more specific configuration than the present, by referring to a predetermined conversion rule at least once. On the other hand, a concrete node is a node that cannot be converted into a node representing a specific configuration even if the conversion rule is referred to.

The system design device12applies the conversion rule to the system requirement so as to concretize an abstract node. For example, the system design device12may apply a conversion rule that converts the node N101representing a camera function in the system requirement illustrated inFIG. 2, into a partial graph (Subgraph) that includes a node of a camera (imaging device), and a node of a control device that controls the camera.

Further, in the example ofFIG. 2, the attribute information “join” of each of the edges E101, E106, and E109, and the attribute information “http” of each of the edges E103and E107are shown. The attribute information “join” indicates the affiliation relationship. For example, the camera function indicated by the node N101is included in the LAN (Local Area Network) formed by the network switch indicated by the node N102. The face recognition function indicated by the node N104is provided on the cloud platform indicated by the node N105. The monitor function indicated by the node N107is controlled by using the server device indicated by the node N108.

The attribute information “http” indicates communication using HTTP (Hyper Text Transfer Protocol). For example, the edge E103indicates that data is transmitted by HTTP from the camera function indicated by the node N101to the face recognition function indicated by the node N105. The edge E107indicates that data is transmitted by HTTP from the face authentication function indicated by the node N105to the monitor function indicated by the node N107.

It should be noted that it is not essential that the edges have an orientation (in the example ofFIG. 2, the edges are indicated by arrows) in the system requirement used by the design system1. For example, the system requirement may be shown using an undirected graph.

Further, the degree of abstraction of the edge may be added to the edge as attribute information. In the case of the example ofFIG. 2, the edges E101, E103, E105, E107, and E109are abstract edges. On the other hand, the edges E102, E104, E106, E108, E110, and E111are concrete edges. Here, the abstract edge is an edge that can be converted into an edge that represents a more specific configuration than the present, by referring to a predetermined conversion rule at least once. On the other hand, the concrete edge is an edge that cannot be further converted into an edge representing a specific configuration even if the conversion rule is referred to.

The conversion rules used by the design system1may include conversion rules that concretize the edges.

FIG. 3is a diagram showing an example of a system requirement before applying the conversion rule.

In the system requirements shown inFIG. 3, the camera function indicated by node N201is connected to the workstation indicated by node N202. Further, the face recognition function indicated by the node N203is executed on the workstation indicated by the node N204. It is assumed that the edge E201indicates that data is transmitted by HTTP from the camera function indicated by the node N201to the face authentication function indicated by the node N203.

FIG. 4shows an example of a system requirement after applying a conversion rule.FIG. 4shows an example of applying a conversion rule to the system requirement shown inFIG. 3.

InFIG. 4, an edge E211is provided instead of the edge E201ofFIG. 3. It is assumed that the edge E211indicates that data is transmitted from the workstation indicated by the node N202to the workstation indicated by the node N204by using TCP (Transmission Control Protocol). That is,FIG. 4shows that by applying the conversion rule to the system requirement ofFIG. 3, the communication using HTTP is concretized and converted into communication using TCP.

Of the plurality of predetermined conversion rules, an event occurs in which the contents (configuration) represented by the post conversion system requirement is different depending on which conversion rule the system design device12applies to the system requirement, and further depending on the order in which the system design device12applies the plurality of conversion rules to the system requirement. In particular, depending on the conversion rules applied to the system requirement and depending on the order in which the plurality of conversion rules are applied to the system requirement, the system design device12may or may not succeed in designing the system. In other words, the purpose of the system design device12is to concretize the system requirement to a level at which the system can be deployed. However, in the system design device12, even though some of the components of the system are still described in an abstract manner, the fact that there are no more applicable conversion rules means that there is a failure of the system design by the system design device12. This will be further described with reference toFIG. 5.

FIG. 5is a diagram showing an example of branching of conversion rule application in the system design performed by the system design device12.

Each node in the tree shown inFIG. 5indicates one system requirement. In this case, the edge indicates the conversion rule that is applied to the system requirement. Note that in order to make the figure easier to see, representation of a part of the tree is omitted and the omitted part is shown by the edge of the broken line.

In the example ofFIG. 5, the appearance of a plurality of edges from one node indicates that there are a plurality of conversion rules applicable to the system requirement indicated by the one node, in the plurality of predetermined conversion rules.

Node N301, which is the root, indicates the system requirement input to the system design device12. Leaf indicates a system requirement for which there are no applicable conversion rules. As the tree inFIG. 5has multiple leaves, the system requirement obtained as the result of the system design is different depending on which conversion rule is applied to the system requirement, and further depending on the order in which the multiple conversion rules are applied to the system requirement.

When the system design device12acquires the system requirement indicated by the node N302, and the system requirement does not include an abstract part, the system design device12has succeeded in system design. On the other hand, when the system requirement indicated by the node N302includes an abstract part, the system design device12fails in the system design because there is no conversion rule that can concretize the abstract part.

In order to increase the possibility that the system design device12succeeds in the system design, the reinforcement learning device11provides an evaluation model for the system design device12to select the conversion rule applied to the system requirement. For example, the reinforcement learning device11provides the system design device12with an evaluation model that receives an input of a system requirement and outputs an evaluation value of the possibility of success in system design.

The evaluation model used by the design system1is not limited to the model of a specific method. For example, the evaluation model may be constructed using a neural network (NN), but is not limited thereto.

The system design device12calculates the converted system requirement for each conversion rule applicable to the current system requirement, inputs the calculated system requirement into the evaluation model, and calculates the evaluation value for each conversion rule. The system design device12preferentially selects a conversion rule having a high evaluation (high evaluation value).

The system design device12may select any one of the plurality of conversion rules so as to reach one node from one node. That is, the system design device12may apply one conversion rule to one system requirements to acquire one converted system requirement.

Alternatively, the system design device12may allow itself to reach a plurality of nodes from one node, such as allowing the system design device12to select up to five conversion rules. That is, the system design device12may apply a plurality of conversion rules to one system requirement, and acquire a plurality of converted system requirements (converted system requirements for each conversion rule).

The reinforcement learning device11and the system design device12may be configured by using a computer such as a personal computer (PC) or a workstation (Workstation), respectively. Alternatively, either one or both of the reinforcement learning device11and the system design device12may be configured by using dedicated hardware such as being configured by using an ASIC (Application Specific Integrated Circuit).

FIG. 6is a schematic block diagram showing an example of the functional configuration of the reinforcement learning device11. In the configuration shown inFIG. 6, the reinforcement learning device11includes a first communication unit110, a first storage unit180, and a first control unit190. The first control unit190includes a reinforcement learning unit191and a part configuration information extraction unit192.

The first communication unit110communicates with other devices. In particular, the first communication unit110transmits the above-mentioned evaluation model to the system design device12.

The first storage unit180stores various data. The first storage unit180is configured by using a storage device included in the reinforcement learning device11.

The first control unit190controls each unit of the reinforcement learning device11to execute various processes. The function of the first control unit190is executed by the CPU (Central Processing Unit) included in the reinforcement learning device11, reading a program from the first storage unit180and executing the program.

The reinforcement learning unit191acquires the above evaluation model. Specifically, the reinforcement learning unit191learns the evaluation model by reinforcement learning. In the reinforcement learning performed by the reinforcement learning unit191, the agent performs a system design in which conversion rules are repeatedly applied to the system requirement in the same manner as the system design performed by the system design device12. The agent is rewarded for successful system design.

On the other hand, it was found that if the agent succeeds in system design infrequently, the rewards become sparse (that is, the frequency of getting the reward becomes low) and learning does not proceed easily. For example, when the scale of the system to be designed is large, the number of times the conversion rule is applied to the system requirement in one system design increases. Moreover the agent fails the system design relatively frequently, and the reward becomes sparse.

Therefore, the reinforcement learning device11performs learning in a plurality of stages, such as learning the evaluation model with a relatively simple system design and then learning the evaluation model with a more complicated system design.

The reinforcement learning unit191outputs the system requirement to the part configuration information extraction unit192in order to learn the evaluation model by a relatively simple system design. The part configuration information extraction unit192generates a system requirement indicating a part of the system indicated by the acquired system requirement, such as by dividing up the system configuration indicated by the acquired system requirement, and outputs the generated system requirement to the reinforcement learning unit191. It is expected that this will simplify the system to be designed, increase the frequency of successful system design by the agent, and advance learning.

The system part is also called a subsystem.

The system requirement indicating the system a part of which is to be extracted by the part configuration information extraction unit192(that is, the system requirement acquired by the part configuration information extraction unit192from the reinforcement learning unit191) is also referred to as first information. The system requirement indicating the part extracted by the part configuration information extraction unit192(that is, the system requirement output by the part configuration information extraction unit192to the reinforcement learning unit191) is referred to as second information.

In this way, the reinforcement learning unit191acquires the first information and outputs it to the part configuration information extraction unit192. The reinforcement learning unit191corresponds to an example of the configuration information acquisition means. Further, the part configuration information extraction unit192extracts the second information which graphically shows the configuration of the part of the system indicated by the first information. The part configuration information extraction unit192corresponds to an example of the part configuration information extraction means.

The reinforcement learning device11corresponds to an example of the part extraction device.

FIG. 7is a schematic block diagram showing an example of the functional configuration of the system design device12. In the configuration shown inFIG. 7, the system design device12includes a second communication unit210, a second storage unit280, and a second control unit290. The second control unit290includes a design processing unit291.

The second communication unit210communicates with other devices. In particular, the second communication unit210receives the evaluation model described above from the reinforcement learning device11.

The second storage unit280stores various data. The second storage unit280is configured by using the storage device included in the system design device12.

The second control unit290controls each unit of the system design device12to execute various processes. The function of the second control unit290is executed by the CPU included in the system design device12, reading a program from the second storage unit280and executing the program.

The design processing unit291performs the system design described above. Specifically, the design processing unit291receives input of the system requirement of the design target system, and repeats the process of selecting one of a plurality of predetermined conversion rules using the evaluation model and applying the conversion rule to the system requirement. As a result, the design processing unit291concretizes the system requirement.

As described above, when the system requirement is concretized at a level at which the system can be deployed, the design processing unit291has succeeded in system design. On the other hand, if there are no conversion rules applicable to the system requirement while the system requirement includes an abstract part, the design processing unit291has failed in the system design.

FIG. 8is a flowchart showing an example of a processing procedure in which the system design device12designs the system.

In the process ofFIG. 8, the design processing unit291acquires the system requirement of the design target system (step S101).

Then, the design processing unit291selects a conversion rule to be applied to the system requirement (step S102). As described above, the design processing unit291calculates the converted system requirement for each conversion rule applicable to the current system requirement, inputs the calculated system requirement into the evaluation model, and calculates an evaluation value for each conversion rule. The design processing unit291preferentially selects a conversion rule having a high evaluation (high evaluation value). The design processing unit291may select one of the conversion rules stochastically so that the conversion rule having a higher evaluation is selected with a high probability.

Next, the design processing unit291executes the conversion of the system requirement, by applying the selected conversion rule to the system requirement (step S103). As a result, the design processing unit291performs the conversion so as to concretize the system requirement.

Next, the design processing unit291determines whether or not all the system requirement has been concretized (step S111). For example, the design processing unit291refers to the attribute information added to the nodes and edges of the graph describing the system requirement, and determines whether or not an abstract node or an abstract edge remains. If it is determined that no abstract nodes or edges remain, the design processing unit291determines that all the system requirement has been concretized. On the other hand, if it is determined that an abstract node or edge remains, the design processing unit291determines that a portion that is not concretized in the system requirement remains.

When it is determined that all the system requirement has been concretized (step S111: YES), the system design device12performs a predetermined process as a process when the system design is successful (step S121). For example, the system design device12may include a display screen and display the obtained system requirement (concretized system requirement).

After step S121, the system design device12ends the process ofFIG. 8.

On the other hand, when it is determined in step S111that a part not concretized in the system requirement remains (step S111: NO), the design processing unit291determines whether or not there is a conversion rule applicable to the system requirement (current system requirement) (step S131).

When the design processing unit291determines that there is an applicable conversion rule (step S131: YES), the processing returns to step S102.

On the other hand, if it is determined in step S131that there is no applicable conversion rule (step S131: NO), the system design device12executes a predetermined process as a process when the system design fails (step S141). For example, the system design device12may recursively execute the process ofFIG. 8by using the system requirement acquired in step S101. In step S102, the design processing unit291stochastically selects the conversion rule, so that a different design result may be obtained from the same system requirement, and the system design device12is able to succeed in the follow-up system design.

After step141, the system design device12ends the process ofFIG. 8.

FIG. 9is a flowchart showing an example of a processing procedure in which the reinforcement learning device11learns the evaluation model.

In the process ofFIG. 9, the reinforcement learning unit191sets one system requirement in the initial state of the system design (step S201). For example, each time the reinforcement learning unit191performs the process of step S201, one of a plurality of system requirements given for reinforcement learning may be selected and set.

As in the case of the system design of the system design device12described with reference toFIG. 8, if the reinforcement learning unit191stochastically selects the conversion rule applied to the system requirement, a different design result is obtained from the same system requirement. Therefore, the reinforcement learning unit191may repeatedly set the same system requirement in the process of step S201.

Next, the reinforcement learning unit191selects a conversion rule to be applied to the system requirement (step S202). Specifically, the reinforcement learning unit191calculates the converted system requirement for each conversion rule applicable to the current system requirement, inputs each of the calculated system requirements into the evaluation model, and calculates an evaluation value for each conversion rule. The reinforcement learning unit191preferentially selects a conversion rule having a high evaluation (high evaluation value). The reinforcement learning unit191selects one of the conversion rules stochastically so that the conversion rule having a higher evaluation is selected with a high probability.

Next, the reinforcement learning unit191executes the conversion of the system requirement by applying the selected conversion rule to the system requirement (step S203). As a result, the reinforcement learning unit191performs the conversion so as to concretize the system requirement.

Then, the reinforcement learning unit191updates the parameter value of the evaluation model (step S204). The reinforcement learning unit191updates the parameter value by the reinforcement learning method, assuming that a reward is given when the system design is successful and no reward is given in other cases.

Next, the reinforcement learning unit191determines whether or not a predetermined learning end condition is satisfied (step S205). Various conditions can be used as the learning end condition here. For example, the learning end condition may be “the reinforcement learning unit191has succeeded in system design more than a predetermined number of times”. Alternatively, the learning end condition may be “the reinforcement learning unit191has performed the processes of steps S202to S204a predetermined number of times or more”.

When it is determined that the learning condition is satisfied (step S205: YES), the reinforcement learning device11ends the process ofFIG. 9.

On the other hand, when it is determined in step S205that the learning end condition is not satisfied (step S205: NO), the reinforcement learning unit191determines whether or not there is a conversion rule applicable to the system requirement (current system requirement) (step S211).

When the reinforcement learning unit191determines that there is an applicable conversion rule (step S211: YES), the process returns to step S202. In this case, the system design is not completed, and the reinforcement learning unit191continues to design the system and learn the evaluation model.

On the other hand, if the reinforcement learning unit191determines in step S211that there is no applicable conversion rule (step S211: NO), the process returns to step S201. In this case, the system design is completed, and the reinforcement learning unit191performs a new system design and learns the evaluation model.

FIG. 10is a flowchart showing an example of a processing procedure in which the reinforcement learning device11learns the evaluation model step by step.FIG. 10shows an example in which the reinforcement learning device11acquires one system requirement. When the reinforcement learning device11acquires a plurality of system requirements as learning data, the processing ofFIG. 10may be performed for each of the obtained system requirements.

In the process ofFIG. 10, the reinforcement learning unit191acquires one system requirement (step S301).

Then, the reinforcement learning unit191evaluates the difficulty of the obtained system requirement (step S302), and determines whether or not the system requirement is difficult based on the evaluation result (step S303). The method by which the reinforcement learning unit191evaluates the difficulty of the system requirement is not limited to a specific method. For example, the reinforcement learning unit191may determine that the system requirement is difficult when the scale of the graph showing the system requirement, such as the number of nodes included in the graph showing the system requirement, is equal to or larger than a predetermined threshold value.

Alternatively, the reinforcement learning unit191may perform the system design a plurality of times based on the system requirement obtained in step S101, and calculate the success rate by dividing the number of successful system designs by the total value of the number of successful system designs and the number of failures. Then, the reinforcement learning unit191may determine that the system requirement obtained in step S101is difficult when the obtained success rate is less than a predetermined threshold value.

When it is determined that the system requirement is not difficult (step S303: NO), the reinforcement learning unit191executes the process ofFIG. 9(step S321). In this case, the reinforcement learning unit191sets the system requirement acquired in step S301ofFIG. 10, in step S201ofFIG. 9.

After step S321, the reinforcement learning device11ends the process ofFIG. 10.

On the other hand, when it is determined in step S303that the system requirement is difficult (step S303: YES), the part configuration information extraction unit192extracts the part of the system indicated by the system requirement obtained in step S301, and acquires the system requirement indicating the extracted part (step S311). The process of extracting the part of the system in step S311can be performed as the process of extracting the subgraph of the graph showing the system requirement.

As will be described later, the part configuration information extraction unit192may divide the system indicated by the system requirement obtained in step S301by network domain, and generate a system requirement for each divided portion. Alternatively, the part configuration information extraction unit192may divide the system indicated by the system requirement obtained in step S301by layer, and generate a system requirement for each of the divided parts. Alternatively, the part configuration information extraction unit192may extract the partial graph of the abstract portion of the graph showing the system requirement obtained in step S301as the system requirement.

Next, the reinforcement learning device11performs stepwise reinforcement learning by recursively executing the process ofFIG. 10for one of the system requirements obtained in step S311(step S312). In this case, the reinforcement learning device11uses one of the system requirements obtained in step S311as the system requirement acquired in step S301ofFIG. 10to be executed recursively.

After step S312, the reinforcement learning unit191determines whether or not all of the part system requirements obtained in step S311have been learned (step S313).

If it is determined that there is a system requirement (part system requirement) that has not been learned yet (step S313: NO), the process returns to step S312. In this case, the reinforcement learning device11recursively executes the process ofFIG. 10in step S312, and uses the system requirement that has not been learned yet, as a system requirement to be acquired in step S301, by the process ofFIG. 10of recursively executing in step S312.

On the other hand, when it is determined in step S313that all of the part system requirements have been learned (step S313: YES), the reinforcement learning device11ends the process ofFIG. 10.

In this way, the reinforcement learning device11recursively executes the process ofFIG. 10, so that the part configuration information extraction unit192can combine a plurality of methods that extract a part of the system, enabling further simplification of the system.

For example, in step S311in the first-stage execution (non-recursive execution) of the process ofFIG. 10, the part configuration information extraction unit192may divide the system for each network domain. Then, in step S311in the second stage execution (execution by one recursive call) of the process ofFIG. 10, the part configuration information extraction unit192may further divide the system (part of system) for each layer. As a result, the reinforcement learning device11can divide the system for each network domain and each layer, and the individual divided parts of the system become smaller. Since each part is small, the possibility that the reinforcement learning unit191succeeds in system design is relatively high, and it is expected that reinforcement learning will proceed.

Next, the extraction of a part of the system by the part configuration information extraction unit192will be described.

<Division of a System Requirement Based on the Location of the Communication Network>

The part configuration information extraction unit192may divide the system requirement with the location of the communication network as a boundary.

FIG. 11is a diagram showing an example of system requirements divided for each network domain.FIG. 11shows an example in which the part configuration information extraction unit192divides up the graph (system requirement) ofFIG. 2for each network domain.

The part configuration information extraction unit divides the system for each network domain by dividing the system with the network as the boundary. When dividing the graph showing the system requirement, the part configuration information extraction unit192divides the graph with the node showing the network as a boundary. In the example ofFIG. 2, node N106corresponds to a node indicating a network. The part configuration information extraction unit192acquires the three system requirements R101, R102, and R103ofFIG. 11by dividing up the graph (system requirement) ofFIG. 2with the node N106as a boundary.

Here, a case where the part configuration information extraction unit192divides the system with the WAN as a boundary will be described as an example. However the communication network which the part configuration information extraction unit192uses as the boundary of the division is not limited to a specific type of communication network. For example, the part configuration information extraction unit192may divide the system with a LAN (Local Area Network) as a boundary. Alternatively, the part configuration information extraction unit192may divide the system with the Internet as a boundary.

When a person creates a system requirement, it is generally considered that the system requirement is created by making each part connected to the communication network a functional coherence. In the case of the example ofFIG. 11, the system requirement R101is a system requirement of the subsystem for executing the camera function shown in the node N101including the network communication required for the camera function. The system requirement R102is a system requirement of the subsystem for executing the face recognition function shown in the node N104including the network communication required for the face recognition function. The system requirement R103is a system requirement of the subsystem for executing the monitor function shown in the node N107including the network communication required for the monitor function.

In this way, it is expected that the part configuration information extraction unit192divides the system requirement with the communication network as a boundary so that people can easily understand the subsystems indicated by the obtained units. Since the obtained subsystem is easy for people to understand, it is relatively easy for people to verify whether or not the division of the system (system requirement) by the part configuration information extraction unit192is appropriate.

Also, since a subsystem that is easy for people to understand can be obtained, it is expected that the system design will be successful if the obtained subsystem is concretized in the same way as when a human designs the system. Therefore, by preparing a rule indicating the concretization that is to be considered to be performed when a human designs the system, as the conversion rule applied to the system requirement by the reinforcement learning unit191in step S203ofFIG. 9, it is expected that the reinforcement learning unit191will succeed in designing the subsystem. If the reinforcement learning unit191succeeds in designing the subsystem, it is expected that the learning of the evaluation model will proceed.

In addition, from the point that a rule may be prepared indicating a concretization that is to be considered to be performed when a human designs a system as a conversion rule applied to the system requirement by the reinforcement learning unit191, a person who prepares a conversion rule can define the conversion rule relatively easily. The person who prepares the conversion rule may be, for example, the designer of the reinforcement learning device11or the user of the reinforcement learning device11.

FIG. 12is a flowchart showing an example of a processing procedure in which the reinforcement learning device11divides the system requirement for each network domain.

In the process ofFIG. 12, the part configuration information extraction unit192extracts all the edges connected to the WAN node (step S401). The WAN node referred to here is a node indicating WAN among the nodes of the graph showing a system requirement. In the example ofFIG. 2, the node N106corresponds to the example of the WAN node, and the edges E104, E106, and E108correspond to the example of the edges connected to the WAN node.

Next, the part configuration information extraction unit192generates a power set of a set of edges connected to the WAN node (step S402). In the case of the example ofFIG. 2, when the edges are indicated by the reference symbols in the figure, the set of edges connected to the WAN node is {E104, E106, E108}. Therefore, the power set of the set of edges connected to the WAN node is {{E104, E106, E108}, {E104, E106}, {E104, E108}, {E106, E108}, {E104}, {E106}, {E108}, φ}. Here φ indicates the empty set.

Next, the part configuration information extraction unit192determines whether or not there is an unselected element other than the empty set among the elements of the power set generated in step S402(step S403).

When it is determined that there is no unselected element other than the empty set (step S403: NO), the reinforcement learning device11ends the process ofFIG. 12.

On the other hand, when it is determined in step S403that there is an unselected element (step S403: YES), the part configuration information extraction unit192selects one unselected element other than the empty set, from the elements of the power set generated in step S402(step S411).

Then, the part configuration information extraction unit extracts all the nodes that the edge included in the element selected in step S411can reach from the side not connected to the WAN node by following only the edge (and node) that does not straddle the network domain (step S412). The part configuration information extraction unit192may determine whether or not the edge straddles the network domain by referring to the attribute information of the edge. For example, the part configuration information extraction unit192may determine that an edge to which any of “http”, “TCP”, and “IP” is added as attribute information, is an edge that straddles a network domain, and determine that the other edges are edges that do not straddle the network domain.

Next, the part configuration information extraction unit192extracts all the edges between the nodes extracted in step S412(step S413).

Then, the part configuration information extraction unit192combines the nodes obtained in step S412and the edges obtained in step S413with a connection relationship same as the connection relationship in the original system requirement, to generate a system requirement (Step S414).

After step S414, the process transitions to step S403.

According to the process ofFIG. 12, the part configuration information extraction unit192obtains not only the system requirements of the individual subsystems obtained by dividing a system with the communication network serving as the boundary, but also the system requirements of the subsystems in which a plurality of subsystems are grouped.

In the case of the examples ofFIG. 2andFIG. 11, the part configuration information extraction unit192generates the system requirement R101based on the element {E104} of the power set. Similarly, the part configuration information extraction unit192generates the system requirement R102based on the element {E106} of the power set. The part configuration information extraction unit192generates the system requirement R103based on the element {E108} of the power set.

Further, the part configuration information extraction unit generates the system requirements of the subsystem in which the subsystem shown in the system requirement R101and the subsystem shown in the system requirement R102are grouped, based on the elements of the power set {E104, E106}. Specifically, the part configuration information extraction unit192generates the system requirement shown in the subgraph of the graph ofFIG. 2that includes the nodes N101, N102, N103, N104, N105, and N106and the edges E101, E102, E103, E104, E105, and E106.

Similarly, the part configuration information extraction unit192generates a system requirement of a subsystem in which the subsystem shown in the system requirement R101and the subsystem shown in the system requirement R103are grouped, based on the elements of the power set {E104, E108}. The part configuration information extraction unit192generates a system requirement of a subsystem in which the subsystem shown in the system requirement R102and the subsystem shown in the system requirement R103are grouped, based on the elements of the power set {E106, E108}.

In this way, the part configuration information extraction unit192can obtain system requirements of various scales by generating system requirements based on each element of the power set. The scale of the system requirement referred to here is the scale of the graph showing the system requirement. In general, the larger the scale of the system requirement, the more difficult it is for the reinforcement learning unit191to perform reinforcement learning using the system requirement (the frequency of successful system design is low, and the frequency of rewards is low).

Therefore, the reinforcement learning unit191may perform reinforcement learning based on each system requirement by using the system requirements generated by the part configuration information extraction unit192in ascending order of their scale. As a result, it is expected that the reinforcement learning unit191will learn more than the case where the reinforcement learning based on the system requirement of the entire system is performed without the reinforcement learning based on the system requirements of the subsystems.

Various methods can be used by the reinforcement learning unit191as a method for determining the scale of system requirement. For example, the reinforcement learning unit191may determine that the larger the number of nodes or edges in the graph showing the system requirement, or the total number of these, the larger the scale of the system requirement. Alternatively, the reinforcement learning unit191may determine that the larger the number of elements included in the elements of the power set used by the part configuration information extraction unit192when generating the system requirement, the larger the scale of the system requirement.

The reinforcement learning unit191may perform reinforcement learning using some of the system requirements of the plurality of system requirements generated by the part configuration information extraction unit in the process ofFIG. 12.

For example, after the reinforcement learning unit191performs reinforcement learning using each of the system requirements based on the elements each containing only one element among the elements of the power set, reinforcement learning may be performed based on the system requirement based on the element having the largest number of elements among (belonging to) the elements of the power set. The system requirement based on the element having the largest number of elements among the elements of the power set is the system requirement of the entire system.

Further, the part configuration information extraction unit192may generate only system requirements based on some of the elements among the elements of the power set.

<Division of System Requirements Based on Layers>

The part configuration information extraction unit192may divide the system requirement based on the layers defined for the system.

FIG. 13is a diagram showing an example of system requirements divided for each layer. In the example ofFIG. 13, the part configuration information extraction unit192divides the system requirement shown inFIG. 2into a system requirement of a functional layer, a system requirement of a platform layer, and a system requirement of a network layer. System requirement R201is a system requirement for a subsystem included in the functional layer. System requirement R202is a system requirement for a subsystem included in the platform layer. System requirement R203is a system requirement for a subsystem included in the network layer.

However, the prescription (definition) of the layer used by the part configuration information extraction unit192is not limited to a specific one. For example, the part configuration information extraction unit192may divide the system requirements based on the prescription of known layers such as the OSI reference model (Open Systems Interconnection reference model).

When a human creates a system requirement, it is conceivable to create the system requirement with each part of each layer as a functional coherence. In particular, when the scale of the system is relatively large, it is conceivable to put the functions of the system to be built into the functions of each layer and determine the requirements of each part.

For example, when a human creates the system requirement shown inFIG. 2, it is conceivable they would determine the nodes that perform each function and the communication between the nodes as with the system requirement R201ofFIG. 13. Then they would determine the platform for constructing each function as in the system requirement R202, and then determine the configuration for communication between each function as in the system requirement R203.

In this way, it is expected that the part configuration information extraction unit192divides the system requirement according to the layers so that people can easily understand the subsystems indicated by the obtained units. Since the obtained subsystem is easy for people to understand, it is relatively easy for people to verify whether or not the division of system requirement by the part configuration information extraction unit192is appropriate.

Also, since a subsystem that is easy for people to understand can be obtained, it is expected that the system design will be successful if the obtained subsystem is concretized in the same way as when a human designs the system. Therefore, by preparing a rule indicating the concretization that is considered to be performed when a human designs the system, as the conversion rule applied to the system requirement by the reinforcement learning unit191in step S203ofFIG. 9, it is expected that the reinforcement learning unit191will succeed in designing the subsystem. If the reinforcement learning unit191succeeds in designing the subsystem, it is expected that the learning of the evaluation model will proceed.

In addition, from the point that, as a conversion rule applied to the system requirement by the reinforcement learning unit191, a rule is prepared indicating a concretization that is considered to be performed when a human designs a system, a person who prepares a conversion rule can define the conversion rule relatively easily. In this case as well, the person who prepares the conversion rule may be, for example, the designer of the reinforcement learning device11or the user of the reinforcement learning device11.

FIG. 14is a flowchart showing an example of a processing procedure in which the reinforcement learning device11divides the system requirement into a system requirement of each layer.

In the process ofFIG. 14, the part configuration information extraction unit192generates a power set of a set of layers determined to be used for dividing the system requirement (step S501). In the case of the examples ofFIG. 2andFIG. 13, the set of layers is {functional layer, platform layer, network layer}. Therefore, the power set of the set of layers is {{functional layer, platform layer, network layer}, {functional layer, platform layer}, {functional layer, network layer}, {platform layer, network layer}, {functional layer}, {platform layer}, {network layer}, φ}.

Next, the part configuration information extraction unit192determines whether or not there is an unselected element other than the empty set among the elements of the power set generated in step S501(step S502).

When it is determined that there is no unselected element other than the empty set (step S502: NO), the reinforcement learning device11ends the process ofFIG. 14.

On the other hand, when it is determined in step S502that there is an unselected element other than the empty set (step S502: YES), the part configuration information extraction unit192selects one unselected element other than the empty set out of the elements of the power set generated in step S501(step S511).

Then, the part configuration information extraction unit192extracts all the nodes belonging to any of the layers included in the element selected in step S511(step S512).

Next, the part configuration information extraction unit192extracts all the edges between the nodes extracted in step S512(step S513).

Then, the part configuration information extraction unit192combines the nodes obtained in step S512and the edges obtained in step S513with a connection relationship same as the connection relationship in the original system requirement, to generate a system requirement. (Step S514).

After step S514, the process transitions to step S502.

According to the process ofFIG. 14, the part configuration information extraction unit192obtains not only the system requirements of the individual subsystems included in one layer, but also the system requirement of the subsystems in which a plurality of subsystems are grouped.

In the case of the examples ofFIG. 2andFIG. 13, the part configuration information extraction unit192generates the system requirement R201based on the element {functional layer} of the power set. Similarly, the part configuration information extraction unit192generates the system requirement R202based on the element {platform layer} of the power set. The part configuration information extraction unit192generates the system requirement R203based on the element {network layer} of the power set.

Further, the part configuration information extraction unit generates the system requirement of the subsystems in which the subsystem shown in the system requirement R201and the subsystem shown in the system requirement R202are grouped, based on the elements of the power set {functional layer, platform layer}. Specifically, the part configuration information extraction unit192generates the system requirement shown in the subgraph of the graph ofFIG. 2that includes the nodes N101, N104, N105, N107, and N108, and the edges E103, E105, E107, and E109.

Similarly, the part configuration information extraction unit192generates a system requirement of a subsystem in which the subsystem shown in the system requirement R201and the subsystem shown in the system requirement R203are grouped, based on the elements of the power set {functional layer, network layer}. The part configuration information extraction unit192generates a system requirement of a subsystem in which the subsystem shown in the system requirement R202and the subsystem shown in the system requirement R203grouped, based on the elements of the power set {platform layer, network layer}.

In this case as well, the part configuration information extraction unit192can obtain system requirements of various scales by generating system requirements based on each element of the power set.

Therefore, the reinforcement learning unit191may perform reinforcement learning based on each system requirement by using the system requirements generated by the part configuration information extraction unit192in ascending order of their scale. As a result, it is expected that the reinforcement learning unit191will learn more than the case where the reinforcement learning based on the system requirement of the entire system is performed without the reinforcement learning based on the system requirements of the subsystems.

The reinforcement learning unit191may perform reinforcement learning using some of the system requirements of the plurality of system requirements generated by the part configuration information extraction unit in the process ofFIG. 14.

For example, after the reinforcement learning unit191performs reinforcement learning using each of the system requirements based on the elements each containing only one element among the elements of the power set, reinforcement learning may be performed based on the system requirement based on the element having the largest number of elements among the elements of the power set. The system requirement based on the element having the largest number of elements among the elements of the power set is the system requirement of the entire system.

Further, the part configuration information extraction unit192may generate only system requirements based on some of the elements among the elements of the power set.

<Extraction of Abstract Parts of System Requirement>

The part configuration information extraction unit192may extract the abstract part from the system requirement.

FIG. 15is a diagram showing an example of an abstract part extracted from the system requirement.FIG. 15shows an example in which the part configuration information extraction unit192extracts an abstract part from the system requirement shown inFIG. 2. In the example ofFIG. 2, the nodes N101, N104, N105, and N107correspond to abstract nodes, and the part configuration information extraction unit192extracts the subgraph that includes these nodes and the edges between these nodes (edges E103, E105, and E107).

The part configuration information extraction unit192extracts the abstract part from among the system requirement, so that the originally concrete part is excluded from the system requirement. As a result, in the tree shown inFIG. 5, the size of the tree becomes relatively small because there is no option of designing by utilizing the originally concrete part, or designing by newly designing without utilizing it. This increases the frequency with which rewards are obtained in learning. In this respect, it is expected that the reinforcement learning of the reinforcement learning unit191will proceed.

After the reinforcement learning unit191performs reinforcement learning using the system requirement generated by extracting the abstract part from the system requirement given by the part configuration information extraction unit192, reinforcement learning may be performed using the original system requirement (given system requirement).

FIG. 16is a flowchart showing an example of a processing procedure in which the reinforcement learning device11extracts an abstract part from the system requirement.

In the process ofFIG. 16, the part configuration information extraction unit192extracts all the abstract nodes included in the graph given as the system requirement (step S601). As mentioned above, in the case of the examples ofFIG. 2andFIG. 15, the abstract nodes are nodes N101, N104, N105, and N107.

Next, the part configuration information extraction unit192extracts all the edges between the abstract nodes extracted in step S601. As mentioned above, in the case of the examples ofFIG. 2andFIG. 15, the edges between the abstract nodes are edges E103, E105, and E107.

Then, the part configuration information extraction unit192combines the node obtained in step S601and the edge obtained in step S602with a connection relationship same as the connection relationship in the original system requirement, to generate a system requirement (Step S603).

After step S603, the reinforcement learning device11ends the process ofFIG. 16.

As described above, the reinforcement learning unit191acquires the first information showing the system configuration in a graph. The part configuration information extraction unit192extracts the second information graphically showing the configuration of the part of the system indicated by the first information.

The reinforcement learning unit191can perform relatively complicated reinforcement learning using the first information, after performing relatively simple reinforcement learning using the second information. Therefore, it is expected that learning will proceed more than when reinforcement learning using the first information is performed without reinforcement learning using the second information.

Further, the part configuration information extraction unit192extracts the second information indicating the part configuration including at least one part of the system divided based on the network domain.

In this way, it is expected that people can easily understand the subsystem indicated by the obtained system requirement, by generating the system requirement as a result of the part configuration information extraction unit192dividing the system based on the network domain. Since the obtained subsystem is easy for people to understand, it is relatively easy for people to verify whether or not the division of the system (system requirement) by the part configuration information extraction unit192is appropriate.

Also, since a subsystem that is easy for people to understand can be obtained, it is expected that the system design will be successful if the obtained subsystem is concretized in the same way as when a person designs the system. Therefore, by preparing a rule indicating the concretization that is considered to be performed when a person designs the system, as the conversion rule applied to the system requirement by the reinforcement learning unit191in step S203ofFIG. 9, it is expected that the reinforcement learning unit191will succeed in designing the subsystem. As a result of the reinforcement learning unit191succeeding in designing the subsystem, it is expected that the learning of the evaluation model will proceed.

In addition from the point that, as a conversion rule applied to the system requirement by the reinforcement learning unit191, a rule is prepared indicating a concretization (method of embodying an abstract part) that is considered to be performed when a person designs a system, a person who prepares a conversion rule can define the conversion rule relatively easily.

Further, the part configuration information extraction unit192extracts the second information indicating the configuration of the part including at least one part of the system divided based on the layer.

In this way, as a result of the part configuration information extraction unit192generating the system requirements by dividing the system based on the layers, it is expected that people can easily understand the subsystem indicated by the obtained system requirements. Since the obtained subsystems are easy for people to understand, it is relatively easy for people to verify whether or not the division of system requirement by the part configuration information extraction unit192is appropriate.

Also, since a subsystem that is easy for people to understand can be obtained, it is expected that the system design will be successful if the obtained subsystem is concretized in the same way as when a person designs the system. Therefore, by preparing a rule indicating the concretization that is considered to be performed when a person designs the system, as the conversion rule applied to the system requirement by the reinforcement learning unit191in step S203ofFIG. 9, it is expected that the reinforcement learning unit191will succeed in designing the subsystem. As a result of the reinforcement learning unit191succeeding in designing the subsystem, it is expected that the learning of the evaluation model will proceed.

In addition, from the point that, as a conversion rule applied to the system requirement by the reinforcement learning unit191, a rule is prepared indicating a concretization that is considered to be performed when a person designs a system, a person who prepares a conversion rule can define the conversion rule relatively easily.

Further, the part configuration information extraction unit192extracts the second information indicating the configuration of the part where the system configuration is abstractly shown by the first information.

By extracting the abstract part of the system requirements by the part configuration information extraction unit192, the scale of the system can be made relatively small, leaving the abstract part to be concretized in the system design. As a result, the reinforcement learning unit191can perform reinforcement learning using system requirements on a relatively small scale. In this respect, it is expected that the reinforcement learning of the reinforcement learning unit191will proceed.

Further, the part configuration information extraction unit192extracts the second information by further applying a second part extraction method to a part extracted by applying a first part extraction method to the first information. The first and second part extraction methods may be different from each other.

By applying a plurality of part extraction methods to the system requirement (first information), the part configuration information extraction unit192can obtain a system requirement (second information) that is smaller in scale than when only one part extraction method is applied. As a result, the reinforcement learning unit191can perform reinforcement learning using a system requirement with a relatively small scale. In this respect, it is expected that the reinforcement learning of the reinforcement learning unit191will proceed.

FIG. 17is a diagram showing an example of the configuration of a part extraction device500according to an example embodiment. The part extraction device500shown inFIG. 17includes a configuration information acquisition unit501and a part configuration information extraction unit502. With such a configuration, the configuration information acquisition unit501acquires the first information showing the system configuration in a graph. The part configuration information extraction unit502extracts the second information graphically showing the configuration of the part of the system indicated by the first information.

The configuration information acquisition unit501corresponds to an example of a configuration information acquisition means. The part configuration information extraction unit502corresponds to an example of a part configuration information extraction means.

According to the part extraction device500, when the evaluation model for system design is learned by reinforcement learning, then after performing relatively simple reinforcement learning using the second information, relatively complex reinforcement learning can be performed using the first information. As a result, it is expected that learning will proceed more than when reinforcement learning using the first information is performed without reinforcement learning using the second information.

FIG. 18is a flowchart showing an example of a processing procedure in a part extraction method according to an example embodiment.

The process shown inFIG. 18includes a configuration information acquisition step (step S701) and a part configuration information extraction step (step S702).

According to the process shown inFIG. 18, when the evaluation model for system design is learned by reinforcement learning, then after performing relatively simple reinforcement learning using the second information, relatively complex reinforcement learning can be performed using the first information. As a result, it is expected that learning will proceed more than when reinforcement learning using the first information is performed without reinforcement learning using the second information.

FIG. 19is a schematic block diagram showing a configuration of a computer according to at least one example embodiment.

In the configuration shown inFIG. 19, the computer700includes a CPU710, a main storage device720, an auxiliary storage device730, and an interface740.

Any one or more of the above-mentioned reinforcement learning device11, the system design device12, and the part extraction device500may be mounted on the computer700. In that case, the operation of each of the above-mentioned processing units is stored in the auxiliary storage device730in the form of a program. The CPU710reads the program from the auxiliary storage device730, expands it to the main storage device720, and executes the above processing according to the program. Further, the CPU710secures a storage area corresponding to each of the above-mentioned storage units, in the main storage device720according to the program.

When the reinforcement learning device11is mounted on the computer700, the operations of the first control unit190and each unit thereof are stored in the auxiliary storage device730in the form of a program. The CPU710reads the program from the auxiliary storage device730, expands it to the main storage device720, and executes the above processing according to the program.

Further, the CPU710secures a storage area corresponding to the first storage unit180, in the main storage device720according to the program.

Communication by the first communication unit110is executed by having the interface740have a communication function, and performing communication according to the control of the CPU710.

When the system design device12is mounted on the computer700, the operations of the second control unit290and each unit thereof are stored in the auxiliary storage device730in the form of a program. The CPU710reads the program from the auxiliary storage device730, expands it to the main storage device720, and executes the above processing according to the program.

Further, the CPU710secures a storage area corresponding to the second storage unit280, in the main storage device720according to the program.

Communication by the second communication unit210is executed by having the interface740have a communication function, and performing communication according to the control of the CPU710.

When the part extraction device500is mounted on the computer700, the operations of the configuration information acquisition unit501and the part configuration information extraction unit502are stored in the auxiliary storage device730in the form of a program. The CPU710reads the program from the auxiliary storage device730, expands it to the main storage device720, and executes the above processing according to the program.

A program for realizing all or a part of the functions of the reinforcement learning device11, the system design device12, and the part extraction device500may be recorded on a computer-readable recording medium, and the processing of each part may be performed by loading the program recorded on this recording medium, into the computer system and executing it. The term “computer system” as used herein includes hardware such as an OS (operating system) and peripheral devices.

“Computer readable recording medium” includes storage devices such as flexible disks, magneto-optical disks, portable media such as ROM (Read Only Memory) and CD-ROM (Compact Disc Read Only Memory), and hard disks built into computer systems. Further, the above-mentioned program may be a program for realizing a part of the above-mentioned functions, and may be a program for realizing the above-mentioned functions in combination with a program already recorded in the computer system.

Although example embodiments of the present invention have been described in detail with reference to the drawings, the specific configuration is not limited to these example embodiments, and design changes and the like within a range not deviating from the gist of the present invention are also included.

The present invention has been described in detail above. However, the present invention is not limited to the example embodiments above, and various modifications may be made to the above configurations without departing from the scope of the invention.