<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="brief-report" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Ind. Eng.</journal-id>
<journal-title>Frontiers in Industrial Engineering</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Ind. Eng.</abbrev-journal-title>
<issn pub-type="epub">2813-6047</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1266651</article-id>
<article-id pub-id-type="doi">10.3389/fieng.2023.1266651</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Industrial Engineering</subject>
<subj-group>
<subject>Perspective</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>We need a theoretical framework for the modernization of industrial legacy systems</article-title>
<alt-title alt-title-type="left-running-head">Garcia and Sritriratanarak</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fieng.2023.1266651">10.3389/fieng.2023.1266651</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Garcia</surname>
<given-names>Paulo</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2389116/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Sritriratanarak</surname>
<given-names>Warisa</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>International School of Engineering</institution>, <institution>Chulalongkorn University</institution>, <addr-line>Bangkok</addr-line>, <country>Thailand</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Department of Computer Engineering</institution>, <institution>Chulalongkorn University</institution>, <addr-line>Bangkok</addr-line>, <country>Thailand</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2037383/overview">Ivan Cibrario Bertolotti</ext-link>, National Research Council (CNR), Italy</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2029423/overview">Tihomir Opetuk</ext-link>, University of Zagreb, Croatia</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Paulo Garcia, <email>paulo.g@chula.ac.th</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>23</day>
<month>11</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>1</volume>
<elocation-id>1266651</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>07</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>03</day>
<month>11</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Garcia and Sritriratanarak.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Garcia and Sritriratanarak</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Industrial informatics brings computational intelligence to industry, powering the &#x201c;software-ization&#x201d; of manufacturing processes. However, when faced with the myriad of legacy systems that cannot be fully replaced cost-effectively, practitioners must retrofit computational intelligence into legacy systems. This modernization of legacy industrial systems is deceptively challenging: poor retrofitting can cause more harm than good, hindering overall metrics. We argue for a theoretical framework for modernizing legacy industrial systems. We illustrate the challenge within the context of the real-time performance of industrial cyber-physical systems by depicting a formalization of the problem and illustrating its impact through Monte Carlo methods. We show how knowledge of extant system internals constrains possible optimizations. We conclude by highlighting several research directions, including some recommendations, that must be pursued to establish a common theoretical underpinning that can inform practitioners.</p>
</abstract>
<kwd-group>
<kwd>industrial informatics</kwd>
<kwd>real-time</kwd>
<kwd>cyber-physical</kwd>
<kwd>legacy</kwd>
<kwd>retrofitting</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Industrial Informatics</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Industrial informatics (<xref ref-type="bibr" rid="B3">Bi, 2017</xref>) is a field that broadly consists of applying computing technologies to industrial environments (<xref ref-type="bibr" rid="B17">Lee et al., 2014</xref>). Its goal, within the context of Industry 4.0 (<xref ref-type="bibr" rid="B16">Lasi et al., 2014</xref>), is to move away from traditional, fully electro-mechanical systems toward cyber-components, that is, software-controlled industrial processes (<xref ref-type="bibr" rid="B20">Parri et al., 2021</xref>). This has several advantages over established practices, including safer and more secure environments, thanks to new monitoring technologies (<xref ref-type="bibr" rid="B25">Zhou and Peng, 2020</xref>); resilience and fault-tolerance (<xref ref-type="bibr" rid="B9">Gao et al., 2015</xref>); distributed and remote control and operation (<xref ref-type="bibr" rid="B5">Buse and Wu, 2004</xref>); and improved efficiency, thanks to the integration of optimization algorithms and artificial intelligence (<xref ref-type="bibr" rid="B10">Gaudio et al., 2021</xref>). The practice of developing industrial informatics is fairly codified in the literature, starting from industrial internet of things (<xref ref-type="bibr" rid="B6">Butun et al., 2020</xref>) to the broader umbrella of Industry 4.0 (<xref ref-type="bibr" rid="B11">Ghobakhloo, 2020</xref>).</p>
<p>However, one key aspect the literature lacks in the deployment of industrial informatics is a comprehensive theoretical framework (and associated tooling) for how to modernize extant industries&#x2014;retrofitting state-of-the-art industrial informatics into legacy systems. In the industrial context, blank-slate designs are seldom, if ever, the case; rather, (costly) legacy equipment is augmented to meet the goals of upgrades, requiring practitioners to employ <italic>ad hoc</italic> approaches to the scenario at hand (<xref ref-type="bibr" rid="B18">Lins et al., 2017</xref>).</p>
<p>Examples of such challenges can be found in the literature, including <xref ref-type="bibr" rid="B2">Ben-Guang et al. (2000)</xref>, <xref ref-type="bibr" rid="B14">Hills et al. (2016)</xref>, <xref ref-type="bibr" rid="B13">Guerreiro et al. (2018)</xref>, <xref ref-type="bibr" rid="B19">Lins and Oliveira (2020)</xref>, and <xref ref-type="bibr" rid="B23">Tran et al. (2022)</xref>. Unfortunately, almost all are confined in scope to the specific environment in which the authors were working, reflecting the lack of, and need for, a more holistic understanding of retrofitting practices in the discipline to help bring new technology to the industry (<xref ref-type="bibr" rid="B8">Fryer and Garcia, 2020</xref>).</p>
<p>Therefore, in alignment with the authors&#x2019; experience with retrofitting real-time systems (<xref ref-type="bibr" rid="B22">Tavares et al., 2012</xref>; <xref ref-type="bibr" rid="B12">Gomes et al., 2015</xref>), this paper presents a perspective on the problem regarding real-time operation which attempts to begin the scholarly development of such a comprehensive framework. We offer the following contributions:<list list-type="simple">
<list-item>
<p>&#x2022; Formalizing the problem of retrofitting real-time (cyber-physical) industrial systems with computational intelligence as a minimization problem.</p>
</list-item>
<list-item>
<p>&#x2022; Illustrating that many free terms in this formalism are not easily obtainable, nor reasonable bounds easily estimated, constituting the fundamental problem of dealing with legacy systems.</p>
</list-item>
<list-item>
<p>&#x2022; Demonstrating the potential negative impact of poorly chosen approaches through a Monte Carlo simulation method.</p>
</list-item>
<list-item>
<p>&#x2022; Deriving how knowledge of the internals of extant systems constrains possible optimization.</p>
</list-item>
<list-item>
<p>&#x2022; Providing some insights into what is required to inform these practices in the future.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s2">
<title>2 Retrofitting legacy systems: a model</title>
<sec id="s2-1">
<title>2.1 Legacy execution</title>
<p>Consider an industrial environment with <italic>N</italic> legacy systems. Prior to the integration of computational intelligence, each system <italic>S</italic>
<sub>
<italic>i</italic>
</sub>, <italic>i</italic> &#x2208; [0, <italic>N</italic> [ is running a set of <italic>T</italic>
<sub>
<italic>i</italic>
</sub> tasks, where <italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub> denotes task index <italic>j</italic> in set <italic>T</italic>
<sub>
<italic>i</italic>
</sub>, and <italic>j</italic> &#x2208; [0, <italic>f</italic>(<italic>i</italic>) &#x2212; 1 [ for each system, where <italic>f</italic>(<italic>i</italic>) is the number of total tasks in the function of a system (i.e., each system runs an arbitrarily different number of tasks), with <italic>e</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) denoting the execution time of task <italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>. For simplicity, we assume that each set <italic>T</italic>
<sub>
<italic>i</italic>
</sub> consists exclusively of periodic tasks, where <italic>p</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) denotes the period of task <italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>&#x2014;expressed as the percentage of task execution over a total unit of work for a system, such that <inline-formula id="inf1">
<mml:math id="m1">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> represents the number of times the task executes per total unit of work. In the authors&#x2019; professional experience, this is generally true, with the exception of asynchronous fault-handling tasks. This model excludes these tasks, as, in the event of faults, handling is of higher priority (and, typically, safety-critical); thus, regular scheduling is typically paused. It is certainly possible to incorporate asynchronous tasks in the model, but the increased complexity is beyond the scope of this paper and is reserved for the future.</p>
<p>If all tasks are periodic, optimum scheduling (if feasible) can be achieved using rate monotonic scheduling (RMS) (<xref ref-type="bibr" rid="B1">Baruah and Goossens, 2003</xref>)). Assuming a full unit of work is achieved whenever the task with the longest period executes, then the total time required per unit of work for a system <italic>S</italic>
<sub>
<italic>i</italic>
</sub>, denoted <italic>e</italic> (<italic>S</italic>
<sub>
<italic>i</italic>
</sub>), is given by<disp-formula id="e1">
<mml:math id="m2">
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>It will be relevant for subsequent sections to note that, in many cases, <italic>&#x2203;t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub> &#x2208; <italic>T</italic>
<sub>
<italic>i</italic>
</sub> such that <italic>e</italic> (<italic>S</italic>
<sub>
<italic>i</italic>
</sub>) &#x226B; <italic>e</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>).</p>
</sec>
<sec id="s2-2">
<title>2.2 Retrofitting intelligence</title>
<p>Now let us consider the integration of computational intelligence on a legacy industrial system. Each system <italic>S</italic>
<sub>
<italic>i</italic>
</sub> is equipped with additional functionality, responsible for the following operations:<list list-type="simple">
<list-item>
<p>1. Monitoring internal operation, including several diagnostic and performance metrics.</p>
</list-item>
<list-item>
<p>2. Communicating that information to a centralized computational intelligence, responsible for using that data to obtain actionable information, make global optimizations, and refer updates back to each system.</p>
</list-item>
<list-item>
<p>3. Receiving updates from the central system and updating the system&#x2019;s internal operation accordingly.</p>
</list-item>
</list>
</p>
<p>A notable example of this sort of operation is workload balancing. For example, in simple serial manufacturing systems, effective throughput is dominated by the system with the lowest individual throughput. Thus, when any one system decreases its throughput (due to supply availability, maintenance operation, etc.), central intelligence can update other systems in that serial chain to match the lowest system&#x2019;s throughput, decreasing unnecessary operation that could lead to costs and lifetime degradation.</p>
<p>In more complex systems, especially when other metrics other than just throughput are being considered, more sophisticated updates can be performed to meeting several distinct goals.</p>
<p>In a system with augmented intelligence, denoted <inline-formula id="inf2">
<mml:math id="m3">
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, this additional functionality is contained in a new task <italic>t</italic>
<sub>
<italic>i</italic>,<italic>c</italic>
</sub>, such that each system is now running a new set of tasks <inline-formula id="inf3">
<mml:math id="m4">
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222a;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> with corresponding execution time and period. New total time required per unit of work <inline-formula id="inf4">
<mml:math id="m5">
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is now given by<disp-formula id="e2">
<mml:math id="m6">
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>Note that, in the period of <italic>t</italic>
<sub>
<italic>i</italic>,<italic>c</italic>
</sub>, <italic>p</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>c</italic>
</sub>) constrains the level of temporal granularity upon which system <italic>S</italic>
<sub>
<italic>i</italic>
</sub> can be measured and acted upon. A short period offers fine-grained measurement and control, at the expense of potentially severe performance degradation; conversely, a long period has a minimal effect on performance, at the expense of coarse-grained operation. For every system, there is likely a minimum period <inline-formula id="inf5">
<mml:math id="m7">
<mml:msubsup>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, below which actuation is no longer feasible.</p>
</sec>
<sec id="s2-3">
<title>2.3 Global scheduling</title>
<p>Synchronizing distributed systems is notoriously challenging. In the case of industrial systems at scale, the optimum scenario would be all tasks <italic>t</italic>
<sub>
<italic>i</italic>,<italic>c</italic>
</sub>, <italic>i</italic> &#x2208; [0, <italic>N</italic> [ running at different times, such that there is no contention for the communication medium nor for the central intelligence compute power. In practice, there is significant overlap, resulting in an execution time for each task <italic>t</italic>
<sub>
<italic>i</italic>,<italic>c</italic>
</sub> given by <italic>e</italic>&#x2032;(<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) &#x3d; <italic>e</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) &#x2b; <italic>&#x3bb;</italic>(<italic>x</italic>), <italic>x</italic> &#x2208; [0, <italic>N</italic> [, where <italic>&#x3bb;</italic>(<italic>x</italic>) represents delay as a function of <italic>x</italic> concurrently executing tasks, modeling medium and compute power contention.</p>
<p>With preliminaries outlined, we can finally formalize the overarching problem:<disp-formula id="e3">
<mml:math id="m8">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>&#x2009;subject&#x2009;to:</mml:mtext>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(3)</label>
</disp-formula>or, in full,<disp-formula id="e4">
<mml:math id="m9">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>&#x2009;subject&#x2003;to:</mml:mtext>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>Note that this is not an exclusive formalization: we have chosen to use sum minimization (arguably, the simplest problem) when we could have chosen mean, median, or several other norms as the metric to minimize. The specific choice is highly domain-specific, depending on the needs of the specific global system. The goal here is to illustrate that the optimization problem is not particularly difficult from a mathematical optimization perspective but that un-optimized systems can be severely affected by a poor choice of parameters and, critically, the difficulties arise from effectively determining <italic>p</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) and finding realistic bounds for <italic>&#x3bb;</italic>(<italic>x</italic>).</p>
</sec>
<sec id="s2-4">
<title>2.4 Simulated evaluation</title>
<p>To illustrate the impact of this challenge, consider the following simulation implemented as a Monte Carlo method. We implement 100 scenarios, where the number of systems is sequentially increased, such that, for each scenario, there are <italic>S</italic>
<sub>
<italic>i</italic>
</sub>, <italic>i</italic> &#x2208; [0, <italic>N</italic> [ systems where <italic>N</italic> is the scenario number. In each scenario, each system executes <italic>f</italic>(<italic>i</italic>) tasks, with corresponding periods and execution times. For simplicity, these values are heuristics and are kept consistent across scenarios and homogeneously across systems.</p>
<p>For each scenario, we introduce a computational intelligence task per system, whose execution time and periods are random variables drawn from a normal distribution centered at a positive integer, left-truncated at 1 and right-truncated at the smallest execution time and highest period of the system, respectively, rounded to the nearest integer. The delay <italic>&#x3bb;</italic>(<italic>x</italic>) is approximated as the percentage of concurrent execution time, as given by the smallest execution time of all computational tasks multiplied by the highest period&#x2014;a percentage of the amount of time the system will exhibit contention (<xref ref-type="bibr" rid="B7">Carley et al., 2003</xref>). We repeated this random experiment 100 times per scenario, reporting the sum of total execution times for all systems (the function to be minimized in Eq. <xref ref-type="disp-formula" rid="e4">4</xref>), with results depicted in <xref ref-type="fig" rid="F1">Figure 1</xref>. <xref ref-type="table" rid="T1">Table 1</xref> shows the corresponding mean and standard deviation for the average system.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Simulated execution of system contention for <italic>n</italic> &#x2208; [1, 100] systems. Results obtained from 100 iterations per number of system, with systems executing five tasks with execution times {10, 10, 20, 20, 30} and periods {4, 4, 6, 4, 2}.</p>
</caption>
<graphic xlink:href="fieng-01-1266651-g001.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Average execution time and standard deviation per system.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Number of concurrent systems</th>
<th align="center">Mean</th>
<th align="center">
<bold>
<italic>&#x3c3;</italic>
</bold>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">1</td>
<td align="center">27.544</td>
<td align="center">5.649</td>
</tr>
<tr>
<td align="left">2</td>
<td align="center">30.179</td>
<td align="center">3.844</td>
</tr>
<tr>
<td align="left">3</td>
<td align="center">31.379</td>
<td align="center">3.876</td>
</tr>
<tr>
<td align="left">4</td>
<td align="center">33.888</td>
<td align="center">4.275</td>
</tr>
<tr>
<td align="left">5</td>
<td align="center">37.349</td>
<td align="center">3.881</td>
</tr>
<tr>
<td align="left">6</td>
<td align="center">38.969</td>
<td align="center">4.011</td>
</tr>
<tr>
<td align="left">7</td>
<td align="center">41.707</td>
<td align="center">4.289</td>
</tr>
<tr>
<td align="left">8</td>
<td align="center">43.408</td>
<td align="center">4.377</td>
</tr>
<tr>
<td align="left">9</td>
<td align="center">46.212</td>
<td align="center">4.579</td>
</tr>
<tr>
<td align="left">10</td>
<td align="center">47.921</td>
<td align="center">4.671</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s3">
<title>3 Leveraging global intelligence</title>
<p>Once systems are retrofitted with computational intelligence, a central coordinating system can exploit this additional information and actuation power to perform global optimizations (which is, of course, the motivation behind retrofitting in the first place). Regardless of what precise optimization is performed, new system sum execution time <italic>e</italic> (<italic>total</italic>) can be modeled as follows:<disp-formula id="e5">
<mml:math id="m10">
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mn>0,1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>where <italic>&#x3b1;</italic> is the inverse of the optimization factor, assuming this is always positive (a negative optimization factor would correspond to performance degradation).</p>
<p>The overarching problem can be formally expressed as satisfying<disp-formula id="e6">
<mml:math id="m11">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="2em"/>
<mml:mo>&#x3c;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mn>0,1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>which simplifies into<disp-formula id="e7">
<mml:math id="m12">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mn>0,1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>The sum of execution times of computational tasks <inline-formula id="inf6">
<mml:math id="m13">
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> is approximately constant for a given value of <italic>&#x3b1;</italic> &#x3d; <italic>&#x3b1;</italic>
<sub>
<italic>a</italic>
</sub>, such that we can re-formulate the aforementioned statement as<disp-formula id="e8">
<mml:math id="m14">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Borrowing from scheduling theory (<xref ref-type="bibr" rid="B21">Sinnen and Sousa, 2005</xref>; <xref ref-type="bibr" rid="B4">Blagodurov et al., 2010</xref>; <xref ref-type="bibr" rid="B15">Johnson et al., 2010</xref>), it is safe to assume there is a lower bound (typically non-0 but sufficiently close to 0) for contention as a function of phase choices for the execution of computational tasks (minimizing alignment of periodic execution). An optimal formulation <italic>F</italic> for choosing these phases is predicated on knowledge of periods and execution times of all extant tasks across systems, formulated as <italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>), <italic>i</italic> &#x2208; [0, <italic>N</italic> [, <italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>) &#x2208; [0, 1], such that<disp-formula id="e9">
<mml:math id="m15">
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo>&#x25e6;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x221e;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>where <italic>F</italic>&#x25e6;<italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>) denotes the function composition of <italic>F</italic> over <italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>) equivalent to <italic>F</italic>(<italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>)) (note that contention is typically modeled as having an infinite upper bound to denote system deadlock). Replacing <italic>&#x3bb;</italic>(<italic>x</italic>) in Eq. <xref ref-type="disp-formula" rid="e8">8</xref> and solving for <italic>K</italic>(<italic>S</italic>
<sub>
<italic>i</italic>
</sub>), we obtain<disp-formula id="e10">
<mml:math id="m16">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo>&#x25e6;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(10)</label>
</disp-formula>
<disp-formula id="e11">
<mml:math id="m17">
<mml:mo>&#x2261;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo>&#x25e6;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>
<disp-formula id="e12">
<mml:math id="m18">
<mml:mo>&#x2261;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mo>&#x25e6;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(12)</label>
</disp-formula>
<disp-formula id="e13">
<mml:math id="m19">
<mml:mo>&#x2261;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Thus, showing that total knowledge about the tasks of extant systems required to optimize them when retrofitting computational intelligence is a function of a possible optimization factor (conversely, that optimization is a function of prior knowledge). Thus, it is important to develop methodologies, theories, and tools to determine system behavior (Section 5).</p>
</sec>
<sec id="s4">
<title>4 Case study</title>
<p>To illustrate the aspects considered in the model thus far, consider the example industrial system depicted in <xref ref-type="fig" rid="F2">Figure 2</xref>. The two parallel systems produce items at different rates, depending on operational parameters. The robotic arm picks items from the intermediate item buffers and transfers them to subsequent stations (not depicted) for further processing.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Example of a manufacturing system. Two parallel production systems output items to intermediate buffers at different rates. A moving system transfers items to next processing stage. Solid gray lines represent communication medium (e.g., industrial ethernet).</p>
</caption>
<graphic xlink:href="fieng-01-1266651-g002.tif"/>
</fig>
<p>Through modernization efforts, all systems have been connected to central intelligence through a communication medium, such as an industrial ethernet. New computational tasks have been added to each system; the goal is to communicate real-time production rates to central intelligence so that it can optimize robotic arm operation by moving it as little as possible (preserving power and potentially using it for other operations in the downtime) as long as item buffer rates are not exceeded.</p>
<p>
<xref ref-type="fig" rid="F3">Figure 3</xref> depicts timing behavior before modernization (top); parallel systems produce items at different rates, depicted in blue and red, respectively, where a hyper-period corresponds to three executions of the first system and two executions of the second. In this example, assuming buffer capacity is greater than 1, and executing a robotic arm operation as frequently as the production rate of the first system is wasteful.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Task execution slots; time progresses from left to right. Blue and red blocks represent systems 1 and 2 executing, respectively. Green blocks represent corresponding computational tasks, with contention depicted. Top diagram depicts the non-intelligent (legacy) system; middle diagram depicts effects of poorly chosen computational tasks periods, with significant contention; bottom diagram depicts correct choices, without contention.</p>
</caption>
<graphic xlink:href="fieng-01-1266651-g003.tif"/>
</fig>
<p>An incorrect approach to computational task execution is shown in the middle of <xref ref-type="fig" rid="F3">Figure 3</xref>, where the computational task is depicted in green. Here, periods in both systems are chosen the same as production tasks, resulting in both systems attempting to access the shared medium at the same time, resulting in contention. Total execution time is thus extended, delaying production. On the other hand, a better chosen set of periods results in the behavior depicted in <xref ref-type="fig" rid="F3">Figure 3</xref> (bottom), where no contention is exhibited, resulting in non-decreased performance, whilst preserving the advantages of optimized robotic arm operation. Formally, systems 1 and 2 contain a single task, with periods <inline-formula id="inf7">
<mml:math id="m20">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> equal to <inline-formula id="inf8">
<mml:math id="m21">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>3</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf9">
<mml:math id="m22">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2,0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:math>
</inline-formula>, respectively, and execution times <italic>e</italic> (<italic>t</italic>
<sub>
<italic>i</italic>,<italic>j</italic>
</sub>) equal to <italic>e</italic> (<italic>t</italic>
<sub>1,0</sub>) &#x3d; 1 and <italic>e</italic> (<italic>t</italic>
<sub>2,1</sub>) &#x3d; 2, respectively. From <xref ref-type="fig" rid="F3">Figure 3</xref>, <italic>&#x3bb;</italic>(2) &#x3d; 1 for the poorly selected case; thus, we can replace variables in Eq <xref ref-type="disp-formula" rid="e4">4</xref> with:<disp-formula id="e14">
<mml:math id="m23">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0,2</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="2em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
<mml:mn>0,2</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2a;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2a;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mspace width="2em"/>
<mml:mfenced open="" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="2em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>This shows that selecting periods for the computational tasks equal to half the rate of the original tasks (and out of phase with each other) results in no performance degradation. Critically, the values in this case study can be verified experimentally and fairly simply; in more complex systems, it would be difficult to estimate <italic>&#x3bb;</italic>(<italic>x</italic>) and <inline-formula id="inf10">
<mml:math id="m24">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> without significant profiling.</p>
</sec>
<sec id="s5">
<title>5 Challenges and directions</title>
<p>Our simulated example, despite its simplicity, already clearly illustrates the pitfalls of poor retrofitting of legacy systems. With stochastically generated execution times and periods of computational tasks, total sum execution time increases exponentially as the number of concurrent systems grows (<xref ref-type="fig" rid="F1">Figure 1</xref>). Per system, we can see that average execution time increases (<xref ref-type="table" rid="T1">Table 1</xref>).</p>
<p>The negative impact of poor retrofitting decisions has several impacts on practitioners. It greatly complicates the design effort, adding to engineers&#x27; cognitive load. It constitutes several additional variables that constrain the optimization problem; critically, it poses a discovery and estimation challenge for both known and unknown &#x201c;unknowns&#x201d;. Whilst our focus in this paper was on the real-time performance aspects of cyber-physical systems, that is merely illustrative, the broader challenge encompasses not only this but also includes throughput, communication, monitoring, security, and safety.</p>
<p>We identify a few directions that research must pursue to solving these challenges.<list list-type="simple">
<list-item>
<p>&#x2022; <bold>Estimation methodology.</bold> With so many unknowns that affect the problem and the infamous lack of reliable legacy design documentation, a comprehensive methodology for estimating required parameters is required. Practitioners cannot rely on <italic>ad hoc</italic> approaches; know-how from the disciplines of diagnostics and reverse engineering must be formalized within the context of industrial informatics.</p>
</list-item>
<list-item>
<p>&#x2022; <bold>Interdisciplinary pollination.</bold> Whilst the need for an optimization approached has long been clear in traditional industrial engineering, its need within industrial informatics has not been so clear. We need to make known more optimization methods available to practitioners of industrial informatics (particularly those engaged with legacy systems)&#x2014;at the very least, broad adoption of linear programming methods in industrial informatics.</p>
</list-item>
<list-item>
<p>&#x2022; <bold>Theoretical framework.</bold> The previous directions must be unified within a comprehensive, theoretical framework of modernization on retrofitting intelligence within industrial informatics. Whilst some work has begun this process (<xref ref-type="bibr" rid="B24">Zakoldaev et al., 2019</xref>), we are far from a comprehensive theory that informs the discipline. Algorithms, heuristics, best practices, and formalisms must comprise the theoretical framework; this paper offers a small contribution in that direction.</p>
</list-item>
<list-item>
<p>&#x2022; <bold>Associated tooling.</bold> All these developments mean little if there is no tool support to implement them in practice. In parallel with establishing a theoretical framework, we must develop hardware and software tools that aid in retrofitting legacy systems if the next industrial revolution is to be fulfilled.</p>
</list-item>
</list>
</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The datasets presented in this study can be found in online repositories. The names of the repository/repositories and accession number(s) can be found at: <ext-link ext-link-type="uri" xlink:href="https://github.com/paulo-chula/Industrial-cyber-physical-simulation">https://github.com/paulo-chula/Industrial-cyber-physical-simulation</ext-link>.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>PG: conceptualization, methodology, and writing&#x2013;original draft. WS: conceptualization, methodology, writing&#x2013;original draft, and writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="COI-statement" id="s8">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s9">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors, and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Baruah</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Goossens</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2003</year>). <article-title>Rate-monotonic scheduling on uniform multiprocessors</article-title>. <source>IEEE Trans. Comput.</source> <volume>52</volume>, <fpage>966</fpage>&#x2013;<lpage>971</lpage>. <pub-id pub-id-type="doi">10.1109/tc.2003.1214344</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ben-Guang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Fang-Yu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kraslawski</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Nystr&#xf6;m</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>Study on the methodology for retrofitting chemical processes</article-title>. <source>Chem. Eng. Technol.</source> <volume>23</volume>, <fpage>479</fpage>&#x2013;<lpage>484</lpage>. <pub-id pub-id-type="doi">10.1002/1521-4125(200006)23:6&#x3c;479::aid-ceat479&#x3e;3.0.co;2-5</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bi</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Embracing internet of things (iot) and big data for industrial informatics</article-title>. <source>Enterp. Inf. Syst.</source> <volume>11</volume>, <fpage>949</fpage>&#x2013;<lpage>951</lpage>. <pub-id pub-id-type="doi">10.1080/17517575.2016.1258734</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Blagodurov</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhuravlev</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Fedorova</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Contention-aware scheduling on multicore systems</article-title>. <source>ACM Trans. Comput. Syst. (TOCS)</source> <volume>28</volume>, <fpage>1</fpage>&#x2013;<lpage>45</lpage>. <pub-id pub-id-type="doi">10.1145/1880018.1880019</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Buse</surname>
<given-names>D. P.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Q. H.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Mobile agents for remote control of distributed systems</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>51</volume>, <fpage>1142</fpage>&#x2013;<lpage>1149</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2004.837881</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Butun</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Almgren</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Gulisano</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Papatriantafilou</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <source>Industrial IoT</source>. <publisher-name>Springer</publisher-name>.</citation>
</ref>
<ref id="B7">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Carley</surname>
<given-names>T. W.</given-names>
</name>
<name>
<surname>Ba</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Barua</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Stewart</surname>
<given-names>D. B.</given-names>
</name>
</person-group> (<year>2003</year>). &#x201c;<article-title>Contention-free periodic message scheduler medium access control in wireless sensor/actuator networks</article-title>,&#x201d; in <conf-name>RTSS 2003. 24th IEEE Real-Time Systems Symposium, 2003</conf-name>, <conf-loc>Cancun, Mexico</conf-loc>, <conf-date>05-05 December 2003</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>298</fpage>&#x2013;<lpage>307</lpage>.</citation>
</ref>
<ref id="B8">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Fryer</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Garcia</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Towards a programming paradigm for reconfigurable computing: asynchronous graph programming</article-title>,&#x201d; in <conf-name>2020 25th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA)</conf-name>, <conf-loc>Vienna, Austria</conf-loc>, <conf-date>08-11 September 2020</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>1721</fpage>&#x2013;<lpage>1728</lpage>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Cecati</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>S. X.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>A survey of fault diagnosis and fault-tolerant techniques&#x2014;part i: fault diagnosis with model-based and signal-based approaches</article-title>. <source>IEEE Trans. industrial Electron.</source> <volume>62</volume>, <fpage>3757</fpage>&#x2013;<lpage>3767</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2015.2417501</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gaudio</surname>
<given-names>M. T.</given-names>
</name>
<name>
<surname>Coppola</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zangari</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Curcio</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Greco</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chakraborty</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Artificial intelligence-based optimization of industrial membrane processes</article-title>. <source>Earth Syst. Environ.</source> <volume>5</volume>, <fpage>385</fpage>&#x2013;<lpage>398</lpage>. <pub-id pub-id-type="doi">10.1007/s41748-021-00220-x</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ghobakhloo</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Industry 4.0, digitization, and opportunities for sustainability</article-title>. <source>J. Clean. Prod.</source> <volume>252</volume>, <fpage>119869</fpage>. <pub-id pub-id-type="doi">10.1016/j.jclepro.2019.119869</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Gomes</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Pinto</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Garcia</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Tavares</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Rt-shadows: real-time system hardware for agnostic and deterministic oses within softcore</article-title>,&#x201d; in <conf-name>2015 IEEE 20th Conference on Emerging Technologies and Factory Automation (ETFA)</conf-name>, <conf-loc>Luxembourg, Luxembourg</conf-loc>, <conf-date>08-11 September 2015</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>4</lpage>.</citation>
</ref>
<ref id="B13">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Guerreiro</surname>
<given-names>B. V.</given-names>
</name>
<name>
<surname>Lins</surname>
<given-names>R. G.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Schmitt</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Definition of smart retrofitting: first steps for a company to deploy aspects of industry 4.0</article-title>,&#x201d; in <source>Advances in manufacturing</source> (<publisher-name>Springer</publisher-name>), <fpage>161</fpage>&#x2013;<lpage>170</lpage>.</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hills</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Leeson</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Florin</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Fennell</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Carbon capture in the cement industry: technologies, progress, and retrofitting</article-title>. <source>Environ. Sci. Technol.</source> <volume>50</volume>, <fpage>368</fpage>&#x2013;<lpage>377</lpage>. <pub-id pub-id-type="doi">10.1021/acs.est.5b03508</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Johnson</surname>
<given-names>F. R.</given-names>
</name>
<name>
<surname>Stoica</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Ailamaki</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Mowry</surname>
<given-names>T. C.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Decoupling contention management from scheduling</article-title>. <source>ACM SIGARCH Comput. Archit. News</source> <volume>38</volume>, <fpage>117</fpage>&#x2013;<lpage>128</lpage>. <pub-id pub-id-type="doi">10.1145/1735970.1736035</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lasi</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Fettke</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Kemper</surname>
<given-names>H. G.</given-names>
</name>
<name>
<surname>Feld</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Hoffmann</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Industry 4.0</article-title>. <source>Bus. Inf. Syst. Eng.</source> <volume>6</volume>, <fpage>239</fpage>&#x2013;<lpage>242</lpage>. <pub-id pub-id-type="doi">10.1007/s12599-014-0334-4</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lee</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bagheri</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Kao</surname>
<given-names>H. A.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Recent advances and trends of cyber-physical systems and big data analytics in industrial informatics</article-title>,&#x201d; in <source>International proceeding of int conference on industrial informatics (INDIN)</source> (<publisher-loc>Porto Alegre, Brazil</publisher-loc>: <publisher-name>Citeseer</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B18">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lins</surname>
<given-names>R. G.</given-names>
</name>
<name>
<surname>Guerreiro</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Schmitt</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Corazzim</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Silva</surname>
<given-names>F. R.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>A novel methodology for retrofitting cnc machines based on the context of industry 4.0</article-title>,&#x201d; in <conf-name>2017 IEEE international systems engineering symposium (ISSE)</conf-name>, <conf-loc>Vienna, Austria</conf-loc>, <conf-date>11-13 October 2017</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lins</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Oliveira</surname>
<given-names>R. A. R.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Cyber-physical production systems retrofitting in context of industry 4.0</article-title>. <source>Comput. industrial Eng.</source> <volume>139</volume>, <fpage>106193</fpage>. <pub-id pub-id-type="doi">10.1016/j.cie.2019.106193</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Parri</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Patara</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Sampietro</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Vicario</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A framework for model-driven engineering of resilient software-controlled systems</article-title>. <source>Computing</source> <volume>103</volume>, <fpage>589</fpage>&#x2013;<lpage>612</lpage>. <pub-id pub-id-type="doi">10.1007/s00607-020-00841-6</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sinnen</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Sousa</surname>
<given-names>L. A.</given-names>
</name>
</person-group> (<year>2005</year>). <article-title>Communication contention in task scheduling</article-title>. <source>IEEE Trans. parallel distributed Syst.</source> <volume>16</volume>, <fpage>503</fpage>&#x2013;<lpage>515</lpage>. <pub-id pub-id-type="doi">10.1109/tpds.2005.64</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tavares</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Carvalho</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Rodrigues</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Garcia</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Gomes</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Cabral</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2012</year>). &#x201c;<article-title>A customizable and arinc 653 quasi-compliant hypervisor</article-title>,&#x201d; in <conf-name>2012 IEEE International Conference on Industrial Technology</conf-name>, <conf-loc>Athens, Greece</conf-loc>, <conf-date>19-21 March 2012</conf-date> (<publisher-name>IEEE</publisher-name>).</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tran</surname>
<given-names>T. A.</given-names>
</name>
<name>
<surname>Ruppert</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Eigner</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Abonyi</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Retrofitting-based development of brownfield industry 4.0 and industry 5.0 solutions</article-title>. <source>IEEE Access</source> <volume>10</volume>, <fpage>64348</fpage>&#x2013;<lpage>64374</lpage>. <pub-id pub-id-type="doi">10.1109/access.2022.3182491</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zakoldaev</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Shukalov</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Zharinov</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>From industry 3.0 to industry 4.0: production modernization and creation of innovative digital companies</article-title>. <source>IOP Conf. Ser. Mater. Sci. Eng.</source> <volume>560</volume>, <fpage>012206</fpage>. <pub-id pub-id-type="doi">10.1088/1757-899x/560/1/012206</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Peng</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Application of multi-sensor fuzzy information fusion algorithm in industrial safety monitoring system</article-title>. <source>Saf. Sci.</source> <volume>122</volume>, <fpage>104531</fpage>. <pub-id pub-id-type="doi">10.1016/j.ssci.2019.104531</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>