<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Automatic model repair using reinforcement learning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Angela Barriga</string-name>
          <email>abar@hvl.no</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Adrian Rutle</string-name>
          <email>aru@hvl.no</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rogardt Heldal</string-name>
          <email>rohe@hvl.no</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Western Norway University of, Applied Sciences</institution>
          ,
          <addr-line>Bergen</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>When performing modeling activities, the chances of breaking a model increase together with the size of development teams and number of changes in software specifications. One option to prevent and repair broken models is to automatize this process with a software tool, using techniques like Machine Learning (ML). Despite its potential to help fixing models, it is still challenging to apply ML techniques in the modeling domain due to the lack of available datasets. However, some ML branches could ofer promising results since they do not require initial training data, such as Unsupervised and Reinforcement Learning (RL). In this paper we present a prototype tool for automatic model repairing by using RL algorithms. These algorithms could potentially reach model repairing with human-quality without requiring supervision. To conduct an initial evaluation we have tested our prototype with a set of broken models and studied its execution and results.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>CCS CONCEPTS</title>
      <p>• Computing methodologies → Reinforcement learning; Model
verification and validation ; • Software and its engineering →
Risk management; • Theory of computation → Theory and
algorithms for application domains;</p>
    </sec>
    <sec id="sec-2">
      <title>INTRODUCTION</title>
      <p>
        Models are used to develop key parts of systems in engineering
domains [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Therefore, the correctness and accuracy of such
models are of the utmost importance to maintain good quality during
the development of these systems. The complexity of keeping
models free of errors grows together with the size of working teams
and number changes during the development process. Tracking all
versions of the same model and checking its correctness can be a
challenging task, especially if also the size of the model increases.
Automation can be a good solution to ease the complexity of this
process by periodically checking if a model is free of errors and
repairing them when they occur. Tools that automatize or support
error detection and repairing of models can greatly improve how
organizations deal with Model-Driven engineering processes by
reducing the burden of manually dealing with correctness issues
and improving delivery time and final quality.
      </p>
      <p>
        To this end, there already exists many tools and research eforts
[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] for automatically resolving software bugs that have shown
promising results. Examples of developed prototypes for model
repairing can be found in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] where authors achieve repairing by
aligning models and their behavior logs or in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] where EMF
models are repaired by using a rule-based interactive approach.
Other contributions take into account the editing history of a model
such as [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] with a tool to generate repair suggestions and [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]
with a prototype based on graph transformation theory.
      </p>
      <p>
        However, and despite the potential already shown by Machine
Learning (ML) in achieving (and sometimes even surpassing) human
performance in repetitive tasks, we could not find in the literature
any research applying ML to improve how developers deal with
cyclical tasks in modeling, such as repairing. Authors in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] stress
how the combination of these two fields, ML and modeling, could
be really beneficial for the future of modeling and state some
application examples. ML has already shown its efectiveness providing
support and independently solving diferent tasks in software
engineering like testing [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], quality assurance [
        <xref ref-type="bibr" rid="ref15 ref4">4, 15</xref>
        ] or verification
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        The biggest challenge for ML adoption within modeling is the
lack of historical data available publicly, since most ML algorithms
need great amounts of datasets in order to achieve high-quality
results. Some available model repositories are [
        <xref ref-type="bibr" rid="ref1 ref11 ref7">1, 7, 11</xref>
        ], yet the
data they ofer is limited in terms of diversity and labeling. Still,
until the available model datasets grow and improve, there are
some ML algorithms that could work overcoming this data issue.
Unlike other ML techniques, Reinforcement Learning (RL) does not
require training datasets, since their purpose is to find structures in
the data they work with without supplying any target or outcome
beforehand. This make them useful in situations and domains which
lack historical data.
      </p>
      <p>Another issue is that the size of search space when performing
automatic repairing can grow exponentially when the target model
has enough content. In addition, potential interesting fixes are
usually not unique, the same model could be repaired in many diferent
ways, adding complexity and uncertainty into ML algorithms.</p>
      <p>RL ofers algorithms able to learn by themselves how to interact
