<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" 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. Mol. Biosci.</journal-id>
<journal-title>Frontiers in Molecular Biosciences</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mol. Biosci.</abbrev-journal-title>
<issn pub-type="epub">2296-889X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">866676</article-id>
<article-id pub-id-type="doi">10.3389/fmolb.2022.866676</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Molecular Biosciences</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Time-Optimal Adaptation in Metabolic Network Models</article-title>
<alt-title alt-title-type="left-running-head">K&#xf6;bis et al.</alt-title>
<alt-title alt-title-type="right-running-head">Time-Optimal Adaptation</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>K&#xf6;bis</surname>
<given-names>Markus A.</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/1709643/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Bockmayr</surname>
<given-names>Alexander</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1660637/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Steuer</surname>
<given-names>Ralf</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/210058/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Research Group Dynamical Systems and Numerical Analysis</institution>, <institution>Department of Mathematics</institution>, <institution>Norwegian University of Science and Technology</institution>, <addr-line>Trondheim</addr-line>, <country>Norway</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Mathematics in Life Science Group</institution>, <institution>Department of Mathematics and Computer Science</institution>, <institution>Freie Universit&#xe4;t Berlin</institution>, <addr-line>Berlin</addr-line>, <country>Germany</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>Humboldt-University of Berlin</institution>, <institution>Institute for Biology</institution>, <institution>Institute for Theoretical Biology (ITB)</institution>, <addr-line>Berlin</addr-line>, <country>Germany</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/592883/overview">Alberto Jesus Martin</ext-link>, Universidad Mayor, Chile</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/659622/overview">Jean-Luc Gouz&#xe9;</ext-link>, Research Centre Inria Sophia Antipolis M&#xe9;diterran&#xe9;e, France</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/196692/overview">Pedro Andres Saa</ext-link>, Pontificia Universidad Cat&#xf3;lica de Chile, Chile</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Markus A. K&#xf6;bis, <email>markus.kobis@ntnu.no</email>; Ralf Steuer, <email>ralf.steuer@hu-berlin.de</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Biological Modeling and Simulation, a section of the journal Frontiers in Molecular Biosciences</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>14</day>
<month>07</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>9</volume>
<elocation-id>866676</elocation-id>
<history>
<date date-type="received">
<day>31</day>
<month>01</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>31</day>
<month>05</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 K&#xf6;bis, Bockmayr and Steuer.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>K&#xf6;bis, Bockmayr and Steuer</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>Analysis of metabolic models using constraint-based optimization has emerged as an important computational technique to elucidate and eventually predict cellular metabolism and growth. In this work, we introduce time-optimal adaptation (TOA), a new constraint-based modeling approach that allows us to evaluate the fastest possible adaptation to a pre-defined cellular state while fulfilling a given set of dynamic and static constraints. TOA falls into the mathematical problem class of time-optimal control problems, and, in its general form, can be broadly applied and thereby extends most existing constraint-based modeling frameworks. Specifically, we introduce a general mathematical framework that captures many existing constraint-based methods and define TOA within this framework. We then exemplify TOA using a coarse-grained self-replicator model and demonstrate that TOA allows us to explain several well-known experimental phenomena that are difficult to explore using existing constraint-based analysis methods. We show that TOA predicts accumulation of storage compounds in constant environments, as well as overshoot uptake metabolism after periods of nutrient scarcity. TOA shows that organisms with internal temporal degrees of freedom, such as storage, can in most environments outperform organisms with a static intracellular composition. Furthermore, TOA reveals that organisms adapted to better growth conditions than present in the environment (&#x201c;optimists&#x201d;) typically outperform organisms adapted to poorer growth conditions (&#x201c;pessimists&#x201d;).</p>
</abstract>
<kwd-group>
<kwd>constraint-based modeling</kwd>
<kwd>cellular metabolism</kwd>
<kwd>flux balance analysis</kwd>
<kwd>resource balance analysis</kwd>
<kwd>dynamic enzyme-cost flux balance analysis</kwd>
<kwd>optimal control</kwd>
<kwd>overshoot metabolism</kwd>
<kwd>luxury uptake</kwd>
</kwd-group>
<contract-num rid="cn001">STE 2062/2-1</contract-num>
<contract-num rid="cn002">Alain Bensoussan&#x2019; Fellowship</contract-num>
<contract-sponsor id="cn001">Deutsche Forschungsgemeinschaft<named-content content-type="fundref-id">10.13039/501100001659</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">European Research Consortium for Informatics and Mathematics<named-content content-type="fundref-id">10.13039/501100001667</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Over the past decades, various modeling frameworks have been proposed to understand the organization and functioning of cellular metabolism and growth. Among the most popular approaches are constraint-based methods, in particular flux balance analysis (FBA) (<xref ref-type="bibr" rid="B23">Orth et al., 2010</xref>). Constraint-based methods typically make use of optimality principles that are motivated by evolutionary arguments. That is, instead of requiring a detailed mechanistic understanding of the underlying regulatory machinery, properties of cellular metabolism, such as exchange fluxes or biomass accumulation, are predicted based on the assumption that metabolism has evolved according to certain evolutionary optimality principles.</p>
<p>More recently, constraint-based methods have been extended to quantitatively account for the synthesis costs of the biological macromolecules that are required for cellular metabolism and growth, giving rise to resource balance analysis (RBA) (<xref ref-type="bibr" rid="B10">Goelzer et al., 2011</xref>) and integrated reconstructions of Metabolism and macromolecular Expression (ME) (<xref ref-type="bibr" rid="B17">Lerman et al., 2012</xref>). While the initial approaches were restricted to time-invariant environments and subject to steady-state conditions, various dynamic extensions have also been proposed, such as dynamic FBA (dFBA) <xref ref-type="bibr" rid="B20">Mahadevan et al. (2002)</xref>, dynamic enzyme-cost FBA (deFBA) (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>), conditional FBA (cFBA) (<xref ref-type="bibr" rid="B29">R&#xfc;gen et al., 2015</xref>; <xref ref-type="bibr" rid="B28">Reimers et al., 2017</xref>), dynamic RBA (dRBA) (<xref ref-type="bibr" rid="B15">Jeanne et al., 2018</xref>), dynamic ME (<xref ref-type="bibr" rid="B36">Yang et al., 2019</xref>), and regulatory dynamic enzyme-cost FBA (r-deFBA) (<xref ref-type="bibr" rid="B18">Liu and Bockmayr, 2020</xref>). These dynamic frameworks are computationally more expensive and allow predicting time courses over a given time interval, such that the variables fulfil a given (linear) optimality principle. Typically, within these frameworks, the time intervals over which the solutions are considered are predefined.</p>
<p>In this work, we extend these existing approaches and propose time-adaptation (TOA) as a new constraint-based modeling framework that allows us to evaluate the fastest possible adaptation to a pre-defined cellular state while fulfilling a given set of dynamic and static constraints. If the underlying dynamics of the biological system are governed by ordinary differential equations (ODEs) subject to algebraic constraints such as positivity, that is, so-called differential-algebraic equations (DAEs), time-optimal adaptation falls into the mathematical problem class of time-optimal control problems, which are optimal control problems where the time-interval is part of the objective (<xref ref-type="bibr" rid="B12">Hermes and Lasalle, 1969</xref>). In its general form, TOA can be applied in a very broad sense and thereby extends most of the existing constraint-based modeling frameworks.</p>
<p>Our approach allows us to compute feasible time courses to simulate or predict adaptations of cellular metabolism to environmental shifts. Potential applications include an analysis of cellular doubling, i.e., to analyze the optimal metabolic trajectory that results in a doubling of all cellular components in the shortest time, as well as an analysis of the temporal adaptation to changing nutrient availability.</p>
<p>We exemplify TOA using a coarse-grained self-replicator model (<xref ref-type="bibr" rid="B22">Molenaar et al., 2009</xref>; <xref ref-type="bibr" rid="B8">Giordano et al., 2016</xref>; <xref ref-type="bibr" rid="B37">Yegorov et al., 2018</xref>; <xref ref-type="bibr" rid="B35">Yabo et al., 2022</xref>) and demonstrate that TOA allows us to explain several known experimental phenomena that are difficult to investigate using existing static or dynamic constraint-based analysis methods. In particular, we demonstrate that TOA can explain the accumulation of storage compounds also in time-invariant environments&#x2013;a counterintuitive fact that cannot be predicted using RBA and related methods. Likewise, we demonstrate that &#x201c;luxury uptake&#x201d; of nutrients, i.e., the fact that microorganisms may take up more of a limiting resource than strictly required for steady-state growth, can be explained by TOA and does not necessarily require competition within a microbial community. Furthermore, our analysis shows that organisms with internal temporal degrees of freedom, such as storage, can in most environments outperform organisms with a static intracellular composition. Finally, TOA shows that in constant (or slowly changing) environments, organisms adapted to better growth conditions (&#x201c;optimists&#x201d;) outperfom organisms adapted to poorer growth conditions (&#x201c;pessimists&#x201d;) when placed in the same environment.</p>
<p>The manuscript is organized as follows: Within <xref ref-type="sec" rid="s2-1">Sections 2.1</xref> and <xref ref-type="sec" rid="s2-2">2.2</xref> we introduce notation and define a general constraint-based framework to describe cellular metabolism and growth. This framework captures most current examples of dynamic constraint-based modeling, in particular dynamic FBA (<xref ref-type="bibr" rid="B20">Mahadevan et al., 2002</xref>), dynamic enzyme-cost FBA (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>) and conditional FBA (<xref ref-type="bibr" rid="B28">Reimers et al., 2017</xref>). In <xref ref-type="sec" rid="s2-3">Section 2.3</xref>, we formally introduce time-optimal adaptation (TOA) and discuss two relevant applications in <xref ref-type="sec" rid="s2-4">Section 2.4</xref>: cell doubling in minimal time, as well as transition after a nutrient shift. The latter is formulated as a two-objective optimization problem (in the sense of Pareto) that considers a minimal time for the transition versus a total increase in biomass. In <xref ref-type="sec" rid="s2-5">Sections 2.5</xref>&#x2013;<xref ref-type="sec" rid="s2-7">2.7</xref>, we discuss numerical aspects, variability analysis, and implementation, respectively.</p>
<p>Readers not interested in the mathematical details may skip most of <italic>Materials and Methods</italic> and focus on <italic>Results</italic>. In <xref ref-type="sec" rid="s3-1">Sections 3.1</xref> and <xref ref-type="sec" rid="s3-2">3.2</xref>, we describe the coarse-grained self-replicator model and its properties using RBA. In <xref ref-type="sec" rid="s3-3">Section 3.3</xref>, we then apply TOA to describe cell doubling in minimal time in a constant environment. In <xref ref-type="sec" rid="s3-4">Section 3.4</xref>, we discuss the role of &#x201c;expectation&#x201d;, i.e., the consequences of being mis-adapted to a given environment. In <xref ref-type="sec" rid="s3-5">Section 3.5</xref>, we apply TOA to simulate the metabolic response after a nutrient shift. In the final <xref ref-type="sec" rid="s4">Sections 4</xref> and <xref ref-type="sec" rid="s5">5</xref>, we discuss the biological implications of our results, and provide conclusions.</p>
</sec>
<sec id="s2">
<title>2 Materials and Methods</title>
<sec id="s2-1">
<title>2.1 Introduction and Notation</title>
<p>The dynamic simulation of metabolic networks by means of a fully parameterized ODE/DAE model is an ideal scenario that, in most cases, cannot be met due to the inherent incompleteness and uncertainty of the description and the involved parameters. Constraint-based modeling (<xref ref-type="bibr" rid="B3">Bordbar et al., 2014</xref>) has therefore become an important paradigm for the computational description of cellular metabolism and growth. The general idea can be framed as follows: instead of making use of a fully mechanistic description of biochemical dependencies by means of reaction rate equations, the system is characterized by a set of constraints/inclusions, typically defined by (in-)equalities that constrain the dynamics over a time interval [t<sub>0</sub>, t<sub>end</sub>] of interest.</p>
<p>Before capturing our approach in mathematical terms in <xref ref-type="sec" rid="s2-2">Section 2.2</xref>, we introduce some notation, see also <xref ref-type="sec" rid="s11">Supplementary Appendix S1</xref>. The function <inline-formula id="inf1">
<mml:math id="m1">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>:</mml:mo>
<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>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is used to describe the cellular dynamics by the total amounts <italic>y</italic>(<italic>t</italic>) of intracellular compounds at time <italic>t</italic> (typically measured in number of molecules, mol), with <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> denoting the time-derivative. For simplicity, we focus on the dynamics of intracellular compounds only, extracellular compounds (e.g., nutrient or waste product concentrations) are not included in <bold>
<italic>y</italic>
</bold>. Our framework, however, can be readily adapted to include the dynamics of extracellular compounds (see the <xref ref-type="sec" rid="s11">Supplementary Appendix S2.3</xref> for details). Furthermore, our description is based on the assumption of a well-stirred metabolism, i.e., the spatial distribution of compounds is not considered.</p>
<p>We distinguish the total amounts of molecules <italic>y</italic>(<italic>t</italic>) from their concentrations <bold>
<italic>c</italic>
</bold>(<italic>t</italic>), defined by<disp-formula id="e1">
<mml:math id="m3">
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2.1)</label>
</disp-formula>where the term <italic>bio</italic>(<italic>t</italic>)&#x2254;<bold>
<italic>w</italic>
</bold>
<sup>&#x22a4;</sup>&#x22c5;<bold>
<italic>y</italic>
</bold>(<italic>t</italic>) denotes the total biomass of the system (measured in Gram cellular dry mass). The vector <inline-formula id="inf3">
<mml:math id="m4">
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> denoting the molar masses of the entities of <bold>
<italic>y</italic>
</bold> (measured in gram cellular dry mass per mol).</p>
<p>The time evolution of the state vector <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) can be described by means of ordinary differential equations.<disp-formula id="e2">
<mml:math id="m5">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2.2a)</label>
</disp-formula>where <inline-formula id="inf4">
<mml:math id="m6">
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> denotes the stoichiometric matrix and <inline-formula id="inf5">
<mml:math id="m7">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>:</mml:mo>
<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>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> the flux rates of the reactions. The flux rates <bold>
<italic>v</italic>
</bold>(<italic>t</italic>) may in general also depend on the environment the cells are exposed to. Typically, and specifically for large networks, the stoichiometric matrix <inline-formula id="inf6">
<mml:math id="m8">
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula> is split up such that &#x201c;fast&#x201d; and &#x201c;slow&#x201d; intracellular compounds, usually metabolites resp. macromolecules, are described separately and (<xref ref-type="disp-formula" rid="e2">2.2a</xref>) is replaced by.<disp-formula id="e3">
<mml:math id="m9">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(2.2b)</label>
</disp-formula>where the fast compounds, corresponding to the rows of <bold>S</bold>
<sub>
<bold>x</bold>
</sub>, are subject to a quasi steady-state approximation (QSSA) (<xref ref-type="bibr" rid="B31">Segel and Slemrod, 1989</xref>). In this case, for simplicity of notation, the fast components will be removed from the vector <bold>
<italic>y</italic>
</bold>(<italic>t</italic>). We note that the splitting into &#x201c;slow&#x201d; and &#x201c;fast&#x201d; compounds is not a necessary step and its validity has to be verified in any particular application.</p>
</sec>
<sec id="s2-2">
<title>2.2 Constraint-Based Modeling</title>
<p>To capture the broad range of simulation frameworks that time-optimal adaptation is able to cover, we abstractly denote the constraints defining the specific constraint-based description of a cell <italic>via</italic>.<disp-formula id="e4">
<mml:math id="m10">
<mml:mtext>for</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>:</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2.3a)</label>
</disp-formula>where the set <inline-formula id="inf7">
<mml:math id="m11">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2286;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is typically defined through (in-)equalities such as steady-state assumptions and/or positivity requirements. The particular form of the set <inline-formula id="inf8">
<mml:math id="m12">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> usually depends on the chosen modeling framework and its granularity. For the present work, we model the influence of the external conditions via the explicit time-dependence of <inline-formula id="inf9">
<mml:math id="m13">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The vector-valued function <inline-formula id="inf10">
<mml:math id="m14">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>:</mml:mo>
<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>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> signifies the degrees-of-freedom of the cell, i.e., quantities that are not uniquely determined from the current state of the cell and its environment. In the context of control theory, <bold>
<italic>u</italic>
</bold>(<italic>t</italic>) defines the controls; on the biochemical level, it can for example stand for flux rates <bold>
<italic>v</italic>
</bold>(<italic>t</italic>) but also for parameters within the model.</p>
<p>The formal statement (<xref ref-type="disp-formula" rid="e4">2.3a</xref>) is usually not enough to sufficiently constrain the solutions, because the feasible region is too large to obtain biochemical insight. To get biochemically meaningful results, (<xref ref-type="disp-formula" rid="e4">2.3a</xref>) is therefore often accompanied by boundary conditions and an optimality principle, i.e., a global objective function <italic>f</italic> to be optimized:<disp-formula id="e5">
<mml:math id="m15">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mn mathvariant="bold-italic">0</mml:mn>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2.3b)</label>
</disp-formula>
<disp-formula id="e6">
<mml:math id="m16">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
<mml:mspace width="0.17em"/>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(2.3c)</label>
</disp-formula>The boundary conditions <xref ref-type="disp-formula" rid="e5">(2.3b)</xref> are defined by means of inequalities to allow for more generality of this description. Usually, the boundary conditions will only contain initial values, provided by equality constraints, i.e., two inequalities. In some cases, optimality principles are already incorporated into the constraint set <inline-formula id="inf11">
<mml:math id="m17">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, see the following examples.</p>
<p>In the context of optimal control-based methods with ODE/DAE constraints, the flux rates at any fixed point in time cannot (mathematically) be determined as they enter the problem as control variables (<xref ref-type="bibr" rid="B7">Gerdts, 2011</xref>). This is why (<xref ref-type="disp-formula" rid="e4">2.3a</xref>) technically can only be enforced for almost all times. Numerically or with respect to the biochemical reasoning, however, this has no further implications. In the following, we illustrate how (<xref ref-type="disp-formula" rid="e4">2.3</xref>) provides an abstract framework to describe established examples of constraint-based modeling.</p>
<p>
<statement content-type="example" id="example2_1">
<label>
<sc>Example</sc> 2.1</label>
<p>(Dynamic FBA, dFBA). Dynamic (or iterative) flux balance analysis (<xref ref-type="bibr" rid="B33">Varma and Palsson, 1994</xref>; <xref ref-type="bibr" rid="B20">Mahadevan et al., 2002</xref>), although one of the most commonly used dynamic frameworks within constraint-based modeling, is not consistently defined in the literature. Here, we refer to the formulation in (<xref ref-type="bibr" rid="B14">H&#xf6;ffner et al., 2016</xref>), see also (<xref ref-type="bibr" rid="B13">H&#xf6;ffner et al., 2012</xref>), for the characterization of dynamic FBA as a &#x201c;dynamical system with a linear program embedded.&#x201d;</p>
<p>The control quantities <bold>
<italic>u</italic>
</bold>(<italic>t</italic>) can in this case be directly identified with the flux rates in the metabolic network model, i.e., <bold>
<italic>v</italic>
</bold>(<italic>t</italic>) &#x3d; <bold>
<italic>u</italic>
</bold>(<italic>t</italic>). The overall dynamics are governed by (<xref ref-type="disp-formula" rid="e2">2.2a</xref>), positivity requirements on <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) and flux bounds <inline-formula id="inf12">
<mml:math id="m18">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, which might be dependent on the time <italic>t</italic>:<disp-formula id="equ1">
<mml:math id="m19">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>dynamics, often just biomass</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>quasi steady</mml:mtext>
<mml:mo>-</mml:mo>
<mml:mtext>state</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>positivity</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>flux bounds, dependent on environment</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>with given initial conditions<disp-formula id="equ2">
<mml:math id="m20">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>The flux rates are determined through optimization of a linear functional (often the flux through the biomass reaction, assembled in a vector <inline-formula id="inf13">
<mml:math id="m21">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obj</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>)<disp-formula id="equ3">
<mml:math id="m22">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2208;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi>argmin</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obj</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
</p>
<p>The quantities in (<xref ref-type="disp-formula" rid="e4">2.3</xref>) can be identified as:<disp-formula id="equ4">
<mml:math id="m23">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>:</mml:mo>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2208;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>argmin</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.17em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obj</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>while typically no additional (global) objective function is present. Note that the defining condition on the fluxes <inline-formula id="inf14">
<mml:math id="m24">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi>argmin</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obj</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> is an inclusion, such that the solutions to dynamic FBA problems are, in general, not unique. To remedy this, flux variability analysis (FVA) (<xref ref-type="bibr" rid="B21">Mahadevan and Schilling, 2003</xref>) was introduced as a computational tool to explore the range of possible solutions of the static sub-problems.</p>
</statement>
</p>
<p>
<statement content-type="example" id="example2_2">
<label>
<sc>Example</sc> 2.2</label>
<p>(Dynamic enzyme-cost FBA, deFBA). Dynamic enzyme-cost FBA (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>) is a dynamic extension of FBA that takes into account the temporal development and function of the enzymes. This is modeled by a system of linear inequalities<disp-formula id="e7">
<mml:math id="m25">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2.4)</label>
</disp-formula>with<disp-formula id="e8">
<mml:math id="m26">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
<label>(2.5)</label>
</disp-formula>The model is usually formulated as an initial-value problem<disp-formula id="equ5">
<mml:math id="m27">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>Similar to FBA, deFBA assumes that a certain objective function is to be optimized. Since the framework entails a fully dynamic model over the whole time range of interest, the objective function contains &#x201c;global&#x201d; information, expressed as an optimal control objective of Boltza-type (<xref ref-type="bibr" rid="B7">Gerdts, 2011</xref>),<disp-formula id="equ6">
<mml:math id="m28">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.28em"/>
<mml:mtext>&#x2009;with&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>Like in dFBA, the control variables in deFBA can be identified with the flux rates and the description in terms of (<xref ref-type="disp-formula" rid="e4">2.3</xref>) is given by<disp-formula id="equ7">
<mml:math id="m29">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>:</mml:mo>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
</p>
</statement>
</p>
<p>
<statement content-type="example" id="example2_3">
<label>
<sc>Example</sc> 2.3</label>
<p>(Conditional FBA, cFBA). This framework (<xref ref-type="bibr" rid="B29">R&#xfc;gen et al., 2015</xref>; <xref ref-type="bibr" rid="B28">Reimers et al., 2017</xref>) is again a dynamic extension of resource balance analysis (RBA) (<xref ref-type="bibr" rid="B10">Goelzer et al., 2011</xref>). Like in deFBA, enzymatic constraints (potentially alongside further constraints, e.g., on the cell&#x2019;s density) are included via (<xref ref-type="disp-formula" rid="e7">2.4</xref>). The boundary values in cFBA, however, are defined through a periodicity condition that accounts for the growth of the cell:<disp-formula id="e9">
<mml:math id="m30">
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(2.6)</label>
</disp-formula>Instead of using the biomass production on all time points, the objective in cFBA is the total growth of the cell until <italic>t</italic>
<sub>end</sub>. In terms of <xref ref-type="disp-formula" rid="e4">(2.3)</xref>, cFBA can be summarized as<disp-formula id="equ8">
<mml:math id="m31">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>&#x3b1;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>:</mml:mo>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>where <bold>
<italic>u</italic>
</bold>
<sub>1</sub> refers to the first component of the vector <bold>
<italic>u</italic>
</bold> and <bold>
<italic>u</italic>
</bold>
<sub>2:</sub> to the vector of the remaining entries. If no constraints on the cell density are included in (<xref ref-type="disp-formula" rid="e7">2.4</xref>), the inequalities defining cFBA are often scale-invariant in the sense that for each solution <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) and each number <italic>&#x3b2;</italic> &#x2265; 0, the function <italic>&#x3b2;</italic> &#x22c5;<bold>
<italic>y</italic>
</bold>(<italic>t</italic>) is also a solution. To exclude trivial solutions, the boundary conditions are therefore often extended such that the biomass at <italic>t</italic>
<sub>0</sub> is equal to one. Note that cFBA is inherently nonlinear as the products <bold>
<italic>u</italic>
</bold>
<sub>1</sub>&#x22c5;<bold>
<italic>y</italic>
</bold> in the boundary value constraints contribute quadratically in the unknowns <bold>
<italic>y</italic>
</bold> and <bold>
<italic>u</italic>
</bold>. Like in RBA, the numerical solution of cFBA problems therefore comprises a series of linear programs that have to be solved after a discretization of the dynamics by means of, for example, a collocation scheme.</p>
</statement>
</p>
<p>
<statement content-type="example" id="example2_4">
<label>
<sc>Example</sc> 2.4</label>
<p>(Iterative RBA, (<xref ref-type="bibr" rid="B19">Liu, 2020</xref>), see also dynamic ME (<xref ref-type="bibr" rid="B36">Yang et al., 2019</xref>)). Just as dynamic FBA can be seen as a dynamic extension of classical FBA by iteratively applying the algorithm with constraints following the external conditions, resource balance analysis (RBA, see <xref ref-type="bibr" rid="B10">Goelzer et al. (2011)</xref>) can also be applied consecutively. In doing that, the limit case of infinitesimally short sub-intervals leads to a fully dynamic framework. Numerically, this limiting process is skipped and one only solves RBA problems on a series of short&#x2014;but finite&#x2014;time intervals. Note that, as cFBA, RBA uses periodicity conditions like (<xref ref-type="disp-formula" rid="e9">2.6</xref>) which implies that, in constant external conditions, only one RBA problem needs to be solved. The full solution in this case is given by an exponential curve for <bold>
<italic>y</italic>
</bold>(<italic>t</italic>). Note that there are fewer degrees-of-freedom for the cell when compared to deFBA or cFBA, as the fixed concentration values for the metabolites in the case of iterative RBA also block internal dynamics of the metabolic network.</p>
<p>In the notation of the constraint-based framework (<xref ref-type="disp-formula" rid="e4">2.3</xref>), iterative RBA can be written as<disp-formula id="equ9">
<mml:math id="m32">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>&#x3b1;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>:</mml:mo>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2264;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>&#x3bb;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>ln</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>/</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>Note that the control variables <bold>
<italic>u</italic>
</bold> are not time-dependent, i.e., they enter the model as control parameters rather than functions that need to be optimized in the sense of optimal control.</p>
</statement>
</p>
</sec>
<sec id="s2-3">
<title>2.3 Time-Optimal Adaptation: Definition and Forms</title>
<p>Previous frameworks for constraint-based optimization did not explicitly include the time interval as part of the optimization objective. In the following, we introduce Time-Optimal Adaptation (TOA) as a framework to analyze transition between different cellular states in the shortest possible time. TOA is motivated by the assumption that under certain environmental conditions, cells may have evolved to reach target amounts <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> in the shortest possible time, starting from initial amounts <bold>
<italic>y</italic>
</bold>
<sup>init</sup>. This transition might either take place in a variable environment, encoded by a time-dependent set <inline-formula id="inf15">
<mml:math id="m33">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, or in a constant environment. Likewise, the target and initial amounts may either have to fulfill additional optimality criteria, or may correspond to pre-defined or experimentally measured states. Mathematically, we capture such a strategy in the following way.</p>
<sec id="s2-3-1">
<title>Time-Optimal Adaptation</title>
<p>Given an initial/current amount of molecules <inline-formula id="inf16">
<mml:math id="m34">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and a target amount <inline-formula id="inf17">
<mml:math id="m35">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, the optimization objective is to transition from the former to the latter as quickly as possible.<disp-formula id="e10">
<mml:math id="m36">
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
<mml:mi>T</mml:mi>
</mml:math>
<label>(2.7a)</label>
</disp-formula>
<disp-formula id="e11">
<mml:math id="m37">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mtext>s.&#x2009;t.&#x2009;</mml:mtext>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(2.7b)</label>
</disp-formula>
<disp-formula id="e12">
<mml:math id="m38">
<mml:mtext>and</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mtext>for</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>almost</mml:mtext>
</mml:mrow>
</mml:mfenced>
<mml:mtext>all</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>2.3</mml:mn>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
<label>(2.7c)</label>
</disp-formula>
</p>
<p>The constraints <xref ref-type="disp-formula" rid="e12">(2.7c)</xref> and <xref ref-type="disp-formula" rid="e11">(2.7b)</xref> can be framed within the abstract constraint-based framework (<xref ref-type="disp-formula" rid="e4">2.3</xref>) by including <bold>
<italic>y</italic>
</bold>
<sup>init</sup> and <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> using<disp-formula id="equ10">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>bndry</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>whereas the global objective function, cf. <italic>f</italic> in (<xref ref-type="disp-formula" rid="e4">2.3</xref>), does not explicitly contain any of the variables <bold>
<italic>y</italic>
</bold> or <bold>
<italic>u</italic>
</bold>. Instead, the general framework of constraint-based modeling (<xref ref-type="disp-formula" rid="e4">2.3</xref>) is extended through time-optimal adaptation by using the end point of the time interval of interest itself as the optimization objective function. In contrast to the frameworks with non-time-dependent objective function as defined in (<xref ref-type="disp-formula" rid="e6">2.3c</xref>), TOA provides solutions (<bold>
<italic>y</italic>
</bold>(<italic>t</italic>), <bold>
<italic>u</italic>
</bold>(<italic>t</italic>)) only on the time interval [<italic>t</italic>
<sub>0</sub>, <italic>T</italic>] instead of (arbitrary) [<italic>t</italic>
<sub>0</sub>, <italic>t</italic>
<sub>end</sub>].</p>
<p>
<italic>Remark</italic> 2.5. Within this work, we assume that the target amounts <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> are accessible. Specifically, we assume that a time <italic>t</italic>
<sub>end</sub> &#x2265; <italic>T</italic> exists such that all values within the optimization problem defining TOA are well-defined. We note that the accessibility of the target state is a classical problem in time-optimal control, and accessibility is a prerequisite for applying TOA. In practice, the target state will often be defined by means of an RBA solution and we conjecture that these target states will be accessible.</p>
<p>
<italic>Remark</italic> 2.6. Within this work, we use the term &#x201c;adaptation&#x201d; in a control-theoretic sense. That is, the term refers to changes in the intracellular amounts or concentrations in response to the environmental conditions, respecting the given constraints. In an evolutionary context, such changes are typically considered as &#x201c;acclimation&#x201d;.</p>
<p>
<italic>Remark</italic> 2.7. We do not require the constraint set <inline-formula id="inf18">
<mml:math id="m40">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> in (<xref ref-type="disp-formula" rid="e4">2.3a</xref>) to have any specific form. This means that time-optimal adaptation can be defined irrespective of the concrete modeling paradigm underneath the simulation. Practically, even discrete time/state systems fit well within TOA. To be concise, however, we concentrate in the following on frameworks closely related to deFBA and cFBA. In <xref ref-type="statement" rid="example2_8">Example 2.8</xref>, we therefore introduce TOA also in a simplified setting that directly builds upon d(e)FBA, cf. (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>; <xref ref-type="bibr" rid="B14">H&#xf6;ffner et al., 2016</xref>). From the viewpoint of the general framework (<xref ref-type="disp-formula" rid="e4">2.3</xref>), this is a special case of deFBA with a modified objective function.</p>
<p>
<statement content-type="example" id="example2_8">
<label>
<sc>Example</sc> 2.8</label>
<p>(TOA as an extension of deFBA). Assume that there is no distinction between &#x201c;fast&#x201d; and &#x201c;slow&#x201d; components within the metabolic network. In this case, the dynamics of its molecular amounts can be described purely by ordinary differential equations <inline-formula id="inf19">
<mml:math id="m41">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. As for classical flux balance analysis, the fluxes are constrained by upper and lower bounds <bold>
<italic>lb</italic>
</bold>, <bold>
<italic>ub</italic>
</bold> that might depend on the possibly changing environment, i.e., <bold>
<italic>ub</italic>
</bold>(<italic>t</italic>) &#x2264; <bold>
<italic>v</italic>
</bold>(<italic>t</italic>) &#x2264; <bold>
<italic>ub</italic>
</bold>(<italic>t</italic>). If <bold>
<italic>y</italic>
</bold> contains compounds with enzymatic function, the flux rates (or weighted sums thereof) may additionally be constrained by (weighted sums of) components of <bold>
<italic>y</italic>
</bold>. Such bounds can be collected into a single set of linear inequalities by introducing suitable matrices/vectors <bold>H</bold>
<sub>
<bold>y</bold>
</sub>(t), <bold>H</bold>
<sub>
<bold>v</bold>
</sub>(t), <bold>
<italic>h</italic>
</bold>(<italic>t</italic>), i.e.,<disp-formula id="equ11">
<mml:math id="m42">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>see (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>, <xref ref-type="sec" rid="s2-3">Section 2.3</xref>) for a detailed description. To account for <bold>
<italic>y</italic>
</bold> being total amounts, <bold>
<italic>y</italic>
</bold> is constrained to positive values, i.e., <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) &#x2265;<bold>0</bold>. As outlined above, TOA requires fixed initial and terminal values for the molecular amounts, mathematically captured by<disp-formula id="equ12">
<mml:math id="m43">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="2em"/>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>In summary, TOA can be aggregated in this simplified case to the following constrained optimization problem<disp-formula id="equ13">
<mml:math id="m44">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi>T</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mtext>s.t.</mml:mtext>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mfenced open="" close="}">
<mml:mrow>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2265;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mfenced open="" close="}">
<mml:mrow>
<mml:mtable class="array">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>The notation &#x201c;<inline-formula id="inf20">
<mml:math id="m45">
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>&#x201d; can be understood in the sense of optimal control, i.e., one is searching for the optimal objective value among all (differentiable) functions <bold>
<italic>y</italic>
</bold>(<italic>t</italic>), <italic>t</italic> &#x2208; [<italic>t</italic>
<sub>0</sub>, <italic>T</italic>], and (measurable) functions <bold>
<italic>v</italic>
</bold>(<italic>t</italic>), <italic>t</italic> &#x2208; [<italic>t</italic>
<sub>0</sub>, <italic>T</italic>]. The framework identifies possible time courses for the fluxes <bold>
<italic>v</italic>
</bold>(<italic>t</italic>) and amounts <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) such that (i) stoichiometry, (ii) flux bounds, and (iii) enzyme activities are included in the model and such that the transition from one given amount to another is as fast as possible.</p>
</statement>
</p>
</sec>
</sec>
<sec id="s2-4">
<title>2.4 Applications and Case Studies</title>
<p>Next we introduce two particularly relevant applications of TOA.</p>
<p>
<statement content-type="application" id="application2_1">
<label>
<sc>Application</sc> 2.1</label>
<p>(Cell Doubling). A first natural application of TOA is cell doubling, where the objective is to double all cellular components in minimal time, such that<disp-formula id="equ14">
<mml:math id="m46">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x22c5;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>The resulting trajectory thus can be interpreted as one&#xa0;cell cycle. Neither the initial, nor the target amount have to be optimal with regard to other objectives. Within the TOA framework, cell doubling can be considered either in a constant environment, or with time-dependent external conditions. We note that applications of constraint-based optimization of metabolism typically do not distinguish between solutions for a single cell vs. solutions for a homogeneous population of cells. Similarly, the time courses for cell doubling predicted by TOA can either be interpreted for a single cell or a homogeneous, synchronized population of cells. If cells are not synchronized, that is each cell within the population is at a different time point with respect to its cell cycle, we have to average over the population or, equivalently, over a full cell cycle, to obtain <italic>in silico</italic> measurements of a population.</p>
</statement>
</p>
<p>
<statement content-type="application" id="application2_2">
<label>
<sc>Application</sc> 2.2</label>
<p>(Transitions after a nutrient shift). A second important application of TOA is to consider a sudden change in the external conditions, i.e., from a given constant nutrient availability for <italic>t</italic> &#x3c; 0 to a different one for <italic>t</italic> &#x2265; 0. In this scenario, TOA can be utilized to predict the transition of the intracellular amounts <bold>
<italic>y</italic>
</bold>
<sup>init</sup> to new target amounts <bold>
<italic>y</italic>
</bold>
<sup>goal</sup>. The new target amounts might either be optimal with respect to the new environmental conditions (as defined by RBA), or be provided otherwise (for example by experimental observations). In both scenarios, the target amounts are typically defined in terms of concentrations instead of absolute amounts. Hence, we must also formulate the boundary conditions in terms of <bold>
<italic>c</italic>
</bold>(t),<disp-formula id="e13">
<mml:math id="m47">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</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:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x22c5;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(2.8)</label>
</disp-formula>As shown in <xref ref-type="sec" rid="s11">Supplementary Appendix S3</xref>, it is possible to rearrange conditions (2.8) such that a linear equality system in the unknowns (<bold>y</bold>(t<sub>0</sub>), <bold>
<italic>y</italic>
</bold>(<italic>T</italic>)) is obtained. Therefore, the concentration-based definition has no immediate drawbacks regarding the numerical solution.</p>
<p>We must further consider that an as-quick-as-possible transition from one intracellular concentration to another does not incorporate the overall (i.e., biomass-) growth of the cell and thus might not represent an evolutionarily plausible strategy. Rather, the transition to new external conditions involves a balance between fast transition to a (better adapted) novel state and the requirement to increase (or not decrease) the total biomass of the cell. To obtain a general framework, we therefore propose a two-objective optimization problem:<disp-formula id="e14">
<mml:math id="m48">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>T</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mtext mathvariant="italic">s.t.&#x2009;</mml:mtext>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>init</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>goal</mml:mtext>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>and</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mtext>for</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>almost</mml:mtext>
</mml:mrow>
</mml:mfenced>
<mml:mtext>all</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(2.9)</label>
</disp-formula>where <bold>
<italic>y</italic>
</bold>
<sup>init</sup> denotes a normalized vector of intracellular amounts which describe the cells for the environment <italic>t</italic> &#x3c; 0. The &#x201c;normalization&#x201d; here can, for example, be understood as <bold>
<italic>w</italic>
</bold>
<sup>&#x22a4;</sup>&#x22c5;<bold>
<italic>y</italic>
</bold>
<sup>init</sup> &#x3d; 1. Accordingly, <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> denotes a normalized vector for the environmental conditions after the nutrient shift. &#x201c;Minimality&#x201d; in (<xref ref-type="disp-formula" rid="e14">2.9</xref>) is to be understood in the sense of Pareto: a triple (<bold>
<italic>y</italic>
</bold>(<italic>t</italic>), <bold>
<italic>u</italic>
</bold>(<italic>t</italic>), <italic>T</italic>) is optimal if <italic>T</italic> cannot be decreased without decreasing <italic>&#x3b1;</italic> such that <bold>
<italic>y</italic>
</bold>(<italic>T</italic>) &#x3d; &#x3b1; &#x22c5;<bold>
<italic>y</italic>
</bold>
<sup>goal</sup>, and vice-versa if <italic>&#x3b1;</italic> cannot be increased without also increasing the end time <italic>T</italic>. The set of all optimal solutions of (<xref ref-type="disp-formula" rid="e14">2.9</xref>) describes the different compromises between fast adaptation and continued growth.</p>
<p>
<italic>Remark</italic> 2.9. Note that the boundary conditions <xref ref-type="disp-formula" rid="e13">(2.8)</xref> do not entail any direct condition concerning <italic>bio</italic>(<italic>t</italic>
<sub>end</sub>) &#x3d; <bold>
<italic>w</italic>
</bold>
<sup>&#x22a4;</sup>&#x22c5;<bold>
<italic>y</italic>
</bold>(<italic>t</italic>
<sub>end</sub>). If the metabolic network allows for a quick degradation of compounds, it might be optimal (in the sense of TOA) to shrink (in terms of absolute biomass) before actually adapting to the new concentrations, or even to completely disintegrate all metabolic compounds to zero. Such a behavior would be in line with the description of time-optimal time courses as induced by <xref ref-type="disp-formula" rid="e13">(2.8)</xref>. To remedy this, a linear inequality<disp-formula id="equ15">
<mml:math id="m49">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2265;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mspace width="2em"/>
<mml:mtext>&#x2009;or&#x2009;</mml:mtext>
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>end</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2265;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>can be added, illustrating again the power of constraint-based modeling. Whenever necessary, this was done for the in silico experiments in <xref ref-type="sec" rid="s3">Section 3</xref>.</p>
</statement>
</p>
</sec>
<sec id="s2-5">
<title>2.5 Numerical Solution</title>
<p>The optimization problem (<xref ref-type="disp-formula" rid="e10">2.7</xref>) of TOA contains a general condition on the dynamics of <bold>
<italic>y</italic>
</bold> in the form of <xref ref-type="disp-formula" rid="e12">(2.7c)</xref>. To design an algorithm able to cope with this generality, we assume that a numerical method is available that can simulate this dynamic behavior subject to boundary conditions on a given fixed time interval [<italic>t</italic>
<sub>1</sub>, <italic>t</italic>
<sub>2</sub>] &#x2286; [<italic>t</italic>
<sub>0</sub>, <italic>T</italic>] and/or to determine whether such a solution exists. Provided this condition (and tacitly assuming that the relevant feasible end time points <italic>T</italic> lie in a connected set), the minimal value for <italic>T</italic> can be found using any one-dimensional root finding algorithm. For its simplicity and guaranteed convergence, we propose to use the following bisection method for the determination of <italic>T</italic> in TOA:</p>
<p>
<inline-graphic xlink:href="fmolb-09-866676-fx1.tif"/>
</p>
<p>For the initial time interval [<italic>t</italic>
<sub>min</sub>, <italic>t</italic>
<sub>max</sub>], one needs to assume that <xref ref-type="disp-formula" rid="e11">(2.7b)</xref> and <xref ref-type="disp-formula" rid="e12">(2.7c)</xref> define an infeasible problem on [<italic>t</italic>
<sub>0</sub>, <italic>t</italic>
<sub>min</sub>], while the corresponding problem on [<italic>t</italic>
<sub>0</sub>, <italic>t</italic>
<sub>max</sub>] is feasible. The quick convergence of the bisection method entails that an already very good initial guess is not crucial for an efficient implementation, as long as the simulation task is not too computationally expensive.</p>
<p>If there is legitimate doubt about the result, the algorithm can be re-started with another initial interval or one can change to a more fine-grained sampling for the evaluation of feasible and infeasible points. The numerical results in <xref ref-type="sec" rid="s3">Section 3</xref> were preceded by an exhaustive scan of end time points, which indicated that the set of feasible end time points do indeed form a single interval (i.e., a connected set) in all shown examples.</p>
<p>
<italic>Remark</italic> 2.10. The bisection method was chosen here for several reasons over more &#x201c;classical&#x201d; methods in time-optimal control: firstly, the &#x201c;simplicity&#x201d; aspect of the bisection method does not only refer to it being easily applicable for various extensions of the framework (like time- and/or state-discrete systems, or a framework that incorporates heterogeneity within a community or in space) but also to the implementation. Many existing toolboxes include interfaces to (MI-)LP solvers. Algorithms for dynamic simulations are moreover often highly optimized, such that checking for feasibility over a given time range can be more efficient than implementing a new interface to an optimal control library.</p>
<p>Secondly, the inherently linear structure of problems like deFBA should be preserved. For time-dependent constraint sets <inline-formula id="inf21">
<mml:math id="m50">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> this is only possible if the time variable <italic>t</italic> is treated as the independent variable in the optimal control algorithm. In existing optimal control libraries like BOCOP (<xref ref-type="bibr" rid="B2">Bonnans et al., 2017</xref>), time-optimal control problems are often transferred to optimal control problems on a unit interval by introducing an artificial independent variable. If the time-dependency of some of the constraints is non-linear, this translates to the optimization problems that need to be solved within the optimal control routine.</p>
<p>We note, however, that in the non-linear case the application of &#x201c;classical algorithms&#x201d; for time-optimal control problems like shooting-methods, or those based on the Pontryagin principle might generally outperform the bisection approach taken here.</p>
<p>
<italic>Remark</italic> 2.11. For the solution of the Pareto problem (<xref ref-type="disp-formula" rid="e14">2.9</xref>) it is not necessary to implement algorithms for maximizing <italic>&#x3b1;</italic>, i.e., optimizing the second objective. Instead, one can continue using the algorithm for time-optimal adaptation while simultaneously fixing feasible values of <italic>&#x3b1;</italic>. With respect to the definition of Pareto-optimality, this means that for any feasible value of one objective, the other one is optimized, corresponding to the so-called <italic>&#x3f5;</italic>-constraint method in multi-objective optimization, cf. (<xref ref-type="bibr" rid="B5">Ehrgott, 2000</xref>).</p>
</sec>
<sec id="s2-6">
<title>2.6 Time-Optimal Adaptation Variability Analysis</title>
<p>Minimizing <italic>T</italic> need not suffice to uniquely determine the time courses in <bold>
<italic>y</italic>
</bold>. If this is the case, the variability over time can be captured by enumerating possible time series once the optimal end time point was found. We will refer to this procedure as TOA-Variability Analysis (TOA-VA). In contrast to static flux variability analysis (FVA), there are several ways to define what such an enumeration means. One way would be to determine the maximum and minimum possible value for all components of <bold>
<italic>y</italic>
</bold> and separately at each time point. This, however, would not only lead to time-consuming computations, but would also be difficult to interpret: a numerical solution that is constructed via putting together maxima or minima <inline-formula id="inf22">
<mml:math id="m51">
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for all time instances <inline-formula id="inf23">
<mml:math id="m52">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> does not have to fulfill the dynamics defined by the original model. Here, we understand TOA-VA as the minimization and maximization of the integral over all components of <bold>
<italic>y</italic>
</bold>, i.e., for all <italic>i</italic> &#x3d; 1, 2, &#x2026;, <italic>n</italic>
<sub>
<bold>y</bold>
</sub>:<disp-formula id="e15">
<mml:math id="m53">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.17em"/>
<mml:mspace width="0.17em"/>
<mml:mo>&#xb1;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
</mml:math>
<label>(2.10)</label>
</disp-formula>subject to the dynamic and/or boundary constraints in the original problem. Note that the overall time courses might still not be uniquely defined from (<xref ref-type="disp-formula" rid="e15">2.10</xref>).</p>
<p>To explore the variability of the time courses for the concentrations <bold>
<italic>c</italic>
</bold>(t), we use the following variant of TOA-VA, which is called relative TOA-VA:<list list-type="simple">
<list-item>
<p>(i) Compute the optimal end time point <italic>T</italic> of time-optimal adaptation.</p>
</list-item>
<list-item>
<p>(ii) For all <italic>i</italic> &#x3d; 1, 2, &#x2026; , <italic>n</italic>
<sub>
<bold>y</bold>
</sub>: Use TOA-VA as in (<xref ref-type="disp-formula" rid="e15">2.10</xref>) to obtain a minimal value <italic>I</italic>
<sub>min,i</sub> and a maximal value <italic>I</italic>
<sub>max,i</sub> for the integral of <italic>y</italic>
<sub>i</sub> over [<italic>t</italic>
<sub>0</sub>, <italic>T</italic>].</p>
</list-item>
<list-item>
<p>(iii) Calculate for all <italic>i</italic> &#x3d; 1, 2, &#x2026; , <italic>n</italic>
<sub>
<bold>y</bold>
</sub> the (maximal and minimal) concentrations <italic>c</italic>
<sub>i</sub>(<italic>t</italic>) as given by <xref ref-type="disp-formula" rid="e1">(2.1)</xref> where <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) is calculated from</p>
</list-item>
</list>
<disp-formula id="equ16">
<mml:math id="m54">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:munder>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left"/>
<mml:mtd columnalign="right">
<mml:mtext>s.t.&#x2009;</mml:mtext>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left"/>
<mml:mtd columnalign="right">
<mml:mtext>s.t.&#x2009;</mml:mtext>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>(again subject to the original constraints of the problem).</p>
<p>There is still no guarantee that the solutions to these problems are unique. However, since the concentrations are defined as the ratio of total amounts to the biomass, the above definition is reasonable as one is maximized whilst minimizing the other. Note, that this definition implies that the weighted sum of all (maximal or minimal) concentrations no longer needs to add to the total biomass.</p>
</sec>
<sec id="s2-7">
<title>2.7 Implementation</title>
<p>The calculations for all experiments in <xref ref-type="sec" rid="s3">Section 3</xref> were done in Python 3.8.1 on a laptop computer. Scripts that reproduce the numerical experiments below are available on GitHub, <ext-link ext-link-type="uri" xlink:href="https://github.com/MarkusKoebis/StaticTOA_py">https://github.com/MarkusKoebis/StaticTOA_py</ext-link> The numerical solutions were determined from a complete parameterization (using the trapezoidal rule) of the compounds and fluxes over the entire time range of interest using <italic>n</italic> &#x3d; 100 steps on an equidistant grid. This leads to a sparse LP problem which was solved using <monospace>gurobipy</monospace> on Gurobi 9.0.1 solver (<xref ref-type="bibr" rid="B11">Gurobi, 2021</xref>) with standard settings (concerning problem formulation and tolerances). Most experiments were repeated (for verification) with tight error tolerances without notable differences. For time-optimal adaptation, no objective vector for the LPs is necessary, so we used the null vector <bold>0</bold>. For (relative) TOA-VA, the integrals in the objective or constraints were approximated using the same time grid and also the trapezoidal rule.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Results</title>
<sec id="s3-1">
<title>3.1 A Coarse-Grained Self-Replicator Model</title>
<p>We illustrate TOA by means of a coarse-grained self-replicator model (<xref ref-type="bibr" rid="B22">Molenaar et al., 2009</xref>; <xref ref-type="bibr" rid="B8">Giordano et al., 2016</xref>; <xref ref-type="bibr" rid="B35">Yabo et al., 2022</xref>). The model, cf. <xref ref-type="fig" rid="F1">Figure 1</xref>, consists of three compounds: <italic>M</italic> (intracellular metabolic precursor), <italic>Tr</italic> (transporter), and <italic>R</italic> (ribosome), as well as five biochemical reactions, and the external nutrient <italic>N</italic>. The uptake of the external nutrient <italic>N</italic> is catalyzed by the transporter <italic>Tr</italic> and depends on the availability of <italic>N</italic> via a Michaelis-Menten rate equation. Depending on the application, the concentration of the external nutrient <italic>N</italic> may either be constant or vary over time. The synthesis of the catalytic macromolecules <italic>Tr</italic> and <italic>R</italic> is limited by the ribosome amount. Within the model, macromolecules can be disassembled into the precursor <italic>M</italic>. For energetic consistency, however, disassembly results in fewer precursor molecules than required for synthesis, reflecting the energy expenditure of protein synthesis and thereby avoiding futile cycles. We note that within the model, no compound is subject to the quasi steady-state assumption, and the metabolic precursor <italic>M</italic> can accumulate over time. Hence <italic>M</italic> also serves as a storage compound. All constraints of the model can be formulated in terms of linear inequalities. A detailed definition is provided in <xref ref-type="sec" rid="s11">Supplementary Appendix S2.1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>A schematic illustration of the coarse-grained self-replicator model; solid lines represent biochemical reactions between the nodes (biochemical compounds), dashed dark-blue lines indicate that a reaction is catalyzed by the respective compound. Abbreviations: <italic>N</italic>, external nutrient; <italic>M</italic>, metabolic precursor/storage; <italic>Tr</italic>, transporter; <italic>R</italic>: ribosome; <italic>v<sub>N</sub>
</italic>, nutrient uptake reaction; <italic>v<sub>R</sub>
</italic>, ribosome production reaction; <italic>vd<sub>R</sub>
</italic>, ribosome degradation reaction; <italic>v<sub>Tr</sub>
</italic>, transporter production reactions; <italic>vd<sub>Tr</sub>
</italic>, transporter degradation reaction.</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g001.tif"/>
</fig>
</sec>
<sec id="s3-2">
<title>3.2 Constant Environments and RBA</title>
<p>Before the dynamic behavior of the model is studied by means of TOA, we summarize the steady-state properties of the model in a constant environment using Resource Balance Analysis (RBA). RBA provides a method to calculate the steady-state amounts of the cell that maximize the growth rate under constant external conditions, i.e., for a constant external nutrient concentration. In the following, extracellular nutrient is measured relative to the Michaelis constant <italic>K<sub>M</sub>
</italic> of the uptake reaction, with <italic>N/K<sub>M</sub>
</italic> as a dimensionless parameter.</p>
<p>
<xref ref-type="fig" rid="F2">Figure 2A</xref> shows the maximal growth rate <italic>&#x3bb;</italic> as a function of the relative nutrient availability. The growth rate follows a Monod equation with a maximum <italic>&#x3bb;</italic>
<sup>max</sup> &#x2248; 0.435&#x2009;h<sup>&#x2212;1</sup> and an effective (dimensionless) affinity constant <italic>K<sub>A</sub>
</italic> &#x2248; 0.347, corresponding to the value of the relative nutrient availability <italic>N/K<sub>M</sub>
</italic> at which the cell grows at half the maximal growth rate <italic>&#x3bb;</italic>
<sup>max</sup>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>
<bold>(A)</bold> Maximal growth rate <italic>&#x3bb;</italic> as a function of the (relative) extracellular nutrient availability as predicted by RBA. <bold>(B)</bold> Cellular amounts of intracellular compounds as functions of relative nutrient availability. Extracellular nutrient is measured relative to the Michaelis constant <italic>K<sub>M</sub>
</italic> of the uptake reaction.</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g002.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F2">Figure 2B</xref> shows the total amounts of the three intracellular components <italic>M</italic>, <italic>Tr</italic>, and <italic>R</italic> as a function of the (relative) nutrient availability. The amounts were scaled such that the total biomass always equals one unit (e.g., 1&#xa0;g cellular dry mass). As expected, when maximizing the growth rate, the level of the precursor/storage component <italic>M</italic> is always zero. This reflects the fact that the precursor <italic>M</italic> has no catalytic activity, and any non-zero amount of <italic>M</italic> would consume resources that otherwise could be allocated to transport or protein translation.</p>
<p>The amounts of the other intracellular components <italic>Tr</italic> and <italic>R</italic> follow the well-known growth laws of microbiology (<xref ref-type="bibr" rid="B30">Scott and Hwa, 2011</xref>). The concentrations are a function of the growth rate, and hence the external nutrient availability, the well-known linear relationship is shown in <xref ref-type="sec" rid="s11">Supplementary Appendix S4</xref>. With increasing nutrient availability, the relative amount of transporter decreases, whereas the relative amount of ribosome increases.</p>
</sec>
<sec id="s3-3">
<title>3.3 TOA in Constant Environments</title>
<p>Our first case study using TOA is to consider the doubling of a microbial cell in minimal time. We assume that the self-replicator model in <xref ref-type="fig" rid="F1">Figure 1</xref> has pre-described initial amounts <bold>
<italic>y</italic>
</bold>(<italic>t</italic>
<sub>0</sub>) &#x3d; <bold>
<italic>y</italic>
</bold>
<sub>0</sub> which simultaneously identify the pre-defined initial state <bold>
<italic>y</italic>
</bold>
<sup>init</sup>. The objective is to double all cellular components as fast as possible, cf. <xref ref-type="statement" rid="application2_1">Application 2.1</xref>. The environment is assumed to be constant with a relative (external) nutrient availability <italic>N/K<sub>M</sub>
</italic> &#x3d; 1. The initial (and final) amounts are not assumed to be optimal for the given environment. Instead, <bold>
<italic>y</italic>
</bold>(<italic>t</italic>
<sub>0</sub>) is obtained by solving an RBA problem corresponding to <italic>N/K<sub>M</sub>
</italic> &#x3d; 2.0. In other words, the cell is assumed to be adapted to a higher nutrient level than is present in the current environment. In the following, we will refer to such cells as &#x201c;optimists&#x201d;.</p>
<p>
<xref ref-type="fig" rid="F3">Figure 3</xref> shows the time course of intracellular components for one cell doubling. The predicted time-optimal amounts of metabolic compounds are shown as solid lines (red, blue, and yellow), the total biomass is shown in green. The dashed lines correspond to a solution obtained by iterative RBA (cf. <xref ref-type="other" rid="example2_4">Example 2.4</xref>), which corresponds to exponential growth of all cellular components with no further internal degrees of freedom. <xref ref-type="fig" rid="F3">Figure 3B</xref> shows the respective flux rates over the simulated time range. Solid lines again indicate the solution of TOA, while dashed lines (exponential curves) correspond to the solution found with iterative RBA.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Cell cycle of an &#x201c;optimistic&#x201d; cell; <bold>(A)</bold> amounts and biomass as a function of time, <bold>(B)</bold> flux rates as a function of time; solid lines indicate the solution of TOA, dashed lines indicate iterative RBA (exponential growth) with the same &#x201c;optimistic&#x201d; initial values.</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g003.tif"/>
</fig>
<p>Using TOA, the time for one cellular doubling is <italic>T</italic> &#x3d; 2.17&#xa0;h. In contrast, the solution based on iterative RBA results in a slightly longer doubling time of <italic>T</italic> &#x3d; 2.34&#x2009;&#xa0;h, showing that internal degrees of freedom shorten the calculated division time. The time course of <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) over one&#xa0;cell doubling can be subdivided into four time intervals (marked as I-IV in <xref ref-type="fig" rid="F3">Figure 3A</xref>). At the beginning (marked as interval &#x201c;I&#x201d;), cell growth is limited by the lack of transporter <italic>Tr</italic> due to the &#x201c;optimistic&#x201d; initial configuration of the cell. Hence, ribosome <italic>R</italic> is actively disassembled into precursor <italic>M</italic> to increase the synthesis of <italic>Tr</italic>. In interval &#x201c;II&#x201d;, the cell is perfectly adapted to the given nutrient environment and grows exponentially, before the re-adaptation to the target composition <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> &#x3d; 2 <bold>
<italic>y</italic>
</bold>
<sup>init</sup> begins in interval &#x201c;III&#x201d;. Within interval &#x201c;III&#x201d;, the cell still has an overabundance of <italic>Tr</italic>, which allows it to accumulate the precursor <italic>M</italic>. In the final interval &#x201c;IV&#x201d;, synthesis of transporter <italic>Tr</italic> ceases and all resources are devoted to the synthesis of the ribosome <italic>R</italic>, until the target amounts <bold>
<italic>y</italic>
</bold>
<sup>goal</sup> are reached.</p>
<p>The biological plausibility of these time courses is discussed in <xref ref-type="sec" rid="s4">Section 4</xref>. Here we only summarize the following results: Given the initial amounts <bold>
<italic>y</italic>
</bold>
<sup>init</sup>, cell doubling using TOA in time-invariant environments gives rise to complex intracellular dynamics different from solutions obtained by iterative RBA. Importantly, these solutions involve a transient accumulation of the precursor <italic>M</italic> as a storage compound&#x2013;a phenomenon not observed with iterative RBA. The minimal division time predicted by time-optimal adaptation is shorter than division times obtained by iterative RBA.</p>
<p>So far, we considered a particular initial amount <bold>
<italic>y</italic>
</bold>
<sup>init</sup> such that the cell was adapted to a higher nutrient availability than actually present in the environment (&#x201c;optimist&#x201d;). To obtain a broader view, we evaluated cell doubling using TOA in different time-invariant environments with initial (and final) amounts adapted to different external nutrient availability. The results are shown in <xref ref-type="fig" rid="F4">Figure 4</xref>. Solid lines correspond to intracellular amounts using TOA, dashed lines correspond to a solution obtained with iterative RBA (exponential growth without internal degrees of freedom). Shaded areas correspond to variability in the sense of TOA-VA (cf. <xref ref-type="sec" rid="s2-6">Section 2.6</xref>), i.e., possible solutions that equally satisfy all constraints and the optimality criterion. In this case, the solid lines display a &#x201c;nominal&#x201d; solution, i.e., one that was provided by the algorithm before an additional variability analysis (we note that since the numerical solution is based on a feasibility problem, the LP solver has no incentive to favor a smooth solution to any other).</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Time course solutions of time-optimal adaptation and a cell doubling experiment under different constant external nutrient conditions; solid lines: TOA, shaded areas: TOA-VA, dashed lines: iterative RBA (simulated until cell doubling was achieved); upper row: pessimistically adapted, middle row: perfectly adapted (recovery of iterative RBA), bottom row: optimistically adapted for constant relative nutrient availability of <italic>N/K<sub>M</sub>
</italic> &#x3d; 0.5 (left column), <italic>N/K<sub>M</sub>
</italic> &#x3d; 1.0 (middle column), and <italic>N/K<sub>M</sub>
</italic> &#x3d; 5.0 (right column).</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g004.tif"/>
</fig>
<p>Columns in <xref ref-type="fig" rid="F4">Figure 4</xref> correspond to different relative nutrient availability levels: the first column to a nutrient availability <italic>N</italic>(<italic>t</italic>)/<italic>K<sub>M</sub>
</italic> &#x2261; 0.5; the second column to <italic>N</italic>(<italic>t</italic>)/<italic>K<sub>M</sub>
</italic> &#x2261; 1.0, and the third to <italic>N</italic>(<italic>t</italic>)/<italic>K<sub>M</sub>
</italic> &#x2261; 5.0. The rows in <xref ref-type="fig" rid="F4">Figure 4</xref> correspond to different &#x201c;expectations&#x201d; of the cells, that is, which external nutrient availability the initial (and final) amounts are adapted to. Specifically, the first row corresponds to &#x201c;pessimists&#x201d;. That is, cells adapted to a nutrient availability below the one present in the environment, while retaining the objective to double all cellular components in minimal time. The second row corresponds to cells perfectly adapted to the environmental nutrient availability. The final row corresponds to &#x201c;optimists&#x201d;, i.e., cells adapted to a higher nutrient availability than present in the environment.</p>
<p>The latter scenario corresponds to the example already shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. We again observe an initial increase in the transporter synthesis, followed by a delayed onset of ribosome synthesis. Importantly, in each case, we can see a transient accumulation of storage <italic>M</italic>(<italic>t</italic>) that is absent in solutions obtained by iterative RBA. In the case of perfectly adapted cells (middle row), solutions obtained by TOA are equivalent to solutions obtained by iterative RBA. For &#x201c;pessimistic&#x201d; cells (top row), we again observe complex time courses. In particular, cells adapted to lower nutrient levels than present in the environment exhibit an overabundance of transporter. Hence, we observe an initial rapid uptake of nutrient and transient accumulation of the precursor <italic>M</italic>. In the initial interval, resources are primarily allocated to the synthesis of ribosomes. Only in the later interval, the transporter is synthesized to the required amounts (even at the expense of ribosomes that may be disassembled into precursors). The transient accumulation of precursor <italic>M</italic> exhibits considerable variability and the solutions of TOA are no longer unique.</p>
<p>A detailed discussion about the biological plausibility of these time courses is again relegated to <xref ref-type="sec" rid="s4">Section 4</xref>. Here we only note that, despite the simplicity of the model, the solutions exhibit a wide variety of qualitatively different complex temporal behaviors, including the transient accumulation of the precursor <italic>M</italic>.</p>
</sec>
<sec id="s3-4">
<title>3.4 The Role of Expectation: Optimists vs. Pessimists</title>
<p>We further investigate two key observations obtained in the previous experiments: the transient accumulation of precursor <italic>M</italic> as a storage compound, as well as the impact of the initial cellular state on the predicted doubling time.</p>
<p>Firstly, <xref ref-type="fig" rid="F5">Figure 5</xref> shows the average storage concentration predicted for a population of cells adapted to different nutrient availabilities (<italic>N/K<sub>M</sub>
</italic> &#x2208; (0.2, 2.0), <italic>x</italic>-axis) in an environment with an actual relative nutrient availability <italic>N/K<sub>M</sub>
</italic> &#x2261; 1.0. To calculate the average storage concentration predicted by TOA for a population of cells, we assume that the (<italic>in silico</italic>) measurements are taken from a heterogeneous population of unsynchronized cells that are (equidistributed) at various stages of their cell cycle. To take this non-uniform age distribution into account, the population average was computed, cf. (<xref ref-type="bibr" rid="B26">Powell, 1956</xref>), as<disp-formula id="e16">
<mml:math id="m55">
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>T</mml:mi>
</mml:mfrac>
<mml:mo>&#x010B;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(3.1)</label>
</disp-formula>where <bold>
<italic>y</italic>
</bold>(<italic>t</italic>) is a solution obtained by relative TOA-VA, cf. <xref ref-type="sec" rid="s2-6">Section 2.6</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Influence of optimistic and pessimistic goal states in cell doubling: Main plot: mean relative storage accumulation, see <xref ref-type="disp-formula" rid="e16">(3.1)</xref>, as a function of nutrient adaptation level. Bottom row: Three selected time courses, cf. <xref ref-type="fig" rid="F4">Figure 4</xref>, for nutrient adaptation levels <italic>N/K<sub>M</sub>
</italic> of 0.2, 1.1, and 2.0. For <italic>N/K<sub>M</sub>
</italic> &#x3c; 1, the quantity <italic>mean</italic>(<italic>M</italic>) is no longer unique such that a shaded area indicates the possible range, as TOA-VA also predicts a range of possible solutions (shaded area in the bottom left plot).</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g005.tif"/>
</fig>
<p>As shown in <xref ref-type="fig" rid="F5">Figure 5</xref>, we observe (the possibility of) a nonzero average storage concentration for all cellular states that are not perfectly adapted to the respective environment. For optimistic cells adapted to a higher nutrient availability than present in the environment, the average storage concentration increases slightly with the distance to the perfectly adapted state. The effect is more pronounced for pessimistic cells adapted to a lower nutrient availability than present in the environment. In this case, the solutions of TOA are not unique and the range of average storage is indicated as a shaded area. For &#x201c;pessimist&#x201d; cells, the large average storage is due to a high abundance of transporter molecules, which implies that uptake and accumulation of precursor is not restricted.</p>
<p>Secondly, <xref ref-type="fig" rid="F6">Figure 6</xref> shows the predicted growth rate for cells adapted to a different relative nutrient availability (<italic>N/K<sub>M</sub>
</italic> &#x2208; (0.2, 2.0)) than present in the environment (<italic>N/K<sub>M</sub>
</italic> &#x2261; 1.0). The straight line indicates the growth rate of cells that are perfectly adapted, resulting in a maximal growth rate <italic>&#x3bb;</italic> &#x3d; <italic>&#x3bb;</italic>
<sub>env</sub> &#x2248; 0.32&#xa0;&#x2009;h<sup>&#x2212;1</sup>. The maximal growth rates for cells adapted to a different environment (misadaptation) are shown as a solid green line for solutions obtained with TOA and as a purple line for solutions obtained with iterative RBA.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Growth rate of differently adapted cells as predicted by cell-doubling experiments using TOA and iterative RBA in an environment with relative nutrient availability <italic>N/K<sub>M</sub>
</italic> &#x3d; 1.0; <italic>&#x3bb;</italic>
<sub>env</sub> &#x2248; 0.32&#xa0;&#x2009;h<sup>&#x2212;1</sup> denotes the maximal growth rate as predicted by RBA.</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g006.tif"/>
</fig>
<p>We observe that misadaptation always results in a reduced growth rate, as compared to a perfectly adapted cell. However, solutions obtained by TOA always outperform solutions obtained by iterative RBA, demonstrating that internal degrees of freedom and transient accumulation of storage shorten the predicted doubling time. Furthermore, the decrease in growth rate is more pronounced for &#x201c;pessimistic&#x201d; adaptation, that is, for cells that are adapted to a lower nutrient level than present in the environment. In contrast, &#x201c;optimistic&#x201d; adaptation, that is, cells are adapted to a higher levels than present in the environment, together with TOA results in growth rates close to perfectly adapted cells&#x2013;indicating that &#x201c;optimistic&#x201d; adaptation carries a lower evolutionary cost than &#x201c;pessimistic&#x201d; adaptation.</p>
</sec>
<sec id="s3-5">
<title>3.5 Time-Optimal Adaptation at a Nutrient Shift</title>
<p>As our second application, we consider a nutrient shift, i.e., a sudden change in the external conditions from a given constant nutrient availability for <italic>t</italic> &#x3c; 0 to a different one for <italic>t</italic> &#x2265; 0. TOA is utilized to predict the time-optimal transition of a cell perfectly adapted to the initial state at <italic>t</italic> &#x3c; 0 to a state perfectly adapted to maximize growth in the new environment for <italic>t</italic> &#x2265; 0. As noted in <xref ref-type="sec" rid="s2-4">Section 2.4</xref>, the target state for the new environment is typically defined in terms of concentrations rather than absolute amounts, because it is unknown whether or how much the cells are able to grow during adaptation.</p>
<p>
<xref ref-type="fig" rid="F7">Figure 7</xref> shows the resulting time courses for the coarse-grained self-replicator model used in the previous sections. Shown are time-optimal shifts from a low nutrient availability to a higher nutrient availability (left column in <xref ref-type="fig" rid="F7">Figure 7</xref>), as well as time-optimal shifts from a high nutrient availability to a lower nutrient availability (right column in <xref ref-type="fig" rid="F7">Figure 7</xref>). Non-unique solutions are again displayed as shaded areas indicating the maximum and minimum range in which solutions can be found (TOA-FVA, see <xref ref-type="sec" rid="s2-6">Section 2.6</xref>). We observe that the time-optimal transition from lower to higher nutrient availability again entails a transient accumulation of storage.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Adaptation to a single nutrient jump (shown as a dashed green line), left column: adaptations from poorer to richer medium, right column: adaptation to scarcer environment; shaded areas: solutions in the sense of TOA-VA. We note that for <italic>t</italic> &#x3c; 0, TOA makes no assumptions about <bold>
<italic>y</italic>
</bold>(<italic>t</italic>).</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g007.tif"/>
</fig>
<p>As detailed in <xref ref-type="sec" rid="s2-4">Section 2.4</xref>, time-optimal adaptation alone is not sufficient as an evolutionary principle to explain cellular adaptation after a nutrient shift. Rather, we consider a two-objective optimization (in the sense of Pareto) with the conflicting objectives of a fastest possible adaptation to the new state vs. a maximal increase in total cellular biomass.</p>
<p>
<xref ref-type="fig" rid="F8">Figure 8</xref> (main panel) shows the resulting Pareto fronts for different transitions in terms of the minimal time <italic>T</italic>&#x2a; for adaptation vs. the maximal increase in cellular biomass given by the factor <italic>&#x3b1;</italic>, cf. (<xref ref-type="disp-formula" rid="e14">2.9</xref>). Panels A&#x2013;D in <xref ref-type="fig" rid="F8">Figure 8</xref> show selected time courses of intracellular amounts at different positions of the Pareto front. In the subplots A and B, the shaded areas indicate that the cell is perfectly adapted to the environment in the sense of RBA, i.e., from the start of the shaded areas, the cell exhibits balanced exponential growth at the maximal growth rate and no further internal dynamics take place. The absence of internal dynamics explains that, for larger values of <italic>&#x3b1;</italic> or <italic>T</italic>&#x2a;, the lines in the main plot become asymptotically parallel.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Two-objective optimization of adaption time <italic>T</italic>&#x2a; and total biomass growth factor &#x3b1; for time-optimal adaptation at a nutrient shift. Main plot: Pareto fronts for three different initial adaptations (measured in <italic>N/K<sub>M</sub>
</italic>) of 0.2, 1.0 and 10. Subplots <bold>(A&#x2013;D)</bold>: Time courses at different points on the Pareto fronts, cf. <xref ref-type="fig" rid="F7">Figure 7</xref>. The shaded areas in subplots A and B indicate time intervals where the cell is perfectly adapted (exponential growth).</p>
</caption>
<graphic xlink:href="fmolb-09-866676-g008.tif"/>
</fig>
<p>In the absence of a nutrient shift (i.e., the transition <italic>N/K<sub>M</sub>
</italic>: 1 &#x2192; 1, blue line in <xref ref-type="fig" rid="F8">Figure 8</xref>), the minimal time for adaptation is <italic>T</italic>&#x2a; &#x3d; 0 with a growth factor <italic>&#x3b1;</italic> &#x3d; 1, in this case the relationship between transition times <italic>T</italic>&#x2a; &#x3e; 0 and increase in biomass is consistent with exponential growth (note the logarithmic scale on the <italic>y</italic>-axis).</p>
<p>For a nutrient shift from high to low nutrient availability (<italic>N/K<sub>M</sub>
</italic>: 10 &#x2192; 1, black line) the minimal transition time is <inline-formula id="inf24">
<mml:math id="m56">
<mml:msup>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2248;</mml:mo>
</mml:math>
</inline-formula> 0.44&#xa0;h. <xref ref-type="fig" rid="F8">Figures 8A&#x2013;C</xref> show two representative transitions on the Pareto front with panel A corresponding to a scenario that prioritizes an increase in biomass (factor <italic>&#x3b1;</italic>) over the transition time <italic>T</italic>&#x2a;, and panel C corresponding to a scenario that prioritizes a minimal transition time over the accumulation of biomass.</p>
<p>For a nutrient shift from low to higher nutrient availability (<italic>N/K<sub>M</sub>
</italic>: 0.2 &#x2192; 1, green line) the minimal transition time is <inline-formula id="inf25">
<mml:math id="m57">
<mml:msup>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2248;</mml:mo>
</mml:math>
</inline-formula> 1.14&#xa0;h. <xref ref-type="fig" rid="F8">Figures 8B,D</xref> show two representative transitions on the Pareto front with panel B corresponding to a scenario that prioritizes an increase in biomass (factor <italic>&#x3b1;</italic>) over the transition time <italic>T</italic>&#x2a;, and panel D corresponding to a scenario that prioritizes a minimal transition time over the accumulation of biomass. In either case, the optimal transition involves a transient accumulation of the storage compound <italic>M</italic>.</p>
<p>Consistent with results in the previous section, <xref ref-type="fig" rid="F8">Figure 8</xref> also shows that &#x201c;optimistic&#x201d; adaptation carries a lower evolutionary cost than &#x201c;pessimistic&#x201d; adaptation. A cell adapted to high nutrient availability exhibits only a slightly reduced biomass increase when transitioning into a low nutrient environment, as compared to a cell already adapted to this environment. In contrast, a cell adapted to a lower nutrient environment exhibits a more pronounced reduction in accumulated biomass when transitioning into higher nutrient availability, as compared to either a cell that is already adapted to the higher nutrient availability, or likewise as compared to a cell that was previously adapted to even higher nutrient availability.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Discussion</title>
<p>In this work we introduced TOA, a novel approach to simulate and predict time-optimal adaptation of microbial metabolism and growth. While time-optimal modeling has been considered before, see, among others, (<xref ref-type="bibr" rid="B16">Klipp et al., 2002</xref>) (temporal gene expression), (<xref ref-type="bibr" rid="B25">Pavlov and Ehrenberg, 2013</xref>) (fast proteome adaptation to environmental change), (<xref ref-type="bibr" rid="B34">Waldherr et al., 2015</xref>) (maximize survival time under nutrient depletion), (<xref ref-type="bibr" rid="B1">Basan et al., 2020</xref>) (minimization of lag/response-time), and (<xref ref-type="bibr" rid="B4">Djema et al., 2020</xref>) (bio-reactor applications), our work builds upon the recent advances in dynamic constraint-based modeling, such as dFBA, deFBA and cFBA, cf. <xref ref-type="sec" rid="s2-2">Section 2.2</xref>. TOA is versatile and extends most approaches currently employed in constraint-based modeling of microbial metabolism and growth.</p>
<p>In particular, while the analysis of balanced steady-state growth dominates current experimental and computational studies, in most natural environments microbes have to continuously adapt to perturbations and changes in nutrient availability. TOA allows us to study such transitions in the context of established constraint-based models of microbial metabolism. Similar to other constraint-based methods, the solutions obtained from TOA are not based on mechanistic understanding of the regulatory system that governs the respective transition, but are derived from the assumption that, under certain conditions, a time-optimal transition may be evolutionary beneficial. We emphasize that an application of TOA does not necessarily imply that a time-optimal transition is the only or most important evolutionary objective. Rather, and again similar to other optimality-based methods, the solutions of TOA provide a computational &#x201c;gold standard&#x201d;, (<xref ref-type="bibr" rid="B8">Giordano et al., 2016</xref>), to which experimentally observed behavior can be compared.</p>
<p>Within this work, we exemplified the use of TOA by considering two prototypical applications: the doubling of a cell in a constant environment (cf. <xref ref-type="other" rid="application2_1">Application 2.1</xref>), as well as the time-optimal adaptation to a nutrient shift (cf. <xref ref-type="other" rid="application2_2">Application 2.2</xref>). Following previous works (<xref ref-type="bibr" rid="B22">Molenaar et al., 2009</xref>; <xref ref-type="bibr" rid="B8">Giordano et al., 2016</xref>; <xref ref-type="bibr" rid="B35">Yabo et al., 2022</xref>), the application of TOA was illustrated using a coarse-grained self-replicator model. The results illustrate the utility of TOA to generate and explore biological hypotheses.</p>
<p>The premise underlying the <italic>in silico</italic> experiments of our first application, cell doubling in a constant environment, was that microbial cells are not necessarily precisely adapted to the given environment, but may nonetheless have evolved a regulatory scheme that allows them to double their intracellular composition in minimal time. Based on this premise, the application of TOA gives rise to several predictions, we observe 1) complex intracellular dynamics different from solutions obtained by iterative RBA, 2) that transient accumulation of storage compounds reduces the predicted doubling time, and 3) that (mis-)adaptation to a higher nutrient availability than actually present in the environment carries a lower evolutionary cost than (mis-)adaptation to a lower nutrient availability.</p>
<p>Due to the simplicity of the coarse-grained model, we do not necessarily expect the specific time courses obtained for the model to be exact predictions of biological reality. In particular, we acknowledge that the coarse-grained model lacks further intracellular constraints that affect progress through the cell cycle (for example, checkpoints and a detailed representation of DNA replication and segregation) that also impact metabolic processes. Nonetheless, we are confident that the results reveal several insights that reflect biological reality. Specifically, the role of storage compounds in cellular metabolism is difficult to explore using existing constraint-based models. Here, the application of TOA demonstrates that, beyond the role of storage in diurnal oscillations, cf. (<xref ref-type="bibr" rid="B29">R&#xfc;gen et al., 2015</xref>; <xref ref-type="bibr" rid="B28">Reimers et al., 2017</xref>) and as a safeguard for periods of nutrient scarcity, storage may play an important role even under constant environmental conditions. As shown with TOA, intracellular dynamics and transient accumulation of nutrients may contribute to a reduction of doubling time. Indeed, and different from typical steady-state solutions of current constraint-based methods, cells do exhibit coordinated metabolic dynamics over a cell cycle (<xref ref-type="bibr" rid="B24">Papagiannakis et al., 2017</xref>).</p>
<p>The application of TOA was further exemplified by simulations of time-optimal cellular adaptation to a nutrient shift. Similar to the results obtained for constant environments, TOA demonstrates that transient accumulation of storage can reduce the time required for adaptation&#x2013;a finding supported by experimental evidence that storage compounds, such as glycogen, indeed provide short-term benefits in changing environments (<xref ref-type="bibr" rid="B32">Sekar et al., 2020</xref>).</p>
<p>In particular, the rapid uptake and storage of nutrients following an upshift in nutrient supply (as shown in <xref ref-type="fig" rid="F7">Figure 7</xref>, left column) is reminiscent of &#x201c;luxury uptake&#x201d; or &#x201c;over-compensation&#x201d;. The latter phenomenon is well known (<xref ref-type="bibr" rid="B27">Powell et al., 2009</xref>) and occurs when cells are starved and re-exposed to a limiting nutrient, such as phosphate. &#x201c;Luxury uptake&#x201d; and &#x201c;over-compensation&#x201d; after starvation can be exploited, for example, for nutrient removal from wastewater (<xref ref-type="bibr" rid="B27">Powell et al., 2009</xref>). Our analysis shows that such &#x201c;over-compensation&#x201d; or &#x201c;overshoot&#x201d; phenomena are readily explained using principles of (optimal) cellular resource allocation, and do not necessarily require explanations that invoke competition between individuals to rationalize rapid nutrient uptake after starvation.</p>
<p>We conjecture that, while the specific trajectories of the cellular response to environmental shifts might be different under specific conditions, for example, due to additional constraints not present in the model, many of the principles revealed by TOA remain valid in more elaborate models of cellular growth transitions&#x2013;and thereby provide an important reference to identify optimal vs. suboptimal behavior. Indeed, it was previously shown that growth transition kinetics of <italic>E. coli</italic> are indeed suboptimal under the studied conditions (<xref ref-type="bibr" rid="B6">Erickson et al., 2017</xref>)&#x2013;a finding that could only be obtained by comparison to an optimal reference solution. As shown in this work, TOA can also be readily incorporated into a multi-objective framework (in the sense of Pareto) that allows us to incorporate additional objectives.</p>
<p>Finally, the results of TOA demonstrate that the costs of mis-adaptation to an environment are not symmetric, neither for cell doubling in a constant environment (<xref ref-type="fig" rid="F6">Figure 6</xref>), nor for adaptation after a nutrient shift (<xref ref-type="fig" rid="F8">Figure 8</xref>). In either case, a cell that is adapted to a higher level of (extracellular) nutrient than available in the environment (&#x201c;optimist&#x201d;) has only a minor disadvantage compared to an already perfectly adapted cell. Vice versa, however, cells that are adapted to a lower level of (extracellular) nutrient than available in the environment (&#x201c;pessimist&#x201d;) have a pronounced disadvantage compared to a perfectly adapted cell. This asymmetry indicates that adaptation to a low nutrient environment is only advantageous if the low nutrient state persists for an extended period of time. This asymmetry is supported by experimental evidence. For example, it has been suggested that some microorganisms, such as <italic>Lactococcus lactis</italic>, preserve a large overcapacity of ribosomes and glycolytic enzymes to be ready to rapidly respond and grow when conditions improve (<xref ref-type="bibr" rid="B9">Goel et al., 2015</xref>), and thereby implement an &#x201c;optimistic strategy&#x201d;.</p>
</sec>
<sec id="s5">
<title>5 Conclusions and Outlook</title>
<p>Constraint-based optimization plays an important role to elucidate and eventually predict cellular behavior. As an extension of previous modeling frameworks, we introduced time-optimal adaptation. TOA is motivated by the assumption that under certain conditions it is evolutionary favorable to adapt to a new cellular state in minimal time. In its general form, TOA can be applied in a very broad sense and thereby extends most of the existing constraint-based modeling frameworks.</p>
<p>As shown in this work, TOA allowed us to obtain insight into several biological phenomena, such as the accumulation of storage in constant environments and &#x201c;overshoot&#x201d; accumulation of nutrients after starvation, which cannot be readily explained using existing methods&#x2013;thereby demonstrating the utility of TOA for future analysis.</p>
<p>While the examples discussed within this work focused on constant environments and simple nutrient shifts, TOA can also be applied in time-dependent environments and can be readily extended to include further constraints. Likewise, as shown in this work, TOA can be included within multi-objective optimization in the sense of Pareto.</p>
<p>Possible further extensions include &#x201c;t-max adaptation&#x201d;, i.e., to maximize, for example, survival time under nutrient starvation, as well as more general constraints on the target state (for example, to attain a minimal amount of a specific intermediate in minimal time, while the amounts other cellular components are not specified).</p>
<p>We are therefore confident that TOA and its possible extensions are a valuable contribution in the context of constraint-based modeling with manifold applications beyond the examples discussed in this work.</p>
</sec>
</body>
<back>
<sec id="s6" sec-type="data-availability">
<title>Data Availability Statement</title>
<p>The original contributions presented in the study are included in the article/<xref ref-type="sec" rid="s11">Supplementary Material</xref>, further inquiries can be directed to the corresponding authors.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>All authors contributed equally to the conceptualization of the method, the writing and editing of the manuscript. MK conducted the numerical experiments. RS provided interpretations and discussion.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>The work of MK was carried out during the tenure of an ERCIM &#x201c;Alain Bensoussan&#x201d; Fellowship of the author at the Norwegian University of Science and Technology. The work of RS is funded by the grant STE 2062/2-1 of the German Research Foundation (DFG). We acknowledge support by the German Research Foundation (DFG) and the Open Access Publication Fund of Humboldt-Universit&#x00E4;t zu Berlin.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<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="s10">
<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>
<sec id="s11">
<title>Supplementary Material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fmolb.2022.866676/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fmolb.2022.866676/full&#x23;supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="DataSheet1.pdf" id="SM1" mimetype="application/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Basan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Honda</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Christodoulou</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>H&#xf6;rl</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>Y.-F.</given-names>
</name>
<name>
<surname>Leoncini</surname>
<given-names>E.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>A Universal Trade-Off between Growth and Lag in Fluctuating Environments</article-title>. <source>Nature</source> <volume>584</volume>, <fpage>470</fpage>&#x2013;<lpage>474</lpage>. <pub-id pub-id-type="doi">10.1038/s41586-020-2505-4</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bonnans</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Martinon</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Gr&#xe9;lard</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2017</year>). <source>BOCOP: An Open Source Toolbox for Optimal Control</source>. </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bordbar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Monk</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>King</surname>
<given-names>Z. A.</given-names>
</name>
<name>
<surname>Palsson</surname>
<given-names>B. O.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Constraint-based Models Predict Metabolic and Associated Cellular Functions</article-title>. <source>Nat. Rev. Genet.</source> <volume>15</volume>, <fpage>107</fpage>&#x2013;<lpage>120</lpage>. <pub-id pub-id-type="doi">10.1038/nrg3643</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Djema</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Bernard</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Giraldi</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Separating Two Species of Microalgae in Photobioreactors in Minimal Time</article-title>. <source>J. Process Control</source> <volume>87</volume>, <fpage>120</fpage>&#x2013;<lpage>129</lpage>. <pub-id pub-id-type="doi">10.1016/j.jprocont.2020.01.003</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Ehrgott</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2000</year>). <source>Multicriteria Optimization</source>. <publisher-name>Springer Berlin Heidelberg</publisher-name>. <pub-id pub-id-type="doi">10.1007/978-3-662-22199-0</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Erickson</surname>
<given-names>D. W.</given-names>
</name>
<name>
<surname>Schink</surname>
<given-names>S. J.</given-names>
</name>
<name>
<surname>Patsalo</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Williamson</surname>
<given-names>J. R.</given-names>
</name>
<name>
<surname>Gerland</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Hwa</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A Global Resource Allocation Strategy Governs Growth Transition Kinetics of <italic>Escherichia coli</italic>
</article-title>. <source>Nature</source> <volume>551</volume>, <fpage>119</fpage>&#x2013;<lpage>123</lpage>. <pub-id pub-id-type="doi">10.1038/nature24299</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Gerdts</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2011</year>). <source>Optimal Control of ODEs and DAEs</source>. <publisher-loc>Berlin, Boston</publisher-loc>: <publisher-name>De Gruyter</publisher-name>. </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Giordano</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Mairet</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Gouz&#xe9;</surname>
<given-names>J.-L.</given-names>
</name>
<name>
<surname>Geiselmann</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>de Jong</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Dynamical Allocation of Cellular Resources as an Optimal Control Problem: Novel Insights into Microbial Growth Strategies</article-title>. <source>PLoS Comput. Biol.</source> <volume>12</volume> (<issue>28</issue>), <fpage>e1004802</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.1004802</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Goel</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Eckhardt</surname>
<given-names>T. H.</given-names>
</name>
<name>
<surname>Puri</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>de Jong</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Branco dos Santos</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Giera</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>Protein Costs Do Not Explain Evolution of Metabolic Strategies and Regulation of Ribosomal Content: Does Protein Investment Explain an Anaerobic Bacterial Crabtree Effect?</article-title> <source>Mol. Microbiol.</source> <volume>97</volume>, <fpage>77</fpage>&#x2013;<lpage>92</lpage>. <pub-id pub-id-type="doi">10.1111/mmi.13012</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Goelzer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Fromion</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Scorletti</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Cell Design in Bacteria as a Convex Optimization Problem</article-title>. <source>Automatica</source> <volume>47</volume>, <fpage>1210</fpage>&#x2013;<lpage>1218</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2011.02.038</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<collab>Gurobi</collab> (<year>2021</year>). <source>Gurobi Optimizer Reference Manual. Tech. Rep.</source> <publisher-name>Beaverton, OR: Gurobi Optimization LLC</publisher-name>. </citation>
</ref>
<ref id="B12">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hermes</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Lasalle</surname>
<given-names>J. P.</given-names>
</name>
</person-group> (<year>1969</year>). <source>Functional Analysis and Time Optimal Control</source>. <publisher-loc>New York</publisher-loc>: <publisher-name>Academic Press</publisher-name>. </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>H&#xf6;ffner</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Harwood</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Barton</surname>
<given-names>P. I.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>A Reliable Simulator for Dynamic Flux Balance Analysis</article-title>. <source>Biotechnol. Bioeng.</source> <volume>110</volume>, <fpage>792</fpage>&#x2013;<lpage>802</lpage>. <pub-id pub-id-type="doi">10.1002/bit.24748</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>H&#xf6;ffner</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>K. A.</given-names>
</name>
<name>
<surname>Barton</surname>
<given-names>P. I.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Generalized Derivatives of Dynamic Systems with a Linear Program Embedded</article-title>. <source>Automatica</source> <volume>63</volume>, <fpage>198</fpage>&#x2013;<lpage>208</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2015.10.026</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jeanne</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Goelzer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Tebbani</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Dumur</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Fromion</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Dynamical Resource Allocation Models for Bioreactor Optimization</article-title>. <source>IFAC-PapersOnLine</source> <volume>51</volume>, <fpage>20</fpage>&#x2013;<lpage>23</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2018.09.020</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Klipp</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Heinrich</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Holzh&#xfc;tter</surname>
<given-names>H.-G.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Prediction of Temporal Gene Expression</article-title>. <source>Eur. J. Biochem.</source> <volume>269</volume>, <fpage>5406</fpage>&#x2013;<lpage>5413</lpage>. <pub-id pub-id-type="doi">10.1046/j.1432-1033.2002.03223.x</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lerman</surname>
<given-names>J. A.</given-names>
</name>
<name>
<surname>Hyduke</surname>
<given-names>D. R.</given-names>
</name>
<name>
<surname>Latif</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Portnoy</surname>
<given-names>V. A.</given-names>
</name>
<name>
<surname>Lewis</surname>
<given-names>N. E.</given-names>
</name>
<name>
<surname>Orth</surname>
<given-names>J. D.</given-names>
</name>
<etal/>
</person-group> (<year>2012</year>). <article-title>In Silico method for Modelling Metabolism and Gene Product Expression at Genome Scale</article-title>. <source>Nat. Commun.</source> <volume>3</volume>. <pub-id pub-id-type="doi">10.1038/ncomms1928</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Bockmayr</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Regulatory Dynamic Enzyme-Cost Flux Balance Analysis: A Unifying Framework for Constraint-Based Modeling</article-title>. <source>J. Theor. Biol.</source> <volume>501</volume>, <fpage>110317</fpage>. <pub-id pub-id-type="doi">10.1016/j.jtbi.2020.110317</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <source>Unifying Metabolic Networks, Regulatory Constraints, and Resource Allocation</source>. <publisher-name>Berlin, Germany: Freie Universit&#xe4;t Berlin</publisher-name>. <comment>Ph.D. thesis</comment>. <pub-id pub-id-type="doi">10.17169/REFUBIUM-27061</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mahadevan</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Edwards</surname>
<given-names>J. S.</given-names>
</name>
<name>
<surname>Doyle</surname>
<given-names>F. J.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Dynamic Flux Balance Analysis of Diauxic Growth in <italic>Escherichia coli</italic>
</article-title>. <source>Biophysical J.</source> <volume>83</volume>, <fpage>1331</fpage>&#x2013;<lpage>1340</lpage>. <pub-id pub-id-type="doi">10.1016/s0006-3495(02)73903-9</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mahadevan</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Schilling</surname>
<given-names>C. H.</given-names>
</name>
</person-group> (<year>2003</year>). <article-title>The Effects of Alternate Optimal Solutions in Constraint-Based Genome-Scale Metabolic Models</article-title>. <source>Metab. Eng.</source> <volume>5</volume>, <fpage>264</fpage>&#x2013;<lpage>276</lpage>. <pub-id pub-id-type="doi">10.1016/j.ymben.2003.09.002</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Molenaar</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>van Berlo</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>de Ridder</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Teusink</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Shifts in Growth Strategies Reflect Tradeoffs in Cellular Economics</article-title>. <source>Mol. Syst. Biol.</source> <volume>5</volume>, <fpage>323</fpage>. <pub-id pub-id-type="doi">10.1038/msb.2009.82</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Orth</surname>
<given-names>J. D.</given-names>
</name>
<name>
<surname>Thiele</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Palsson</surname>
<given-names>B. &#xd8;.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>What Is Flux Balance Analysis?</article-title> <source>Nat. Biotechnol.</source> <volume>28</volume>, <fpage>245</fpage>&#x2013;<lpage>248</lpage>. <pub-id pub-id-type="doi">10.1038/nbt.1614</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Papagiannakis</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Niebel</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wit</surname>
<given-names>E. C.</given-names>
</name>
<name>
<surname>Heinemann</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Autonomous Metabolic Oscillations Robustly Gate the Early and Late Cell Cycle</article-title>. <source>Mol. Cell</source> <volume>65</volume>, <fpage>285</fpage>&#x2013;<lpage>295</lpage>. <pub-id pub-id-type="doi">10.1016/j.molcel.2016.11.018</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pavlov</surname>
<given-names>M. Y.</given-names>
</name>
<name>
<surname>Ehrenberg</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Optimal Control of Gene Expression for Fast Proteome Adaptation to Environmental Change</article-title>. <source>Proc. Natl. Acad. Sci. U.S.A.</source> <volume>110</volume>, <fpage>20527</fpage>&#x2013;<lpage>20532</lpage>. <pub-id pub-id-type="doi">10.1073/pnas.1309356110</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Powell</surname>
<given-names>E. O.</given-names>
</name>
</person-group> (<year>1956</year>). <article-title>Growth Rate and Generation Time of Bacteria, with Special Reference to Continuous Culture</article-title>. <source>J. General Microbiol.</source> <volume>15</volume>, <fpage>492</fpage>&#x2013;<lpage>511</lpage>. <pub-id pub-id-type="doi">10.1099/00221287-15-3-492</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Powell</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Shilton</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Chisti</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Pratt</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Towards a Luxury Uptake Process via Microalgae - Defining the Polyphosphate Dynamics</article-title>. <source>Water Res.</source> <volume>43</volume>, <fpage>4207</fpage>&#x2013;<lpage>4213</lpage>. <pub-id pub-id-type="doi">10.1016/j.watres.2009.06.011</pub-id> </citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Reimers</surname>
<given-names>A. M.</given-names>
</name>
<name>
<surname>Knoop</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Bockmayr</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Steuer</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Cellular Trade-Offs and Optimal Resource Allocation during Cyanobacterial Diurnal Growth</article-title>. <source>Proc. Natl. Acad. Sci. U. S. A.</source> <volume>114</volume>, <fpage>E6457</fpage>&#x2013;<lpage>E6465</lpage>. <pub-id pub-id-type="doi">10.1073/pnas.1617508114</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>R&#xfc;gen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bockmayr</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Steuer</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Elucidating Temporal Resource Allocation and Diurnal Dynamics in Phototrophic Metabolism Using Conditional FBA</article-title>. <source>Sci. Rep.</source> <volume>5</volume> (<issue>16</issue>), <fpage>15247</fpage>. <pub-id pub-id-type="doi">10.1038/srep15247</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Scott</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hwa</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Bacterial Growth Laws and Their Applications</article-title>. <source>Curr. Opin. Biotechnol.</source> <volume>22</volume>, <fpage>559</fpage>&#x2013;<lpage>565</lpage>. <pub-id pub-id-type="doi">10.1016/j.copbio.2011.04.014</pub-id> </citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Segel</surname>
<given-names>L. A.</given-names>
</name>
<name>
<surname>Slemrod</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>1989</year>). <article-title>The Quasi-Steady-State Assumption: A Case Study in Perturbation</article-title>. <source>SIAM Rev.</source> <volume>31</volume>, <fpage>446</fpage>&#x2013;<lpage>477</lpage>. <pub-id pub-id-type="doi">10.1137/1031091</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sekar</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Linker</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Nguyen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Gr&#xfc;nhagen</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Stocker</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Sauer</surname>
<given-names>U.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Bacterial Glycogen Provides Short-Term Benefits in Changing Environments</article-title>. <source>Appl. Environ. Microbiol.</source> <volume>86</volume>. <pub-id pub-id-type="doi">10.1128/aem.00049-20</pub-id> </citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Varma</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Palsson</surname>
<given-names>B. O.</given-names>
</name>
</person-group> (<year>1994</year>). <article-title>Stoichiometric Flux Balance Models Quantitatively Predict Growth and Metabolic By-Product Secretion in Wild-type <italic>Escherichia coli</italic> W3110</article-title>. <source>Appl. Environ. Microbiol.</source> <volume>60</volume>, <fpage>3724</fpage>&#x2013;<lpage>3731</lpage>. <pub-id pub-id-type="doi">10.1128/aem.60.10.3724-3731.1994</pub-id> </citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Waldherr</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Oyarz&#xfa;n</surname>
<given-names>D. A.</given-names>
</name>
<name>
<surname>Bockmayr</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Dynamic Optimization of Metabolic Networks Coupled with Gene Expression</article-title>. <source>J. Theor. Biol.</source> <volume>365</volume>, <fpage>469</fpage>&#x2013;<lpage>485</lpage>. <pub-id pub-id-type="doi">10.1016/j.jtbi.2014.10.035</pub-id> </citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yabo</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Caillau</surname>
<given-names>J.-B.</given-names>
</name>
<name>
<surname>Gouz&#xe9;</surname>
<given-names>J.-L.</given-names>
</name>
<name>
<surname>de Jong</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Mairet</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Dynamical Analysis and Optimization of a Generalized Resource Allocation Model of Microbial Growth</article-title>. <source>SIAM J. Appl. Dyn. Syst.</source> <volume>21</volume>, <fpage>137</fpage>&#x2013;<lpage>165</lpage>. <pub-id pub-id-type="doi">10.1137/21m141097x</pub-id> </citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Ebrahim</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Lloyd</surname>
<given-names>C. J.</given-names>
</name>
<name>
<surname>Saunders</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Palsson</surname>
<given-names>B. O.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>DynamicME: Dynamic Simulation and Refinement of Integrated Models of Metabolism and Protein Expression</article-title>. <source>BMC Syst. Biol.</source> <volume>13</volume>, <fpage>2</fpage>. <pub-id pub-id-type="doi">10.1186/s12918-018-0675-6</pub-id> </citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yegorov</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Mairet</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Gouz&#xe9;</surname>
<given-names>J.-L.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Optimal Feedback Strategies for Bacterial Growth with Degradation, Recycling, and Effect of Temperature</article-title>. <source>Optim. Control Appl. Meth</source> <volume>39</volume>, <fpage>1084</fpage>&#x2013;<lpage>1109</lpage>. <pub-id pub-id-type="doi">10.1002/oca.2398</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>