<?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. Energy Res.</journal-id>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
<issn pub-type="epub">2296-598X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1347442</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2024.1347442</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Energy Research</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A position allocation approach to the scheduling of battery-electric bus charging</article-title>
<alt-title alt-title-type="left-running-head">Brown et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fenrg.2024.1347442">10.3389/fenrg.2024.1347442</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Brown</surname>
<given-names>Alexander</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2590476/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Droge</surname>
<given-names>Greg</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2637553/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Gunther</surname>
<given-names>Jacob</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2795949/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff>
<institution>Department of Electrical and Computer Engineering</institution>, <addr-line>Logan</addr-line>, <addr-line>UT</addr-line>, <country>United States</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/78452/overview">Umberto Desideri</ext-link>, University of Pisa, Italy</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1274232/overview">Naresh Susarla</ext-link>, Keylogic Systems, United States</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2773148/overview">Giovanni Bove</ext-link>, University of Salerno, Italy</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Alexander Brown, <email>a01704744@usu.edu</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>22</day>
<month>11</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>12</volume>
<elocation-id>1347442</elocation-id>
<history>
<date date-type="received">
<day>30</day>
<month>11</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>30</day>
<month>10</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Brown, Droge and Gunther.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Brown, Droge and Gunther</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>Robust charging schedules for a growing market of battery-electric bus (BEB) fleets are critical to successful adoption. In this paper, we present a BEB charging scheduling framework that considers spatiotemporal schedule constraints, route schedules, fast and slow charging options, and battery dynamics, modeled as a mixed-integer linear program (MILP). The MILP is based on the berth allocation problem (BAP), a method that optimally assigns vessels for service, and is adapted in a modified form known as the position allocation problem (PAP), which assigns electric vehicles (EVs) for charging. Linear battery dynamics are included to model the charging of buses while at the station. To account for the BEB discharges over their respective routes, we assume that each BEB experiences an average kWh charge loss while in transit. The optimization coordinates BEB charging to ensure that each vehicle maintains a state-of-charge (SOC) above a specified level. The model also minimizes the total number of chargers utilized and prioritizes slow charging for battery health. The validity of the model is demonstrated using a set of routes sampled from the Utah Transit Authority (UTA) for 35 buses and 338 visits to the charging station. The model is also compared to a heuristic algorithm based on charge thresholds, referred to as the Qin-modified method. The results show that the MILP framework encourages battery health by assigning slow chargers to BEBs more readily than the Qin-modified method. The MILP utilized one fast charger and six slow chargers, whereas the Qin-modified method utilized four fast chargers and six slow chargers. Moreover, the MILP maintained a specified minimum SOC of 25% throughout the day and achieved the required minimum SOC of 70% at the end of the working day, whereas the Qin-modified method failed to maintain the SOC above 0% without any constraints applied. Furthermore, it is shown that the spatiotemporal constraints are met while considering the battery dynamics and minimizing both the charger count and consumption cost.</p>
</abstract>
<kwd-group>
<kwd>berth allocation problem</kwd>
<kwd>position allocation problem</kwd>
<kwd>mixed-integer linear program</kwd>
<kwd>battery-electric bus</kwd>
<kwd>scheduling</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Process and Energy Systems Engineering</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>The public transportation system is crucial in any urban area; however, the increased awareness and concern over the environmental impacts of petroleum-based public transportation have fueled efforts to reduce the pollution footprint (<xref ref-type="bibr" rid="B4">De Filippo et al., 2014</xref>; <xref ref-type="bibr" rid="B24">Xylia and Silveira, 2018</xref>; <xref ref-type="bibr" rid="B6">Guida and Abdulah, 2017</xref>; <xref ref-type="bibr" rid="B11">Li, 2016</xref>). One key solution is the electrification of public bus transportation via battery power, i.e., battery-electric buses (BEBs), which has received significant attention (<xref ref-type="bibr" rid="B11">Li, 2016</xref>). Although this technology provides benefits beyond a reduction in emissions, such as lower driving costs, lower maintenance costs, and reduced vehicle noise, battery-powered systems introduce new challenges, such as higher upfront costs and, potentially, long &#x201c;refueling&#x201d; periods, which can last several hours (<xref ref-type="bibr" rid="B24">Xylia and Silveira, 2018</xref>; <xref ref-type="bibr" rid="B11">Li, 2016</xref>). Furthermore, the problem is exacerbated by the constraints of the transit schedule to which the fleet must adhere, the limited number of chargers available, and the adverse effects of fast charging on battery health (<xref ref-type="bibr" rid="B13">Lutsey and Nicholas, 2019</xref>). This paper aims to remedy these problems by presenting a framework for optimally assigning BEBs to charging queues, assuming fixed routes, while considering multiple charger types and utilizing linear charging dynamics. This method also ensures that the state-of-charge (SOC) remains above a specified percentage throughout the day and ensures a minimum SOC at the end of the working day.</p>
<p>Recently, many efforts have been made to simultaneously solve the problems of route scheduling, charging fleets, and determining the infrastructure upon which they rely (<xref ref-type="bibr" rid="B23">Wei et al., 2018</xref>; <xref ref-type="bibr" rid="B19">Sebastiani et al., 2016</xref>; <xref ref-type="bibr" rid="B9">Hoke et al., 2014</xref>; <xref ref-type="bibr" rid="B21">Wang X. et al., 2017</xref>). Several simplifications are made to make these problems computationally feasible. Simplifications to the charge scheduling model include utilizing only fast chargers while planning (<xref ref-type="bibr" rid="B23">Wei et al., 2018</xref>; <xref ref-type="bibr" rid="B19">Sebastiani et al., 2016</xref>; <xref ref-type="bibr" rid="B22">Wang Y. et al., 2017</xref>; <xref ref-type="bibr" rid="B26">Zhou et al., 2020</xref>; <xref ref-type="bibr" rid="B25">Yang et al., 2018</xref>; <xref ref-type="bibr" rid="B21">Wang X. et al., 2017</xref>; <xref ref-type="bibr" rid="B16">Qin et al., 2016</xref>; <xref ref-type="bibr" rid="B12">Liu and Ceder, 2020</xref>). If slow chargers are used, they are only used at the depot and not at the station (<xref ref-type="bibr" rid="B8">He et al., 2020</xref>; <xref ref-type="bibr" rid="B20">Tang et al., 2019</xref>). Some approaches also simplify by assuming that full charge is always achieved (<xref ref-type="bibr" rid="B23">Wei et al., 2018</xref>; <xref ref-type="bibr" rid="B21">Wang X. et al., 2017</xref>; <xref ref-type="bibr" rid="B26">Zhou et al., 2020</xref>; <xref ref-type="bibr" rid="B22">Wang Y. et al., 2017</xref>). Others have assumed that the charge received is proportional to the time spent on the charger (<xref ref-type="bibr" rid="B12">Liu and Ceder, 2020</xref>; <xref ref-type="bibr" rid="B25">Yang et al., 2018</xref>), which can be a valid assumption when the battery SOC is below 80% (<xref ref-type="bibr" rid="B12">Liu and Ceder, 2020</xref>).</p>
<p>This work builds upon the position allocation problem (PAP) (<xref ref-type="bibr" rid="B15">Qarebagh et al., 2019</xref>), a modification of the well-studied berth allocation problem (BAP), as a means to schedule the charging of electric vehicles (<xref ref-type="bibr" rid="B1">Buhrkal et al., 2011</xref>; <xref ref-type="bibr" rid="B5">Frojan et al., 2015</xref>; <xref ref-type="bibr" rid="B10">Imai et al., 2001</xref>; <xref ref-type="bibr" rid="B17">Rodrigues and Agra, 2022</xref>). The BAP is a continuous time model that solves the problem of allocating space for incoming vessels to be berthed and serviced. Each arriving vessel requires both time and space for service and, thus, must be carefully assigned to avoid delay (<xref ref-type="bibr" rid="B10">Imai et al., 2001</xref>). Vessels are lined up parallel to the berth to be serviced and are horizontally queued, as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. As the vessels are serviced, they move from left to right, creating space for the queued vessels, which move vertically downward into their respective berthing locations. The PAP utilizes this queuing concept for scheduling vehicles to be charged, as shown in <xref ref-type="fig" rid="F2">Figure 2</xref>. The vehicles are queued in several lines and move from left to right to receive their charge before exiting the system. The PAP is formulated as a rectangle packing problem and assumes that each vehicle has a predefined charge time, and the number of vehicles that can be charged at any given moment is limited by the physical width of each vehicle and the length of the charging block. The PAP also assumes that each vehicle in the system is unique (<xref ref-type="bibr" rid="B15">Qarebagh et al., 2019</xref>).</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>
<bold>(A)</bold> Example of berth allocation. Vessels are docked in berth locations (horizontal) and queued over time (vertical). The vertical arrow represents the movement direction of the queued vessels, and the horizontal arrow represents the direction of departure. <bold>(B)</bold> Example of position allocation. Vehicles are placed in queues to be charged and move in the direction indicated by the arrow.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g001.tif"/>
</fig>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Example of the rectangle packing problem. The large square represented by <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> indicates the constrained area that the set of shaded rectangles <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi mathvariant="double-struck">O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> must be placed within.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g002.tif"/>
</fig>
<p>The main contribution of this work is the extension of the PAP&#x2019;s novel approach to BEB charger scheduling. This incorporates a proportional charging model into the mixed-integer linear program (MILP) framework, considers multiple charger types, and considers each route in the schedule. The last contribution is of importance because both the BAP and PAP consider each arrival to be unique; thus, the tracking of battery charge from one visit to the next must be considered. Furthermore, the input parameters for the model can be predefined in such a manner as to minimize the number of fast and slow chargers utilized and minimize the energy consumption. That is, the model will simultaneously minimize the number of chargers and the total consumed energy. The result is a MILP formulation that coordinates charging times and charger type for every visit while considering a dynamic charge model with scheduling constraints.</p>
<p>The remainder of the paper is structured as follows: in <xref ref-type="sec" rid="s2">Section 2</xref>, the PAP is introduced with a formulation of the resulting MILP; <xref ref-type="sec" rid="s3">Section 3</xref> constructs the MILP for BEB scheduling, including modifications to the PAP queuing constraints and the development of a dynamic charging model; <xref ref-type="sec" rid="s4">Section 4</xref> demonstrates an example of using the formulation to coordinate 35 buses over 338 total visits to the station; and <xref ref-type="sec" rid="s5">Section 5</xref> presents the concluding remarks.</p>
</sec>
<sec id="s2">
<title>2 Position allocation problem</title>
<p>This section provides a brief overview of the BAP and a detailed formulation of the PAP, as presented by <xref ref-type="bibr" rid="B15">Qarebagh et al. (2019)</xref>.</p>
<sec id="s2-1">
<title>2.1 Overview of the BAP</title>
<p>The BAP is a rectangle packing problem where a set of rectangles, denoted as <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:mi mathvariant="double-struck">O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, are optimally placed in a larger rectangle, denoted as <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The rectangle packing problem is an NP-hard problem and can be used to describe many real-life problems (<xref ref-type="bibr" rid="B3">de Bruin, 2013</xref>; <xref ref-type="bibr" rid="B14">Murata et al., 1995</xref>). In some of these problems, the dimensions of <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:mi mathvariant="double-struck">O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are held constant, such as in the problem of packing modules on a chip, where the widths and heights of the rectangles correspond to the physical widths and heights of the modules (<xref ref-type="bibr" rid="B14">Murata et al., 1995</xref>). Other problems, such as the one presented in this work, allow either the horizontal or vertical edge of each rectangle in <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:mi mathvariant="double-struck">O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to vary. For example, suppose the vessel lengths are predefined (i.e., vertical edges are static), but the service time is allowed to vary (i.e., horizontal edges are dynamic) (<xref ref-type="bibr" rid="B1">Buhrkal et al., 2011</xref>).</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Representation of the berth&#x2013;time space. The <italic>x</italic>- and <italic>y</italic>-axes represent time and space, respectively. Along the <italic>y</italic>-axis, the dashed lines represent discrete berthing locations. These locations may be chosen to be continuous. The shaded rectangles represent scheduled vessels to be serviced. The height of each shaded rectangle represents the space taken on the berth, and the width represents the time required to service the said vessel. The vertical dashed lines are associated with vessel D and represent the arrival time, berthing time, service completion time, and departure time. Note that the arrival time may be before the berthing time and the completion time may be before the departure time.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g003.tif"/>
</fig>
<p>The BAP solves the problem of optimally assigning incoming vessels to berthing positions in order to be serviced, as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. To relate to the rectangle packing problem, the width and height of <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represent the time horizon <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> seconds and the berth length <inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> meters, respectively. Similarly, the widths and heights of each element in <inline-formula id="inf10">
<mml:math id="m10">
<mml:mrow>
<mml:mi mathvariant="double-struck">O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represent the time spent to service vessel <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and the space taken by docking vessel <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. In the BAP, the vessel characteristics (length of the vessel, arrival time, handling time, and desired departure time) are assumed to be known for all vessels. A representation of a BAP solution is shown in <xref ref-type="fig" rid="F4">Figure 4</xref>. The <italic>x</italic>- and <italic>y</italic>-axes represent the time horizon and berthing space, respectively. The gray squares, labeled A, B, C, and D, represent scheduled vessels. The width of the boxes represents the time spent being serviced, and the height of the boxes represents the amount of space the vessel requires on the berth. The vertical line adjacent to the &#x201c;arrival time&#x201d; represents the time at which the vessel arrives and is available to be berthed. The &#x201c;berthing time&#x201d; is the time the vessel is berthed and begins to be serviced. The &#x201c;completion time&#x201d; represents the time at which the berthing space becomes available again.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Examples of different methods of overlapping. Space overlap: <inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2234;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. Time overlap: <inline-formula id="inf14">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2234;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. Both space and time overlap: <inline-formula id="inf15">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf16">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g004.tif"/>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 PAP formulation</title>
<p>The BAP forms the basis of the PAP; however, there are some differences in the way the variables are interpreted. The relevant variables are given in <xref ref-type="table" rid="T1">Table 1</xref>. The starting service time, <inline-formula id="inf17">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s, is viewed as the initial charge time, and the service time is the total elapsed time spent on the charger. Similarly, for the spatial term, <inline-formula id="inf18">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the berth location is interpreted as the initial position on the charger. There are also a few clarifying concepts about how the system is modeled. The PAP models the set of chargers as one continuous line; that is, the natural behavior of the PAP model is to allow vehicles to be queued anywhere along <inline-formula id="inf19">
<mml:math id="m19">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. Similarly, the charge times are continuous and can be placed anywhere on the time horizon, <inline-formula id="inf20">
<mml:math id="m20">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, as long as the allocated times do not interfere with other scheduled charge times.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Notation used throughout the paper. Values and units are provided when available.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Variable</th>
<th align="left">Value</th>
<th align="left">Units</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td colspan="4" align="left">Input value</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf21">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">35</td>
<td align="left"/>
<td align="left">Number of buses</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf22">
<mml:math id="m22">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">An arbitrarily large number</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf23">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">338</td>
<td align="left"/>
<td align="left">Number of total visits</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf24">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">65</td>
<td align="left"/>
<td align="left">Number of queues</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf25">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">30</td>
<td align="left"/>
<td align="left">Number of chargers</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf26">
<mml:math id="m26">
<mml:mrow>
<mml:mi mathvariant="double-struck">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Set of visit indexes, <inline-formula id="inf27">
<mml:math id="m27">
<mml:mrow>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf28">
<mml:math id="m28">
<mml:mrow>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Set of bus indexes, <inline-formula id="inf29">
<mml:math id="m29">
<mml:mrow>
<mml:mi mathvariant="double-struck">B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf30">
<mml:math id="m30">
<mml:mrow>
<mml:mi mathvariant="double-struck">Q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Set of queue indexes, <inline-formula id="inf31">
<mml:math id="m31">
<mml:mrow>
<mml:mi mathvariant="double-struck">Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf32">
<mml:math id="m32">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Indexes used to refer to visits</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf33">
<mml:math id="m33">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Index used to refer to a bus</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf34">
<mml:math id="m34">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Index used to refer to a queue</td>
</tr>
<tr>
<td colspan="4" align="left">Problem definition parameter</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf35">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">
<inline-formula id="inf36">
<mml:math id="m36">
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf37">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> used as a shorthand to denote bus <inline-formula id="inf38">
<mml:math id="m38">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> for visit <inline-formula id="inf39">
<mml:math id="m39">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf40">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">90</td>
<td align="left">%</td>
<td align="left">Initial charge percentage time for bus <inline-formula id="inf41">
<mml:math id="m41">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf42">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">70</td>
<td align="left">%</td>
<td align="left">Final charge percentage for bus <inline-formula id="inf43">
<mml:math id="m43">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> at the end of the time horizon</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf44">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Cost of using charger <inline-formula id="inf45">
<mml:math id="m45">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> per unit time</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf46">
<mml:math id="m46">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">
<inline-formula id="inf47">
<mml:math id="m47">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> mapping a visit to the next visit by the same bus with <inline-formula id="inf48">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> being the shorthand</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf49">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">388</td>
<td align="left">kWh</td>
<td align="left">Battery capacity for bus <inline-formula id="inf50">
<mml:math id="m50">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf51">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">kWh</td>
<td align="left">Discharge of visit over route <inline-formula id="inf52">
<mml:math id="m52">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf53">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">%</td>
<td align="left">Minimum charge allowed for bus <inline-formula id="inf54">
<mml:math id="m54">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf55">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Time visit <inline-formula id="inf56">
<mml:math id="m56">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> must depart the station</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf57">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="right">38</td>
<td align="left">kW</td>
<td align="left">Discharge rate for bus <inline-formula id="inf58">
<mml:math id="m58">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf59">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Arrival time of visit <inline-formula id="inf60">
<mml:math id="m60">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf61">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Indexes associated with the initial arrival for every bus in <inline-formula id="inf62">
<mml:math id="m62">
<mml:mrow>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf63">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Indexes associated with the final arrival for every bus in <inline-formula id="inf64">
<mml:math id="m64">
<mml:mrow>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf65">
<mml:math id="m65">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Cost of a visit being assigned to charger <inline-formula id="inf66">
<mml:math id="m66">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf67">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">kW</td>
<td align="left">Charge rate of charger <inline-formula id="inf68">
<mml:math id="m68">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> per unit time</td>
</tr>
<tr>
<td colspan="4" align="left">Decision variable</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf69">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Binary variable determining spatial ordering of vehicles <inline-formula id="inf70">
<mml:math id="m70">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf71">
<mml:math id="m71">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf72">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">kWh</td>
<td align="left">Initial charge for visit <inline-formula id="inf73">
<mml:math id="m73">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf74">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Binary variable determining temporal ordering of vehicles <inline-formula id="inf75">
<mml:math id="m75">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf76">
<mml:math id="m76">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf77">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Ending charge time for visit <inline-formula id="inf78">
<mml:math id="m78">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf79">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Linearization term, represents the multiplication of <inline-formula id="inf80">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf81">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Amount of time spent on the charger for visit <inline-formula id="inf82">
<mml:math id="m82">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf83">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left">s</td>
<td align="left">Starting charge time of visit <inline-formula id="inf84">
<mml:math id="m84">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf85">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Assigned queue for visit <inline-formula id="inf86">
<mml:math id="m86">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf87">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left"/>
<td align="left"/>
<td align="left">Binary assignment variable for visit <inline-formula id="inf88">
<mml:math id="m88">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to queue <inline-formula id="inf89">
<mml:math id="m89">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The PAP formulation&#x2019;s parameters can be divided into two categories: input parameters and decision variables. The following parameters are assumed to be known inputs for the MILP. <inline-formula id="inf90">
<mml:math id="m90">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> defines the length of the charger in meters. As stated previously, it is modeled as a continuous bar, meaning that a vehicle can be placed anywhere in the range <inline-formula id="inf91">
<mml:math id="m91">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. It is assumed that the time horizon, <inline-formula id="inf92">
<mml:math id="m92">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> s, is known so that vehicles may be placed temporarily in the range <inline-formula id="inf93">
<mml:math id="m93">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The total number of visits to the station over the time horizon is represented by <inline-formula id="inf94">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The arrival time for each visit is represented by <inline-formula id="inf95">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s, and the required charge time is represented by <inline-formula id="inf96">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s. The width of vehicle <inline-formula id="inf97">
<mml:math id="m97">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is represented by <inline-formula id="inf98">
<mml:math id="m98">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> m.</p>
<p>The decision variables provide the means by which the solver may optimize the problem. The initial and final charge times for vehicle <inline-formula id="inf99">
<mml:math id="m99">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are <inline-formula id="inf100">
<mml:math id="m100">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf101">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s, respectively. The starting position on the charger is denoted as <inline-formula id="inf102">
<mml:math id="m102">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> m. The temporal ordering of vehicles <inline-formula id="inf103">
<mml:math id="m103">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf104">
<mml:math id="m104">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is determined by <inline-formula id="inf105">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf106">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>&#x21d2;</mml:mo>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mspace width="0.3333em"/>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> arrives before <inline-formula id="inf107">
<mml:math id="m107">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> for all <inline-formula id="inf108">
<mml:math id="m108">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Similarly, <inline-formula id="inf109">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> determines the relative position of vehicles <inline-formula id="inf110">
<mml:math id="m110">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf111">
<mml:math id="m111">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> on the charger: <inline-formula id="inf112">
<mml:math id="m112">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>&#x21d2;</mml:mo>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for all <inline-formula id="inf113">
<mml:math id="m113">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>To determine the values for each of these decision variables, a MILP was formulated by <xref ref-type="bibr" rid="B15">Qarebagh et al. (2019)</xref>. The formulation is shown in its entirety for completeness. The problem to be solved is<disp-formula id="e1">
<mml:math id="m114">
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>subject to<disp-formula id="e2a">
<mml:math id="m115">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mi>T</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2a)</label>
</disp-formula>
<disp-formula id="e2b">
<mml:math id="m116">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mi>L</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2b)</label>
</disp-formula>
<disp-formula id="e2c">
<mml:math id="m117">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2c)</label>
</disp-formula>
<disp-formula id="e2d">
<mml:math id="m118">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2d)</label>
</disp-formula>
<disp-formula id="e2e">
<mml:math id="m119">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2e)</label>
</disp-formula>
<disp-formula id="e2f">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2f)</label>
</disp-formula>
<disp-formula id="e2g">
<mml:math id="m121">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2g)</label>
</disp-formula>
<disp-formula id="e2h">
<mml:math id="m122">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2h)</label>
</disp-formula>
<disp-formula id="e2i">
<mml:math id="m123">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2i)</label>
</disp-formula>
<disp-formula id="e2j">
<mml:math id="m124">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2026;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>;</mml:mo>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x2260;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(2j)</label>
</disp-formula>The objective function, <xref ref-type="disp-formula" rid="e1">Equation 1</xref>, minimizes the idle and service time by summing over the differences between the departure time, <inline-formula id="inf114">
<mml:math id="m125">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and arrival time, <inline-formula id="inf115">
<mml:math id="m126">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, for all visits. In other words, the objective function is to search for the schedule that removes each vehicle from the service queue as quickly as possible.</p>
<p>
<xref ref-type="disp-formula" rid="e2a">Equations 2a&#x2013;</xref>
<xref ref-type="disp-formula" rid="e2e">e</xref> are used to ensure that individual rectangles do not overlap. In terms of the PAP, this implies that there are no conflicts in the schedule spatially or temporally. <xref ref-type="disp-formula" rid="e2a">Equation 2a</xref> establishes temporal ordering when active <inline-formula id="inf116">
<mml:math id="m127">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> in the manner described previously by utilizing big-M notation. Similarly, <xref ref-type="disp-formula" rid="e2b">Equation 2b</xref> establishes spatial ordering when active <inline-formula id="inf117">
<mml:math id="m128">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="disp-formula" rid="e2c">Equations 2c</xref>, <xref ref-type="disp-formula" rid="e2e">e</xref> enforce spatial and temporal ordering between each queue/vehicle pair. <xref ref-type="disp-formula" rid="e2d">Equation 2d and</xref> <xref ref-type="disp-formula" rid="e2e">Equation 2e</xref> enforce the validity of the assignments. For example, if <xref ref-type="disp-formula" rid="e2d">Equation 2d</xref> resulted in a value of 2, that would imply that both vehicles <inline-formula id="inf118">
<mml:math id="m129">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf119">
<mml:math id="m130">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are scheduled before and after each other temporally, which is impossible. In the case of <xref ref-type="disp-formula" rid="e2e">Equation 2e</xref> being equal to 2, it would mean that vehicles <inline-formula id="inf120">
<mml:math id="m131">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf121">
<mml:math id="m132">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are scheduled both before and after one another on the charging strip, which is again impossible.</p>
<p>The last constraints force relationships between arrival time, initial charge time, and departure time. <xref ref-type="disp-formula" rid="e2f">Equation 2f</xref> states that the initial charge time, <inline-formula id="inf122">
<mml:math id="m133">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, plus the total charge time, <inline-formula id="inf123">
<mml:math id="m134">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, must equal the departure time, <inline-formula id="inf124">
<mml:math id="m135">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="disp-formula" rid="e2g">Equation 2g</xref> enforces the arrival time, <inline-formula id="inf125">
<mml:math id="m136">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, to be less than or equal to the service start time, <inline-formula id="inf126">
<mml:math id="m137">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, which, in turn, must be less than or equal to the latest time the vehicle may begin charging and stay within the time horizon. <xref ref-type="disp-formula" rid="e2h">Equation 2h</xref> simply states that <inline-formula id="inf127">
<mml:math id="m138">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf128">
<mml:math id="m139">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are binary terms. <xref ref-type="disp-formula" rid="e2i">Equations 2i</xref>, <xref ref-type="disp-formula" rid="e2j">2j</xref> ensures that the assigned value of <inline-formula id="inf129">
<mml:math id="m140">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is within the range <inline-formula id="inf130">
<mml:math id="m141">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Rectangle packing formulation for BEB charging</title>
<p>Applying the PAP to BEB charging requires four fundamental changes. The first is that the time that a BEB spends charging must be allowed to vary. That is, <inline-formula id="inf131">
<mml:math id="m142">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf132">
<mml:math id="m143">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf133">
<mml:math id="m144">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> become variables of optimization. This is done primarily because chargers of various speeds are to be introduced. Second, in the PAP, each visit is assumed to be a different vehicle. For the BEB charging problem, each bus may make multiple visits to the station throughout the day. Thus, the resulting SOC for a bus at a given visit is dependent upon each of the prior visits. The third fundamental change is related to the first two. The SOC of each bus must be tracked to ensure that charging across multiple visits is sufficient to allow each bus to execute its route throughout the day. Finally, as previously stated, the PAP models the charger as one continuous bar. For the BEB, it will be assumed that a discrete number of chargers exist. Moreover, it is assumed that these chargers may have different charge rates.</p>
<p>A few assumptions are made in the derivation of the algorithm. As this work is not focused on estimating the discharge of a BEB during its route, the discharge for each route will be pre-calculated by assuming a fixed discharge rate kW multiplied by the route duration in hours. Second, it is assumed that the initial SOC of each BEB at the beginning of the day, <inline-formula id="inf134">
<mml:math id="m145">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, is larger than the minimum required SOC at the end of the day, <inline-formula id="inf135">
<mml:math id="m146">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Therefore, it must be assumed that the difference in the SOC can reach <inline-formula id="inf136">
<mml:math id="m147">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> by the beginning of the next working day.</p>
<p>The discussion of the four changes is separated into two sections. <xref ref-type="sec" rid="s3-1">Subsection 3.1</xref> discusses the changes in the spatiotemporal constraint formulation to form a queuing constraint. <xref ref-type="sec" rid="s3-2">Subsection 3.2</xref> discusses the addition of bus charge management. This section ends with a brief discussion of a modified objective function and the statement of the full problem in <xref ref-type="sec" rid="s3-3">Subsection 3.3</xref>. The notation is explained throughout and summarized in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<sec id="s3-1">
<title>3.1 Queuing constraints</title>
<p>The queuing constraints ensure that the buses entering the charging queues are assigned feasibly. There are three sets to differentiate between different entities. <inline-formula id="inf137">
<mml:math id="m148">
<mml:mrow>
<mml:mi mathvariant="double-struck">B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the set of bus indexes, with index <inline-formula id="inf138">
<mml:math id="m149">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> used to denote an individual bus, <inline-formula id="inf139">
<mml:math id="m150">
<mml:mrow>
<mml:mi mathvariant="double-struck">Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the set of queues, with index <inline-formula id="inf140">
<mml:math id="m151">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> used to denote an individual queue, and <inline-formula id="inf141">
<mml:math id="m152">
<mml:mrow>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is a set of visits to the station, with <inline-formula id="inf142">
<mml:math id="m153">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf143">
<mml:math id="m154">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> used to refer to individual visits. The mapping <inline-formula id="inf144">
<mml:math id="m155">
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is used to map a visit index, <inline-formula id="inf145">
<mml:math id="m156">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, to a bus index, <inline-formula id="inf146">
<mml:math id="m157">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The notation <inline-formula id="inf147">
<mml:math id="m158">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is used as a shorthand to refer to bus index <inline-formula id="inf148">
<mml:math id="m159">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> for visit <inline-formula id="inf149">
<mml:math id="m160">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The actual physical dimensions of the BEB are ignored, and it is assumed that each BEB will be assigned to charge at a particular charger. Because of this assumption, the PAP spatial variable, <inline-formula id="inf150">
<mml:math id="m161">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, may be removed, and <inline-formula id="inf151">
<mml:math id="m162">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is made to be an integer corresponding to which queue visit <inline-formula id="inf152">
<mml:math id="m163">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> will be used, <inline-formula id="inf153">
<mml:math id="m164">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">Q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. That is, the queue position is now discretized over <inline-formula id="inf154">
<mml:math id="m165">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> queues, where a BEB occupies a single charge queue. Thus, when <inline-formula id="inf155">
<mml:math id="m166">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, vehicle <inline-formula id="inf156">
<mml:math id="m167">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is placed in a charging queue with a larger index than that of vehicle <inline-formula id="inf157">
<mml:math id="m168">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, i.e., <inline-formula id="inf158">
<mml:math id="m169">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The charger length <inline-formula id="inf159">
<mml:math id="m170">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is likewise replaced with <inline-formula id="inf160">
<mml:math id="m171">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Note that <inline-formula id="inf161">
<mml:math id="m172">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf162">
<mml:math id="m173">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of buses and <inline-formula id="inf163">
<mml:math id="m174">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of chargers. The rationale for adding additional idle queues is to allow BEBs to be &#x201c;set aside&#x201d; if no additional charge is required. Adding one idle queue for each BEB ensures that the constraints will be satisfied if multiple buses sharing overlapping times at the station are placed in idle queues. This method will be applied when defining the parameters in <xref ref-type="sec" rid="s4">Section 4</xref>. The modified queuing constraints can be written as shown in <xref ref-type="disp-formula" rid="e3a">Equation 3</xref>:<disp-formula id="e3a">
<mml:math id="m175">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
<label>(3a)</label>
</disp-formula>
<disp-formula id="e3b">
<mml:math id="m176">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(3b)</label>
</disp-formula>
<disp-formula id="e3c">
<mml:math id="m177">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(3c)</label>
</disp-formula>
<disp-formula id="e3d">
<mml:math id="m178">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">Q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(3d)</label>
</disp-formula>
</p>
<p>The constraint in <xref ref-type="disp-formula" rid="e3a">Equation 3a</xref> is nearly identical to <xref ref-type="disp-formula" rid="e2b">Equation 2b</xref>, but rather than viewing the charger as a continuous strip of length <inline-formula id="inf164">
<mml:math id="m179">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, it is discretized into <inline-formula id="inf165">
<mml:math id="m180">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> queues, each with a width of unit length 1. A BEB is also assigned a unit length of 1, which is reflected in <xref ref-type="disp-formula" rid="e3a">Equation 3a</xref> by <inline-formula id="inf166">
<mml:math id="m181">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="disp-formula" rid="e3b">Equation 3b</xref> ensures that the time the BEB is detached from the charger, <inline-formula id="inf167">
<mml:math id="m182">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, is before its departure time, <inline-formula id="inf168">
<mml:math id="m183">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s. Note that the introduction of the new variable <inline-formula id="inf169">
<mml:math id="m184">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> exists to allow the final charge time to be independent, similar to the manner in which to the initial charge time is independent of the arrival time, <inline-formula id="inf170">
<mml:math id="m185">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="disp-formula" rid="e3c">Equation 3c</xref> ensures that the change time is non-negative. <xref ref-type="disp-formula" rid="e3d">Equation 3d</xref> defines <inline-formula id="inf171">
<mml:math id="m186">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to be an element from the set of queues.</p>
</sec>
<sec id="s3-2">
<title>3.2 Battery charge dynamic constraints</title>
<p>This section introduces the battery dynamic constraints. Two constraints are enforced on the SOC for each BEB: the SOC must always remain above a specified percentage to guarantee sufficient charge to execute their respective routes, and each bus must end the day with a SOC above a specified threshold, in preparation for the next day.</p>
<p>The SOC upon arrival for visit <inline-formula id="inf172">
<mml:math id="m187">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula id="inf173">
<mml:math id="m188">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> kWh. Because the SOC for visit <inline-formula id="inf174">
<mml:math id="m189">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is dependent on its previous visits, the mapping <inline-formula id="inf175">
<mml:math id="m190">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>&#x22c3;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mi>&#x2205;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is used to determine the next visit that corresponds to the same bus, with <inline-formula id="inf176">
<mml:math id="m191">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> being the shorthand notation. Thus, <inline-formula id="inf177">
<mml:math id="m192">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf178">
<mml:math id="m193">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, for <inline-formula id="inf179">
<mml:math id="m194">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, would both map to the same bus index as long as <inline-formula id="inf180">
<mml:math id="m195">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is not the null element, <inline-formula id="inf181">
<mml:math id="m196">
<mml:mrow>
<mml:mi>&#x2205;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The null element is reserved for BEBs that have no future visits.</p>
<p>To define the time spent on the charger, <inline-formula id="inf182">
<mml:math id="m197">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, as well as the initial, final, and intermediate bus charges for each visit <inline-formula id="inf183">
<mml:math id="m198">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the sets for the initial and final visits must be defined. Let the mapping of the first visit by each bus be denoted as <inline-formula id="inf184">
<mml:math id="m199">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The resulting value of the mapping <inline-formula id="inf185">
<mml:math id="m200">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> represents the index for the first visit of bus <inline-formula id="inf186">
<mml:math id="m201">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Similarly, let <inline-formula id="inf187">
<mml:math id="m202">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> map the indexes for the final visits for each bus <inline-formula id="inf188">
<mml:math id="m203">
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Let the shorthand for each mapping be denoted as <inline-formula id="inf189">
<mml:math id="m204">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf190">
<mml:math id="m205">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The initial and final bus charge percentages, <inline-formula id="inf191">
<mml:math id="m206">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf192">
<mml:math id="m207">
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, can then be represented by the constraint equations <inline-formula id="inf193">
<mml:math id="m208">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf194">
<mml:math id="m209">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. The intermediate charges must be determined during runtime.</p>
<p>It is assumed that the charge received is proportional to the time spent charging. The rate for charger <inline-formula id="inf195">
<mml:math id="m210">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula id="inf196">
<mml:math id="m211">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> kW. Note that a value of <inline-formula id="inf197">
<mml:math id="m212">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> corresponds to a queue where no charging occurs. A bus in such a queue simply waits at the station for the departure time. The queue indexes are ordered such that the first <inline-formula id="inf198">
<mml:math id="m213">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> queues have <inline-formula id="inf199">
<mml:math id="m214">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> to allow an arbitrary number of buses to sit idle at any given moment in time. The next <inline-formula id="inf200">
<mml:math id="m215">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> queues are reserved for the slow and fast chargers. The amount of discharge between visits <inline-formula id="inf201">
<mml:math id="m216">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf202">
<mml:math id="m217">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the next visit of the same bus, is denoted as <inline-formula id="inf203">
<mml:math id="m218">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> kWh. If visit <inline-formula id="inf204">
<mml:math id="m219">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> occurred at charger <inline-formula id="inf205">
<mml:math id="m220">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the SOC of the BEB&#x2019;s next arrival, <inline-formula id="inf206">
<mml:math id="m221">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, would be <inline-formula id="inf207">
<mml:math id="m222">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The binary decision variable <inline-formula id="inf208">
<mml:math id="m223">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is introduced to indicate the active charger for visit <inline-formula id="inf209">
<mml:math id="m224">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> in vector form. The form of the SOC for the next visit, <inline-formula id="inf210">
<mml:math id="m225">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, can be written using the following constraints:<disp-formula id="e4a">
<mml:math id="m226">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4a)</label>
</disp-formula>
<disp-formula id="e4b">
<mml:math id="m227">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4b)</label>
</disp-formula>
<disp-formula id="e4c">
<mml:math id="m228">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(4c)</label>
</disp-formula>
</p>
<p>Where <xref ref-type="disp-formula" rid="e4a">Equation 4a</xref> represents the SOC for the next visit of BEB <inline-formula id="inf1212">
<mml:math id="m1230">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <xref ref-type="disp-formula" rid="e4b">Equation 4b</xref> ensures that the BEB for visit <inline-formula id="inf1211">
<mml:math id="m1229">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is assigned to a single queue, and <xref ref-type="disp-formula" rid="e4c">Equation 4c</xref> specifies that <inline-formula id="inf1213">
<mml:math id="m1231">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a binary value.</p>
<p>The choice of queue for visit <inline-formula id="inf211">
<mml:math id="m229">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> becomes a slack variable and is defined in terms of <inline-formula id="inf212">
<mml:math id="m230">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as<disp-formula id="e5">
<mml:math id="m231">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mi>q</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>Maximum and minimum values for the charges are included to ensure that the battery is not overcharged and guarantee sufficient charge for subsequent visits. The upper and lower battery charge bounds for bus <inline-formula id="inf213">
<mml:math id="m232">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are <inline-formula id="inf214">
<mml:math id="m233">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf215">
<mml:math id="m234">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively, where <inline-formula id="inf216">
<mml:math id="m235">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the battery capacity and <inline-formula id="inf217">
<mml:math id="m236">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a percent value. The upper and lower bounds for the current SOC are written as follows:<disp-formula id="e6a">
<mml:math id="m237">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6a)</label>
</disp-formula>
<disp-formula id="e6b">
<mml:math id="m238">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(6b)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e6a">Equation 6a</xref> ensures that the BEB SOC does not exceed the battery capacity, and <xref ref-type="disp-formula" rid="e6b">Equation 6b</xref> ensures that the initial SOC for each visit is above the threshold of <inline-formula id="inf218">
<mml:math id="m239">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Note that the term <inline-formula id="inf219">
<mml:math id="m240">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a bilinear term. A standard method for linearizing a bilinear term that contains an integer variable is by introducing a slack variable with an either/or constraint (<xref ref-type="bibr" rid="B2">Chen et al., 2010</xref>; <xref ref-type="bibr" rid="B18">Rodriguez and Vecchietti, 2013</xref>). Allowing the slack variable <inline-formula id="inf220">
<mml:math id="m241">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> s to be equal to <inline-formula id="inf221">
<mml:math id="m242">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf222">
<mml:math id="m243">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be defined as<disp-formula id="e7">
<mml:math id="m244">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e7">Equation 7</xref> can be expressed as a mixed-integer constraint using big-M notation with the following four constraints:<disp-formula id="e8a">
<mml:math id="m245">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>M</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8a)</label>
</disp-formula>
<disp-formula id="e8b">
<mml:math id="m246">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8b)</label>
</disp-formula>
<disp-formula id="e8c">
<mml:math id="m247">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8c)</label>
</disp-formula>
<disp-formula id="e8d">
<mml:math id="m248">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8d)</label>
</disp-formula>where <inline-formula id="inf223">
<mml:math id="m249">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a large unitless value. If <inline-formula id="inf224">
<mml:math id="m250">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, then <xref ref-type="disp-formula" rid="e8a">Equations 8a</xref>, <xref ref-type="disp-formula" rid="e8b">b</xref> become <inline-formula id="inf225">
<mml:math id="m251">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf226">
<mml:math id="m252">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, forcing <inline-formula id="inf227">
<mml:math id="m253">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, with <xref ref-type="disp-formula" rid="e8c">Equation 8c</xref> being inactive. If <inline-formula id="inf228">
<mml:math id="m254">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <xref ref-type="disp-formula" rid="e8a">Equation 8a</xref> is inactive, and <xref ref-type="disp-formula" rid="e8c">Equations 8c</xref>, <xref ref-type="disp-formula" rid="e8d">d</xref> force <inline-formula id="inf229">
<mml:math id="m255">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-3">
<title>3.3 BEB charging problem</title>
<p>The goal of the MILP is to utilize chargers as little as possible to reduce energy costs, with fast charging being penalized more to avoid its adverse effects on battery health and to account for the higher usage costs. Thus, assignment cost <inline-formula id="inf230">
<mml:math id="m256">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and usage cost <inline-formula id="inf231">
<mml:math id="m257">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are associated with each charger, <inline-formula id="inf232">
<mml:math id="m258">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. These unitless weights can be adjusted based on the charger type or time of day when the visit occurs. The assignment term takes the form <inline-formula id="inf233">
<mml:math id="m259">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and the usage term takes the form <inline-formula id="inf234">
<mml:math id="m260">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The resulting BEB charging problem is defined in <xref ref-type="disp-formula" rid="e9">Equation 9:</xref>
<disp-formula id="e9">
<mml:math id="m261">
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>subject to the constraints<disp-formula id="e10a">
<mml:math id="m262">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mi>T</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10a)</label>
</disp-formula>
<disp-formula id="e10b">
<mml:math id="m263">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10b)</label>
</disp-formula>
<disp-formula id="e10c">
<mml:math id="m264">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10c)</label>
</disp-formula>
<disp-formula id="e10d">
<mml:math id="m265">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10d)</label>
</disp-formula>
<disp-formula id="e10e">
<mml:math id="m266">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10e)</label>
</disp-formula>
<disp-formula id="e10f">
<mml:math id="m267">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10f)</label>
</disp-formula>
<disp-formula id="e10g">
<mml:math id="m268">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10g)</label>
</disp-formula>
<disp-formula id="e10h">
<mml:math id="m269">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10h)</label>
</disp-formula>
<disp-formula id="e10i">
<mml:math id="m270">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10i)</label>
</disp-formula>
<disp-formula id="e10j">
<mml:math id="m271">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10j)</label>
</disp-formula>
<disp-formula id="e10k">
<mml:math id="m272">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10k)</label>
</disp-formula>
<disp-formula id="e10l">
<mml:math id="m273">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10l)</label>
</disp-formula>
<disp-formula id="e10m">
<mml:math id="m274">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10m)</label>
</disp-formula>
<disp-formula id="e10n">
<mml:math id="m275">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>M</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10n)</label>
</disp-formula>
<disp-formula id="e10o">
<mml:math id="m276">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10o)</label>
</disp-formula>
<disp-formula id="e10p">
<mml:math id="m277">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10p)</label>
</disp-formula>
<disp-formula id="e10q">
<mml:math id="m278">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10q)</label>
</disp-formula>
<disp-formula id="e10r">
<mml:math id="m279">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mi>q</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10r)</label>
</disp-formula>
<disp-formula id="e10s">
<mml:math id="m280">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10s)</label>
</disp-formula>
<disp-formula id="e10t">
<mml:math id="m281">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10t)</label>
</disp-formula>
<disp-formula id="e10u">
<mml:math id="m282">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">Q</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10u)</label>
</disp-formula>
<disp-formula id="e10v">
<mml:math id="m283">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(10v)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e10a">Equations 10a&#x2013;</xref>
<xref ref-type="disp-formula" rid="e10i">i</xref> are reiterations of the queuing constraints from <xref ref-type="disp-formula" rid="e2a">Equation 2</xref>; <xref ref-type="disp-formula" rid="e3a">Equation 3</xref>. <xref ref-type="disp-formula" rid="e10g">Equations 10g</xref>&#x2013;<xref ref-type="disp-formula" rid="e10m">m</xref> provide the battery charge constraints. <xref ref-type="disp-formula" rid="e10n">Equations 10n</xref>&#x2013;<xref ref-type="disp-formula" rid="e10q">q</xref> define the charge duration of every visit/queue pairing. <xref ref-type="disp-formula" rid="e10r">Equations 10r</xref>, <xref ref-type="disp-formula" rid="e10s">10s</xref> are reiterations of <xref ref-type="disp-formula" rid="e4b">Equation 4b</xref> and <xref ref-type="disp-formula" rid="e5">Equation 5</xref>, respectively. <xref ref-type="disp-formula" rid="e10t">Equations 10t</xref>&#x2013;<xref ref-type="disp-formula" rid="e10v">v</xref> define the sets of valid values for each variable.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Example</title>
<p>We present an example to demonstrate the utility of the developed MILP charge scheduling technique. A description of the scenario is first presented, followed by a description of an alternative heuristic-based planning strategy called Qin-modified method, which is used as a comparison with the MILP PAP. The results are then presented, analyzed, and discussed for each of the planning strategies.</p>
<sec id="s4-1">
<title>4.1 BEB scenario</title>
<p>To display the capabilities of the model, an example scenario is presented. The scenario was run over a time horizon of <inline-formula id="inf235">
<mml:math id="m284">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>24</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> h, utilizing <inline-formula id="inf236">
<mml:math id="m285">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>35</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> buses with <inline-formula id="inf237">
<mml:math id="m286">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>338</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> visits divided between the <inline-formula id="inf238">
<mml:math id="m287">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> buses. As stated before, the route times are sampled from a set of routes provided by the Utah Transit Authority (UTA). Each bus has a battery capacity of <inline-formula id="inf239">
<mml:math id="m288">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 388 kWh, which is required to stay above an SOC of <inline-formula id="inf240">
<mml:math id="m289">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 20% (77.6 kWh) <inline-formula id="inf241">
<mml:math id="m290">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to ensure that each BEB can complete its next route while maintaining battery health. Each bus is assumed to begin the working day with an SOC of <inline-formula id="inf242">
<mml:math id="m291">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>h</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 90% <inline-formula id="inf243">
<mml:math id="m292">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (349.2 kWh). Additionally, each bus is required to end the day with a minimum SOC of <inline-formula id="inf244">
<mml:math id="m293">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 70% (271.6 kWh) <inline-formula id="inf245">
<mml:math id="m294">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. This assumes that overnight charging can account for the 20% SOC deficit. Furthermore, the value selected for <inline-formula id="inf246">
<mml:math id="m295">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is primarily for illustrative purposes and has no particular significance other than to demonstrate the user&#x2019;s ability to specify the desired end-of-day SOCs. Each bus is assumed to discharge at a rate of <inline-formula id="inf247">
<mml:math id="m296">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 30 kW. Note that many factors play a role in the rate of discharge; however, for the sake of simplicity, since the discharge calculation is beyond the scope of this work, an average rate is used. A total of <inline-formula id="inf248">
<mml:math id="m297">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>30</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> chargers are utilized, where 15 of the chargers are slow charging (30 kW) and 15 are fast charging (911 kW). The technique to minimize the total charger count is used.</p>
<p>To encourage the MILP PAP to utilize the fewest number of chargers, the value of <inline-formula id="inf249">
<mml:math id="m298">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in the objective function, <xref ref-type="disp-formula" rid="e9">Equation 9</xref>, is set as follows: <inline-formula id="inf250">
<mml:math id="m299">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mo>;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf251">
<mml:math id="m300">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mo>;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1000</mml:mn>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The charge duration scalar, <inline-formula id="inf252">
<mml:math id="m301">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, is defined as <inline-formula id="inf253">
<mml:math id="m302">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to create a consumption cost term, <inline-formula id="inf254">
<mml:math id="m303">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> kWh. By consumption cost, it is meant that the total energy consumed by the charge schedule will be accounted for in the objective function. This method encourages the model to minimize active charger times, particularly for the fast chargers.</p>
<p>Another heuristic-based optimization strategy, referred to as the Qin-modified method, is also used to compare the results of the MILP PAP. The Qin-modified strategy is based on the threshold strategy proposed by <xref ref-type="bibr" rid="B16">Qin et al. (2016)</xref>. The strategy has been modified slightly to accommodate the case of multiple charger types without an exhaustive search for the best charger type. The heuristic is based on a set of rules that revolve around the initial SOC of the bus visit <inline-formula id="inf255">
<mml:math id="m304">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. There are three different thresholds, low (85%), medium (90%), and high (95%). Buses below the low threshold (<inline-formula id="inf256">
<mml:math id="m305">
<mml:mrow>
<mml:mtext>SOC</mml:mtext>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>85</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>%) are prioritized to fast chargers and are then allowed to utilize slow chargers if no fast chargers are available. Buses between the low and medium threshold (85% <inline-formula id="inf257">
<mml:math id="m306">
<mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mtext>SOC</mml:mtext>
<mml:mo>&#x2264;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 90%) prioritize slow chargers first and utilize fast chargers only if no slow chargers are available. Buses above the medium threshold and below the high threshold (90% <inline-formula id="inf258">
<mml:math id="m307">
<mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mtext>SOC</mml:mtext>
<mml:mo>&#x2264;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 95%) will only be assigned to slow chargers. Buses above the high threshold (<inline-formula id="inf259">
<mml:math id="m308">
<mml:mrow>
<mml:mtext>SOC</mml:mtext>
<mml:mo>&#x3e;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 95%) will not be placed in a charging queue. Once a bus has been assigned to a charger, it remains on the charger for the duration of the time it is at the station or reaches an SOC of 95% charge, whichever comes first.</p>
<p>The total number of constraints resulted in 7,511 continuous and 328,282 integer/binary constraints. The optimization was performed using the Gurobi MIP solver (<xref ref-type="bibr" rid="B7">Gurobi Optimization, LLC, 2021</xref>) on a machine equipped with an AMD Ryzen 9 5900 &#xd7; 12 Processor (24 core) running at 4.95 GHz. The solver was allowed to run for <inline-formula id="inf260">
<mml:math id="m309">
<mml:mrow>
<mml:mn>7.200</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> s.</p>
</sec>
<sec id="s4-2">
<title>4.2 Results</title>
<p>The schedule generated by the Qin-modified strategy and the MILP PAP is shown in <xref ref-type="fig" rid="F5">Figures 5A, B</xref>, respectively. The <italic>x</italic>-axis represents the time in hours. The <italic>y</italic>-axis represents the assigned charging queue. Rows between 0 and 14 are active times for slow chargers, and rows in the range of 15 and 29 are active times for fast chargers. The unique color/symbol-styled vertices represent the starting charge time for a bus <inline-formula id="inf261">
<mml:math id="m310">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, with the line to the vertical tick signifying the region of time the charger is active. The lines connecting the points represent the charge sequence for each BEB.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>
<bold>(A)</bold> Charging schedule generated by the Qin-modified algorithm. <bold>(B)</bold> Charging schedule generated by the MILP PAP algorithm.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g005.tif"/>
</fig>
<p>The first observation is in the choice of preferred chargers between the Qin-modified and MILP scheduler. <xref ref-type="fig" rid="F6">Figures 6A, B</xref> show that the Qin-modified schedule uses at most four fast chargers and three slow chargers at the same time, whereas the MILP schedule uses at most one fast charger and six slow chargers at the same time. Both the Qin-modified and MILP schedule used the fast chargers in short bursts (&#x2dc;0.2&#x2013;0.5 h). The main difference lies in the utilization strategy of the slow chargers. The Qin-modified method, for the most part, opted for shorter bursts for the slow chargers (&#x2dc;0.3&#x2013;0.7 h), most heavily placed on the first slow charger. The MILP utilized the slow chargers in short bursts; however, the solver recognized moments where a BEB being placed in a slow-charging queue for a longer duration was more cost-effective (with respect to the objective function) than the BEB placed in a fast-charging queue. Although one of the objectives of the MILP was to minimize the amount of chargers used, the Qin-modified schedule ended up using fewer chargers than the MILP. Note that the MILP schedule packed the first queue for the fast and slow chargers more effectively than the Qin-modified schedule. Although both schedules generated are valid, no comparison of the quality of the schedule can be made directly from <xref ref-type="fig" rid="F5">Figures 5A, B</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>
<bold>(A)</bold> Number of fast chargers for Qin-modified and MILP PAP methods. <bold>(B)</bold> Number of slow chargers for Qin-modified and MILP PAP methods.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g006.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F7">Figures 7A, B</xref> depict the charge for every bus over the time horizon for the Qin-modified and MILP schedules, respectively. Every vehicle begins with a SOC of <inline-formula id="inf262">
<mml:math id="m311">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 90%, finishes with a SOC of <inline-formula id="inf263">
<mml:math id="m312">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 70% in the MILP PAP schedule, and never goes below 20% in the intermediate arrivals, as stated in <xref ref-type="disp-formula" rid="e10a">Equation 10</xref>. There is no guarantee for this in the Qin-modified strategy, which can be observed by some intermediate charges reaching a SOC of 0% and the distribution of final charges, the minimum being 0% and the maximum being 94.845%. It is of note that the SOC plummeting to 0% is due to the reactive nature of the Qin-modified method. Specifically, the schedule utilized in this example contains some BEBs that begin with routes that deplete the SOC by small amounts but do not fall below the threshold. These routes are followed by small charge windows, which are then preceded by large routes depleting the SOC by a significant amount, resulting in the SOC reaching 0%. The only guarantee that the Qin-modified method supplies is its predictability for the intermediate visits due to its heuristic nature (i.e., if the BEB charge is within the low threshold, a fast charger will be prioritized), whereas MILP places a bus in the queue that &#x201c;makes sense&#x201d; in the context of the larger picture. The MILP PAP does not have an obvious decision-making process because its weighted objective function is affected by the accumulation of previous decisions.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>
<bold>(A)</bold> Bus charges for the Qin-modified charging schedule. The charging scheme of the Qin charger is more predictable during the working day. <bold>(B)</bold> Bus charges for the MILP PAP charging schedule. The MILP model allows for guarantees of minimum/maximum changes during the working day and charges at the end of the day.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g007.tif"/>
</fig>
<p>Another important measure for the chargers is to compare the amount of power and energy consumed. <xref ref-type="fig" rid="F8">Figure 8</xref> depicts the power consumption throughout the time horizon. It can be seen that the Qin-modified power consumption is steadily less or the same as that of the MILP schedule. This can be accounted for by the MILP&#x2019;s constraints to keep the bus SOC above 20% and to reach a final SOC of 70% at the end of the working day. Similarly, the accumulated energy consumed is shown in <xref ref-type="fig" rid="F9">Figure 9</xref>. The MILP schedule is more efficient up until about the 11th hour. Again, this can be accounted for by the fact that the MILP accommodates the extra constraints. Due to these constraints, the MILP PAP consumes approximately <inline-formula id="inf264">
<mml:math id="m313">
<mml:mrow>
<mml:mn>0.1</mml:mn>
<mml:mo>&#x22c5;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> kWh more than the Qin-modified method. The overlap of the MILP PAP can be accounted for by referencing <xref ref-type="fig" rid="F6">Figures 6A, B</xref>. Between the 5th and 10th hours, the MILP schedule mainly uses slow chargers, increasing the rate at which power is being consumed. Afterward, the MILP schedule continues to use at least the same number of chargers as the Qin-modified schedule. However, due to the added constraints, the MILP schedule must utilize more resources to remain within the specified bounds.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Amount of power consumed by the Qin-modified and MILP schedules over the time horizon.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g008.tif"/>
</fig>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Total accumulated energy consumed by the Qin-modified and MILP schedules throughout the time horizon.</p>
</caption>
<graphic xlink:href="fenrg-12-1347442-g009.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>This work developed a MILP scheduling framework that optimally assigns fast and slow chargers to a BEB fleet, assuming a constant schedule. The BAP was briefly introduced, followed by a description and formulation of the PAP. The PAP was modified to allow the charge time to be variable. Because the modified PAP no longer requires a predefined charge time, linear battery dynamics were introduced to model the propagation of each BEB&#x2019;s SOC. Additional constraints were also introduced to provide upper and lower limits for the battery dynamics.</p>
<p>An example of the MILP PAP formulation was then presented and compared to a heuristic-based schedule, referred to as the Qin-modified method. The MILP PAP optimization was run for 7,200 s to a non-optimal solution. The Qin-modified and MILP schedule utilized four and one fast charger(s), respectively. Furthermore, the MILP and Qin-modified method utilized the fast chargers for similar durations ranging from approximately 0.2 to 0.5 h; however, the MILP schedule demonstrated battery health considerations by recognizing visits that could utilize slow chargers for longer durations while satisfying the constraints. The MILP PAP schedule utilized approximately <inline-formula id="inf265">
<mml:math id="m314">
<mml:mrow>
<mml:mn>0.1</mml:mn>
<mml:mo>&#x22c5;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> kWh more than the Qin-modified method, but the SOC for the MILP schedule remained above the constrained minimum SOC of 20% and charged all the buses to 70% at the end of the working day. That is, the constraints applied to the MILP model consumed more energy to satisfy the SOC threshold requirements. The Qin-modified schedule, on the other hand, allowed the SOC of certain BEBs to decrease to 0%. The SOC at the end of the day for the Qin-modified method varied from 0% to 94.85%, whereas the results of the MILP showed that the BEBs converged to the specified minimum SOC of 70%.</p>
<p>Further fields of interest include utilizing the formulation (<xref ref-type="disp-formula" rid="e9">Equation 9</xref>; <xref ref-type="disp-formula" rid="e10a">Equation 10</xref>) with nonlinear battery dynamics, calculation and utilization of the demand and consumption cost in the objective function, and utilizing this formulation in a metaheuristic solver. Furthermore, &#x201c;fuzzifying&#x201d; the initial and final charge times is of interest to allow flexibility in the arrival and departure times.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<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 author.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>AB: conceptualization, software, and writing&#x2013;original draft. GD: supervision and writing&#x2013;review and editing. JG: supervision and writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research, authorship, and/or publication of this article. This work was supported in part by the Department of Energy through a Prime Award with ABB Ltd., under Grand DE-EE0009194, and in part by PacifiCopr Under Contract 3590. The funder had no involvement in the study design, data collection and analysis, or preparation of the manuscript. They did review and approve the publication prior to the decision to publish.</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/fenrg.2024.1347442/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fenrg.2024.1347442/full&#x23;supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="DataSheet1.CSV" id="SM1" mimetype="application/CSV" 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>Buhrkal</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zuglian</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ropke</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Larsen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lusby</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Models for the discrete berth allocation problem: a computational comparison</article-title>. <source>Transp. Res. Part E Logist. Transp. Rev.</source> <volume>47</volume>, <fpage>461</fpage>&#x2013;<lpage>473</lpage>. <pub-id pub-id-type="doi">10.1016/j.tre.2010.11.016</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>D.-S.</given-names>
</name>
<name>
<surname>Batson</surname>
<given-names>R. G.</given-names>
</name>
<name>
<surname>Dang</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2010</year>). <source>Applied integer programming</source>. <publisher-name>Wiley</publisher-name>.</citation>
</ref>
<ref id="B3">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>de Bruin</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2013</year>). <source>Rectangle Packing</source>. <comment>Master&#x2019;s thesis</comment>. <publisher-loc>Amsterdam (Netherlands)</publisher-loc>: <publisher-name>University of Amsterdam</publisher-name>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>De Filippo</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Marano</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Sioshansi</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Simulation of an electric transportation system at the Ohio state university</article-title>. <source>Appl. Energy</source> <volume>113</volume>, <fpage>1686</fpage>&#x2013;<lpage>1691</lpage>. <pub-id pub-id-type="doi">10.1016/j.apenergy.2013.09.011</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Frojan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Correcher</surname>
<given-names>J. F.</given-names>
</name>
<name>
<surname>Alvarez-Valdes</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Koulouris</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Tamarit</surname>
<given-names>J. M.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>The continuous berth allocation problem in a container terminal with multiple quays</article-title>. <source>Expert Syst. Appl.</source> <volume>42</volume>, <fpage>7356</fpage>&#x2013;<lpage>7366</lpage>. <pub-id pub-id-type="doi">10.1016/j.eswa.2015.05.018</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guida</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Abdulah</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>
<italic>ZeEUS eBus Report&#x23; 2-An updated overview of electric buses in Europe</italic>. Tech. Rep</article-title>. <volume>2</volume>, <comment>International Association of Public Transport (UITP)</comment>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<collab>Gurobi Optimization, LLC</collab> (<year>2021</year>). <article-title>Gurobi optimizer reference manual</article-title>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Song</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Optimal charging scheduling and management for a fast-charging battery electric bus system</article-title>. <source>Transp. Res. Part E Logist. Transp. Rev.</source> <volume>142</volume>, <fpage>102056</fpage>. <pub-id pub-id-type="doi">10.1016/j.tre.2020.102056</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hoke</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Brissette</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Pratt</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Maksimovic</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Accounting for lithium-ion battery degradation in electric vehicle charging optimization</article-title>. <source>IEEE J. Emerg. Sel. Top. Power Electron.</source> <volume>2</volume>, <fpage>691</fpage>&#x2013;<lpage>700</lpage>. <pub-id pub-id-type="doi">10.1109/JESTPE.2014.2315961</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Imai</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Nishimura</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Papadimitriou</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>The dynamic berth allocation problem for a container port</article-title>. <source>Transp. Res. Part B Methodol.</source> <volume>35</volume>, <fpage>401</fpage>&#x2013;<lpage>417</lpage>. <pub-id pub-id-type="doi">10.1016/s0191-2615(99)00057-0</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>J.-Q.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Battery-electric transit bus developments and operations: a review</article-title>. <source>Int. J. Sustain. Transp.</source> <volume>10</volume>, <fpage>157</fpage>&#x2013;<lpage>169</lpage>. <pub-id pub-id-type="doi">10.1080/15568318.2013.872737</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Ceder</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Battery-electric transit vehicle scheduling with optimal number of stationary chargers</article-title>. <source>Transp. Res. Part C Emerg. Technol.</source> <volume>114</volume>, <fpage>118</fpage>&#x2013;<lpage>139</lpage>. <pub-id pub-id-type="doi">10.1016/j.trc.2020.02.009</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lutsey</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Nicholas</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Update on electric vehicle costs in the United States through 2030</article-title>. <source>The International Council on Clean Transportation</source> <volume>2</volume>.</citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Murata</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Fujiyoshi</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Nakatake</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kajitani</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>1995</year>). &#x201c;<article-title>Rectangle-packing-based module placement</article-title>,&#x201d; in <source>Proceedings of IEEE international conference on computer aided design (ICCAD)</source>, <fpage>472</fpage>&#x2013;<lpage>479</lpage>. <pub-id pub-id-type="doi">10.1109/.ICCAD.1995.480159</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Qarebagh</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Sabahi</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Nazarpour</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Optimized scheduling for solving position allocation problem in electric vehicle charging stations</article-title>,&#x201d; in <source>2019 27th Iranian conference on electrical engineering (ICEE)</source>, <fpage>593</fpage>&#x2013;<lpage>597</lpage>. <pub-id pub-id-type="doi">10.1109/IranianCEE.2019.8786524</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Gusrialdi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Paul Brooker</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>T-Raissi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Numerical analysis of electric bus fast charging strategies for demand charge reduction</article-title>. <source>Transp. Res. Part A Policy Pract.</source> <volume>94</volume>, <fpage>386</fpage>&#x2013;<lpage>396</lpage>. <pub-id pub-id-type="doi">10.1016/j.tra.2016.09.014</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rodrigues</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Agra</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Berth allocation and quay crane assignment/scheduling problem under uncertainty: a survey</article-title>. <source>Eur. J. Operational Res.</source> <volume>303</volume>, <fpage>501</fpage>&#x2013;<lpage>524</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejor.2021.12.040</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rodriguez</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Vecchietti</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>A comparative assessment of linearization methods for bilinear models</article-title>. <source>Comput. Chem. Eng.</source> <volume>48</volume>, <fpage>218</fpage>&#x2013;<lpage>233</lpage>. <pub-id pub-id-type="doi">10.1016/j.compchemeng.2012.09.011</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sebastiani</surname>
<given-names>M. T.</given-names>
</name>
<name>
<surname>L&#xfc;ders</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Fonseca</surname>
<given-names>K. V. O.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Evaluating electric bus operation for a real-world brt public transportation using simulation optimization</article-title>. <source>IEEE Trans. Intelligent Transp. Syst.</source> <volume>17</volume>, <fpage>2777</fpage>&#x2013;<lpage>2786</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2016.2525800</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Robust scheduling strategies of electric buses under stochastic traffic conditions</article-title>. <source>Transp. Res. Part C Emerg. Technol.</source> <volume>105</volume>, <fpage>163</fpage>&#x2013;<lpage>182</lpage>. <pub-id pub-id-type="doi">10.1016/j.trc.2019.05.032</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yuen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Hassan</surname>
<given-names>N. U.</given-names>
</name>
<name>
<surname>An</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2017a</year>). <article-title>Electric vehicle charging station placement for urban public bus systems</article-title>. <source>IEEE Trans. Intelligent Transp. Syst.</source> <volume>18</volume>, <fpage>128</fpage>&#x2013;<lpage>139</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2016.2563166</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Barclay</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2017b</year>). <article-title>Optimal recharging scheduling for urban electric buses: a case study in davis</article-title>. <source>Transp. Res. Part E Logist. Transp. Rev.</source> <volume>100</volume>, <fpage>115</fpage>&#x2013;<lpage>132</lpage>. <pub-id pub-id-type="doi">10.1016/j.tre.2017.01.001</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wei</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Fayyaz</surname>
<given-names>S. K.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Optimizing the spatio-temporal deployment of battery electric bus system</article-title>. <source>J. Transp. Geogr.</source> <volume>68</volume>, <fpage>160</fpage>&#x2013;<lpage>168</lpage>. <pub-id pub-id-type="doi">10.1016/j.jtrangeo.2018.03.013</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xylia</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Silveira</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>The role of charging technologies in upscaling the use of electric buses in public transport: experiences from demonstration projects</article-title>. <source>Transp. Res. Part A Policy Pract.</source> <volume>118</volume>, <fpage>399</fpage>&#x2013;<lpage>415</lpage>. <pub-id pub-id-type="doi">10.1016/j.tra.2018.09.011</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Lou</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>On charging scheduling optimization for a wirelessly charged electric bus system</article-title>. <source>IEEE Trans. Intelligent Transp. Syst.</source> <volume>19</volume>, <fpage>1814</fpage>&#x2013;<lpage>1826</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2017.2740329</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X. C.</given-names>
</name>
<name>
<surname>Wei</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Golub</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Bi-objective optimization for battery electric bus deployment considering cost and environmental equity</article-title>. <source>IEEE Trans. Intelligent Transp. Syst.</source> <volume>22</volume>, <fpage>2487</fpage>&#x2013;<lpage>2497</lpage>. <pub-id pub-id-type="doi">10.1109/tits.2020.3043687</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>