in an environment by providing them a set of possible actions and
rewards for each of them. Using these rewards they can learn which
are the best actions to perform in said environment. Rewards can be
established so that algorithms learn how to fix undesired situations
or problems in the environment, such as conflicts with non-unique
repairing actions. The search space can be reduced by classifying
actions available accordingly to the error to fix. Actions that could
never interact with an error could be omitted.</p>
      <p>
        This technique dates from the 80s, however, it has been during
last years due to the decreasing price of hardware and increasing
of computational power, that it has produced breakthrough results
in tasks as diferent as: reaching above-human-level performance
in video and board games [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], improving existing algorithms [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]
or teaching simulation entities and robots themselves to walk [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>Given the potential these algorithms ofer together with the need
of automated tools for model repair, we consider that studying how
to apply RL for autonomous model repair could provide interesting
results, with the possibility to achieve human performance in fixing
models.</p>
      <p>Hence in this paper we present a prototype of how a RL
algorithm can repair errors in a set of broken models without human
intervention, showing its execution and results. In this first
approach, we consider errors related to violations of well-formedness
constraints, with the idea to generalize the type of errors supported
after further development.
2</p>
    </sec>
    <sec id="sec-3">
      <title>AUTOMATIC MODEL REPAIR TOOL</title>
      <p>The Automatic Model Repair Tool (AMRT) is able, by using RL
techniques, to choose and apply the best actions to fix a broken
model. During this process the tool is independent from the user
and does not require any supervision.
2.1</p>
    </sec>
    <sec id="sec-4">
      <title>Algorithm</title>
      <p>RL consists of algorithms that learn what to do, given a situation
and a set of possible actions to choose from, in order to maximize a
reward. These algorithms include an agent that must learn by itself
what to do through interacting with the environment. Learning is
accomplished by choosing those available actions with best rewards.</p>
      <p>In the model repair scenario, the agent is the model to be repaired
and the environment the framework where it was defined (EMF
in our approach). EMF provides error diagnostics about the model,
which can be altered by actions available in the framework. If the
algorithm selects actions reducing the number of errors in the model
it gets a positive reward, contrarily it is penalized. This algorithm
workflow is detailed in Fig. 1.</p>
      <p>When there are no more errors to solve the environment returns
a maximum reward, the ultimate goal to achieve. This guarantees
to solve all errors on the model but since there might be many ways
to solve them, the algorithm might not find the optimal solution.
However, it could be reached by providing the algorithm with more
models to solve so that it learns further or by manually favoring
some rewards over others.</p>
      <p>
        AMRT is powered by a Q-Learning algorithm [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. We will apply
this algorithm to a sample EMF model in section 2.3, here we only
explain the main characteristics of the algorithm.
      </p>
      <p>
        In Q-Learning, the agent chooses the most optimal action by
consulting a table structure called Q-table. This table is updated
while the agent interacts with the environment with repeated
calculations of the Bellman Equation [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. This equation returns a Q-value
telling that the maximum future reward is the reward (r) the agent
received for entering the current state (s) with some action (a) plus
the maximum future reward for the next state (s’) and action (a’)
reduced by a discount factor (gamma) to avoid falling in a local
maximum (see Fig. 1). This allow to infer the value of the current
state (s) based on the calculation of the next one (s’), which can be
used to calculate an optimal policy to select actions.
      </p>
      <p>Q(s, a) = r + γ (maa′x(Q(s ′, a′))</p>
      <p>From here the algorithm can determine the utility of a state and
the optimal action to do next until it reaches its final goal (maximum
reward). Each iteration (attempt made by the agent) is called an
episode. For each episode, the agent will try to achieve the goal
state and for every transition (pair of state and action) it will keep
on updating the values of the Q table.</p>
      <p>Qt +1(st , at ) = Qt (st , at ) + α (rt +1 + γ max Qt (st +1, a) − Qt (st , at ))
a
2.2</p>
    </sec>
    <sec id="sec-5">
      <title>Phases</title>
      <p>The tool undergoes two diferent phases: learning and running.
During the learning phase, the Q-learning algorithm will be trained
using one or diferent models, updating its Q-table and improving
the general Q-value. In other words, learning which are the optimal
actions to fix a broken model.</p>
      <p>The algorithm will receive as initial input:
(1) An agent: model in XML format.
(2) Actions: given Ecore and Ecore-editor, find the exhaustive set
of editions which are possible actions available to perform
on the model.
(3) State: given a model, get an error diagnostics from the EMF
tool.</p>
      <p>As the algorithm is executed, for each action performed on the
model it will need to know its current state, namely it will need to
be connected to EMF to iteratively update the model and analyse its
errors. The Q-value will be optimized until the model has no errors
left. This structure can be seen in detail in Fig. 2 and as pseudocde
in Alg. 1. The more models provided to the algorithm the better
performance it can get.</p>
      <p>Once the algorithm has improved enough, the tool can enter into
the running phase like a trained package pluggable to EMF. As a
plugin it will be able to analyze and repair models directly on EMF
without any supervision required. Still, it could be possible to open
its behavior for human interaction, allowing users to give feedback
to the tool about decisions made so that it can learn from human
choices and to personalize its performance.
2.3</p>
    </sec>
    <sec id="sec-6">
      <title>Example</title>
      <p>In this section, we introduce a running example in AMRT and
demonstrate how the algorithm repairs all errors in a sample model
from scratch. For this example we have assumed the available
actions to perform are:
(1) Action 0 - Rename class
(2) Action 1 - Delete super type
(3) Action 2 - Rename attribute
(4) Action 3 - Add type to attribute</p>
      <sec id="sec-6-1">
        <title>Algorithm 1 AMRT Algorithm</title>
        <p>Initialize: Q-matrix, Gamma
INPUT: from EMF (Model, Actions, Errors)
while Episodes not empty do
for each Error s do
for Steps in Episode do</p>
        <p>Select Action a // random or highest Q-value
Evaluate changes in Model produced by a</p>
        <p>Update Q-table
if s is solved then</p>
        <p>Delete s</p>
        <p>Exit for
else
s’ ← s // s’ stores s modified by a</p>
        <p>Save s’ in Errors</p>
        <p>We have preferred to omit delete class/attribute actions, keeping
the example as simple as possible since they could also technically
solve errors in the models but would not provide correct solutions
(e.g.; by deleting the class Web its attributes would have no
duplicated names anymore). However, this behavior can be controlled
by reducing the rewards of this kind of actions and they would not
be a problem in a real environment.</p>
        <p>The algorithm counts with a maximum of 20 episodes and 3
steps per episode, this number is low as it also is the amount of
pairs (action, error ) available, allowing us to take further insight
about how the algorithm interacts with the model (contrarily it
would find the solution faster but its decision process would not be
so visible).</p>
        <p>Additionally, the algorithm can sometime pick random actions
instead of the one with biggest reward, in order to find new and
perhaps more optimal solutions. Our random probability for this
example is 10% since it is a really controlled environment and our
objective is to prove how the algorithm learns by itself.</p>
        <p>During this section errors will be identified using numbers:
(1) Error 0 - Duplicated attribute name.
(2) Error 1 - Attribute with missing type.
(3) Error 2 - Class super type of itself.
(4) Error 3 - Duplicated class name.</p>
        <p>The selected model represents part of a Web structure and
consists of three classes related with a reference, a composition and a
super type link, as can be seen in Fig 3.</p>
        <p>[0..*] webpage</p>
        <p>The algorithm starts without any knowledge about the
environment, therefore it starts by exploring for each error the diferent
actions available. First attempt is to solve Error 0 using Action 0
without success. The algorithm updates then the Q-table and learns
that Action 0 does not solve Error 0. Next action is picked randomly
and it solves Error 0. Here the randomness component has increased
the speed for finding a solution. Next error to solve is Error 2, since
it is the first time the algorithm processes this error, it tries actions
available one by one. It finds the solution by applying Action 1.
Next the algorithm faces Error 1, again an unknown Error. This
time we can see how it explore all actions (even trying a random
repetition with Action 1) until it finds the solution in the last one,
Action 3.</p>
        <p>After a few iterations, the algorithm has been able to fix all errors
in the model without any previous training.
2.4</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Evaluation</title>
      <p>Once the algorithm has learned about the environment, it is
interesting to evaluate its flexibility by repairing other models and how
its performance improves.</p>
      <p>We have applied the AMRT on a set of models created with
errors reparable by the available actions stated in Sec. 2.3.</p>
      <p>The set contains four models. For each model we include an
enumeration of present errors, its diagram and a table showing
how its is fixed by the algorithm. We present them in the order
they are processed by the algorithm. For each model the Q-table is
updated and saved for the next one.</p>
      <sec id="sec-7-1">
        <title>2.4.1 Second model.</title>
        <p>[0..1] car</p>
        <p>With this model, a new error is introduced into the system, Error
3. One can see in Table 4 that the algorithm starts by selecting for
it a wrong random action but is able to fix it with the second action
chosen. Next, although Error 0 is already known, Q-table still needs
to be tuned and it finds a solution on step 2. Finally, it is able to
ifnd a solution for Error 1 at the first attempt.</p>
        <p>Although it is only the second model processed by the algorithm,
the fixing process is already performed faster.</p>
        <p>2.4.2</p>
      </sec>
      <sec id="sec-7-2">
        <title>Third model.</title>
        <sec id="sec-7-2-1">
          <title>Errors: (1) House: duplicated attribute name (Error 0). (2) House: attribute without type (Error 1).</title>
          <p>(1) Machine: duplicated class name (Error 3).
(2) Machine: duplicated attribute name (Error 0).
(3) Machine: attribute without type (Error 1).
(4) Machine: the class is super type of itself (Error 2).
(5) Machine’: duplicated attribute name (Error 0’).
(6) Machine’: the class is super type of itself (Error 2’).</p>
          <p>The evaluation shows that AMRT is able to automatically repair
a model without any previous training. Once the algorithm gains
enough knowledge, it is able to repair new models straightforwardly
as long as they are reparable by the set of known actions.</p>
          <p>Performance improves really quick, allowing the AMRT to fix
models almost directly after a couple of models processed.</p>
          <p>Figure 8 shows how the accuracy percentage evolves through the
models processed. Improvement is clear, the percentage increases
each iteration except for the fourth model. However, as showed in
Table 6, the only wrong action picked for this model was caused
by the random dimension of the algorithm (10% of the actions are
selected randomly instead of picking the best possible one in the
Q-table), and without it 100% accuracy would have been reached.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>RELATED WORK</title>
      <p>Model repair is a research field which results can greatly improve
how engineers interact with model-driven projects. Thus, it has
drawn the interests of many researchers to formulate approaches
and build diferent tools to fix broken models.</p>
      <p>
        Some research tackle model repair relating a given model to its
past event logs. Fahland et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] study model repairing by aligning
a given model with its behavior logs. Their model repair technique
cover the whole state space even if there is total conformance
between models and logs. Our proposed technique avoid processing
the totality of the state space at once, allowing subdivision for each
error and its available actions.
      </p>
      <p>
        Other eforts focus on rule-based approaches. Nassar et al. [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]
present a prototype where EMF models are automatically trimmed
and completed, with user intervention in the process. Their tool
works as a support guide for modelers. For us, it is also important to
provide user interaction but our aim is to give the prototype freedom
to perform its own decisions (although they can be supervised by
the user if he desires so).
      </p>
      <p>
        Alternative contributions take into account the editing history
of a model such as Ohrndorf et al. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] with a tool that generates
repair suggestions. Their method presents the interesting idea of
identifying which change in the editing history originated an error.
However, the tool works again just as a mere recommendation
system and it does not have decision power. Additionally their
approach only works if the model comes together with its edit
history, not if the model is introduced with errors from scratch.
      </p>
      <p>
        Taentzer et al. [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] present a prototype based on graph
transformation theory for change-preserving model repair. In their
approach, authors check operations performed on a model to
identify which caused inconsistencies and apply the correspondent
consistency-preserving operations, maintaining already performed
changes on the model. Their preservation approach is interesting,
however it only works assuming that the latest change of the model
is the most significant. This could not work in all environments
lacking therefore adaptability and reusability, for instance in
situations where inconsistencies happen due to simultaneous commits
from team members.
      </p>
      <p>
        Kretschmer et al. introduce in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] an approach for discovering
and validating values for repairing inconsistencies automatically.
Values are found by using a validation tree to reduce the state
space size. Their approach is similar to ours but we believe RL can
reduce state space even more than a tree-based search, especially
when tuning rewards and tackling errors independently. Also, trees
tend to lead to the same solutions once and again due to their
exploitation nature (probing a limited region of the search space).
Diferently, RL algorithms include both exploitation and exploration
(randomly exploring a much larger portion of the search space with
the hope of finding other promising solutions that would not be
selected normally), allowing to find new and, sometimes more
optimal solutions for a given problem.
      </p>
      <p>
        Lastly, again Kretschmer et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] propose an automated tool to
