<?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. Comms. Net</journal-id>
<journal-title>Frontiers in Communications and Networks</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Comms. Net</abbrev-journal-title>
<issn pub-type="epub">2673-530X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">744998</article-id>
<article-id pub-id-type="doi">10.3389/frcmn.2021.744998</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Communications and Networks</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Optimization of the Return Link Carrier Planning for a Constant Coding and Modulation Satellite Network</article-title>
<alt-title alt-title-type="left-running-head">Lacoste et&#x20;al.</alt-title>
<alt-title alt-title-type="right-running-head">Return Link Carrier Planning Optimization</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lacoste</surname>
<given-names>C.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1414000/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Maturo</surname>
<given-names>N.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Chatzinotas</surname>
<given-names>S.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Emiliani</surname>
<given-names>L.</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<label>
<sup>1</sup>
</label>SigCom, Interdisciplinary Centre for Security, Reliability and Trust, University of Luxembourg, <addr-line>Luxembourg</addr-line>, <country>Luxembourg</country>
</aff>
<aff id="aff2">
<label>
<sup>2</sup>
</label>Spectrum Management and Development, SES S.A, <addr-line>Betzdorf</addr-line>, <country>Luxembourg</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/991608/overview">Wei Feng</ext-link>, Tsinghua University, China</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/995027/overview">Ye Li</ext-link>, Nantong University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1070685/overview">Shkelzen Cakaj</ext-link>, Polytechnic University of Tirana, Albania</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: C. Lacoste, <email>clement.lacoste@uni.lu</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Aerial and Space Networks, a section of the journal Frontiers in Communications and Networks</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>06</day>
<month>10</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>2</volume>
<elocation-id>744998</elocation-id>
<history>
<date date-type="received">
<day>21</day>
<month>07</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>16</day>
<month>09</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2021 Lacoste, Maturo, Chatzinotas and Emiliani.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Lacoste, Maturo, Chatzinotas and Emiliani</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&#x20;terms.</p>
</license>
</permissions>
<abstract>
<p>In this paper, we propose an approach to optimize the frequency plan and associated bandwidth allocation in the return link of a broadband satellite network, by exploring several design techniques for carrier allocation plans. Since bandwidth is a limited resource in satellite telecommunications, the minimization of bandwidth usage is a core issue that satellite communication service providers must solve, in particular for networks using a constant coding and modulation plan, which lacks the flexibility found in newer satellite communication products and can be subject to hardware constraints. This problematic led us to raise the following question: how can the long term bandwidth requirement of the network be minimized, given a set of ground terminals, of Modulations and Codings, and of discrete bandwidths. In this document we formally define the long-term carrier allocation problem and analyze current practical solutions. We subsequently investigate two other potential solutions, found to be more bandwidth-efficient: one based on heuristics and another based on integer linear programming. Finally, we look at the impact of several parameters on the performance of those three methods. Overall we observed marginal reductions in bandwidth, however significant gains were reached for networks with small return links with low committed information rate, a case in which some constant coding and modulation networks could fall. We concluded that those networks could benefit from our methods and see a significant reduction in bandwidth, and subsequently operational costs, at low implementation&#x20;costs.</p>
</abstract>
<kwd-group>
<kwd>optimization</kwd>
<kwd>resource allocation</kwd>
<kwd>return link</kwd>
<kwd>constant coding and modulation</kwd>
<kwd>integer linear programming</kwd>
</kwd-group>
<contract-sponsor id="cn001">National Research Fund Luxembourg (FNR)<named-content content-type="fundref-id">10.13039/501100001866</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>For satellite communication (SatCom) systems, radio bandwidth is one of the most precious resources. Satellite payloads are designed to deliver services for a variety of applications, each associated to a target service level agreement and desired area of service. The amount of bandwidth required to deliver services whilst meeting the service level agreements can vary considerably, depending on the type of service provided e.g., TV Broadcast, Video On Demand, Voice and Internet. Since spectrum is limited (<xref ref-type="bibr" rid="B24">NIST, 2019</xref>), SatCom service providers strive to deliver services to their customers using as little bandwidth as possible. Bandwidth optimization is thus&#x20;key.</p>
<p>When optimizing bandwidth usage, we can distinguish two scales:<list list-type="simple">
<list-item>
<p>&#x2022; Micro/real time scale: in this case the optimization focuses on real time bandwidth and time slot allocation (<xref ref-type="bibr" rid="B1">Al-Mosawi et&#x20;al., 2012</xref>), with short-term impairments and traffic prediction (<xref ref-type="bibr" rid="B2">Aroumont et&#x20;al., 2008</xref>). Techniques such as connection admission control (<xref ref-type="bibr" rid="B32">Tra, 2008</xref>), channel estimation (<xref ref-type="bibr" rid="B5">Cioni et&#x20;al., 2004</xref>), power allocation (<xref ref-type="bibr" rid="B10">Guerster et&#x20;al., 2019</xref>), and adaptive coding and modulation (<xref ref-type="bibr" rid="B3">Bischl et&#x20;al., 2010</xref>) fall in this category.</p>
</list-item>
<list-item>
<p>&#x2022; Macro/system scale: in this case the optimization is done on a system level, dealing with long-term statistics of channel behaviour, link budget outputs, and traffic variations. Optimization on this scale usually aims at reducing the cost per Gbps (<xref ref-type="bibr" rid="B26">Ort&#xed;z-G&#xf3;mez et&#x20;al., 2020</xref>) by tweaking key satellite characteristics such as beam number, frequency reuse, and CINR (<xref ref-type="bibr" rid="B6">Cornejo et&#x20;al., 2019</xref>), or using smart gateways and temporal/spatial availabilities (<xref ref-type="bibr" rid="B16">Jeannin et&#x20;al., 2014</xref>). The topic of our paper falls in this category but aims to solve a different problem.</p>
</list-item>
</list>
</p>
<p>Most of the literature focuses on optimizing the capacity of High Throughput Satellites (HTS) and upcoming Very High Throughput Satellites (VHTS) embedding flexible payloads, and especially on the forward link (<xref ref-type="bibr" rid="B29">SERRANO-VELARDE et&#x20;al., 2014</xref>), (<xref ref-type="bibr" rid="B26">Ort&#xed;z-G&#xf3;mez et&#x20;al., 2020</xref>). The macro-scale optimization is indeed important to service providers since satellite capacity costs are a key component of a network&#x2019;s operational expenditure (OPEX). This kind of optimization relies on a lot of degrees of freedom and works best before the satellite enters service, when the payload can be modified [&#x201c;Upstream&#x201d; part of <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>, (<xref ref-type="bibr" rid="B28">PWC, 2020</xref>), (<xref ref-type="bibr" rid="B25">Omelyanenko, 2017</xref>), (<xref ref-type="bibr" rid="B30">SIA, 2020</xref>)]. However once in orbit the satellite&#x2019;s transponders will be used to serve different service providers requests, each using a fraction of the satellite&#x2019;s capacity (&#x201c;Downstream&#x201d; part of <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>). Each request will give birth to a different network (or modification of an existing one) which will require its own optimization process. Our work aims at providing a formal solution to a key part of those network sizing problems.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Satellite industry value chain.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g001.tif"/>
</fig>
<p>After reviewing several network sizing processes (<xref ref-type="bibr" rid="B11">iDirect, 2021a</xref>), (<xref ref-type="bibr" rid="B12">iDirect, 2021b</xref>), (<xref ref-type="bibr" rid="B9">Gilat, 2012</xref>), we extracted a general network design workflow that can be broken down into 5 steps (<xref ref-type="bibr" rid="B31">SkyWan, 2010</xref>):<list list-type="simple">
<list-item>
<p>&#x2022; Definition of the Service Level Agreements (SLA): requirement gathering, e.g., number and location of the user terminals, types of services and associated uptime.</p>
</list-item>
<list-item>
<p>&#x2022; Traffic calculation: computing traffic types, total throughput required incorporating contention ratio and Committed Information Rate (CIR).</p>
</list-item>
<list-item>
<p>&#x2022; Satellite selection: based on coverage and payload parameters.</p>
</list-item>
<list-item>
<p>&#x2022; Ground station design: required Equivalent Isotropic Radiated Power (EIRP), antenna size and amplifier&#x2019;s&#x20;power.</p>
</list-item>
<list-item>
<p>&#x2022; Carrier sizing: determining the number of carriers, symbol rates, Modulation and Coding (ModCod), and traffic distribution among carriers.</p>
</list-item>
</list>
</p>
<p>The traffic calculation is derived from the SLA, but the radio-frequency design (space and ground planning) and the carrier sizing are inter-dependent: making assumptions in either of those steps will allow to deduce the other through a link budget. Given that the initial assumptions might not lead to an optimal network design, multiple iterations may be required to find the final inputs, especially when factoring hardware limitations which restrain choices on carrier symbol rates, ModCods, and on how the former can be combined with the latter. Those limitations are particularly present on the return link of which the design is greatly influenced by the forward&#x20;one.</p>
<p>In this paper, we will focus on providing a general solution to the return link carrier sizing problem, key to compute the total bandwidth of a broadband network using partial transponder capacity, assuming the radio-frequency capabilities have already been identified through general link analysis. The inputs of this problem are illustrated in <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>. Our optimization problem will factor in hardware constraints such as limited set of symbol rates and ModCods to approach real life scenarios. To the authors&#x2019; knowledge, the topic of optimization of the return link carrier sizing of a VSAT network has not been formally addressed in the literature in a direct and applicable manner. While bandwidth, and more generally resource allocation optimization problems are a well covered subject, our carrier allocation problem diverges from those in two aspects.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Inputs of the return link carrier sizing problem.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g002.tif"/>
</fig>
<p>Firstly, the large majority of the resource allocation literature focuses on dynamic, real-time problems, while we take a network planning perspective and deal with long-term statistics. For ACM scenarios, this implies dealing with the space correlation of terminal&#x2019;s impairments (<xref ref-type="bibr" rid="B17">Jeannin et&#x20;al., 2012</xref>), (<xref ref-type="bibr" rid="B23">Morel et&#x20;al., 2015</xref>) to answer questions such as &#x201c;how many terminals will request the use of a given ModCod at a given time&#x201d;, and &#x201c;how many carriers of a given ModCod will be needed to satisfy the long-term throughput requirement per site&#x201d;. These questions, typically posed at the network planning stage of any VSAT network using partial transponder capacity, are answered in practice using proprietary techniques with simple formulations (<xref ref-type="bibr" rid="B11">iDirect, 2021a</xref>), (<xref ref-type="bibr" rid="B12">iDirect, 2021b</xref>), (<xref ref-type="bibr" rid="B9">Gilat, 2012</xref>), such as the long-term average mentioned in (<xref ref-type="bibr" rid="B20">Luini et&#x20;al., 2011</xref>) which are not able to yield an optimal solution.</p>
<p>Secondly, very few of resource allocation optimization problems factor in limited combinations of both symbol rates and spectral efficiencies (<xref ref-type="bibr" rid="B4">Booton, 2008</xref>). proved that combinatorial optimization targeted towards bandwidth reduction was relevant by achieving bandwidth reductions of 10&#x2013;17% in the context of real time channel fragmentation issues. As far as the authors&#x2019; search has revealed, the only attempt at solving a carrier sizing problem subject to hardware constraints was done by (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>), which expanded upon (<xref ref-type="bibr" rid="B20">Luini et&#x20;al., 2011</xref>) by limiting the possible symbol rate values to a discrete set and expressing the carrier sizing as a combinatorial optimization problem. Integer Linear Programming (ILP) techniques were proposed as a solution and the authors achieved a bandwidth reduction of 82% (according to table 3) in one specific scenario. However this approach fell short of providing a practical and applicable solution due to its inability to guarantee the Quality of Service (QoS) and to factor in the space correlation of terminal&#x2019;s impairments.</p>
<p>The shortcomings of (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>) convinced us that the ACM carrier sizing problem needs to be split into sub-problems. We propose in this paper to focus on the hardware constraints aspect and optimize the long term bandwidth in the case of a Constant Coding and Modulation (CCM) satcom network, which lays the foundation of an optimization problem that could then be expanded to ACM scenarios in future research. We believe such a formulation will fill in gaps in knowledge, provide a solid foundation to build towards the ACM problem general solution, and provide practical solutions to the VSAT network design problem: CCM networks continue to be used and deployed especially in frequency bands that do not require adaptation (such as C band, with networks such as those servicing aeronautical traffic and communications services or maritime connectivity solutions operating globally) and those would benefit from a solid foundation to their design phase, and from an optimal solution to the return plan design problem.</p>
<p>In this paper we add the following contributions to the current state of the art:<list list-type="simple">
<list-item>
<p>&#x2022; A new, general mathematical definition of the carrier allocation problem.</p>
</list-item>
<list-item>
<p>&#x2022; A new benchmark method based on current industry&#x2019;s techniques and serving as reference point for the performance analysis.</p>
</list-item>
<list-item>
<p>&#x2022; An updated ILP formulation that solves the applicability issues encountered in previous&#x20;works.</p>
</list-item>
<list-item>
<p>&#x2022; A new heuristic method to understand the specific issues introduced by hardware constraints.</p>
</list-item>
<list-item>
<p>&#x2022; A comprehensive performance analysis across three different parameters.</p>
</list-item>
</list>
</p>
<p>The rest of the paper is organised as follows. In <xref ref-type="sec" rid="s2">Section 2</xref>, we introduce a CCM scenario similar to (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>). In <xref ref-type="sec" rid="s3">Section 3</xref>, we formulate the corresponding mathematical constraints and optimization problem and present three ways to solve it: an intuitive solution which will be our benchmark, an ILP problem formulation, and finally a heuristic solution. In Section 4.1, we then introduce a simulation scenario for the radio links, considering real payload parameters, and in <xref ref-type="sec" rid="s4">Section 4</xref>, we compare the different optimization methods we introduced across different parameters. Finally, <xref ref-type="sec" rid="s5">Section 5</xref> introduces some discussions based on our results and <xref ref-type="sec" rid="s6">Section 6</xref> concludes the paper and proposes further lines of&#x20;work.</p>
</sec>
<sec id="s2">
<title>2 Scenario Description</title>
<p>Our analysis scenario considers that <italic>N</italic> user terminals distributed over a service area require telecommunication services via satellite (e.g., Transactional applications, Voice over IP, Web browsing), and those services require both a forward and a return path. We then assume that the following parameters are readily available for the return path:<list list-type="simple">
<list-item>
<p>&#x2022; The total number of user terminals <italic>N</italic> that are part of the network.</p>
</list-item>
<list-item>
<p>&#x2022; The CIR <italic>T</italic>
<sub>CIR</sub> per user terminal in kbps. <italic>T</italic>
<sub>CIR</sub> is assumed here to be an information rate (layer 1), and to be constant across terminals. <italic>T</italic>
<sub>CIR</sub> can either be a direct request from the customer or can be computed by the service provider as a function of the services and the QoS objective requested.</p>
</list-item>
<list-item>
<p>&#x2022; The set <inline-formula id="inf1">
<mml:math id="m1">
<mml:mi mathvariant="script">M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> of ModCods supported by the terminal&#x2019;s modem, ordered by increasing activation thresholds (<italic>&#x3b8;</italic>
<sub>1</sub>, &#x2026; , <italic>&#x3b8;</italic>
<sub>
<italic>K</italic>
</sub>). We will note <italic>S</italic>(<italic>M</italic>
<sub>
<italic>k</italic>
</sub>) the spectral efficiency of <italic>M</italic>
<sub>
<italic>k</italic>
</sub> and assume <italic>S</italic>(<italic>M</italic>
<sub>
<italic>k</italic>
</sub>) increases with <italic>&#x3b8;</italic>
<sub>
<italic>k</italic>
</sub>.</p>
</list-item>
<list-item>
<p>&#x2022; The carrier-to-noise ratio <inline-formula id="inf2">
<mml:math id="m2">
<mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> of each terminal <italic>u</italic>, computed by a link budget for the desired SLA availability.</p>
</list-item>
<list-item>
<p>&#x2022; The set <inline-formula id="inf3">
<mml:math id="m3">
<mml:mi mathvariant="script">R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> of symbol rates, with <italic>R</italic>
<sub>
<italic>L</italic>
</sub> &#x2264; <italic>R</italic>
<sub>max</sub>. <italic>R</italic>
<sub>max</sub> is the maximum symbol rate over which the user terminals cannot maintain the required EIRP density (<italic>EIRP</italic>
<sub>0</sub>). This parameter depends on capability of the terminal&#x2019;s transmit chain. User terminals are assumed to work in Power Equivalent Bandwidth mode, i.e. the emission power decreases proportionally to the bandwidth in order to keep a constant EIRP density.</p>
</list-item>
</list>
</p>
<p>Contrarily to (<xref ref-type="bibr" rid="B20">Luini et&#x20;al., 2011</xref>) and (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>), in this work the carrier plan will be designed for CCM, implying:<list list-type="simple">
<list-item>
<p>&#x2022; Each terminal is assigned to one carrier and cannot change over&#x20;time.</p>
</list-item>
<list-item>
<p>&#x2022; Each carrier has only one ModCod and symbol rate and cannot change over&#x20;time.</p>
</list-item>
</list>
</p>
<p>Thus, all user terminals assigned to the same return link carrier will use the same ModCod. Nevertheless, the carrier allocation problem tackled in this paper is equivalent to the one described in (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>) as the terminal&#x2019;s capacity to change carriers was not used in the problem solving. We also assume that all user terminals can at least handle the lowest ModCod <italic>M</italic>
<sub>1</sub>, i.e.,&#x20;<disp-formula id="e1">
<mml:math id="m4">
<mml:mo>&#x2200;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(1)</label>
</disp-formula>and<disp-formula id="e2">
<mml:math id="m5">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(2)</label>
</disp-formula>in order to have a common bandwidth pool for all&#x20;<italic>M</italic>
<sub>
<italic>k</italic>
</sub>.</p>
</sec>
<sec id="s3">
<title>3 Carrier Allocation</title>
<p>In this section, we will translate the scenario into mathematical constraints. We will then show three ways of solving the problem: an intuitive solution that will be our benchmark, an ILP problem formulation, and finally a heuristic.</p>
<p>We need to assign to each combination of ModCod and symbol rate, called carrier type, a cluster of user terminals such that all of them can support the ModCod. The resulting number of user terminals assigned to each carrier type, and subsequently the number of carriers needed to serve them, constitute what is called the carrier plan, from which we can compute the total bandwidth of the network (assuming the bandwidth of a carrier is proportional to its symbol rate). Our goal is then to find the optimal carrier plan that will minimize the total bandwidth.</p>
<p>Let&#x2019;s first note for each terminal <italic>u</italic> the ModCod index <italic>K</italic>
<sub>
<italic>u</italic>
</sub> such that:<disp-formula id="e3">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>If carrier symbol rates can take values in a continuous set <inline-formula id="inf4">
<mml:math id="m7">
<mml:mi mathvariant="script">R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, we can easily calculate the minimum bandwidth for each user terminal:<disp-formula id="e4">
<mml:math id="m8">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>Hypothesis (<xref ref-type="disp-formula" rid="e2">Eq. 2</xref>) guarantees that <inline-formula id="inf5">
<mml:math id="m9">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">R</mml:mi>
</mml:math>
</inline-formula>. We can then deduce the carrier plan minimum bandwidth:<disp-formula id="e5">
<mml:math id="m10">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>u</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:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>However, the type of ground and satellite equipment, and the system capabilities, might limit the choice of supported symbol rates to a discrete set <inline-formula id="inf6">
<mml:math id="m11">
<mml:mi mathvariant="script">R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> with <italic>R</italic>
<sub>
<italic>L</italic>
</sub> &#x2264; <italic>R</italic>
<sub>max</sub>. In this case determining the optimal carrier plan is not trivial.</p>
<sec id="s3-1">
<title>3.1 Problem Definition</title>
<p>To build the carrier plan, we need to determine for each carrier type <italic>C</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub>, combining <italic>M</italic>
<sub>
<italic>k</italic>
</sub> with <italic>R</italic>
<sub>
<italic>l</italic>
</sub>, the number of carriers <italic>X</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> needed to deliver <italic>T</italic>
<sub>CIR</sub> to the set of user terminals <inline-formula id="inf7">
<mml:math id="m12">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>. We will note the number of terminals <inline-formula id="inf8">
<mml:math id="m13">
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:math>
</inline-formula>.</p>
<p>One carrier of the carrier type <italic>C</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> can serve a maximum number of user terminals equal to:<disp-formula id="e6">
<mml:math id="m14">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x230a;</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>&#x230b;</mml:mo>
</mml:math>
<label>(6)</label>
</disp-formula>with <inline-formula id="inf9">
<mml:math id="m15">
<mml:mfenced open="&#x230a;" close="&#x230b;">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula> the flooring function. Because of condition (<xref ref-type="disp-formula" rid="e2">Eq. 2</xref>), we always have <inline-formula id="inf10">
<mml:math id="m16">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula>. Equivalently <inline-formula id="inf11">
<mml:math id="m17">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> can be interpreted as the number of slots of one <italic>C</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> carrier. A graphical representation of a <italic>C</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> carrier is given in <xref ref-type="fig" rid="F3">Figure&#x20;3</xref>, in which we took as example <inline-formula id="inf12">
<mml:math id="m18">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>3</mml:mn>
</mml:math>
</inline-formula> and <italic>N</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> &#x3d; 2, the blue squares representing the occupied slots and the whites ones being unoccupied.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Representation of carrier slots for a <italic>C</italic>
<sub>
<italic>k,l</italic>
</sub> carrier.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g003.tif"/>
</fig>
<p>Each carrier type <italic>C</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> serving <italic>N</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> &#x3e; 0 terminals must comply with the following constraints:<list list-type="simple">
<list-item>
<p>&#x2022; To ensure all user terminals get at least <italic>T</italic>
<sub>CIR</sub>, we impose:</p>
</list-item>
</list>
<disp-formula id="e7">
<mml:math id="m19">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m20">
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2308;</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>&#x2309;</mml:mo>
</mml:math>
<label>(8)</label>
</disp-formula>with <italic>X</italic>
<sub>
<italic>k</italic>,<italic>l</italic>
</sub> the number of carriers used for this carrier type, and <inline-formula id="inf13">
<mml:math id="m21">
<mml:mfenced open="&#x2308;" close="&#x2309;">
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula> the ceiling function.<list list-type="simple">
<list-item>
<p>&#x2022; To ensure that all user terminals can use <italic>M</italic>
<sub>
<italic>k</italic>
</sub>, we need:</p>
</list-item>
</list>
<disp-formula id="e9">
<mml:math id="m22">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>Furthermore, to ensure that all user terminals are served by one and only one carrier, the proposed carrier plan must satisfy:<disp-formula id="e10">
<mml:math id="m23">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2229;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">U</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x2205;</mml:mi>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2200;</mml:mo>
<mml:mfenced open="(" close=")">
<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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x2200;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2260;</mml:mo>
<mml:mfenced open="(" close=")">
<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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(10)</label>
</disp-formula>and<disp-formula id="e11">
<mml:math id="m24">
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mi>N</mml:mi>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>As they stand, those constraints are a direct translation of our informal problem and can hardly be used inside optimization solvers, hence we need to rewrite them with linear equations. Let&#x2019;s assume we allocate each terminal <italic>u</italic> to <inline-formula id="inf14">
<mml:math id="m25">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, and note <inline-formula id="inf15">
<mml:math id="m26">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> the number of carriers resulting from this hypothetical allocation. We are then able to reformulate the constraints (<xref ref-type="disp-formula" rid="e7">Eqs. 7</xref>, <xref ref-type="disp-formula" rid="e9">9</xref>, <xref ref-type="disp-formula" rid="e10">10</xref>, and <xref ref-type="disp-formula" rid="e11">11</xref>) into:<disp-formula id="e12">
<mml:math id="m27">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x2200;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>k</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mo>&#x2264;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(12)</label>
</disp-formula>and<disp-formula id="e13">
<mml:math id="m28">
<mml:munderover accentunder="false" accent="false">
<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>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mo>&#x2265;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>N</mml:mi>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>The optimization objective is to minimize the total bandwidth of the carrier plan. By noting <bold>x</bold> &#x3d; (<italic>X</italic>
<sub>1,1</sub>, &#x2026; , <italic>X</italic>
<sub>
<italic>K</italic>,<italic>L</italic>
</sub>) we can translate this into a constrained combinatorial optimization problem:<disp-formula id="e14">
<mml:math id="m29">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(14)</label>
</disp-formula>subject to constraints (<xref ref-type="disp-formula" rid="e12">Eq. 12</xref>) and (<xref ref-type="disp-formula" rid="e13">Eq.&#x20;13</xref>).</p>
</sec>
<sec id="s3-2">
<title>3.2 Intuitive Approach</title>
<p>One would intuitively think, as we saw with <xref ref-type="disp-formula" rid="e4">Eqs. 4</xref>, <xref ref-type="disp-formula" rid="e5">5</xref> that assigning each terminal <italic>u</italic> to the carrier type <inline-formula id="inf16">
<mml:math id="m30">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with <italic>l</italic>
<sub>opt</sub> such that:<disp-formula id="e15">
<mml:math id="m31">
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>arg</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(15)</label>
</disp-formula>would lead to an optimal carrier plan. Many manufacturers use this solution as it is optimal when <inline-formula id="inf17">
<mml:math id="m32">
<mml:mi mathvariant="script">R</mml:mi>
</mml:math>
</inline-formula> is continuous, but unfortunately it is not the case when <inline-formula id="inf18">
<mml:math id="m33">
<mml:mi mathvariant="script">R</mml:mi>
</mml:math>
</inline-formula> is a discrete&#x20;set.</p>
<p>
<statement>
<p>&#x2003;Proof. For instance, let&#x2019;s assume the carrier type <inline-formula id="inf19">
<mml:math id="m34">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with <inline-formula id="inf20">
<mml:math id="m35">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf21">
<mml:math id="m36">
<mml:msub>
<mml:mrow>
<mml:mi>M</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:math>
</inline-formula>, is the most spectrally efficient ModCod of <inline-formula id="inf22">
<mml:math id="m37">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> user terminals such that:<disp-formula id="e16">
<mml:math id="m38">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</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:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>Let&#x2019;s also assume the carrier type <inline-formula id="inf23">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with <inline-formula id="inf24">
<mml:math id="m40">
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</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:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</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:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, is the most spectrally efficient ModCod of <inline-formula id="inf25">
<mml:math id="m41">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> user terminals such that:<disp-formula id="e17">
<mml:math id="m42">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</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:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>By assigning all user terminals to their most spectrally efficient ModCod, we would have to create <inline-formula id="inf26">
<mml:math id="m43">
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> carriers for <inline-formula id="inf27">
<mml:math id="m44">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf28">
<mml:math id="m45">
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> carriers for <inline-formula id="inf29">
<mml:math id="m46">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with a total bandwidth equal to:<disp-formula id="e18">
<mml:math id="m47">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>Yet because <inline-formula id="inf30">
<mml:math id="m48">
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</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:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, we can reassign <inline-formula id="inf31">
<mml:math id="m49">
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> user terminals from <inline-formula id="inf32">
<mml:math id="m50">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> to <inline-formula id="inf33">
<mml:math id="m51">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, and thus have:<disp-formula id="e19">
<mml:math id="m52">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(19)</label>
</disp-formula>
<disp-formula id="e20">
<mml:math id="m53">
<mml:msub>
<mml:mrow>
<mml:mi>N</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>Therefore, we need only to create <inline-formula id="inf34">
<mml:math id="m54">
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> carriers for <inline-formula id="inf35">
<mml:math id="m55">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf36">
<mml:math id="m56">
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> carriers for <inline-formula id="inf37">
<mml:math id="m57">
<mml:msub>
<mml:mrow>
<mml:mi>C</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with a total bandwidth equal this time to:<disp-formula id="e21">
<mml:math id="m58">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(21)</label>
</disp-formula>and so <italic>B</italic>
<sub>
<italic>1</italic>
</sub> <italic>&#x3e; B</italic>
<sub>
<italic>2</italic>
</sub>, proving that a more bandwidth efficient solution exists.</p>
</statement>
</p>
</sec>
<sec id="s3-3">
<title>3.3 Integer Linear Programming Approach</title>
<p>Solving combinatorial problems with linear constraints can be done by writing it as matrix operations and feeding it to a Linear Programming (LP) solver, which is a well explored topic. However our optimization variables <italic>X</italic>
<sub>
<italic>k,l</italic>
</sub> have to be integers, and thus we need to use a specific branch of the LP problem class called Integer Linear Programming (ILP). This class of problem is NP-hard, however many techniques have been discovered to solve certain cases (<xref ref-type="bibr" rid="B18">J&#xfc;nger et&#x20;al., 1994</xref>).</p>
<p>It is first necessary to reformulate the optimization problem with matrix operations. Let:<disp-formula id="e22">
<mml:math id="m59">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>C</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>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;with&#x2009;</mml:mtext>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>l</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(22)</label>
</disp-formula>
</p>
<p>The optimization function <italic>b</italic>(<bold>x</bold>) we want to minimize can then be written as a vector multiplication:<disp-formula id="e23">
<mml:math id="m60">
<mml:mi>b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:math>
<label>(23)</label>
</disp-formula>
<disp-formula id="e24">
<mml:math id="m61">
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>We then need to express (<xref ref-type="disp-formula" rid="e12">Eq. 12</xref>) and (<xref ref-type="disp-formula" rid="e13">Eq. 13</xref>) with a matrix <bold>A</bold> and a vector <bold>y</bold> such that <bold>A</bold> &#x22c5; <bold>x</bold> &#x2264; <bold>y</bold>. This is possible by using:<disp-formula id="equ1">
<mml:math id="m62">
<mml:mi mathvariant="bold">A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center">
<mml:mo>&#x22f1;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center">
<mml:mtext>0</mml:mtext>
</mml:mtd>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center"/>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>and:<disp-formula id="equ2">
<mml:math id="m63">
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
<disp-formula id="e25">
<mml:math id="m64">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(25)</label>
</disp-formula>
</p>
<p>We can then use an ILP solver to solve the following optimization problem:<disp-formula id="equ3">
<mml:math id="m65">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>subject to:<disp-formula id="e26">
<mml:math id="m66">
<mml:mi mathvariant="bold">A</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
</sec>
<sec id="s3-4">
<title>3.4 Heuristic Approach</title>
<p>While ILP solutions usually give great results, they do not allow to get a good understanding of the core mechanics at play in our problem. To remedy this issue we propose to look into a heuristic solution.</p>
<p>Looking back at <xref ref-type="sec" rid="s3-2">Section 3.2</xref> we can identify two issues that prevented the intuitive approach from reaching the minimum bandwidth: unoccupied slots and residual bandwidth, which are graphically represented in <xref ref-type="fig" rid="F3">Figure&#x20;3</xref>. The residue is the remainder of the modulo operation of <italic>R(l)</italic> &#x22c5; <italic>S</italic>(<italic>M</italic>
<sub>
<italic>k</italic>
</sub>) by <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub>, and because this portion of the carrier cannot deliver <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub> to one terminal, it is wasted every time a new carrier is created. We need to make sure we minimize the number of unused slots and the total residue. The two following heuristics, that can be combined, aim to solve those two issues.</p>
<sec id="s3-4-1">
<title>3.4.1 Minimizing the Residue</title>
<p>Each carrier of <italic>C</italic>
<sub>
<italic>k,l</italic>
</sub> has a residual throughput per user terminal <italic>&#x3c1;</italic>
<sub>
<italic>k,l</italic>
</sub> equal to:<disp-formula id="e27">
<mml:math id="m67">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(27)</label>
</disp-formula>
</p>
<p>A possible optimization is to allocate user terminals in priority to symbol rates that minimizes <italic>&#x3c1;</italic>
<sub>
<italic>k,l</italic>
</sub>. In order to achieve that, we must re-arrange for each ModCod <italic>M</italic>
<sub>
<italic>k</italic>
</sub> the set of symbol rates (<italic>R</italic>
<sub>
<italic>1</italic>
</sub>, <italic>&#x2026;</italic> , <italic>R</italic>
<sub>
<italic>L</italic>
</sub>) into a vector <inline-formula id="inf38">
<mml:math id="m68">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, with <italic>&#x3c3;</italic>
<sub>
<italic>k</italic>
</sub> <italic>(&#x22c5;)</italic> a function re-arranging the indexes such that <inline-formula id="inf39">
<mml:math id="m69">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-4-2">
<title>3.4.2 Carrier Filling</title>
<p>To minimize the number of unused slots, we need to keep only the filled carriers of a given carrier type, i.e.,&#x20;the ones without unused slots, and then move the user terminals of the remaining unfilled carriers to other carrier types. Formally speaking, the goal is to find <italic>N<sub>k,l</sub>
</italic>
<sup>&#x2032;</sup> <italic>such that:</italic>
<disp-formula id="e28">
<mml:math id="m70">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
<label>(28)</label>
</disp-formula>while ensuring that as many user terminals as possible still get the most efficient ModCod they can afford.</p>
<p>Considering we already initialised the problem by assigning each terminal u to the carrier type <inline-formula id="inf40">
<mml:math id="m71">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, (<xref ref-type="disp-formula" rid="e28">Eq. 28</xref>) can be reached for almost all carrier types by following <xref ref-type="other" rid="alg1">Algorithm 1</xref>, which&#x20;moves the extra terminals from the largest carrier types to the smallest ones (in terms of slots per carrier). An illustration of this algorithm is given in <xref ref-type="fig" rid="F4">Figure&#x20;4</xref>, in which the algorithm starts by setting <inline-formula id="inf41">
<mml:math id="m72">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> and iterates on <italic>C</italic>
<sub>
<italic>K,L</italic>
</sub> with <inline-formula id="inf42">
<mml:math id="m73">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>4</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf43">
<mml:math id="m74">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>6</mml:mn>
</mml:math>
</inline-formula>. It computes the total number of terminal <inline-formula id="inf44">
<mml:math id="m75">
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>6</mml:mn>
</mml:math>
</inline-formula>, and then the number of carriers that can be filled <inline-formula id="inf45">
<mml:math id="m76">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>&#x230a;</mml:mo>
<mml:mrow>
<mml:mn>6</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mo>&#x230b;</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula>. Finally it computes the number of terminals that can stay <inline-formula id="inf46">
<mml:math id="m77">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>4</mml:mn>
</mml:math>
</inline-formula> in <italic>C</italic>
<sub>
<italic>K,L</italic>
</sub>, and the rest <inline-formula id="inf47">
<mml:math id="m78">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:math>
</inline-formula> is moved to <italic>C</italic>
<sub>
<italic>K,L&#x2212;1</italic>
</sub>. The algorithm then iterates on <italic>C</italic>
<sub>
<italic>K,L&#x2212;1</italic>
</sub> with <inline-formula id="inf48">
<mml:math id="m79">
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>3</mml:mn>
</mml:math>
</inline-formula>, <inline-formula id="inf49">
<mml:math id="m80">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf50">
<mml:math id="m81">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:math>
</inline-formula>. Those steps are repeated until <italic>C</italic>
<sub>
<italic>1,1</italic>
</sub> is reached. For this carrier type we cannot re-allocate the remaining terminals <inline-formula id="inf51">
<mml:math id="m82">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> to another carrier type with a higher &#x3c1; or a lower spectral efficiency. If some terminals need to be moved, we will instead move them to the carrier type <inline-formula id="inf52">
<mml:math id="m83">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> s.t.<disp-formula id="e29">
<mml:math id="m84">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(29)</label>
</disp-formula>and then compute <inline-formula id="inf53">
<mml:math id="m85">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> such that:<disp-formula id="e30">
<mml:math id="m86">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2308;</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2309;</mml:mo>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Illustration of <xref ref-type="other" rid="alg1">Algorithm 1</xref>, blue squares represent allocated&#x20;slots.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g004.tif"/>
</fig>
<p>In this specific case, the heuristic will behave exactly like the intuitive process described in <xref ref-type="sec" rid="s3-2">Section&#x20;3.2</xref>.</p>
<p>It is possible to combine the minimization of residue with the carrier filling algorithm by replacing all the l indexes with <italic>&#x3c3;</italic>
<sub>
<italic>k</italic>
</sub>
<italic>(l)</italic> in <xref ref-type="other" rid="alg1">Algorithm&#x20;1</xref>.</p>
</sec>
<sec id="s3-4-3">
<title>3.4.3 Constraints Compliance</title>
<p>
<statement content-type="algorithm" id="alg1">
<label>Algorithm 1</label>
<p>Carrier filling</p>
<p>
<inline-graphic xlink:href="frcmn-02-744998-fx1.tif"/>
</p>
</statement>
</p>
<p>We need to make sure the heuristic solution complies with constraints (<xref ref-type="disp-formula" rid="e12">Eq. 12</xref>) and (<xref ref-type="disp-formula" rid="e13">Eq.&#x20;13</xref>).</p>
<p>Let&#x2019;s prove that <xref ref-type="disp-formula" rid="e12">Eq. 12</xref> is satisfied. We first need to prove:<disp-formula id="e31">
<mml:math id="m87">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x2200;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(31)</label>
</disp-formula>Proof. Let&#x2019;s prove (<xref ref-type="disp-formula" rid="e31">Eq. 31</xref>) by recursion:<list list-type="simple">
<list-item>
<p>&#x2022; Base case:</p>
</list-item>
</list>
<disp-formula id="e32">
<mml:math id="m88">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(32)</label>
</disp-formula>
<list list-type="simple">
<list-item>
<p>&#x2022; Recusivity: Let&#x2019;s assume (<xref ref-type="disp-formula" rid="e31">Eq. 31</xref>) is true for <italic>(k, l)</italic>. Let&#x2019;s prove it is true for <italic>(k, l &#x2212;&#x20;1)</italic>.</p>
</list-item>
</list>
<disp-formula id="e33">
<mml:math id="m89">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(33)</label>
</disp-formula>and by using our recursivity hypothesis we have:<disp-formula id="e34">
<mml:math id="m90">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(34)</label>
</disp-formula>
<disp-formula id="e35">
<mml:math id="m91">
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(35)</label>
</disp-formula>so <italic>(k, l &#x2212; 1)</italic> also verifies (<xref ref-type="disp-formula" rid="e31">Eq. 31</xref>). We would prove in the same way that <xref ref-type="disp-formula" rid="e31">Eq. 31</xref> is also true for <italic>(k &#x2212; 1,&#x20;L)</italic>.</p>
<p>Let&#x2019;s now demonstrate that <xref ref-type="disp-formula" rid="e12">Eq. 12</xref> is verified:<disp-formula id="e36">
<mml:math id="m92">
<mml:mo>&#x2200;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
</mml:math>
<label>(36)</label>
</disp-formula>
<disp-formula id="e37">
<mml:math id="m93">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x230a;</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>&#x230b;</mml:mo>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(37)</label>
</disp-formula>
<disp-formula id="e38">
<mml:math id="m94">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(38)</label>
</disp-formula>
<disp-formula id="e39">
<mml:math id="m95">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(39)</label>
</disp-formula>
<disp-formula id="e40">
<mml:math id="m96">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(40)</label>
</disp-formula>
<disp-formula id="e41">
<mml:math id="m97">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(41)</label>
</disp-formula>
<disp-formula id="e42">
<mml:math id="m98">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mo>&#x2264;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(42)</label>
</disp-formula>and so constraint (<xref ref-type="disp-formula" rid="e12">Eq. 12</xref>) is satisfied.</p>
<p>As for (<xref ref-type="disp-formula" rid="e13">Eq. 13</xref>), we need to look at the specific case <italic>(k &#x3d; 1, l &#x3d; 1)</italic>. Because of the branching condition:<disp-formula id="e44">
<mml:math id="m100">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(43)</label>
</disp-formula>
<disp-formula id="e45">
<mml:math id="m101">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<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>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(44)</label>
</disp-formula>
<disp-formula id="e46">
<mml:math id="m102">
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:munderover accentunder="false" accent="false">
<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>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<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>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ini</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>N</mml:mi>
</mml:math>
<label>(45)</label>
</disp-formula>and at the end of the algorithm we re-allocated <inline-formula id="inf54">
<mml:math id="m103">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> to <inline-formula id="inf55">
<mml:math id="m104">
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>such that:<disp-formula id="e47">
<mml:math id="m105">
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2308;</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>tm</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>&#x2309;</mml:mo>
</mml:math>
<label>(46)</label>
</disp-formula>so we have:<disp-formula id="e48">
<mml:math id="m106">
<mml:munderover accentunder="false" accent="false">
<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>K</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msubsup>
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2265;</mml:mo>
<mml:mi>N</mml:mi>
</mml:math>
<label>(47)</label>
</disp-formula>And so Constraint (<xref ref-type="disp-formula" rid="e13">Eq. 13</xref>) Is Satisfied</p>
</sec>
<sec id="s3-4-4">
<title>3.5 Constraining the Number of ModCods in the Network</title>
<p>As we saw in the previous sections, the heuristic and ILP methods rely on the diversity of <inline-formula id="inf56">
<mml:math id="m107">
<mml:mi mathvariant="script">M</mml:mi>
</mml:math>
</inline-formula> and <inline-formula id="inf57">
<mml:math id="m108">
<mml:mi mathvariant="script">R</mml:mi>
</mml:math>
</inline-formula> to allocate residual throughput to carrier types that would not have been considered otherwise, as more diversity means more options during the optimization process, which leads to smaller bandwidths. A natural consequence is that our solutions will favor carrier plans with high numbers of carrier types, and consequently ModCods.</p>
<p>However, due to hardware constraints found in CCM networks, there are often costs induced by supporting a ModCod. Those costs will depend on many network variables, and making an exhaustive list of them would be outside of the scope of this paper, but when considering the network costs there is a trade-off to be made between the number of ModCods <italic>K</italic> and the total bandwidth.</p>
<p>Our idea is, given the final number of desired ModCods, to start with the carrier plan computed by the different algorithms, and then decide which ModCods should be removed in order to minimize the bandwidth increase. This is done iteratively: for each iteration, we must find the index <italic>k</italic>
<sub>
<italic>tbr</italic>
</sub> of the ModCod to be removed, and then re-allocate the <inline-formula id="inf58">
<mml:math id="m109">
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> terminals to the receiving carrier type <inline-formula id="inf59">
<mml:math id="m110">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, with <italic>k<sub>tbr</sub>
</italic> &#x3e;&#x20;k<sub>rec</sub>.</p>
<p>Of course we need to select <italic>k</italic>
<sub>
<italic>tbr</italic>
</sub> and <italic>k</italic>
<sub>
<italic>rec</italic>
</sub> such that they minimize the bandwidth increase, and to do this we need to evaluate the bandwidth cost <inline-formula id="inf60">
<mml:math id="m111">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> of moving terminals from <inline-formula id="inf61">
<mml:math id="m112">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> to <inline-formula id="inf62">
<mml:math id="m113">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>. It can be computed with the following equation:<disp-formula id="e49">
<mml:math id="m114">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>CIR</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(48)</label>
</disp-formula>
</p>
<p>This equation is only completely true if the constraint of discrete bandwidth is dropped, but it is a good enough approximation if the spectral efficiencies of the ModCod pool <inline-formula id="inf63">
<mml:math id="m115">
<mml:mi mathvariant="script">M</mml:mi>
</mml:math>
</inline-formula> are close to equally spaced, which is the case for the pool we will use in our simulations (DVB-RCS2). For one given <italic>k</italic>
<sub>
<italic>tbr</italic>
</sub>, minimizing <inline-formula id="inf64">
<mml:math id="m116">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> is thus equivalent to minimize:<disp-formula id="e50">
<mml:math id="m117">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(49)</label>
</disp-formula>and this minimum is reached for <italic>k</italic>
<sub>
<italic>rec</italic>
</sub> <italic>&#x3d; k</italic>
<sub>
<italic>tbr</italic>
</sub> &#x2212;&#x20;1.</p>
<p>If we compute <inline-formula id="inf65">
<mml:math id="m118">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> for each <italic>M</italic>
<sub>
<italic>k</italic>
</sub>, we can find <italic>k</italic>
<sub>
<italic>tbr</italic>
</sub> by solving:<disp-formula id="e51">
<mml:math id="m119">
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>arg</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(50)</label>
</disp-formula>
</p>
<p>We can then remove <inline-formula id="inf66">
<mml:math id="m120">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>tbr</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> from <inline-formula id="inf67">
<mml:math id="m121">
<mml:mi mathvariant="script">M</mml:mi>
</mml:math>
</inline-formula>, update the ModCod population <inline-formula id="inf68">
<mml:math id="m122">
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, and iterate until we reach the desired number of ModCods. We can finally use the reduced ModCod pool as an input of any of the three methods we described in the previous sections to compute the new carrier&#x20;plan.</p>
</sec>
</sec>
<sec id="s3-5">
<title>3.6 Complexity Analysis</title>
<p>The intuitive method requires to find the most spectrally efficient ModCod <inline-formula id="inf69">
<mml:math id="m123">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> for each user terminal u which is a <inline-formula id="inf70">
<mml:math id="m124">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and a loop to find the best symbol rate <inline-formula id="inf71">
<mml:math id="m125">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> which is a <inline-formula id="inf72">
<mml:math id="m126">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. This process will then be a <inline-formula id="inf73">
<mml:math id="m127">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> at high numbers of user terminals.</p>
<p>On the heuristic side, the minimization of residues requires to sort <italic>K</italic> times <inline-formula id="inf74">
<mml:math id="m128">
<mml:mi mathvariant="script">R</mml:mi>
</mml:math>
</inline-formula>, which is of length <italic>L</italic>, and so is a <inline-formula id="inf75">
<mml:math id="m129">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>log</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The carrier filling algorithm requires to find the most spectrally efficient ModCod <inline-formula id="inf76">
<mml:math id="m130">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> for each user terminals which is a <inline-formula id="inf77">
<mml:math id="m131">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and then executes an <italic>K &#x22c5; L</italic> loop for the terminal re-allocation. Finally, finding <inline-formula id="inf78">
<mml:math id="m132">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>opt</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is a <inline-formula id="inf79">
<mml:math id="m133">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. For a high number of terminals, the heuristic will then also be a&#x20;<inline-formula id="inf80">
<mml:math id="m134">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The complexity of the ILP solver depends on its parameters, but is in any case expected to be higher than the intuitive and the heuristic solutions since ILP problems are NP-hard. This matter is discussed in greater details in <xref ref-type="sec" rid="s5">Section&#x20;5</xref>.</p>
<p>Finally the ModCod reduction method requires to compute <inline-formula id="inf81">
<mml:math id="m135">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> for each <italic>M</italic>
<sub>
<italic>k</italic>
</sub> at the first iteration. Then if more than one ModCod needs to be removed, we only need to update <inline-formula id="inf82">
<mml:math id="m136">
<mml:msubsup>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>rec</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext>cost</mml:mtext>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> at each iteration. The ModCod reduction method is then a&#x20;<inline-formula id="inf83">
<mml:math id="m137">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Performance Evaluation</title>
<p>In this section, we will present the satellite link simulation we created to evaluate and compare the minimum bandwidth calculated using the intuitive approach <italic>B</italic>
<sub>
<italic>IT</italic>
</sub> described in <xref ref-type="sec" rid="s3-2">Section 3.2</xref>, the ILP approach <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> described in <xref ref-type="sec" rid="s3-3">Section 3.3</xref>, and the heuristic approach <italic>B</italic>
<sub>
<italic>HR</italic>
</sub> described in <xref ref-type="sec" rid="s3-4">Section 3.4</xref>. We will then look at how the relative performances of those three methods are impacted by the number of terminals <italic>N</italic>, by the CIR <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub>, and by the number of ModCods <italic>K</italic> in the network.</p>
<sec id="s4-1">
<title>4.1 Simulation Parameters</title>
<p>User terminal coordinates are generated based on known patterns for terrestrial, maritime and aerial traffic statistics over Europe (<xref ref-type="fig" rid="F5">Figure&#x20;5</xref>), using a traffic simulator developed inside our research center (<xref ref-type="bibr" rid="B13">Interdisciplinary Centre for Security and Reliability and Trust (SnT), 2019</xref>).</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Snapshot of the generated terminals (red &#x3d; boat, blue &#x3d; plane, other &#x3d; terrestrial).</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g005.tif"/>
</fig>
<p>All user terminals will be considered as a fixed terrestrial station with a 0.85&#xa0;m dish or any antenna with a similar gain and to transmit with an EIRP capability of 51.6&#xa0;dBW. The uplink frequency is 29.75&#xa0;GHz, in the Ka&#x20;band.</p>
<p>The link budget for each user terminal u is computed with the following formula:<disp-formula id="e52">
<mml:math id="m138">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>ul</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>dl</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(51)</label>
</disp-formula>
</p>
<p>For the purpose of testing our optimization principles, the link&#x20;was defined as independent of interference (internal or external to the system), such that uplink carrier-to-thermal noise ratio dominates the link. All link parameters are given in <xref ref-type="table" rid="T1">Table&#x20;1</xref>. The uplink carrier-to-noise ratio was computed for each user terminal&#x2019;s location (<italic>lat</italic>
<sub>
<italic>u</italic>
</sub>, <italic>lon</italic>
<sub>
<italic>u</italic>
</sub>) with the following formula:<disp-formula id="e53">
<mml:math id="m139">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>ul</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi>E</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>R</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>fs</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>atm</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>sat</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(52)</label>
</disp-formula>with <italic>k</italic>
<sub>
<italic>B</italic>
</sub> the Boltzmann constant, <italic>L</italic>
<sub>
<italic>fs</italic>
</sub> the free space losses, and <italic>L</italic>
<sub>
<italic>atm</italic>
</sub> the atmospheric attenuation computed using the ITU-R framework (<xref ref-type="bibr" rid="B15">ITU, 2017</xref>), which includes the effects of scintillation, clouds, gases and rain for a given location and link availability. In this scenario we selected a 99.5% uplink availability target.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Simulation link parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Name</th>
<th align="center">Value</th>
<th align="center">Unit</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Frequency</td>
<td align="char" char=".">29.75</td>
<td align="left">GHz</td>
</tr>
<tr>
<td align="left">Ground antenna diameter</td>
<td align="char" char=".">0.85</td>
<td align="left">m</td>
</tr>
<tr>
<td align="left">Ground antenna gain</td>
<td align="char" char=".">45.6</td>
<td align="left">dBi</td>
</tr>
<tr>
<td align="left">Maximum emission power</td>
<td align="char" char=".">4</td>
<td align="left">W</td>
</tr>
<tr>
<td align="left">EIRP density at maximum gain <italic>EIRP</italic>
<sub>0</sub>
</td>
<td align="char" char=".">&#x2212;13.8</td>
<td align="left">dBW/Hz</td>
</tr>
<tr>
<td align="left">Satellite Longitude</td>
<td align="char" char=".">28.5</td>
<td align="left">&#xb0;East</td>
</tr>
<tr>
<td align="left">Carrier-to-intermodulation-noise ratio <inline-formula id="inf84">
<mml:math id="m140">
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>
</td>
<td align="char" char=".">20</td>
<td align="left">dB</td>
</tr>
<tr>
<td align="left">Carrier-to-noise ratio downlink <inline-formula id="inf85">
<mml:math id="m141">
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mtext>dl</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
</td>
<td align="char" char=".">30</td>
<td align="left">dB</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Once the <inline-formula id="inf86">
<mml:math id="m142">
<mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> has been computed, we can find <inline-formula id="inf87">
<mml:math id="m143">
<mml:msub>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>. The pool of ModCods [<italic>M</italic>
<sub>
<italic>1</italic>
</sub>, &#x2026; , <italic>M</italic>
<sub>
<italic>K</italic>
</sub>] follows the DVB-RCS2 standard (<xref ref-type="bibr" rid="B7">ETSI, 2014</xref>) with target <inline-formula id="inf88">
<mml:math id="m144">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> thresholds as noted in (<xref ref-type="bibr" rid="B19">Kyrgiazos et&#x20;al., 2014</xref>). Depending on T<sub>CIR</sub>, some ModCods can be removed from the pool if they do not meet condition (2). The discrete set of symbol rates is the same as in (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>). User terminals that either cannot afford the minimum ModCod or fall out of the service area are taken out of the considered user set. The final mapping of user terminals to ModCods is illustrated in <xref ref-type="fig" rid="F6">Figure&#x20;6</xref> for 150,000 terminals.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Histogram of user terminal repartition among ModCods.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g006.tif"/>
</fig>
</sec>
<sec id="s4-2">
<title>4.2 Impact of the Number of Terminals and CIR</title>
<p>On average the gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> is marginal (&#x2248;2.9%) compared to <italic>B</italic>
<sub>
<italic>IT</italic>
</sub>, as showed in <xref ref-type="fig" rid="F7">Figure&#x20;7A</xref>. Only 3.1% of samples in this figure show a gain greater or equal to 10%. The gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> w. r.t <italic>B</italic>
<sub>
<italic>IT</italic>
</sub> decreases with both <italic>N</italic> and&#x20;<italic>T<sub>CIR</sub>
</italic>.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Relative gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> compared to <italic>B</italic>
<sub>
<italic>IT</italic>
</sub> in function of number of user terminals and <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub>.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g007.tif"/>
</fig>
<p>However substantial gains (&#x2265;10%) are observed for small networks with low CIR. In <xref ref-type="fig" rid="F7">Figure&#x20;7B</xref>, we restricted N to (100, 1,000) and <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub> to (1, 20). The average gain increases to 12.9%, with a maximum of 71.4%. Around half (44%) of the samples in this region have a gain greater or equal to&#x20;10%.</p>
<p>The ILP and the heuristic performances are virtually identical and consequently the previous comparison between <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> and <italic>B</italic>
<sub>
<italic>IT</italic>
</sub> is also valid between <italic>B</italic>
<sub>
<italic>HR</italic>
</sub> and <italic>B</italic>
<sub>
<italic>IT</italic>
</sub>. The average gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> w.r.t. <italic>B</italic>
<sub>
<italic>HR</italic>
</sub> is 0.2%, with a maximum of 25% in very specific cases as showed in <xref ref-type="fig" rid="F8">Figure&#x20;8</xref>. A great proportion (96%) of samples in this figure have a gain inferior or equal to&#x20;1%.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Relative gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> compared to <italic>B</italic>
<sub>
<italic>HR</italic>
</sub> in function of number of user terminals and <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub>.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g008.tif"/>
</fig>
<p>Finally, the gains of the ILP and heuristic methods are highly correlated with the proportion of unoccupied terminals in the intuitive carrier plan: variations in <xref ref-type="fig" rid="F9">Figures 9A,B</xref> are almost identical to the ones in <xref ref-type="fig" rid="F7">Figures 7A,B</xref>. We interpreted this result as a proof that the two issues we presented in <xref ref-type="sec" rid="s3">Section 3</xref> play a key role in reaching the optimal bandwidth.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Proportion of unoccupied slots in the intuitive carrier plan in function of number of user terminals and <italic>T</italic>
<sub>
<italic>CIR</italic>
</sub>.</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g009.tif"/>
</fig>
</sec>
<sec id="s4-3">
<title>4.3 Impact of the Number of ModCods</title>
<p>The more ModCods are added to the network, the less the total bandwidth diminishes. As we can see in <xref ref-type="fig" rid="F10">Figure&#x20;10</xref>, the blue curve representing the total bandwidth follows a <italic>1/K</italic> trend for <italic>B</italic>
<sub>
<italic>HR</italic>
</sub> and <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> and shows negligible improvements once passed the &#x201c;elbow&#x201d; of the curve. Depending on the cost of adding one ModCod, a network designer would be able to determine the optimal operating point. As we can see on the red curve, the gain of <italic>B</italic>
<sub>
<italic>ILP</italic>
</sub> w.r.t. <italic>B</italic>
<sub>
<italic>IT</italic>
</sub> increases with&#x20;<italic>K</italic>.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Impact of the number of ModCods on the bandwidth (<italic>T</italic>
<sub>
<italic>CIR</italic>
</sub> &#x3d;2&#xa0;kbps, N &#x3d;1,000).</p>
</caption>
<graphic xlink:href="frcmn-02-744998-g010.tif"/>
</fig>
</sec>
</sec>
<sec id="s5">
<title>5 Discussion</title>
<p>Our results showed that having gain similar to the one found in (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>), i.e.,&#x20;82%, was extremely unlikely in a general case. This difference in results can be explained by the difference in the benchmark methods and by the difference in the ILP problems constraints. In the small networks region, our average gain of 12.9% is in line with the 10&#x2013;17% bandwidth gain found in (<xref ref-type="bibr" rid="B4">Booton, 2008</xref>), comforting the validity of our findings. Since many CCM networks are usually older than ACM ones, we believe our methods could be useful to CCM networks return links. <xref ref-type="sec" rid="s4-3">Section 4.3</xref> showed that gains will grow up with <italic>K</italic>, however networks with large ModCod pools are more suited for ACM than CCM, and so we do not believe that a CCM scenario with significantly more ModCods would be realistic. We also believe that bandwidths reductions could become substantial for bigger networks in a ACM scenario, which we will investigate in future&#x20;works.</p>
<p>It can also be argued that the performances of the ILP solver depend on its parameters. In our case we used OPTI Toolbox for Matlab (<xref ref-type="bibr" rid="B14">Inverse Problem, 2014</xref>) which allowed us to use three solvers: the one provided in the Matlab optimization toolbox (<xref ref-type="bibr" rid="B22">MathWorks, 2021</xref>), the Solve Constraint Integer Programs (SCIP) solver (<xref ref-type="bibr" rid="B21">Maher et&#x20;al., 2017</xref>) and the COIN-OR Branch (CBC) solver (<xref ref-type="bibr" rid="B8">Forrest et&#x20;al., 2018</xref>). In certain cases the solvers not able to reach the optimal solution in a reasonable time, and so we added two stopping conditions such that the solver stops if the evaluation function&#x2019;s relative difference with the last iteration is equal or less than 10<sup>&#x2013;6</sup> or if the execution time exceeds 5&#xa0;s. We also specified that the initial lower bound of all <italic>X</italic>
<sub>
<italic>k,l</italic>
</sub> would be 0 and the initial maximum bound would be <italic>N</italic>. The reason for those parameter choices was empirical: we wanted our solver to explore enough nodes to give better results than the heuristic while keeping a reasonable execution time to produce <xref ref-type="fig" rid="F7">Figures 7</xref>, <xref ref-type="fig" rid="F8">8</xref> (resolution of 100 by 100). With those parameters set, the relative gain difference between the three solvers was within 1.3%, thus we decided to only present the results from the Matlab toolbox solver in <xref ref-type="sec" rid="s4">Section 4</xref>. Higher gains were reached using more processing heavy parameters, but no major bandwidth gain were observed. On the other hand using less processing heavy parameters led to solvers being unable to find a solution in some&#x20;cases.</p>
<p>While we presented the complexity of our different methods for academic purposes, we do not think complexity would translate into implementation costs. The methods we presented are made for the creation and the revision of a network, not for real time use, and so the execution time seems irrelevant. The only costs that we can foresee are integration costs inside the current industries processes. We feel confident that the integration costs would be quite low as we took care to use the same inputs and outputs as found in existing processes.</p>
</sec>
<sec id="s6">
<title>6 Conclusion</title>
<p>In this paper we presented three methods aimed at building a carrier plan with the smallest bandwidth possible for the return link of a CCM satellite network constrained by discrete symbol rates. We first presented the carrier allocation problem and translated it into a combinatorial optimization problem. We then introduced three different methods to solve the problem: an intuitive benchmark method representative of what is currently being done in the industry, an ILP problem inspired from (<xref ref-type="bibr" rid="B27">Pranjic et&#x20;al., 2016</xref>), and a heuristic to help us understand the different mechanisms at play. We finally introduced an additional heuristic method to reduce the number of ModCods in the network while minimizing the bandwidth increase.</p>
<p>We then compared the bandwidth produced by those three methods in a realistic scenario. In the vast majority of cases (96.9%) the gain the ILP method w.r.t. the intuitive one was inferior or equal to 10%. We only saw a significant improvement (12.9% average gain, up to 71.4%) for small networks (less than 1,000 terminals) with a CIR inferior or equal to 20&#xa0;kbps. The ILP and the heuristic methods showed virtually identical performances. Studying the effects of reducing the number of ModCods present in the network, we showed how a network designer could use the resulting curves to find the optimal trade off between bandwidth and ModCod number. We also demonstrated that increasing the dimensionality of the problem will increase the gain of the ILP and heuristic methods w.r.t. our benchmark.</p>
<p>Despite showing marginal improvements overall, our results proved that significant gains can be had for networks with small return links, which are likely using CCM technologies, at low implementation costs. For bigger networks we believe that ACM scenarios would make more sense and could lead to bigger gains, and thus ACM networks will be our future line of work. The good results and flexibility of the ILP solution leads us to think it holds good potential for solving those more complex scenarios.</p>
</sec>
</body>
<back>
<sec id="s7">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s8">
<title>Author Contributions</title>
<p>NM and SC contributed to the optimization aspect, while LE contributed to the review of the industry methods as well as the simulation scenario. CL was involved in all the steps of the work as it is part of his PhD project.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>This work is part of the FNR IF project n&#xb0;14610745&#x20;&#x201c;RELICA&#x201d; funded by the luxemburgish Fond National de la Recherche and in partnership with SES&#x20;S.A.</p>
</sec>
<sec sec-type="COI-statement" id="s10">
<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="s11">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Al-Mosawi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Khusainov</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Gremont</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2012</year>). <source>A Real Time Algorithm for Bandwidth and Time-Slot Assignment for Rain Faded Dvb-Rcs Systems</source>. </citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Aroumont</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Radzik</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bousquet</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Castanet</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2008</year>). <source>Dvb-rcs Return Link Radio Resource Management for Broadband Satellite Systems Using Fade Mitigation Techniques at Ka Band</source>. <publisher-loc>Toulouse</publisher-loc>: <publisher-name>ISAE</publisher-name>. <fpage>221</fpage>. <pub-id pub-id-type="doi">10.1109/IWSSC.2008.4656792</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bischl</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Brandt</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>de Cola</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Gaudenzi</surname>
<given-names>R. D.</given-names>
</name>
<name>
<surname>Eberlein</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Girault</surname>
<given-names>N.</given-names>
</name>
<etal/>
</person-group> (<year>2010</year>). <article-title>Adaptive Coding and Modulation for Satellite Broadband Networks: From Theory to Practice</article-title>. <source>Int. J.&#x20;Satellite Commun. Networking</source> <volume>28</volume>, <fpage>59</fpage>&#x2013;<lpage>111</lpage>. <pub-id pub-id-type="doi">10.1002/sat.932</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Booton</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2008</year>). &#x201c;<article-title>Improving Satellite Bandwidth Utilization by Applying Combinatorial Optimization to the Integrated Waveform (Dama Uhf Satcom)</article-title>,&#x201d; in <conf-name>MILCOM 2008 - 2008 IEEE Military Communications Conference</conf-name>. <pub-id pub-id-type="doi">10.1109/MILCOM.2008.4753481</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Cioni</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>De Gaudenzi</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Rinaldo</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2004</year>). <source>Adaptive Coding and Modulation for the Reverse Link of Broadband Satellite Networks</source>. <volume>2</volume>, <fpage>1101</fpage>&#x2013;<lpage>1105</lpage>. <pub-id pub-id-type="doi">10.1109/GLOCOM.2004.1378128</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cornejo</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Landeros-Ayala</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mart&#xed;nez</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Mat&#xed;as</surname>
<given-names>J.&#x20;M.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Analysis to Quantify and Optimize Spot Beams for a High Throughput Satellite in Ka and Q/v Bands</article-title>. <source>IEEE Latin America Trans.</source> <volume>17</volume>, <fpage>219</fpage>&#x2013;<lpage>227</lpage>. <pub-id pub-id-type="doi">10.1109/TLA.2019.8863167</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<collab>ETSI</collab> (<year>2014</year>). <article-title>Second Generation DVB Interactive Satellite System Part 2: Lower Layers for Satellite Standard</article-title>. <source>Tech. Rep. ETSI Standard EN</source> <volume>301</volume>, <fpage>545</fpage>&#x2013;<lpage>552</lpage>. </citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Forrest</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ralphs</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Vigerske</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>LouHafer, </surname>
</name>
<name>
<surname>Kristjansson</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>jpfasano</surname>
</name>
</person-group> (<year>2018</year>). <source>coin-or/cbc</source>. <pub-id pub-id-type="doi">10.5281/zenodo.1317566</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="web">
<collab>Gilat</collab>. (<year>2012</year>). <article-title>How-to Tutorials</article-title>.<comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Http://learn.gilat.com/course/index.php?categoryid=14">Http://learn.gilat.com/course/index.php?categoryid&#x3d;14</ext-link> (Accessed July 13, 2021)</comment>. </citation>
</ref>
<ref id="B10">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Guerster</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Garau Luis</surname>
<given-names>J.&#x20;J.</given-names>
</name>
<name>
<surname>Crawley</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Cameron</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Problem Representation of Dynamic Resource Allocation for Flexible High Throughput Satellites</source>. <pub-id pub-id-type="doi">10.1109/AERO.2019.8741398</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="web">
<collab>iDirect</collab> (<year>2021a</year>). <article-title>Open Training</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://www.idirect.net/products/training/">Https://www.idirect.net/products/training/</ext-link> (Accessed July 13, 2021)</comment>. </citation>
</ref>
<ref id="B12">
<citation citation-type="web">
<collab>iDirect</collab>. (<year>2021b</year>). <article-title>Satellite Network Calculator</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://www.idirect.net/products/satellite-network-calculator/">Https://www.idirect.net/products/satellite-network-calculator/</ext-link> (Accessed July 13, 2021)</comment>. </citation>
</ref>
<ref id="B13">
<citation citation-type="web">
<collab>Interdisciplinary Centre for Security and Reliability and Trust (SnT)</collab> (<year>2019</year>). <article-title>Satellite Traffic Emulator</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://wwwfr.uni.lu/snt/research/sigcom/sw_simulators/satellite_traffic_emulator">Https://wwwfr.uni.lu/snt/research/sigcom/sw_simulators/satellite_traffic_emulator</ext-link> (Accessed July 02, 2021)</comment>. </citation>
</ref>
<ref id="B14">
<citation citation-type="web">
<collab>Inverse Problem</collab> (<year>2014</year>). <article-title>Opti Toolbox: A Free Matlab Toolbox for Optimization</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://www.inverseproblem.co.nz/OPTI/">Https://www.inverseproblem.co.nz/OPTI/</ext-link>
</comment>(<comment>Accessed September 01, 2021)</comment>. </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<collab>ITU</collab> (<year>2017</year>). <article-title>Propagation Data and Prediction Methods Required for the Design of Earth-Space Telecommunication Systems</article-title>. <source>Tech. Rep. Itu-r P.</source>, <fpage>618</fpage>&#x2013;<lpage>713</lpage>. </citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jeannin</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Castanet</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Radzik</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bousquet</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Evans</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Thompson</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Smart Gateways for Terabit/s Satellite</article-title>. <source>Int. J.&#x20;Satellite Commun. Networking</source> <volume>32</volume>. <pub-id pub-id-type="doi">10.1002/sat.1065</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jeannin</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>F&#xe9;ral</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Sauvageot</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Castanet</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Lacoste</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>A Large-Scale Space-Time Stochastic Simulation Tool of Rain Attenuation for the Design and Optimization of Adaptive Satellite Communication Systems Operating between 10 and 50 Ghz</article-title>. <source>Int. J.&#x20;Antennas Propagation</source> <volume>2012</volume>. <pub-id pub-id-type="doi">10.1155/2012/749829</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>J&#xfc;nger</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Reinelt</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Thienel</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>1994</year>). <source>Practical Problem Solving with Cutting Plane Algorithms in Combinatorial Optimization</source>. </citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kyrgiazos</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Evans</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Thompson</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Mathiopoulos</surname>
<given-names>P. T.</given-names>
</name>
<name>
<surname>Papaharalabos</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A Terabit/second Satellite System for European Broadband Access &#x2013; a Feasibility Study</article-title>. <source>Int. J.&#x20;Satellite Commun. Networking</source> <volume>32</volume>, <fpage>72</fpage>. <pub-id pub-id-type="doi">10.1002/sat.1067</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Luini</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Emiliani</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Capsoni</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>Planning of Advanced Satcom Systems Using Acm Techniques: The Impact of Rain Fade</article-title>,&#x201d; in <conf-name>Proceedings of the 5th European Conference on Antennas and Propagation</conf-name> <publisher-loc>Rome</publisher-loc>: <publisher-name>EUCAP</publisher-name>, <fpage>3965</fpage>. </citation>
</ref>
<ref id="B21">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Maher</surname>
<given-names>S. J.</given-names>
</name>
<name>
<surname>Fischer</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Gally</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Gamrath</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Gleixner</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Gottwald</surname>
<given-names>R. L.</given-names>
</name>
<etal/>
</person-group> (<year>2017</year>). <source>The SCIP Optimization Suite 4.0</source>, <volume>17-12</volume>. <publisher-loc>Berlin</publisher-loc>: <publisher-name>Zuse Institute</publisher-name>. </citation>
</ref>
<ref id="B22">
<citation citation-type="web">
<collab>MathWorks</collab>. (<year>2021</year>). <article-title>Optimization Toolbox</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://nl.mathworks.com/products/optimization.html">Https://nl.mathworks.com/products/optimization.html</ext-link> (Accessed September 01, 2021)</comment>. </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Morel</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Arapoglou</surname>
<given-names>P.-D.</given-names>
</name>
<name>
<surname>Angelone</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ginesi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Link Adaptation Strategies for Next Generation Satellite Video Broadcasting: A System Approach</article-title>. <source>IEEE Trans. Broadcasting</source> <volume>61</volume>, <fpage>603</fpage>&#x2013;<lpage>614</lpage>. <pub-id pub-id-type="doi">10.1109/TBC.2015.2470355</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="web">
<collab>NIST</collab> (<year>2019</year>). <article-title>The Spectrum Crunch</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://www.nist.gov/topics/advanced-communications/spectrum-crunch">Https://www.nist.gov/topics/advanced-communications/spectrum-crunch</ext-link> (Accessed July 02, 2021)</comment>. </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Omelyanenko</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Basics of Optimization Strategy for Integrating Space Industry Technology Package into Global Value Chains</article-title>. <source>Econ. Business</source> <volume>30</volume>. <pub-id pub-id-type="doi">10.1515/eb-2017-0010</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ort&#xed;z-G&#xf3;mez</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Mart&#xed;nez</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Salas-Natera</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cornejo</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Landeros-Ayala</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Forward Link Optimization for the Design of Vhts Satellite Networks</article-title>. <source>Electronics</source> <volume>9</volume>. <pub-id pub-id-type="doi">10.3390/electronics9030473</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Pranjic</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Mazzali</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Emiliani</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Bhavani Shankar</surname>
<given-names>M. R.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Return Link Optimized Resource Allocation for Satellite Communications in the Ku/ka-Band</article-title>,&#x201d; in <conf-name>Proceedings on the 22nd Ka and Broadband Communications Conference and the 34th AIAA International Communications Satellite Systems Conference (ICSSC)</conf-name>. </citation>
</ref>
<ref id="B28">
<citation citation-type="web">
<collab>PWC</collab> (<year>2020</year>). <article-title>Main Trends &#x26; Challenges in the Space Sector</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://www.pwc.fr/fr/assets/files/pdf/2020/12/en-france-pwc-main-trends-and-challenges-in-the-space-sector.pdf">Https://www.pwc.fr/fr/assets/files/pdf/2020/12/en-france-pwc-main-trends-and-challenges-in-the-space-sector.pdf</ext-link> (Accessed July 02, 2021)</comment>. </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Serrano-Velarde</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Lance</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Fenech</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Rodriguez-guisantes</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Novel Dimensioning Method for High-Throughput Satellites: Forward Link</article-title>. <source>IEEE Trans. Aerospace Electron. Syst.</source> <volume>50</volume>, <fpage>2146</fpage>&#x2013;<lpage>2163</lpage>. <pub-id pub-id-type="doi">10.1109/TAES.2014.120429</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="web">
<collab>SIA</collab> (<year>2020</year>). <article-title>State of the Satellite Industry Report</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Https://sia.org/news-resources/state-of-the-satellite-industry-report/">Https://sia.org/news-resources/state-of-the-satellite-industry-report/</ext-link>
</comment>(<comment>Accessed July 02, 2021)</comment>. </citation>
</ref>
<ref id="B31">
<citation citation-type="web">
<collab>SkyWan</collab>. (<year>2010</year>). <article-title>SkyWAN Network Design and Engineering Guide 7&#x20;11 and 1&#x20;11 RevB</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://Http://www.lcdc.fr/pdf/SkyWAN_Network_Design_and_Engineering_Guide_7_11_and_1_11_RevB.pdf">Http://www.lcdc.fr/pdf/SkyWAN_Network_Design_and_Engineering_Guide_7_11_and_1_11_RevB.pdf</ext-link> (Accessed July 02, 2021)</comment>. </citation>
</ref>
<ref id="B32">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Tra</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2008</year>). <source>Contr&#xf4;le d&#x2019;admission des connexions pour les syst&#xe8;mes de t&#xe9;l&#xe9;communications par satellite avec des liaisons physiques adaptatives</source>. <comment>Ph.D. thesis</comment>. </citation>
</ref>
</ref-list>
</back>
</article>