repair inconsistencies. They propose generator functions to make
their tool more generic and users have to add their own generator
functions. We go a step forward using RL techniques that extend
the scope of our approach and provide the flexibility for reusing
the framework to be applied in a wide variety of model repairing
cases. Also, we get the available actions directly from EMF, without
needing further intervention from the user.
4
      </p>
    </sec>
    <sec id="sec-9">
      <title>FUTURE WORK</title>
      <p>In the following section, we discuss the next research steps and
how to improve our current results.</p>
      <p>At the moment, the tool simulates to be connected with EMF
in order to receive models, errors and actions. Next immediate
step is to actually implement and test the tool connected with the
framework. Additionally, it will be necessary to develop a plugin
and test how it works with models directly on the EMF environment.</p>
      <p>
        In order to reach better results and further validation, we will
test the tool on a bigger set of models. These will be obtained by
creating a number of EMF models (either manually or from tools
like [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], from a public repository such as [
        <xref ref-type="bibr" rid="ref1 ref11 ref7">1, 7, 11</xref>
        ] or by extracting
them from general repositories like GitHub by using data mining
techniques. These models will be analyzed and repaired by the
tool using the complete set of actions available in EMF. We will
study how the tool performances in this more complex scenario
and modify it until it reaches an optimal performance. Additionally,
we will research diferent modifications of the algorithm in order
to find the best way to face model repairing, as well as testing other
RL algorithms [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Finally, we would like to study further to which degree the
interaction between users and the algorithm can benefit the final
result, which are the best terms to develop said interaction and to
identify the most crucial operations for model developers subject to
be improved by using ML. We would like to focus especially on how
users can boost the algorithm decidability when facing situations
where diferent actions are able to apply the same fix on the model.
5</p>
    </sec>
    <sec id="sec-10">
      <title>CONCLUSIONS</title>
      <p>In this paper, we have proposed the use of RL algorithms to fix
broken models. Contrarily to other ML techniques, RL algorithms
do not need as many data as they do not require an initial dataset
and are known for working well in finding solutions in unknown
environments.</p>
      <p>We present AMRT, a tool that given a broken model and a set of
editing actions available, is able to find mistakes and which actions
can repair them. This combination of RL and automatic fixing could
potentially allow model repairing at human-level without requiring
supervision.</p>
      <p>While the results obtained are still at an early stage, we consider
them promising and an indicator of the potential in this research
line.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Basciani</surname>
          </string-name>
          , Juri Di Rocco, Davide Di Ruscio, Amleto Di Salle, Ludovico Iovino, and
          <string-name>
            <given-names>Alfonso</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>MDEForge: an Extensible Web-Based Modeling Platform.</article-title>
          .
          <source>In CloudMDE@ MoDELS</source>
          .
          <fpage>66</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Richard</given-names>
            <surname>Bellman</surname>
          </string-name>
          .
          <year>2013</year>
          .
          <article-title>Dynamic programming</article-title>
          .
          <source>Courier Corporation.</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Jordi</given-names>
            <surname>Cabot</surname>
          </string-name>
          , Robert Clarisó, Marco Brambilla, and
          <string-name>
            <given-names>Sébastien</given-names>
            <surname>Gérard</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Cognifying Model-Driven Software Engineering</article-title>
          .
          <source>In Federation of International Conferences on Software Technologies: Applications and Foundations</source>
          . Springer,
          <fpage>154</fpage>
          -
          <lpage>160</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Kanika</given-names>
            <surname>Chandra</surname>
          </string-name>
          , Gagan Kapoor, Rashi Kohli, and
          <string-name>
            <given-names>Archana</given-names>
            <surname>Gupta</surname>
          </string-name>
          .
          <year>2016</year>
          .
          <article-title>Improving software quality using machine learning</article-title>
          .
          <source>In Innovation and Challenges in Cyber Security (ICICCS-INBUSH)</source>
          ,
          <source>2016 International Conference on. IEEE</source>
          ,
          <fpage>115</fpage>
          -
          <lpage>118</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Richard</given-names>
            <surname>Chang</surname>
          </string-name>
          , Sriram Sankaranarayanan, Guofei Jiang, and
          <string-name>
            <given-names>Franjo</given-names>
            <surname>Ivancic</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Software testing using machine learning</article-title>
          .
          <source>US Patent 8</source>
          ,
          <issue>924</issue>
          ,
          <fpage>938</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Dirk</given-names>
            <surname>Fahland</surname>
          </string-name>
          and
          <string-name>
            <surname>Wil MP van der Aalst</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Model repair-aligning process models to reality</article-title>
          .
          <source>Information Systems</source>
          <volume>47</volume>
          (
          <year>2015</year>
          ),
          <fpage>220</fpage>
          -
          <lpage>243</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Robert</surname>
            <given-names>B France</given-names>
          </string-name>
          , James M Bieman, Sai Pradeep Mandalaparty, Betty HC Cheng, and Adam C Jensen.
          <year>2012</year>
          .
          <article-title>Repository for model driven development (ReMoDD)</article-title>
          .
          <source>In Proceedings of the 34th International Conference on Software Engineering</source>
          . IEEE Press,
          <fpage>1471</fpage>
          -
          <lpage>1472</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Oliver</given-names>
            <surname>Friedrichs</surname>
          </string-name>
          , Alfred Huger, and
          <string-name>
            <surname>Adam J O'donnell</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Method and apparatus for detecting malicious software through contextual convictions, generic signatures and machine learning techniques</article-title>
          .
          <source>US Patent 9</source>
          ,
          <issue>088</issue>
          ,
          <fpage>601</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Nicolas</given-names>
            <surname>Heess</surname>
          </string-name>
          , Srinivasan Sriram, Jay Lemmon, Josh Merel, Greg Wayne, Yuval Tassa, Tom Erez,
          <string-name>
            <given-names>Ziyu</given-names>
            <surname>Wang</surname>
          </string-name>
          , Ali Eslami,
          <string-name>
            <given-names>Martin</given-names>
            <surname>Riedmiller</surname>
          </string-name>
          , et al.
          <year>2017</year>
          .
          <article-title>Emergence of locomotion behaviours in rich environments</article-title>
          .
          <source>arXiv preprint arXiv:1707.02286</source>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Leslie</given-names>
            <surname>Pack Kaelbling</surname>
          </string-name>
          , Michael L Littman, and Andrew W Moore.
          <year>1996</year>
          .
          <article-title>Reinforcement learning: A survey</article-title>
          .
          <source>Journal of artificial intelligence research 4</source>
          (
          <year>1996</year>
          ),
          <fpage>237</fpage>
          -
          <lpage>285</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Bilal</given-names>
            <surname>Karasneh</surname>
          </string-name>
          and Michel RV Chaudron.
          <year>2013</year>
          .
          <article-title>Online Img2UML Repository: An Online Repository for UML Models.</article-title>
          .
          <source>In EESSMOD@ MoDELS</source>
          .
          <fpage>61</fpage>
          -
          <lpage>66</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Roland</surname>
            <given-names>Kretschmer</given-names>
          </string-name>
          , Djamel Eddine Khelladi, Andreas Demuth, Roberto E LopezHerrejon, and
          <string-name>
            <given-names>Alexander</given-names>
            <surname>Egyed</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>From Abstract to Concrete Repairs of Model Inconsistencies: an Automated Approach</article-title>
          .
          <source>In 2017 24th Asia-Pacific Software Engineering Conference (APSEC)</source>
          . IEEE,
          <fpage>456</fpage>
          -
          <lpage>465</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Roland</surname>
            <given-names>Kretschmer</given-names>
          </string-name>
          , Djamel Eddine Khelladi, and
          <string-name>
            <given-names>Alexander</given-names>
            <surname>Egyed</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>An automated and instant discovery of concrete repairs for model inconsistencies</article-title>
          .
          <source>In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings. ACM</source>
          ,
          <volume>298</volume>
          -
          <fpage>299</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Ryan</surname>
            <given-names>Lowe</given-names>
          </string-name>
          , Yi Wu, Aviv Tamar, Jean Harb, OpenAI Pieter Abbeel, and
          <string-name>
            <given-names>Igor</given-names>
            <surname>Mordatch</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Multi-agent actor-critic for mixed cooperative-competitive environments</article-title>
          .
          <source>In Advances in Neural Information Processing Systems</source>
          .
          <volume>6382</volume>
          -
          <fpage>6393</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Ruchika</given-names>
            <surname>Malhotra</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>A systematic review of machine learning techniques for software fault prediction</article-title>
          .
          <source>Applied Soft Computing</source>
          <volume>27</volume>
          (
          <year>2015</year>
          ),
          <fpage>504</fpage>
          -
          <lpage>518</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Martin</given-names>
            <surname>Monperrus</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>Automatic software repair: a bibliography</article-title>
          .
          <source>ACM Computing Surveys (CSUR) 51</source>
          ,
          <issue>1</issue>
          (
          <year>2018</year>
          ),
          <fpage>17</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Nebras</surname>
            <given-names>Nassar</given-names>
          </string-name>
          , Hendrik Radke, and
          <string-name>
            <given-names>Thorsten</given-names>
            <surname>Arendt</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Rule-Based Repair of EMF Models: An Automated Interactive Approach</article-title>
          .
          <source>In International Conference on Theory and Practice of Model Transformations</source>
          . Springer,
          <fpage>171</fpage>
          -
          <lpage>181</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Manuel</surname>
            <given-names>Ohrndorf</given-names>
          </string-name>
          , Christopher Pietsch, Udo Kelter, and
          <string-name>
            <given-names>Timo</given-names>
            <surname>Kehrer</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>ReVision: a tool for history-based model repair recommendations</article-title>
          .
          <source>In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings. ACM</source>
          ,
          <volume>105</volume>
          -
          <fpage>108</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>David</given-names>
            <surname>Silver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Julian</given-names>
            <surname>Schrittwieser</surname>
          </string-name>
          , Karen Simonyan, Ioannis Antonoglou, Aja Huang, Arthur Guez, Thomas Hubert, Lucas Baker, Matthew Lai,
          <string-name>
            <given-names>Adrian</given-names>
            <surname>Bolton</surname>
          </string-name>
          , et al.
          <year>2017</year>
          .
          <article-title>Mastering the game of go without human knowledge</article-title>
          .
          <source>Nature</source>
          <volume>550</volume>
          ,
          <issue>7676</issue>
          (
          <year>2017</year>
          ),
          <fpage>354</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Gabriele</surname>
            <given-names>Taentzer</given-names>
          </string-name>
          , Manuel Ohrndorf, Yngve Lamo, and
          <string-name>
            <given-names>Adrian</given-names>
            <surname>Rutle</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Change-preserving model repair</article-title>
          . In International Conference on Fundamental Approaches to Software Engineering. Springer,
          <fpage>283</fpage>
          -
          <lpage>299</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21] Antonio Vallecillo, Frank Hilken, Loli Burgueño,
          <string-name>
            <given-names>Martin</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , et al.
          <year>2016</year>
          .
          <article-title>Generating Efective Test Suites for Model Transformations Using Classifying Terms</article-title>
          . (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Christopher</surname>
            <given-names>JCH</given-names>
          </string-name>
          <string-name>
            <surname>Watkins and Peter Dayan</surname>
          </string-name>
          .
          <year>1992</year>
          .
          <article-title>Q-learning</article-title>
          .
          <source>Machine learning 8</source>
          ,
          <fpage>3</fpage>
          -
          <lpage>4</lpage>
          (
          <year>1992</year>
          ),
          <fpage>279</fpage>
          -
          <lpage>292</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Jon</surname>
            <given-names>Whittle</given-names>
          </string-name>
          , John Hutchinson, and
          <string-name>
            <given-names>Mark</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>The state of practice in model-driven engineering</article-title>
          .
          <source>IEEE software 31</source>
          ,
          <issue>3</issue>
          (
          <year>2014</year>
          ),
          <fpage>79</fpage>
          -
          <lpage>85</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>