<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR572</article-id>
<article-id pub-id-type="doi">10.15388/24-INFOR572</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>On the Improvements of Metaheuristic Optimization-Based Strategies for Time Series Structural Break Detection</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Burczaniuk</surname><given-names>Mateusz</given-names></name><email xlink:href="Mat.Burczaniuk@gmail.com">Mat.Burczaniuk@gmail.com</email><xref ref-type="aff" rid="j_infor572_aff_001"/><bio>
<p><bold>M. Burczaniuk</bold> received the BSc degree in computer science and the MSc degree in computer science and information systems from the Warsaw University of Technology, Warsaw, Poland, in 2020 and 2021, respectively. His research interests include machine learning, evolutionary computation and swarm intelligence.</p></bio>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-5361-5787</contrib-id>
<name><surname>Jastrzębska</surname><given-names>Agnieszka</given-names></name><email xlink:href="A.Jastrzebska@mini.pw.edu.pl">A.Jastrzebska@mini.pw.edu.pl</email><xref ref-type="aff" rid="j_infor572_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>A. Jastrzębska</bold> received the BSc degree in information technology from the University of Derby, Derby, UK, in 2009, the MScEng degree in computer engineering from the Rzeszow University of Technology, Rzeszow, Poland, in 2010, the MA degree in economics from the University of Rzeszow, Rzeszow, in 2011, and the PhD and DSc degrees from the Warsaw University of Technology, Warsaw, Poland, in 2016 and 2021, respectively. She is associate professor with the Faculty of Mathematics and Information Science, Warsaw University of Technology. Her research interests include machine learning and fuzzy modeling. She serves as an associate editor of <italic>Applied Soft Computing</italic> journal.</p></bio>
</contrib>
<aff id="j_infor572_aff_001">Faculty of Mathematics and Information Science, <institution>Warsaw University of Technology</institution>, ul. Koszykowa 75, Warsaw, 00-662, <country>Poland</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2024</year></pub-date><pub-date pub-type="epub"><day>1</day><month>10</month><year>2024</year></pub-date><volume>35</volume><issue>4</issue><fpage>687</fpage><lpage>719</lpage><history><date date-type="received"><month>10</month><year>2023</year></date><date date-type="accepted"><month>9</month><year>2024</year></date></history>
<permissions><copyright-statement>© 2024 Vilnius University</copyright-statement><copyright-year>2024</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>Structural break detection is an important time series analysis task. It can be treated as a multi-objective optimization problem, in which we ought to find a time series segmentation such that time series theoretical models constructed on each segment are well-fitted and the segments are long enough to bear meaningful information. Metaheuristic optimization can help us solve this problem. This paper introduces a suite of new cost functions for the structural break detection task. We demonstrate that the new cost functions allow for achieving quantitatively better precision than the cost functions employed in the literature of this domain. We show particular advantages of each new cost function. Furthermore, the paper promotes the use of Particle Swarm Optimization (PSO) in the domain of structural break detection, which so far has relied on the Genetic Algorithm (GA). Our experiments show that PSO outperforms GA for many analysed time series examples. Last but not least, we introduce a non-trivial generalization of the top-performing state-of-the-art approach to the structural break detection problem based on the Minimum Description Length (MDL) rule with autoregressive (AR) model to MDL ARIMA (autoregressive integrated moving average) model.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>time series</kwd>
<kwd>structural break</kwd>
<kwd>ARIMA</kwd>
<kwd>Genetic Algorithm</kwd>
<kwd>Particle Swarm Optimization</kwd>
<kwd>Ant Colony Optimization</kwd>
<kwd>Minimum Description Length</kwd>
</kwd-group>
<funding-group><funding-statement>This research was supported by the Warsaw University of Technology within the Excellence Initiative: Research University (IDUB) programme.</funding-statement></funding-group>
</article-meta>
</front>
<body>
<sec id="j_infor572_s_001">
<label>1</label>
<title>Introduction</title>
<p>Structural break detection is a time series analysis problem aiming to detect change points in a sequence of observations forming the time series. It is of particular value for areas such as economics or incident detection, in which we are interested in analysing time series in segments, and we need an algorithm to partition the data.</p>
<p>The structural break detection problem can be naturally formulated as an optimization task, where we wish to minimize a specific cost function defined for the produced time series segments. The rough idea is that each produced segment should represent a sequence of observations without a change point. This is typically measured using residuals of a theoretical model built on a segment and real time series values, which should be as small as possible. Unfortunately, simplifying the problem into just such an assumption leads to segments composed of single observations. Thus, the problem of structural break detection is typically formulated as a balance between two conflicting criteria: we wish to split the time series into segments without change points and, at the same time, maximize the length of the segments.</p>
<p>We may divide the existing structural break detection approaches into two groups. One uses predominantly statistical procedures. A prominent representative of this group is Bai and Perron (<xref ref-type="bibr" rid="j_infor572_ref_003">1998</xref>, <xref ref-type="bibr" rid="j_infor572_ref_004">2003</xref>), which is widely utilized despite its simplicity. It uses linear regression as the base model for produced segments and a supplemental statistical test to determine the number of structural breaks. The second group fuses metaheuristic optimization with statistical procedures. Statistical procedures are responsible for evaluating the goodness of fit of theoretical models on time series segments. Metaheuristic optimization carries the entire process forward. The approach was presented by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>, <xref ref-type="bibr" rid="j_infor572_ref_017">2006</xref>, <xref ref-type="bibr" rid="j_infor572_ref_018">2008</xref>), Davis and Yau (<xref ref-type="bibr" rid="j_infor572_ref_015">2013</xref>). Later studies, for example, Woody <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_054">2021</xref>), Shi <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_049">2022a</xref>) elaborated on the application of Davis’s method, but essentially, on the methodological level, left it untouched.</p>
<p>In this paper, we present novel contributions to the domain of structural break detection using metaheuristic optimization. In particular:</p>
<list>
<list-item id="j_infor572_li_001">
<label>1.</label>
<p>We present a suite of new cost functions to be used for structural break detection.</p>
</list-item>
<list-item id="j_infor572_li_002">
<label>2.</label>
<p>We present a new methodology for cost function construction that assumes that the cost function value should contain a proportional weight for the variance of residual errors and take into account the relation between segment order and its length.</p>
</list-item>
<list-item id="j_infor572_li_003">
<label>3.</label>
<p>We present a generalization of Davis’s approach to the MDL with the ARIMA model. This generalization at the first sight may seem trivial compared to the initial Davis’s model based on AR. However, when broken down into parts, it required introducing model-specific optimizations to manage the computational complexity. The generalized model allowed for increasing accuracy of break detection in comparison to the AR-based approach.</p>
</list-item>
<list-item id="j_infor572_li_004">
<label>4.</label>
<p>To the best of our knowledge, this is also the first paper demonstrating the application of Ant Colony Optimization and Particle Swarm Optimization algorithms in conjunction with the Minimum Description Length rule to detect structural breaks in time series. In particular, we show that Particle Swarm Optimization typically slightly outperforms Genetic Algorithm. In addition, we show that PSO is easier to tune for the structural break detection problem than GA since the tunable hyperparameters are real numbers. We have also enriched PSO with an additional hyperparameter internally limiting the maximal number of detected intervals.</p>
</list-item>
</list>
<p>The essential contribution addressed in this paper is the new cost functions. We may summarize them as follows:</p>
<list>
<list-item id="j_infor572_li_005">
<label>•</label>
<p>A new function, termed Elastic Minimum Description Length (EMDL), which is an extension of the classical Minimum Description Length (MDL) cost function. It allows the user to incorporate expert knowledge into the cost function. No other cost function provides such a possibility.</p>
</list-item>
<list-item id="j_infor572_li_006">
<label>•</label>
<p>Two new cost functions based on the penalty cost function. Our extensions allow to produce better results for real-world time series by including a penalty for the structural break count, a penalty for the number of fitted model parameters, and emphasize the importance of model residuals.</p>
</list-item>
<list-item id="j_infor572_li_007">
<label>•</label>
<p>An extension applicable to all the cost functions that adds a weight controlling the minimal allowed segment length. The literature of the domain reports that the techniques available so far employ strict rules concerning the minimal segment length. We propose to relax this approach. In the paper, we demonstrate that, in consequence, we gain flexibility because we eliminate the non-intuitive additional parameter that has to be set by a user.</p>
</list-item>
<list-item id="j_infor572_li_008">
<label>•</label>
<p>An extension applicable to all the cost functions that punishes deviations from a linear trend which helps to detect shifts in data with the trend. Experiments have proven that this method works well also for data with a nonlinear trend. We show that including this extension allows detecting the exact point of trend shift (of inflection), even if the underlying theoretical time series model is not sensitive to it.</p>
</list-item>
</list>
<p>Proposed framework for structural break detection was tested using a suite of synthetic and real-world time series. In the paper, we address the properties of the proposed approach and compare it with the existing methods.</p>
<p>The remainder of the paper is structured as follows. Section <xref rid="j_infor572_s_002">2</xref> addresses relevant literature positions on the structural break detection problem. Section <xref rid="j_infor572_s_006">3</xref> outlines elementary notions concerning time series models and metaheuristic algorithms that we used. Section <xref rid="j_infor572_s_014">4</xref> addresses the approach introduced in this paper. Section <xref rid="j_infor572_s_028">5</xref> addresses a series of empirical experiments conducted to evaluate the quality of methods introduced in this paper. Section <xref rid="j_infor572_s_039">8</xref> concludes our study.</p>
</sec>
<sec id="j_infor572_s_002">
<label>2</label>
<title>Literature Review on Time Series Structural Break Detection</title>
<sec id="j_infor572_s_003">
<label>2.1</label>
<title>Earlier Papers on Time Series Structural Break Detection</title>
<p>The problem of detecting structural breaks in time series is well-recognized in the literature. There are two base variants: online and offline, the use of which is determined by the practical setting in which we need to execute this task. There were many works devoted to the online variant such as these by Tartakovsky (<xref ref-type="bibr" rid="j_infor572_ref_053">2019</xref>) or Huang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_029">2020</xref>). However, the online processing is outside the scope of our interest. We are only focusing on the offline processing mode.</p>
<p>Offline structural break detection has its own subvariants. The most classical division of available methods is into two groups. The first group aims at finding at most one changepoint (AMOC) detection, where the aim is to state if a time series contains one structural break and, subsequently, where it is located. The popular methods include cumulative sums (CUSUM) (Yang and Zhang, <xref ref-type="bibr" rid="j_infor572_ref_056">2022</xref>), (SCUSUM) (Shi <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_050">2022b</xref>) and likelihood ratio tests (LRT) (Bai <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_005">2024</xref>). Nonetheless, in this article we will focus on multiple structural breaks detection problem.</p>
<p>We can also divide the existing structural break detection methods according to how the structural break is defined and found. The most straightforward approach is a canonical segmentation problem, where the only parameter analysed during breakpoint detection is time series mean. Numerous works have been dedicated to this approach, and they have been thoroughly discussed by Cho and Kirch (<xref ref-type="bibr" rid="j_infor572_ref_014">2024</xref>). The more advanced approaches consider changes in time series variance or model data with the use of one of the common time series modelling methods. When it comes to the latter aspect, we shall underline that different models may be used for this purpose, for example, the autoregressive model (AR) (Behrendt, <xref ref-type="bibr" rid="j_infor572_ref_007">2021</xref>) or the GARCH model (Cho and Korkas, <xref ref-type="bibr" rid="j_infor572_ref_013">2022</xref>). Many papers are dedicated to simple and very narrow problem modelling. For instance, Romano <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_045">2022</xref>) use AR(1) model.</p>
<p>This article is devoted to multiple structural break detection in an offline manner, so let us describe analogous leading and popular methods used for the task. As Shi <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_050">2022b</xref>) say, we can distinguish two categories of methods for solving the task. First are methods using recursive partitioning of a time series into smaller segments or other approaches utilizing AMOC methods. Second are methods analysing the entire time series.</p>
<p>A distinct category can be assigned to the methods which sequentially analyse time series and are able to increasingly add new structural breaks, such as the method proposed by Bai and Perron (<xref ref-type="bibr" rid="j_infor572_ref_003">1998</xref>), which is still recognized as the baseline method in economics (for example, Lee <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_036">2022</xref>). This approach, commonly known as the Bai-Perron method will be mentioned later in this paper.</p>
<p>The first mentioned family of approaches (recursive one) generally uses AMOC methods to detect one structural breaks and later run the same AMOC method for chunked data. The base method in the area is binary segmentation (BS) (Scott and Knott, <xref ref-type="bibr" rid="j_infor572_ref_047">1974</xref>). It was later extended by Fryzlewicz (<xref ref-type="bibr" rid="j_infor572_ref_026">2014</xref>), who proposed wild binary segmentation (WBS). There are still works in this direction and new modified variants of binary segmentation were being proposed, such as WBS2 (Fryzlewicz, <xref ref-type="bibr" rid="j_infor572_ref_027">2020</xref>) or seeded binary segmentation (SBS) by Kovács <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_034">2023</xref>). Another interesting approach of this kind is Classification Score Profile (ClaSP) presented by Ermshaus <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_024">2023</xref>).</p>
<p>Many different approaches were proposed that can be described as general methods that jointly analyse entire time series. Some are using Bayesian learning or other probability-theory-based techniques for changepoint detection. In this line of research, the algorithms typically employ recursion to partition the data into segments. We envision that the changepoints of interest separate these segments. Bayesian approaches use different methods to solve the problem. Another technique was delivered by Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_037">2019a</xref>) using a linear regression model, AR in particular. Yet other studies use the Markov chain Monte Carlo sampling, specifically the Metropolis-Hastings algorithm, to search for structural breaks. Shaochuan (<xref ref-type="bibr" rid="j_infor572_ref_048">2020</xref>) studied the use of hidden Markov models with continuous-time FFBS and continuous-time Viterbi algorithm. Casini and Perron (<xref ref-type="bibr" rid="j_infor572_ref_009">2024</xref>) proposed a Laplace-based (Quasi-Bayes) procedure utilizing the Monte Carlo method.</p>
<p>Another notable way to solve the problem of locating multiple structural breaks in a time series is Cumulative Sums of Squares (CUSUM), studied by Inclan and Tiao (<xref ref-type="bibr" rid="j_infor572_ref_031">1994</xref>). Among more recent studies considering the CUSUM approach, we can mention the works of Madrid Padilla <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_041">2022</xref>), Kim <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_032">2022</xref>) or Borzykh and Yazykov (<xref ref-type="bibr" rid="j_infor572_ref_008">2020</xref>). The CUSUM approach passes through the time series to search for points where the sum of squares of previous and present values changes.</p>
<p>Other approach to the problem was moving sum (MOSUM) procedure. Their method is essential in canonical segmentation problem. It was recently used, for instance, by Cho and Kirch (<xref ref-type="bibr" rid="j_infor572_ref_012">2022</xref>) or Meier <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_042">2021</xref>). MOSUM was utilized also for more advanced segmentation problems such as in the work of Kirch and Reckruehm (<xref ref-type="bibr" rid="j_infor572_ref_033">2024</xref>).</p>
<p>It is vital to notice that many of known approaches use constraint on the minimum distance between two consecutive structural changes. The approach is very popular and was used, for example, by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>), Doerr <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_021">2017</xref>) or Yan <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_055">2021</xref>).</p>
<p>As a side note, we have observed a growing number of papers elaborating on the benefits of including a structural break detection step in time series forecasting procedures. Among researchers focusing on this aspect, we find Smith (<xref ref-type="bibr" rid="j_infor572_ref_051">2023</xref>), Safikhani <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_046">2022</xref>), and Altansukh and Osborn (<xref ref-type="bibr" rid="j_infor572_ref_002">2022</xref>). Another substantive stream of studies emerged when the existing changepoint detection methods were adapted to temporal panel data, as indicated by Bardwell <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_006">2019</xref>).</p>
</sec>
<sec id="j_infor572_s_004">
<label>2.2</label>
<title>Evolutionary Methods in Structural Break Detection Problem</title>
<p>The last group of methods for solving the task we want to discuss are evolutionary algorithms. In particular, it is worth mentioning the works of Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>, <xref ref-type="bibr" rid="j_infor572_ref_017">2006</xref>, <xref ref-type="bibr" rid="j_infor572_ref_018">2008</xref>), Davis and Yau (<xref ref-type="bibr" rid="j_infor572_ref_015">2013</xref>), who conducted several studies on the application of the genetic algorithm in the discussed context. They have referred to their new method as Auto-PARM. The chromosome in this algorithm contained information about whether a structural change was present at a given location. The method uses relatively simple mutation, various crossover variants, and proportional selection. In addition, the island model of the genetic algorithm was employed to improve the results.</p>
<p>The genetic algorithm was also considered in the works of Doerr <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_021">2017</xref>). As already mentioned, their algorithm was constructed for long time series up to one million data points. The results of this study indicated that using both single-point and uniform crossover simultaneously improves the quality of the results. Furthermore, the effectiveness of enhancing the algorithm by using multi-start and champions league strategies was noted. A similar outcome was documented by Suárez-Sierra <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_052">2023</xref>). On the other hand, Lim <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_039">2020</xref>) presented a memetic algorithm for multivariate time series segmentation dedicated to long time series.</p>
<p>Éltetö <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_023">2012</xref>) proposed using the highly acclaimed CMA-ES (Covariance Matrix Adaptation Evolution Strategy) algorithm. They divided their method into two steps. The first step aims at finding the number of structural changes. The second step optimizes the locations of each structural change. They did this by analysing solutions for different, algorithmically chosen numbers of breakpoints. CMA-ES operates in a continuous space, while the change point detection problem is embedded in a discrete space. Therefore, it was necessary to move the problem to another space, which was done by processing the structural change locations and rounding them for solution evaluation.</p>
</sec>
<sec id="j_infor572_s_005">
<label>2.3</label>
<title>The Issue of the Target Function Definition</title>
<p>Many of the methods used for structural break detection require an objective function that allows comparing particular structural change positions. Choosing an appropriate objective function is not easy because of the need to simultaneously fit the data model and minimize the number of model parameters, as state (Shi <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_050">2022b</xref>). Different objective functions were used in the literature. Some were very simple and failed to reflect the nuances of model fitting. This was due to various reasons. In some cases, the computational complexity was decisive, as it was in the approach of Doerr <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_021">2017</xref>).</p>
<p>Penalty function methods have been analysed as well. For example, Hall <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_028">2013</xref>) used a penalty function in which three parameters of a time series segment model corresponded to one structural change. Another variant of the penalty function was considered by Doerr <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_021">2017</xref>), whose penalty function was the sum of the penalty for the number of detected breakpoints and the penalty for the fitting error calculated separately for each segment of the time series as the area of a rectangle whose sides were: the beginning and the end of the studied segment, and the minimum and maximum value of the series on the given segment.</p>
<p>For more complex approaches, a fairly obvious choice was to check known information criterion models. Akaike Information Criterion (AIC), Bayesian Information Criterion (BIC), or modified Bayesian Information Criterion (mBIC) can be employed (Zhang and Siegmund, <xref ref-type="bibr" rid="j_infor572_ref_057">2007</xref>). An intensive comparison of these criteria and MDL (see next paragraph) was delivered by Shi <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_050">2022b</xref>).</p>
<p>In recent years, the principle of Minimum Description Length (MDL) formulated by Rissanen (<xref ref-type="bibr" rid="j_infor572_ref_044">1978</xref>) has gained substantial popularity in this field. It was applied to the problem of structural change detection by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_017">2006</xref>). This solution was originally adapted for use together with the time series autoregressive (AR) model. Later works made it possible to transfer this method to other time series models: Generalized AutoRegressive Conditional Heteroskedasticity (GARCH) (Davis <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_018">2008</xref>), periodic AR (Lu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_040">2010</xref>) or AutoRegressive Moving Average (ARMA) (Davis and Yau, <xref ref-type="bibr" rid="j_infor572_ref_015">2013</xref>). As mentioned, Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_038">2019b</xref>) formulated a modification of the MDL method known as the Bayesian Minimum Description Length rule. The cost function based on the MDL principle was later used in many different works, such as by Ditzen <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_020">2021</xref>) or Lan <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_035">2022</xref>). A modification of the MDL rule was also shown in Bayesian Minimum Description Length (BMDL) method proposed by Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_037">2019a</xref>).</p>
</sec>
</sec>
<sec id="j_infor572_s_006">
<label>3</label>
<title>Preliminaries</title>
<p>In this section, we provide basic information related to the background knowledge behind the proposed approach.</p>
<sec id="j_infor572_s_007">
<label>3.1</label>
<title>ARIMA for Time Series Modelling</title>
<p>Time series can be simply described as a sequence of values observed in time. There are many different ways to model time series. One of the very popular is the use of models from the AutoRegressive Integrated Moving Average (ARIMA) family. The simplest model belonging to this family is the autoregressive model (AR), which can be written as 
<disp-formula id="j_infor572_eq_001">
<label>(1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {y_{t}}=c+{\beta _{1}}{y_{t-1}}+{\beta _{2}}{y_{t-2}}+\cdots +{\beta _{p}}{y_{t-p}}+{\varepsilon _{t}},\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_009">
<label>•</label>
<p><italic>c</italic>, <inline-formula id="j_infor572_ineq_001"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\beta _{1}},\dots ,{\beta _{p}}$]]></tex-math></alternatives></inline-formula> – model parameters,</p>
</list-item>
<list-item id="j_infor572_li_010">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_002"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\varepsilon _{t}}$]]></tex-math></alternatives></inline-formula> – white noise,</p>
</list-item>
<list-item id="j_infor572_li_011">
<label>•</label>
<p><italic>p</italic> – order of the AR model.</p>
</list-item>
</list> 
The second important model is moving average (MA), given as 
<disp-formula id="j_infor572_eq_002">
<label>(2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {y_{t}}=c+{\phi _{1}}{\varepsilon _{t-1}}+{\phi _{2}}{\varepsilon _{t-2}}+\cdots +{\phi _{q}}{\varepsilon _{t-q}}+{\varepsilon _{t}},\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_012">
<label>•</label>
<p><italic>c</italic>, <inline-formula id="j_infor572_ineq_003"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\phi _{1}},\dots ,{\phi _{q}}$]]></tex-math></alternatives></inline-formula> – model parameters,</p>
</list-item>
<list-item id="j_infor572_li_013">
<label>•</label>
<p><italic>q</italic> – order of the MA model.</p>
</list-item>
</list> 
If we join the AR and MA models, we get the ARMA model. If we add a differencing operation to the model, we get the ARIMA model. The differencing operation is performed on time series <italic>d</italic> times, where <italic>d</italic> usually equals 0, 1, or 2. Thus, by putting together the described components of ARIMA, we obtain the following model formulation: 
<disp-formula id="j_infor572_eq_003">
<label>(3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {y_{t}}=c+{\beta _{1}}{y_{t-1}}+{\beta _{2}}{y_{t-2}}+\cdots +{\beta _{p}}{y_{t-p}}+{\phi _{1}}{\varepsilon _{t-1}}+{\phi _{2}}{\varepsilon _{t-2}}+\cdots +{\phi _{q}}{\varepsilon _{t-q}}+{\varepsilon _{t}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The model can be briefly expressed as <inline-formula id="j_infor572_ineq_004"><alternatives><mml:math>
<mml:mtext>ARIMA</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\text{ARIMA}(p,d,q)$]]></tex-math></alternatives></inline-formula>, where <italic>p</italic> is the order of the autoregressive part, <italic>d</italic> is the degree of differencing, and <italic>q</italic> is the order of the moving average part.</p>
<p>A time series structural break is a place in the time series where data changes its characteristics. It can be a change in the time series mean, variance, or a point where a trend has emerged or disappeared. The most often-mentioned definition says that it is a place in the time series where the time series model or one of its parameters changes (for example, Cheng <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_011">2022</xref>). Obviously, time series can have several structural breaks or not have them at all.</p>
</sec>
<sec id="j_infor572_s_008">
<label>3.2</label>
<title>Metaheuristic Algorithms</title>
<p>In this work, we use metaheuristic optimization-based algorithms to solve the problem of time series structural break detection. We selected Ant Colony Optimization (ACO), Particle Swarm Optimization (PSO), and Genetic Algorithm (GA). The algorithms mentioned are all metaheuristics, which means that they do not guarantee that an optimal solution will be found. However, they can find a good-enough solution in a relatively short time. This property makes them indispensable in many engineering applications, see Abdel-Basset <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_001">2018</xref>).</p>
<p>ACO, PSO, and GA are based on an analogous idea that the algorithm operates on a collection of candidate solutions called population. The procedure is iterative. In each iteration, the population undergoes specific modifications, and in this manner, candidate solutions are constructed or modified. An essential part of these algorithms is a cost function that evaluates how good a particular candidate solution is. Since these are heuristic optimization approaches, termination criteria concern either a count of performed iterations or a count of iterations without any improvement.</p>
</sec>
<sec id="j_infor572_s_009">
<label>3.3</label>
<title>Ant Colony Optimization</title>
<p>ACO is a method proposed and developed by Dorigo and Stützle (<xref ref-type="bibr" rid="j_infor572_ref_022">2019</xref>). It is patterned on the behaviour of ants. The population of the algorithm is interpreted as a swarm of ants that create solutions by walking on a graph. All solutions found in a given iteration are evaluated, and ants put pheromones on the edges of a graph used in these solutions according to their fitness.</p>
<p>Ants construct solutions in a probabilistic, step-wise manner. If we have an iteration <italic>t</italic> and an ant, which built a part of a solution and is in a vertex <italic>i</italic>, the probability of the ant’s move from the <italic>i</italic>th to the <italic>j</italic>th vertex is given as 
<disp-formula id="j_infor572_eq_004">
<label>(4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">η</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">η</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">∉</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {p_{ij}^{k}}(t)=\left\{\begin{array}{l@{\hskip4.0pt}l}\frac{{({\tau _{ij}}(t))^{\alpha }}\cdot {\eta _{ij}^{\beta }}}{{\textstyle\sum _{a\in N}}{({\tau _{ia}}(t))^{\alpha }}\cdot {\eta _{ia}^{\beta }}},\hspace{1em}& j\in N,\\ {} 0,\hspace{1em}& j\notin N,\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_014">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_005"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\tau _{ij}}(t)$]]></tex-math></alternatives></inline-formula> – pheromone count between vertices <italic>i</italic> and <italic>j</italic> at the moment <italic>t</italic>,</p>
</list-item>
<list-item id="j_infor572_li_015">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_006"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">η</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\eta _{ij}}$]]></tex-math></alternatives></inline-formula> – heuristic cost of <italic>i</italic>–<italic>j</italic> edge,</p>
</list-item>
<list-item id="j_infor572_li_016">
<label>•</label>
<p><italic>N</italic> – neighbourhood of the vertex <italic>i</italic>,</p>
</list-item>
<list-item id="j_infor572_li_017">
<label>•</label>
<p><italic>α</italic>, <italic>β</italic> – algorithm parameters.</p>
</list-item>
</list> 
It is important to note that the ACO algorithm works in a discrete space. It is perfect for graph-based problem representations.</p>
<p>The general scheme of ACO is presented in Algorithm <xref rid="j_infor572_fig_001">1</xref>.</p>
<fig id="j_infor572_fig_001">
<label>Algorithm 1</label>
<caption>
<p>General schema of ACO</p>
</caption>
<graphic xlink:href="infor572_g001.jpg"/>
</fig>
</sec>
<sec id="j_infor572_s_010">
<label>3.4</label>
<title>Particle Swarm Optimization</title>
<p>PSO is patterned on the behaviour of birds’ flocks or schools of fish. In contrast to ACO, the algorithm operates in a continuous space. The population is interpreted as a collection of particles. Each particle has its own location, memory, and velocity. The location of a particle <italic>i</italic> is denoted as <inline-formula id="j_infor572_ineq_007"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${x_{i}}$]]></tex-math></alternatives></inline-formula>, the velocity is denoted as <inline-formula id="j_infor572_ineq_008"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${v_{i}}$]]></tex-math></alternatives></inline-formula>, the best solution found by the particle is denoted as <inline-formula id="j_infor572_ineq_009"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{i}}$]]></tex-math></alternatives></inline-formula>, and the best global solution is denoted as <inline-formula id="j_infor572_ineq_010"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{b}}$]]></tex-math></alternatives></inline-formula>. During each iteration the velocity and location of each particle are modified according to the formula: 
<disp-formula id="j_infor572_eq_005">
<label>(5)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">ω</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">[</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">]</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">[</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">]</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {v_{i}}(k)=\omega {v_{i}}(k-1)+{c_{1}}{r_{1}}\big[{s_{i}}(k-1)-{x_{i}}(k-1)\big]+{c_{2}}{r_{2}}\big[{s_{b}}(k-1)-{x_{i}}(k-1)\big],\]]]></tex-math></alternatives>
</disp-formula> 
where:</p>
<list>
<list-item id="j_infor572_li_018">
<label>•</label>
<p><italic>ω</italic> – inertia coefficient,</p>
</list-item>
<list-item id="j_infor572_li_019">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_011"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${c_{1}}$]]></tex-math></alternatives></inline-formula> – best local solution influence coefficient,</p>
</list-item>
<list-item id="j_infor572_li_020">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_012"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${c_{2}}$]]></tex-math></alternatives></inline-formula> – best global solution coefficient,</p>
</list-item>
<list-item id="j_infor572_li_021">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_013"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${r_{1}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_014"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${r_{2}}$]]></tex-math></alternatives></inline-formula> – random numbers, where <inline-formula id="j_infor572_ineq_015"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[${r_{1}},{r_{2}}\in [0,1]$]]></tex-math></alternatives></inline-formula>, they can be different for each iteration and each particle.</p>
</list-item>
</list>
<p>The location of a particle is updated according to: 
<disp-formula id="j_infor572_eq_006">
<label>(6)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {x_{i}}(k)={x_{i}}(k-1)+{v_{i}}(k).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The general flow of the PSO is presented in Algorithm <xref rid="j_infor572_fig_002">2</xref>.</p>
<fig id="j_infor572_fig_002">
<label>Algorithm 2</label>
<caption>
<p>General schema of PSO</p>
</caption>
<graphic xlink:href="infor572_g002.jpg"/>
</fig>
</sec>
<sec id="j_infor572_s_011">
<label>3.5</label>
<title>Genetic Algorithm</title>
<p>GA is a long-known evolutionary algorithm that uses a population of solutions. Each solution is represented by a chromosome, which consists of genes. The population is modified by three fundamental operations: selection, crossover, and mutation, which are performed during each iteration. These operations are defined very generally. Thus, so many variants of the GA have arisen. The first operation is selection, which aims to pick the best individuals from the population. The two most common selection mechanisms are proportional selection and tournament selection. A mutation usually makes a minor change to the solution. For example, in the popular bit flip mutation for binary encoded chromosomes, one or more bits are randomly selected and inverted. There are other types of mutations, such as swap mutation, truncation mutation, or inversion mutation. Crossover initially results in several parent solutions that combine to form one or more offspring. Popular crossover methods are uniform crossover, one-point crossover, or multi-point crossover. In many situations, applying standard mutation or crossover methods is impossible, and the need to modify them or create custom, problem-specific crossover or mutation operators arises.</p>
<p>The general scheme of the GA is presented in Algorithm <xref rid="j_infor572_fig_003">3</xref>.</p>
<fig id="j_infor572_fig_003">
<label>Algorithm 3</label>
<caption>
<p>Pseudocode of GA</p>
</caption>
<graphic xlink:href="infor572_g003.jpg"/>
</fig>
</sec>
<sec id="j_infor572_s_012">
<label>3.6</label>
<title>Island Model in Heuristic Optimization</title>
<p>The island model is one of the approaches to perform multi-population optimization. In the model, there are several populations located on several islands. After every <italic>t</italic> iterations, we perform a migration that allows replacing the worst solutions from one population with the best solutions from another population. The count of iterations between migrations, population size, and the count of migrated elements are parameters of the model.</p>
<p>The island model is a simple, yet effective method to get good results fast. It is often used with the genetic algorithm but can also be applied to other evolutionary algorithms.</p>
</sec>
<sec id="j_infor572_s_013">
<label>3.7</label>
<title>Cost Functions Used in the Literature to Optimize Structural Break Count</title>
<p>Selecting a cost function to measure the quality of solutions is a critical problem in metaheuristic optimization. Constructing a suitable cost function for the structural break detection problem is difficult because we need to minimize the model errors and the number of structural breaks and balance the two.</p>
<p>The literature offers various solutions to this problem; more information is available from Farsi <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_025">2020</xref>). One of the most acclaimed ones was the use of the minimum description length (MDL) rule. This rule states that a model is only as good as long as it needs little space to save its data. We can write it as 
<disp-formula id="j_infor572_eq_007">
<label>(7)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ CL(y)=CL(M)+CL(e|M),\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor572_ineq_016"><alternatives><mml:math>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi></mml:math><tex-math><![CDATA[$CL$]]></tex-math></alternatives></inline-formula> is a code length, <italic>y</italic> is the analysed time series, <italic>M</italic> is the model describing it, and <inline-formula id="j_infor572_ineq_017"><alternatives><mml:math>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi></mml:math><tex-math><![CDATA[$e|M$]]></tex-math></alternatives></inline-formula> is the error of fitting <italic>M</italic> to <italic>y</italic>. <inline-formula id="j_infor572_ineq_018"><alternatives><mml:math>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$CL(M)$]]></tex-math></alternatives></inline-formula> is simple to calculate compared to <inline-formula id="j_infor572_ineq_019"><alternatives><mml:math>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$CL(e|M)$]]></tex-math></alternatives></inline-formula>. Rissanen (<xref ref-type="bibr" rid="j_infor572_ref_044">1978</xref>) proposed to calculate it using the log-likelihood function: 
<disp-formula id="j_infor572_eq_008">
<label>(8)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ CL(e|M)=-\log L(M).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>) introduced an adaptation of the MDL technique to the problem of structural breaks detection for the AR model: 
<disp-formula id="j_infor572_eq_009">
<label>(9)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mtext mathvariant="italic">MDL</mml:mtext>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="2em"/>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& \textit{MDL}\big(m,{p_{0}},({\tau _{1}},{p_{1}}),\dots ,({\tau _{m}},{p_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+m{\log _{2}}n+{\sum \limits_{i=0}^{m}}{\log _{2}}{p_{i}}+{\sum \limits_{i=0}^{m}}\frac{{p_{i}}+2}{2}{\log _{2}}{n_{i}}\\ {} & \hspace{2em}+{\sum \limits_{i=0}^{m}}\frac{{n_{i}}+{n_{i}}{\log _{2}}(2\pi {\sigma _{i}^{2}})}{2},\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_022">
<label>•</label>
<p><italic>m</italic> – structural change count,</p>
</list-item>
<list-item id="j_infor572_li_023">
<label>•</label>
<p><italic>n</italic> – time series length,</p>
</list-item>
<list-item id="j_infor572_li_024">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_020"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\tau _{1}},\dots ,{\tau _{m}}$]]></tex-math></alternatives></inline-formula> – structural change locations,</p>
</list-item>
<list-item id="j_infor572_li_025">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_021"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${p_{1}},\dots ,{p_{m}}$]]></tex-math></alternatives></inline-formula> – orders of AR model on successive segments,</p>
</list-item>
<list-item id="j_infor572_li_026">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_022"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${\sigma _{i}^{2}}$]]></tex-math></alternatives></inline-formula> – variation of model error on segment number <italic>i</italic>.</p>
</list-item>
</list>
</p>
</sec>
</sec>
<sec id="j_infor572_s_014">
<label>4</label>
<title>Proposed Approach</title>
<p>Let us recall the key contributions of this paper:</p>
<list>
<list-item id="j_infor572_li_027">
<label>•</label>
<p>a generalization of Davis’s approach to the MDL with the ARIMA model,</p>
</list-item>
<list-item id="j_infor572_li_028">
<label>•</label>
<p>new cost functions: Elastic MDL – a variant of MDL giving more flexibility to the user and new functions based on penalty cost suitable to process real-world time series,</p>
</list-item>
<list-item id="j_infor572_li_029">
<label>•</label>
<p>including a weight for punishing (controlling) minimal allowed interval length,</p>
</list-item>
<list-item id="j_infor572_li_030">
<label>•</label>
<p>an extension of the cost function that takes into account deviations from a linear trend observed on time series segments,</p>
</list-item>
<list-item id="j_infor572_li_031">
<label>•</label>
<p>new cost functions using relations between segment’s order and length,</p>
</list-item>
<list-item id="j_infor572_li_032">
<label>•</label>
<p>in this study, PSO and ACO algorithms, in conjunction with the Minimum Description Length rule, are used for the first time in the task of structural break detection in time series.</p>
</list-item>
</list>
<p>In the following subsections, we present them in detail.</p>
<sec id="j_infor572_s_015">
<label>4.1</label>
<title>Generalization of the Approach: Using the New MDL Function with the ARIMA Model</title>
<p>Let us define the MDL function for the ARIMA model based on Eqs. (<xref rid="j_infor572_eq_007">7</xref>) and (<xref rid="j_infor572_eq_008">8</xref>) as 
<disp-formula id="j_infor572_eq_010">
<label>(10)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mtext mathvariant="italic">MDL</mml:mtext>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="2em"/>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& \textit{MDL}\big(m,({\tau _{1}},{p_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{q_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+m{\log _{2}}n+{\sum \limits_{i=0}^{m}}{\log _{2}}({p_{i}}+{d_{i}}+{q_{i}})\\ {} & \hspace{2em}+{\sum \limits_{i=0}^{m}}\frac{{p_{i}}+{d_{i}}+{q_{i}}+2}{2}{\log _{2}}{n_{i}}-\underset{i}{\max }\log L({M_{i}}),\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor572_ineq_023"><alternatives><mml:math>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\log L({M_{i}})$]]></tex-math></alternatives></inline-formula> is the log-likelihood function.</p>
<p>The defined function in Eq. (<xref rid="j_infor572_eq_010">10</xref>) relies on the addition of four components. The first component (<inline-formula id="j_infor572_ineq_024"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[${\log _{2}}m$]]></tex-math></alternatives></inline-formula>) represents the number of structural breaks. It is a natural number. The logarithm is used to represent this value in terms of bits, according to the idea of the original MDL function. The second component is <inline-formula id="j_infor572_ineq_025"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">n</mml:mi></mml:math><tex-math><![CDATA[$m{\log _{2}}n$]]></tex-math></alternatives></inline-formula>. It represents the space needed to save the location of each structural break. Each location is kept as a natural number that is not larger than the series length <italic>n</italic>. The third component represents the ARIMA specification <inline-formula id="j_infor572_ineq_026"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(p,d,q)$]]></tex-math></alternatives></inline-formula> for each segment in the time series. The final component keeps the values of ARIMA model parameters for each segment. These values are computed based on <inline-formula id="j_infor572_ineq_027"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${n_{i}}$]]></tex-math></alternatives></inline-formula> elements.</p>
</sec>
<sec id="j_infor572_s_016">
<label>4.2</label>
<title>Introducing New Cost Functions for the Optimization Problems Dealing with Structural Break Detection</title>
<p>In this subsection, we address new cost functions. Each of them was defined in two variants – for the AR and ARIMA model.</p>
<sec id="j_infor572_s_017">
<label>4.2.1</label>
<title>Penalty Function, Modification #1</title>
<p>This extension relies on penalties for structural breaks count, model parameter count, and variation of model fitting error. The version for the AR model is defined as: 
<disp-formula id="j_infor572_eq_011">
<label>(11)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ SPF{1_{AR}}\big(m,({\tau _{1}},{p_{1}}),\dots ,({\tau _{m}},{p_{m}})\big)=\mu {m^{2}}+{\sum \limits_{i=1}^{m}}\big({\sigma _{i}^{2}}+\nu {p_{i}^{2}}\big),\]]]></tex-math></alternatives>
</disp-formula> 
where 
<list>
<list-item id="j_infor572_li_033">
<label>•</label>
<p><italic>μ</italic> – parameter describing structural change count impact on model choice,</p>
</list-item>
<list-item id="j_infor572_li_034">
<label>•</label>
<p><italic>ν</italic> – parameter describing parameter count impact on model choice.</p>
</list-item>
</list> 
The cost function proposed for the ARIMA model is 
<disp-formula id="j_infor572_eq_012">
<label>(12)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ARIMA</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ρ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& SPF{1_{\textit{ARIMA}}}\big(m,({\tau _{1}},{p_{1}},{d_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{d_{m}},{q_{m}})\big)\\ {} & \hspace{1em}=\mu {m^{2}}+{\sum \limits_{i=1}^{m}}\big({s_{i}}+\nu {({p_{i}}+\rho {d_{i}}+{q_{i}})^{2}}\big),\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
where <italic>ρ</italic> describes the differencing count impact on model choice, and <inline-formula id="j_infor572_ineq_028"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{i}}$]]></tex-math></alternatives></inline-formula> is a sum of the squared estimate of errors (SSE) for the segment fitting.</p>
</sec>
<sec id="j_infor572_s_018">
<label>4.2.2</label>
<title>Penalty Function, Modification #2</title>
<p>We defined the second cost function to give residual errors higher importance. The variant delivered for the AR model looks as follows: 
<disp-formula id="j_infor572_eq_013">
<label>(13)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ SPF{2_{AR}}(m,\big({\tau _{1}},{p_{1}},\dots ,({\tau _{m}},{p_{m}})\big)=\mu {m^{2}}+{\sum \limits_{i=1}^{m}}\big({\sigma _{i}^{4}}+\nu {p_{i}^{2}}\big),\]]]></tex-math></alternatives>
</disp-formula> 
while for the ARIMA model it is 
<disp-formula id="j_infor572_eq_014">
<label>(14)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ARIMA</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ρ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& SPF{2_{\textit{ARIMA}}}\big(m,({\tau _{1}},{p_{1}},{d_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{d_{m}},{q_{m}})\big)\\ {} & \hspace{1em}=\mu {m^{2}}+{\sum \limits_{i=1}^{m}}\big({s_{i}^{2}}+\nu {({p_{i}}+\rho {d_{i}}+{q_{i}})^{2}}\big).\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The rationale was to partition the time series such that the segments are as long as possible, but short enough to fit the theoretical model well. The shorter the segment, the easier it is to fit a theoretical model. At the same time, for practical reasons, too many segments may not be helpful.</p>
<p>These conflicting goals (long segments with good theoretical models) were coded differently by means of different objective functions.</p>
</sec>
<sec id="j_infor572_s_019">
<label>4.2.3</label>
<title>Elastic MDL</title>
<p>The third idea was to use the MDL function to give users more flexibility and allow them to tune it to their preferences. The version for the AR model is defined as: 
<disp-formula id="j_infor572_eq_015">
<label>(15)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">EMDL</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="2em"/>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\textit{EMDL}_{AR}}\big(m,{p_{0}},({\tau _{1}},{p_{1}}),\dots ,({\tau _{m}},{p_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+m{\log _{2}}n+\mu {\sum \limits_{i=0}^{m}}\bigg({\log _{2}}{p_{i}}+\frac{{p_{i}}+2}{2}{\log _{2}}{n_{i}}\bigg)\\ {} & \hspace{2em}+\nu {\sum \limits_{i=0}^{m}}\frac{{n_{i}}+{n_{i}}{\log _{2}}(2\pi {\sigma _{i}^{2}})}{2},\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
and for ARIMA model as: 
<disp-formula id="j_infor572_eq_016">
<label>(16)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">EMDL</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ARIMA</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="2em"/>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\textit{EMDL}_{\textit{ARIMA}}}\big(m,({\tau _{1}},{p_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{q_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+m{\log _{2}}n+\mu {\sum \limits_{i=0}^{m}}{\log _{2}}({p_{i}}+{d_{i}}+{q_{i}})\\ {} & \hspace{2em}+{\sum \limits_{i=0}^{m}}\frac{{p_{i}}+{d_{i}}+{q_{i}}+2}{2}{\log _{2}}{n_{i}}-\nu \underset{i}{\max }\log L({M_{i}}).\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
</sec>
<sec id="j_infor572_s_020">
<label>4.2.4</label>
<title>Division Cost Function</title>
<p>The following cost function is based on the assumption that structural break selection is satisfactory when the variance of residual errors is small, and the orders of assigned models are small compared to the adjusted segment’s length. The version for AR was defined as 
<disp-formula id="j_infor572_eq_017">
<label>(17)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">DCF</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">δ</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\textit{DCF}_{AR}}\big(m,{p_{0}},({\tau _{1}},{p_{1}}),\dots ,({\tau _{m}},{p_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+{\sum \limits_{i=0}^{m}}{\log _{2}}\bigg(\mu {\bigg(\frac{{p_{i}}}{{n_{i}}}\bigg)^{\delta }}+1\bigg)+\nu {\sum \limits_{i=0}^{m}}{\log _{2}}\big({\sigma _{i}^{2}}\big),\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
where <italic>δ</italic> is a parameter. The formula for ARIMA is defined as 
<disp-formula id="j_infor572_eq_018">
<label>(18)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">DCF</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ARIMA</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">[</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">δ</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">]</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\textit{DCF}_{\textit{ARIMA}}}\big(m,({\tau _{1}},{p_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{q_{m}})\big)\\ {} & \hspace{1em}={\log _{2}}m+{\sum \limits_{i=0}^{m}}\bigg[{\log _{2}}\bigg({\bigg(\mu \frac{{p_{i}}+{d_{i}}+{q_{i}}}{{n_{i}}}\bigg)^{\delta }}+1\bigg)-\nu \underset{i}{\max }\log L({M_{i}})\bigg].\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
</sec>
<sec id="j_infor572_s_021">
<label>4.2.5</label>
<title>Penalty-Division Cost Function</title>
<p>The final cost function is a combination of penalty and division cost functions. We defined it for the AR model as 
<disp-formula id="j_infor572_eq_019">
<label>(19)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">PDCF</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">δ</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\textit{PDCF}_{AR}}\big(m,{p_{0}},({\tau _{1}},{p_{1}}),\dots ,({\tau _{m}},{p_{m}})\big)={m^{2}}+{\sum \limits_{i=0}^{m}}\bigg(\mu {\bigg(\frac{{p_{i}}}{{n_{i}}}\bigg)^{\delta }}+1+\nu {\log _{2}}\big({\sigma _{i}^{2}}\big)\bigg),\]]]></tex-math></alternatives>
</disp-formula> 
and for the ARIMA model as 
<disp-formula id="j_infor572_eq_020">
<label>(20)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">PDCF</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ARIMA</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mspace width="1em"/>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">δ</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\textit{PDCF}_{\textit{ARIMA}}}\big(m,({\tau _{1}},{p_{1}},{q_{1}}),\dots ,({\tau _{m}},{p_{m}},{q_{m}})\big)\\ {} & \hspace{1em}={m^{2}}+{\sum \limits_{i=0}^{m}}\bigg(\mu {\bigg(\frac{{p_{i}}+{d_{i}}+{q_{i}}}{{n_{i}}}\bigg)^{\delta }}-\nu \underset{i}{\max }\log L({M_{i}})\bigg).\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Comparing this cost function with the plain MDL (see Eq. (<xref rid="j_infor572_eq_009">9</xref>)), the key difference is that it includes the possibility of influencing the outcome by leveraging the introduced parameters. It can be particularly beneficial when the user has domain-specific knowledge.</p>
</sec>
</sec>
<sec id="j_infor572_s_022">
<label>4.3</label>
<title>Extensions of Cost Functions Used to Solve Structural Break Detection Problem</title>
<p>We proposed two extensions to the cost functions that can increase their capabilities.</p>
<p>The first extension is a weight for enforcing minimal allowed interval length. A common pitfall of structural break detection algorithms is that they find too short, insignificant time series segments. So far, the problem has mostly been solved by inserting a strict ban on generating time series segments shorter than a certain threshold. Such a tough, binary solution is not clear and justified. Thus, we propose a new attempt to solve this problem. We suggest adding to cost functions a penalty term defined as follows: 
<disp-formula id="j_infor572_eq_021">
<label>(21)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>⩾</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ PFS({s_{i}})=\left\{\begin{array}{l@{\hskip4.0pt}l}{(b-{n_{i}})^{2}},\hspace{1em}& {n_{i}}\lt b,\\ {} 0,\hspace{1em}& {n_{i}}\geqslant b,\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_035">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_029"><alternatives><mml:math>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mi mathvariant="italic">F</mml:mi>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$PFS({s_{i}})$]]></tex-math></alternatives></inline-formula> – function value for a segment <inline-formula id="j_infor572_ineq_030"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{i}}$]]></tex-math></alternatives></inline-formula>,</p>
</list-item>
<list-item id="j_infor572_li_036">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_031"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${n_{i}}$]]></tex-math></alternatives></inline-formula> – length of <inline-formula id="j_infor572_ineq_032"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{i}}$]]></tex-math></alternatives></inline-formula> segment,</p>
</list-item>
<list-item id="j_infor572_li_037">
<label>•</label>
<p><italic>b</italic> – a threshold.</p>
</list-item>
</list> 
The use of weight in the cost function gives more flexibility than the use of a strict threshold.</p>
<p>The second extension was dedicated to the methods that do not account for trends. We propose to solve this deficiency by adding a weight to a cost function to estimate the deviation from a linear trend. We can define it as 
<disp-formula id="j_infor572_eq_022">
<label>(22)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ MSE({s_{i}})={\sum \limits_{j=0}^{{n_{i}}-1}}({s_{ij}}-aj-b),\]]]></tex-math></alternatives>
</disp-formula> 
where</p>
<list>
<list-item id="j_infor572_li_038">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_033"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{ij}}$]]></tex-math></alternatives></inline-formula> – <italic>j</italic>-th element of <italic>i</italic>-th time series segment,</p>
</list-item>
<list-item id="j_infor572_li_039">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_034"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi></mml:math><tex-math><![CDATA[$a,b$]]></tex-math></alternatives></inline-formula> – parameters of resulting linear regression applied to the segment.</p>
</list-item>
</list>
<p>Both extensions can be applied with the use of additional parameters, giving them suitable impact.</p>
</sec>
<sec id="j_infor572_s_023">
<label>4.4</label>
<title>New Adaptations of Metaheuristic Algorithms to the Problem of Structural Break Detection</title>
<sec id="j_infor572_s_024">
<label>4.4.1</label>
<title>Ant Colony Optimization Adaptations</title>
<p>To implement the ACO algorithm for the structural break detection problem, we have modified the rule of ranking possible edges from that presented in Eq. (<xref rid="j_infor572_eq_004">4</xref>) to the form: 
<disp-formula id="j_infor572_eq_023">
<label>(23)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>∗</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>∗</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>∗</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">β</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>∗</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">∉</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {p_{ij}^{k}}(t)=\left\{\begin{array}{l@{\hskip4.0pt}l}\frac{{({\tau _{ij}}(t))^{\alpha }}\ast {c_{ij}^{\beta }}\ast {d_{ij}^{\gamma }}}{{\textstyle\sum _{a\in N}}{({\tau _{ia}}(t))^{\alpha }}\ast {c_{ia}^{\beta }}\ast {d_{ij}^{\gamma }}},\hspace{1em}& j\in N,\\ {} 0,\hspace{1em}& j\notin N,\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<list>
<list-item id="j_infor572_li_040">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_035"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${c_{ij}}$]]></tex-math></alternatives></inline-formula> – cost function value for the segment that starts at the <italic>i</italic>-th time series element and ends at the <italic>j</italic>-th element, calculated with a given cost function,</p>
</list-item>
<list-item id="j_infor572_li_041">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_036"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${d_{ij}}$]]></tex-math></alternatives></inline-formula> – count of structural breaks in solution,</p>
</list-item>
<list-item id="j_infor572_li_042">
<label>•</label>
<p><italic>β</italic>, <italic>γ</italic> are parameters.</p>
</list-item>
</list> 
The crucial issue is that we shall know how many structural breaks will occur after choosing <italic>j</italic>. We can not specify it exactly, since we select the next structural break location with some randomness, but we can estimate it. Let us denote the count of time series segments generated after the <italic>k</italic>-th time series element as <inline-formula id="j_infor572_ineq_037"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$v(k)$]]></tex-math></alternatives></inline-formula>. Let us use the letter <italic>n</italic> to denote the length of the time series. The <inline-formula id="j_infor572_ineq_038"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$v(k)$]]></tex-math></alternatives></inline-formula> function is defined for <italic>k</italic> in the range from 0 to <inline-formula id="j_infor572_ineq_039"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$n+1$]]></tex-math></alternatives></inline-formula>, where the letter is the element after the last element of the time series. It is apparent that <inline-formula id="j_infor572_ineq_040"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$v(n+1)=0$]]></tex-math></alternatives></inline-formula>. Similarly, <inline-formula id="j_infor572_ineq_041"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$v(n)=1$]]></tex-math></alternatives></inline-formula>. Later, after the <inline-formula id="j_infor572_ineq_042"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(n-1)$]]></tex-math></alternatives></inline-formula>-th element, we can add a structural break at the data point in <italic>n</italic> or cease adding more structural breaks. We can assume that these two events are equally probable. So, <inline-formula id="j_infor572_ineq_043"><alternatives><mml:math>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$E[v(n-1)]=1+\frac{1}{2}E[v(n)]+\frac{1}{2}E[v(n+1)]$]]></tex-math></alternatives></inline-formula>. This way, we can formulate the method to estimate <inline-formula id="j_infor572_ineq_044"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$v(k)$]]></tex-math></alternatives></inline-formula> value. 
<disp-formula id="j_infor572_eq_024">
<label>(24)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">[</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" stretchy="false">]</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ E\big[v(k)\big]=\left\{\begin{array}{l@{\hskip4.0pt}l}0,\hspace{1em}& k=n+1,\\ {} 1+\frac{1}{(n+1)-k}{\textstyle\textstyle\sum _{i=k+1}^{n+1}}E[v(i)],\hspace{1em}& k\lt n+1.\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The method allows estimating the count of structural breaks after the <italic>k</italic>-th time series element in time <inline-formula id="j_infor572_ineq_045"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(n)$]]></tex-math></alternatives></inline-formula>.</p>
</sec>
<sec id="j_infor572_s_025">
<label>4.4.2</label>
<title>Particle Swarm Optimization Adaptations</title>
<p>Since PSO is an algorithm operating in a continuous space, its application to the structural break detection problem requires adaptations. We have solved this problem by creating an upper limit on the produced structural breaks (<italic>k</italic>) count. A solution was represented as a list of <italic>k</italic> structural break locations. A similar solution to the problem was presented by Éltetö <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_023">2012</xref>), but they restricted that elements in the array will always be different and sorted. We did not add such a limitation. It gave us the advantage that our PSO implementation could detect fewer structural breaks, even zero.</p>
</sec>
<sec id="j_infor572_s_026">
<label>4.4.3</label>
<title>Genetic Algorithm Adaptation</title>
<p>We used the traditional genetic algorithm formulation with tournament selection, with two-point crossover. We used mutation similar to bit flip mutation, where each bit described if an <italic>i</italic>-th point of time series is a structural break. Still, there was a minor modification because the probability to change 0 to 1 and 1 to 0 could not be equal – we proposed a parameter which was promoting mutations that removed structural breaks and discouraging mutations that were adding structural breaks.</p>
</sec>
</sec>
<sec id="j_infor572_s_027">
<label>4.5</label>
<title>Time Complexity of Analysed Algorithms</title>
<p>While designing the new solutions, we paid a lot of attention to the issue of computational complexity. It was critical since the problem at hand involved intensive computations. The algorithms we used needed information about cost function value linked with time series segments. The information could be calculated dynamically during the computation of a structural break or eager (earlier) before the computation. The second strategy seems more straightforward as we divide our task into two sub-tasks: computation of a cost function for all possible segments and finding structural breaks. It is viable only for short time series because executing it for long time series would induce many redundant calculations.</p>
<p>Let us address in more detail the computational complexity of finding structural breaks. We will mark population size as <italic>P</italic>, iteration count as <italic>N</italic>, length of time series as <italic>n</italic>, and time needed to get cost function for the segment as <italic>C</italic>. If we use precalculated values for it, <italic>C</italic> is constant. In PSO, two procedures: modification of the solution and its evaluation, are performed in each iteration. The time complexity of modification is proportional to the maximum count of structural breaks in the solution, which is a parameter of the algorithm, and we will denote it as <italic>K</italic>. So, the time complexity of evaluation is proportional to the product of <italic>K</italic> and <italic>C</italic>. Thus, the time complexity of PSO can be expressed as: 
<disp-formula id="j_infor572_eq_025">
<label>(25)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">PSO</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{\textit{PSO}}}=O(P\cdot N\cdot K\cdot C).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>In each iteration, GA performs selection, mutation, crossover, and evaluation. The time complexity of two-point crossover and mutation is <inline-formula id="j_infor572_ineq_046"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(n)$]]></tex-math></alternatives></inline-formula> and the time complexity of tournament selection is <inline-formula id="j_infor572_ineq_047"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">T</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(T)$]]></tex-math></alternatives></inline-formula>, where <italic>T</italic> is a tournament size. The time series evaluation cost is <inline-formula id="j_infor572_ineq_048"><alternatives><mml:math>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi></mml:math><tex-math><![CDATA[$K\cdot C$]]></tex-math></alternatives></inline-formula>. However, <italic>K</italic> is not constant, but it is a number not larger than <italic>n</italic>. Thus, the time complexity of GA is given as: 
<disp-formula id="j_infor572_eq_026">
<label>(26)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">T</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{GA}}=O\big(P\cdot N\cdot (T+n\cdot C)\big).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>ACO performs three operations: construction of a new solution, evaluation, and updating pheromone trace in each iteration. During solution construction, an ant calculates probabilities and needs knowledge of cost function at analysed time series segments, which is done in <inline-formula id="j_infor572_ineq_049"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(n\cdot C)$]]></tex-math></alternatives></inline-formula> time. The maximum count of detected structural breaks is <inline-formula id="j_infor572_ineq_050"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(n)$]]></tex-math></alternatives></inline-formula>. Thus, the construction of a single solution is calculated in <inline-formula id="j_infor572_ineq_051"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({n^{2}}\cdot C)$]]></tex-math></alternatives></inline-formula> time. The solution evaluation is in <inline-formula id="j_infor572_ineq_052"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(n\cdot C)$]]></tex-math></alternatives></inline-formula> time. The update of the pheromone trace is made for all ants together and has three important parts: 
<list>
<list-item id="j_infor572_li_043">
<label>1.</label>
<p>Sorting solutions calculated by ants in time <inline-formula id="j_infor572_ineq_053"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({P^{2}})$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_infor572_li_044">
<label>2.</label>
<p>Pheromone evaporation in <inline-formula id="j_infor572_ineq_054"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({n^{2}})$]]></tex-math></alternatives></inline-formula> time.</p>
</list-item>
<list-item id="j_infor572_li_045">
<label>3.</label>
<p>Putting new pheromone int time <inline-formula id="j_infor572_ineq_055"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(B\cdot n)$]]></tex-math></alternatives></inline-formula>, where <italic>B</italic> is the count of ants putting pheromone (we know that <inline-formula id="j_infor572_ineq_056"><alternatives><mml:math>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi></mml:math><tex-math><![CDATA[$B\lt P$]]></tex-math></alternatives></inline-formula>).</p>
</list-item>
</list> 
Thus, the pessimistic complexity of the ant algorithm is given as: 
<disp-formula id="j_infor572_eq_027">
<label>(27)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">ACO</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {t_{\textit{ACO}}}=O\big(N\cdot P\cdot {n^{2}}\cdot C+N\cdot \big({P^{2}}+{n^{2}}+B\cdot n\big)\big)=O\big(P\cdot N\cdot \big({n^{2}}\cdot C+P\big)\big).\]]]></tex-math></alternatives>
</disp-formula>
</p>
</sec>
</sec>
<sec id="j_infor572_s_028">
<label>5</label>
<title>Experimental Evaluation</title>
<sec id="j_infor572_s_029">
<label>5.1</label>
<title>Experiment Methodology</title>
<p>In this section, we present the experiments’ outcomes to validate the quality of the proposed novel methods. The scope of the study covered both artificial and real-world time series representing different situations. Most of the analysed time series were relatively short, since conventional structural break detection tasks are executed for such cases. We analysed eight synthesized time series, which included instances with different numbers of structural breaks, appearing and disappearing trends, and changing time series mean and variance. There was also an example of a white noise time series with added variation, in which the algorithms should not detect any structural breaks. We have defined “test cases” of synthetic time series. We assumed some underlying time series properties for each test case and then generated each test case multiple times, maintaining the same underlying properties but with some random noise. This entailed that the experiments were repeated multiple times for each test case. Specific differences between particular time series instances within a single “case” arise only because we draw values, but the parameters of distributions we use stay the same.</p>
<p>On top of ten synthetic series, we used two real-world time series representing the power demand of a fridge freezer in a kitchen. They come from the Electrical Load Measurement dataset by Murray <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_043">2015</xref>).<xref ref-type="fn" rid="j_infor572_fn_001">1</xref><fn id="j_infor572_fn_001"><label><sup>1</sup></label>
<p>The dataset is available at <ext-link ext-link-type="uri" xlink:href="https://www.timeseriesclassification.com/description.php?Dataset=FreezerRegularTrain">https://www.timeseriesclassification.com/description.php?Dataset=FreezerRegularTrain</ext-link></p></fn> Example time series from the synthetic test cases are displayed in Fig. <xref rid="j_infor572_fig_004">1</xref>. Processed real-world time series are illustrated in Fig. <xref rid="j_infor572_fig_005">2</xref>.</p>
<p>Let us list and briefly discuss synthetic test cases:</p>
<list>
<list-item id="j_infor572_li_046">
<label>1.</label>
<p>Time series composed of two segments with the same segment variance but different segment mean (an example is given in Fig. <xref rid="j_infor572_fig_004">1</xref>(a)).</p>
</list-item>
<list-item id="j_infor572_li_047">
<label>2.</label>
<p>Time series composed of two segments with the same mean and different segment variance (an example is given in Fig. <xref rid="j_infor572_fig_004">1</xref>(b)).</p>
</list-item>
<list-item id="j_infor572_li_048">
<label>3.</label>
<p>Time series composed of two segments generated with the use of different AR models (<inline-formula id="j_infor572_ineq_057"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0.9</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${y_{t}}=0.9{y_{t-1}}+{\varepsilon _{t}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor572_ineq_058"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.9</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${y_{t}}=-0.9{y_{t-1}}+{\varepsilon _{t}}$]]></tex-math></alternatives></inline-formula>). In the first three examples, two segments have equal length (like in Fig. <xref rid="j_infor572_fig_004">1</xref>(c)).</p>
</list-item>
<list-item id="j_infor572_li_049">
<label>4.</label>
<p>Test case without structural breaks. It is a white noise series with a small random distortion (example is in Fig. <xref rid="j_infor572_fig_004">1</xref>(d)).</p>
<p>
<fig id="j_infor572_fig_004">
<label>Fig. 1</label>
<caption>
<p>Example time series coming from artificial test cases analysed in the paper.</p>
</caption>
<graphic xlink:href="infor572_g004.jpg"/>
</fig>
</p>
<p>
<fig id="j_infor572_fig_005">
<label>Fig. 2</label>
<caption>
<p>Two real-world time series describing fridge freezer power demand.</p>
</caption>
<graphic xlink:href="infor572_g005.jpg"/>
</fig>
</p>
</list-item>
<list-item id="j_infor572_li_050">
<label>5.</label>
<p>Test case where time series start with a long and low-variance segment, but at the end there is a short, but intense, rise of values (example is in Fig. <xref rid="j_infor572_fig_004">1</xref>(e)).</p>
</list-item>
<list-item id="j_infor572_li_051">
<label>6.</label>
<p>Time series composed of three segments, where the first and the third segments are identical and have a fixed mean and variance. The segment in the middle has a larger variance than the other two segments (see Fig. <xref rid="j_infor572_fig_004">1</xref>(f)).</p>
</list-item>
<list-item id="j_infor572_li_052">
<label>7.</label>
<p>Test case, which follows a parabolic pattern with low variance of data points. An example is given in Fig. <xref rid="j_infor572_fig_004">1</xref>(g)).</p>
</list-item>
<list-item id="j_infor572_li_053">
<label>8.</label>
<p>Time series generated using the AR model based on the equation: 
<disp-formula id="j_infor572_eq_028">
<label>(28)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfenced separators="" open="{" close="">
<mml:mrow>
<mml:mtable columnspacing="4.0pt" equalrows="false" columnlines="none" equalcolumns="false" columnalign="left left">
<mml:mtr>
<mml:mtd class="array">
<mml:mn>0.9</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>512</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>1.69</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>0.81</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mn>512</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mn>768</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array">
<mml:mn>1.32</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>0.81</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd class="array">
<mml:mn>768</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mn>1024</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {y_{t}}=\left\{\begin{array}{l@{\hskip4.0pt}l}0.9{y_{t-1}}+{\varepsilon _{t}},\hspace{1em}& 0\leqslant t\leqslant 512,\\ {} 1.69{y_{t-1}}-0.81{y_{t-2}}+{\varepsilon _{t}},\hspace{1em}& 512\leqslant t\lt 768,\\ {} 1.32{y_{t-1}}-0.81{y_{t-2}}+{\varepsilon _{t}},\hspace{1em}& 768\leqslant t\lt 1024\end{array}\right.\]]]></tex-math></alternatives>
</disp-formula> 
(example is in Fig. <xref rid="j_infor572_fig_004">1</xref>(h)).</p>
</list-item>
</list>
<p>To eliminate the possible bias arising due to the randomness of the empirical methodology of this study, we have been performing multiple repetitions of the experiments. For each synthesized test case, we generated 10 time series instances with different random number generator seeds. Experiments were executed for each generated time series. As a result, we performed 10 repetitions of each experiment for each test case. Our motivation was to ensure a reasonable variability of the data by maintaining the same data generation process that relies on drawing from distributions. To keep the same level of objectivity in result evaluation, in the case of the real-world time series, we were also repeating the experiments 10 times.</p>
<p>The outcomes of the experiments that were conducted involving different algorithms were compared with each other and with the outcomes obtained by other researchers. We assume three state-of-the-art methods, which we use for such comparisons. The first is the method proposed by Bai and Perron (<xref ref-type="bibr" rid="j_infor572_ref_003">1998</xref>), Bai and Perron (<xref ref-type="bibr" rid="j_infor572_ref_004">2003</xref>), and the second is ClaSP by Ermshaus <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_024">2023</xref>). The third is the method by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>), which can be seen as the immediate predecessor of the approach introduced in this paper. In the first two cases, we run the algorithm to produce the results, but in the third case, we compare our results to those presented by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_017">2006</xref>) using analogous time series examples.</p>
<p>We propose two metrics for the evaluation of the outcomes of structural break detection procedures: 
<list>
<list-item id="j_infor572_li_054">
<label>•</label>
<p>break point difference (BPD) – absolute value of the difference between the found and correct count of structural breaks,</p>
</list-item>
<list-item id="j_infor572_li_055">
<label>•</label>
<p>score value (SC): 
<disp-formula id="j_infor572_eq_029">
<label>(29)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>∗</mml:mo>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mo movablelimits="false">max</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msqrt>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ SC=\sqrt{k\ast BP{D^{2}}+\max ({t_{m}}-m,0)\cdot \frac{1}{4}+{\sum \limits_{i=0}^{m}}{\bigg(\frac{{x_{i}}-c({x_{i}})}{n}\bigg)^{2}}},\]]]></tex-math></alternatives>
</disp-formula> 
where:</p>
<list>
<list-item id="j_infor572_li_056">
<label>–</label>
<p><italic>k</italic> is a user parameter, which in our experiments was set to 4 based on our experience with this measure,</p>
</list-item>
<list-item id="j_infor572_li_057">
<label>–</label>
<p><inline-formula id="j_infor572_ineq_059"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{m}}$]]></tex-math></alternatives></inline-formula> is the target count of structural breaks,</p>
</list-item>
<list-item id="j_infor572_li_058">
<label>–</label>
<p><inline-formula id="j_infor572_ineq_060"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${x_{i}}$]]></tex-math></alternatives></inline-formula> are locations of consecutive structural breaks,</p>
</list-item>
<list-item id="j_infor572_li_059">
<label>–</label>
<p><inline-formula id="j_infor572_ineq_061"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$c({x_{i}})$]]></tex-math></alternatives></inline-formula> is a function that returns location of correct structural break closest to <inline-formula id="j_infor572_ineq_062"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${x_{i}}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
</list-item>
</list> 
The proposed method of results evaluation is our novel contribution, which is introduced in this paper.</p>
</sec>
<sec id="j_infor572_s_030">
<label>5.2</label>
<title>Experimental Evaluation of Analysed Cost Functions</title>
<p>At first, we compared results obtained with the MDL, SPF1, SPF2, EMDL, DCF, and PDCF cost functions. We used both the AR and ARIMA models and both versions of the cost function: with and without a weight for deviation from a linear trend. The experiments concerned seven synthetic time series and two real-world time series. The only omitted case is Fig. <xref rid="j_infor572_fig_004">1</xref>(h), which will be discussed in detail in Section <xref rid="j_infor572_s_035">7</xref>.</p>
<p>Experiments were performed using PSO with parameters <inline-formula id="j_infor572_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula>: <inline-formula id="j_infor572_ineq_064"><alternatives><mml:math>
<mml:mi mathvariant="italic">ω</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.1832</mml:mn></mml:math><tex-math><![CDATA[$\omega =-0.1832$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_065"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0.5287</mml:mn></mml:math><tex-math><![CDATA[${c_{1}}=0.5287$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_066"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>3.1913</mml:mn></mml:math><tex-math><![CDATA[${c_{2}}=3.1913$]]></tex-math></alternatives></inline-formula>, population size 47. These parameters come from Hvass Pedersen (<xref ref-type="bibr" rid="j_infor572_ref_030">2010</xref>). We have tested 188 variants of cost functions: 164 for the AR model and 22 for the ARIMA model. In principle, we have employed a grid search of procedure parameters for SPF1, SPF2, EMDL, DCF, and PDCF functions with the AR model. In the case of ARIMA, we have performed fewer tests due to a more considerable computational complexity – we tested a subset of configurations close to the configurations, for which results for the corresponding functions with the AR model were good.</p>
<p>A detailed discussion on optimization algorithms hyperparameters and their fitting is provided in Section <xref rid="j_infor572_s_031">6</xref>.</p>
<p>Our results were evaluated with the use of BPD and SC metrics and conclusions attained with use of both were very similar. The best results (assessed with the use of BPD and SC metrics) were obtained consecutively for configurations: EMDL<inline-formula id="j_infor572_ineq_067"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_068"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_069"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>), EMDL<inline-formula id="j_infor572_ineq_070"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_071"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_072"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>), MDL<inline-formula id="j_infor572_ineq_073"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula>, all without involvement of the MSE modification. There were also other cost functions which led to noteworthy results. The most interesting configurations are presented in Table <xref rid="j_infor572_tab_001">1</xref> and Table <xref rid="j_infor572_tab_002">2</xref>.</p>
<table-wrap id="j_infor572_tab_001">
<label>Table 1</label>
<caption>
<p>BPD score for the best-performing cost functions.</p>
</caption>
<table>
<thead>
<tr>
<td colspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cost function</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">MSE</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_074"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_075"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_076"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">1.1</td>
<td style="vertical-align: top; text-align: left">0.3</td>
<td style="vertical-align: top; text-align: left">0.27</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_077"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_078"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_079"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">1.2</td>
<td style="vertical-align: top; text-align: left">0.3</td>
<td style="vertical-align: top; text-align: left">0.29</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">MDL<inline-formula id="j_infor572_ineq_080"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">1.3</td>
<td style="vertical-align: top; text-align: left">0.2</td>
<td style="vertical-align: top; text-align: left">0.30</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">MDL<inline-formula id="j_infor572_ineq_081"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">2.5</td>
<td style="vertical-align: top; text-align: left">1.2</td>
<td style="vertical-align: top; text-align: left">0.5</td>
<td style="vertical-align: top; text-align: left">0.47</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">DCF<inline-formula id="j_infor572_ineq_082"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_083"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\mu =1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_084"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\nu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_085"><alternatives><mml:math>
<mml:mi mathvariant="italic">δ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.5</mml:mn></mml:math><tex-math><![CDATA[$\delta =0.5$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.9</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.8</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.52</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">PDCF<inline-formula id="j_infor572_ineq_086"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_087"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_088"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\nu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_089"><alternatives><mml:math>
<mml:mi mathvariant="italic">δ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\delta =2$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.7</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.52</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF<inline-formula id="j_infor572_ineq_090"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_091"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_092"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.8</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.3</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">0.4</td>
<td style="vertical-align: top; text-align: left">0.5</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.68</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF2<inline-formula id="j_infor572_ineq_093"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_094"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_095"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.2</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.5</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">2.8</td>
<td style="vertical-align: top; text-align: left">0.3</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.76</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF<inline-formula id="j_infor572_ineq_096"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_097"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_098"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">+</td>
<td style="vertical-align: top; text-align: left">0.2</td>
<td style="vertical-align: top; text-align: left">0.7</td>
<td style="vertical-align: top; text-align: left">0.8</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">1.4</td>
<td style="vertical-align: top; text-align: left">0.4</td>
<td style="vertical-align: top; text-align: left">3.7</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.81</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">SPF2<inline-formula id="j_infor572_ineq_099"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_100"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_101"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">+</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.9</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.8</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.8</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.9</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.86</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor572_tab_002">
<label>Table 2</label>
<caption>
<p>SC score for the best-performing cost functions.</p>
</caption>
<table>
<thead>
<tr>
<td colspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cost function</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Type</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">MSE</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_102"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_103"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_104"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.019</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.007</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.013</td>
<td style="vertical-align: top; text-align: left">0.004</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">2.265</td>
<td style="vertical-align: top; text-align: left">1.203</td>
<td style="vertical-align: top; text-align: left">0.619</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_105"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_106"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_107"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.009</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.011</td>
<td style="vertical-align: top; text-align: left">0.224</td>
<td style="vertical-align: top; text-align: left">2.036</td>
<td style="vertical-align: top; text-align: left">2.465</td>
<td style="vertical-align: top; text-align: left">1.181</td>
<td style="vertical-align: top; text-align: left">0.659</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">MDL<inline-formula id="j_infor572_ineq_108"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.225</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.007</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.028</td>
<td style="vertical-align: top; text-align: left">0.218</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">2.673</td>
<td style="vertical-align: top; text-align: left">1.051</td>
<td style="vertical-align: top; text-align: left">0.659</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">MDL<inline-formula id="j_infor572_ineq_109"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.019</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.009</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.013</td>
<td style="vertical-align: top; text-align: left">5.023</td>
<td style="vertical-align: top; text-align: left">2.465</td>
<td style="vertical-align: top; text-align: left">1.432</td>
<td style="vertical-align: top; text-align: left">0.996</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">DCF<inline-formula id="j_infor572_ineq_110"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_111"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\mu =1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_112"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\nu =0.1$]]></tex-math></alternatives></inline-formula> <inline-formula id="j_infor572_ineq_113"><alternatives><mml:math>
<mml:mi mathvariant="italic">δ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.5</mml:mn></mml:math><tex-math><![CDATA[$\delta =0.5$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.050</td>
<td style="vertical-align: top; text-align: left">0.008</td>
<td style="vertical-align: top; text-align: left">0.009</td>
<td style="vertical-align: top; text-align: left">1.800</td>
<td style="vertical-align: top; text-align: left">0.060</td>
<td style="vertical-align: top; text-align: left">0.010</td>
<td style="vertical-align: top; text-align: left">1.679</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.082</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">PDCF<inline-formula id="j_infor572_ineq_114"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_115"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_116"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\nu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_117"><alternatives><mml:math>
<mml:mi mathvariant="italic">δ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\delta =2$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.050</td>
<td style="vertical-align: top; text-align: left">0.008</td>
<td style="vertical-align: top; text-align: left">0.008</td>
<td style="vertical-align: top; text-align: left">2.000</td>
<td style="vertical-align: top; text-align: left">0.081</td>
<td style="vertical-align: top; text-align: left">0.018</td>
<td style="vertical-align: top; text-align: left">1.473</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.085</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF<inline-formula id="j_infor572_ineq_118"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_119"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_120"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">1.652</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">0.624</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">1.087</td>
<td style="vertical-align: top; text-align: left">1.042</td>
<td style="vertical-align: top; text-align: left">0.293</td>
<td style="vertical-align: top; text-align: left">1.431</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF2<inline-formula id="j_infor572_ineq_121"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_122"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_123"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">0.505</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">1.045</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">5.659</td>
<td style="vertical-align: top; text-align: left">0.630</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">1.552</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">SPF<inline-formula id="j_infor572_ineq_124"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_125"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_126"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">+</td>
<td style="vertical-align: top; text-align: left">0.421</td>
<td style="vertical-align: top; text-align: left">1.517</td>
<td style="vertical-align: top; text-align: left">1.639</td>
<td style="vertical-align: top; text-align: left">0.200</td>
<td style="vertical-align: top; text-align: left">2.866</td>
<td style="vertical-align: top; text-align: left">0.891</td>
<td style="vertical-align: top; text-align: left">7.418</td>
<td style="vertical-align: top; text-align: left">0.010</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">1.662</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">SPF2<inline-formula id="j_infor572_ineq_127"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_128"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_129"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">+</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.215</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.902</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.640</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.200</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.015</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.699</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.844</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.009</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.217</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.749</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Let us discuss the behaviour of various cost functions in more detail. For the simplest cases, analysed functions perform very well. For test case <xref rid="j_infor572_fig_004">1</xref>(a) most of the cost functions in almost each run correctly detect places where the average value of time series changes. The exception was SPF<inline-formula id="j_infor572_ineq_130"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_131"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_132"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>) with no MSE modification, which did not find any structural break.</p>
<p>Most of analysed methods correctly find the place where the variance changes (test case <xref rid="j_infor572_fig_004">1</xref>(b)). Problems have only SPF and SPF2 methods. They generally did not detect a break in such a case. The SPF<inline-formula id="j_infor572_ineq_133"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_134"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_135"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>) with MSE is an exception, because it finds structural breaks but locates them in incorrect places.</p>
<p>Most of presented cost functions detect change between two different AR models very well (case <xref rid="j_infor572_fig_004">1</xref>(c)). The exception are methods involving MSE modification. They detect usually two structural breaks and only small part of them is close to correct structural break location.</p>
<p>Most of presented cost functions correctly solved the task of processing white noise time series (case <xref rid="j_infor572_fig_004">1</xref>(d)). The expected outcome in this scenario is not to return any structural breaks. The only cost functions which almost always failed the test are the PDCF and DCF cost functions.</p>
<p>Test case <xref rid="j_infor572_fig_004">1</xref>(e) contained series composed of two segments: white noise and a segment with a trend. In this scenario, the classical MDL and the elastic MDL rule produced excellent outcomes. PDCF and DCF cost functions were less precise, but they detected one structural break near the expected location (slightly too early). Methods based on penalty cost function in most cases returned more than one structural break. Usually one of them was in the expected location (with the exception of configuration SPF<inline-formula id="j_infor572_ineq_136"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_137"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_138"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>) without MSE where no structural breaks were found.</p>
<p>Result obtained for the test cases composed of three segments of the same length (case <xref rid="j_infor572_fig_004">1</xref>(f)) were generally good. Only SPF and SPF2 cost functions had problems. The configurations did not detect any structural break or detected (often more than one) in incorrect places.</p>
<p>The next test case concentrated on a rather theoretical example, where time series was the shape of a parabola (see Fig. <xref rid="j_infor572_fig_004">1</xref>(g)). The parabola case is very difficult as there are many viable locations of structural breaks. In this test case, the introduced BPD and SC scores are not very informative and a valid evaluation must be manual. The experiments have shown, that the methods including the MSE modification and SPF2<inline-formula id="j_infor572_ineq_139"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_140"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_141"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\nu =10$]]></tex-math></alternatives></inline-formula>) detected too many structural breaks and were not very practical. Conversely, cost functions employing the ARIMA model had a strong tendency not to detect any structural change. Results generated by SPF<inline-formula id="j_infor572_ineq_142"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_143"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\mu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_144"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>) also were very impractical (one structural break detected closely to start or end of time series). Other cost functions usually allowed for detecting a few structural changes near the <inline-formula id="j_infor572_ineq_145"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{1}{4}$]]></tex-math></alternatives></inline-formula>th and the <inline-formula id="j_infor572_ineq_146"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{3}{4}$]]></tex-math></alternatives></inline-formula>th of the time series length. The best results were obtained with the EMDL<inline-formula id="j_infor572_ineq_147"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_148"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_149"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>) model.</p>
<p>The last two examples were the real-world time series describing fridge freezer power demand. We analysed two examples. First, where the freezer was turned on and turned off after some time (case <xref rid="j_infor572_fig_005">2</xref>(a)). Second, where the freezer was turned on and was working until the end of the time series (case <xref rid="j_infor572_fig_005">2</xref>(b)). The best results were obtained for chosen configurations of SPF and SPF2 methods. For case <xref rid="j_infor572_fig_005">2</xref>(a) they allowed for a correct detection of both structural breaks and for case <xref rid="j_infor572_fig_005">2</xref>(b) the same methods returned one structural break in the correct location. It is worth to say that cost function variants using MSE modification give more reliable results for case <xref rid="j_infor572_fig_005">2</xref>(a). All other cost functions listed in the tables did not find any structural break or found one near to the end of the time series. The latter behaviour is a result of a phenomenon which will be discussed in the next subsection.</p>
<p>We have observed that the proposed cost functions enhance time series processing capabilities for structural break detection algorithms. Noteworthy, for all of the proposed cost functions, we can find a set of parameters that works very well for various test cases. Furthermore, we will demonstrate in Section <xref rid="j_infor572_s_035">7</xref> that the proposed cost functions are generally better performing than the state-of-the-art MDL<inline-formula id="j_infor572_ineq_150"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula> cost function. Promising results have been achieved with the use of the SPF and SPF2 cost functions. Their superiority was the clearest when we processed real-world time series. Their only weakness is that they may tend to output incorrect structural break count – too many or too few, more often too many, especially when the methods are used with MSE modification.</p>
<p>The empirical experiments have shown that the cost functions using the ARIMA model are very good, and in many cases, they are better than the ones using the AR model. Their weak point is computational complexity, which is higher, and this difference grows as the time series length increases. For example, it took only 0.3s for the AR model to calculate MDL cost function partial values for all possible time series segments for the test case with 50 data points and 190.0s for ARIMA. In contrast, for a case with 100 data points, it took 1.4s and 937.7s, respectively. This shows that cost functions using the ARIMA model are helpful for short time series. In practice, it is not a severe limitation for many real-world domains applying break detection methods (such as economics), in which relatively short time series are of interest.</p>
<p>The proposed objective functions punish for deviations from theoretical models constructed on developed segments. Therefore, if these models cannot reflect the underlying data well, there is no reasonable justification to apply this model. If the data contains a clearly visible and changing trend, the recommended choice is an objective function that punishes deviations from theoretical models. The component that punishes for short intervals should we weighted as less important. Punishing for deviations from a theoretical model is a lousy strategy for high-variance time series or if variance is the crucial distinction for subsequent segments. In this case, punishing for short segments and diminishing the punishment for deviations from theoretical models is much better.</p>
</sec>
</sec>
<sec id="j_infor572_s_031">
<label>6</label>
<title>Parameter Fitting and a Comparison Between PSO, GA, and ACO</title>
<p>In this section, we present a study on the impact of hyperparameters on the heuristic algorithms. We performed these experiments with the use of classical AR MDL cost function without the MSE modification due to its good reputation and long presence in literature. The objective of these experiments was to demonstrate technical validity of parameter selection for the optimizers. Such a study is necessary in methods utilizing heuristic approaches. While it does not deliver new results concerning the algorithmic level, it shows the behaviour of the procedure and allows to verify its stability and robustness.</p>
<sec id="j_infor572_s_032">
<label>6.1</label>
<title>PSO</title>
<p>We performed tests for 3 configurations of PSO:</p>
<list>
<list-item id="j_infor572_li_060">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_151"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula>: <inline-formula id="j_infor572_ineq_152"><alternatives><mml:math>
<mml:mi mathvariant="italic">ω</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.1832</mml:mn></mml:math><tex-math><![CDATA[$\omega =-0.1832$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_153"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0.5287</mml:mn></mml:math><tex-math><![CDATA[${c_{1}}=0.5287$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_154"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>3.1913</mml:mn></mml:math><tex-math><![CDATA[${c_{2}}=3.1913$]]></tex-math></alternatives></inline-formula> with population size 47 (these parameters come from Hvass Pedersen, <xref ref-type="bibr" rid="j_infor572_ref_030">2010</xref>),</p>
</list-item>
<list-item id="j_infor572_li_061">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_155"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{12}}$]]></tex-math></alternatives></inline-formula>: <inline-formula id="j_infor572_ineq_156"><alternatives><mml:math>
<mml:mi mathvariant="italic">ω</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.8</mml:mn></mml:math><tex-math><![CDATA[$\omega =0.8$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_157"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[${c_{1}}=2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_158"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[${c_{2}}=2$]]></tex-math></alternatives></inline-formula> (used by Charalampakis and Dimou, <xref ref-type="bibr" rid="j_infor572_ref_010">2010</xref>) with population size 20,</p>
</list-item>
<list-item id="j_infor572_li_062">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_159"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{13}}$]]></tex-math></alternatives></inline-formula>: <inline-formula id="j_infor572_ineq_160"><alternatives><mml:math>
<mml:mi mathvariant="italic">ω</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.5</mml:mn></mml:math><tex-math><![CDATA[$\omega =0.5$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_161"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1.8</mml:mn></mml:math><tex-math><![CDATA[${c_{1}}=1.8$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_162"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>2.29</mml:mn></mml:math><tex-math><![CDATA[${c_{2}}=2.29$]]></tex-math></alternatives></inline-formula> with population size 40, being an own modification of the previous set of parameters.</p>
</list-item>
</list>
<p>All the experiments were performed with maximal limit of 10 detected structural breaks. Tables <xref rid="j_infor572_tab_003">3</xref> and <xref rid="j_infor572_tab_004">4</xref> present results for these configurations.</p>
<table-wrap id="j_infor572_tab_003">
<label>Table 3</label>
<caption>
<p>BPD score for different PSO configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_163"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">2.5</td>
<td style="vertical-align: top; text-align: left">1.2</td>
<td style="vertical-align: top; text-align: left">0.5</td>
<td style="vertical-align: top; text-align: left">0.467</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_164"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{12}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">2.6</td>
<td style="vertical-align: top; text-align: left">1.7</td>
<td style="vertical-align: top; text-align: left">0.9</td>
<td style="vertical-align: top; text-align: left">0.578</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_165"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{13}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.6</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.9</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.611</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor572_tab_004">
<label>Table 4</label>
<caption>
<p>SC score for different PSO configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_166"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.019</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.009</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.013</td>
<td style="vertical-align: top; text-align: left">5.023</td>
<td style="vertical-align: top; text-align: left">2.465</td>
<td style="vertical-align: top; text-align: left">1.432</td>
<td style="vertical-align: top; text-align: left">0.996</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_167"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{12}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.019</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.009</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.018</td>
<td style="vertical-align: top; text-align: left">5.224</td>
<td style="vertical-align: top; text-align: left">3.463</td>
<td style="vertical-align: top; text-align: left">1.936</td>
<td style="vertical-align: top; text-align: left">1.186</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_168"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{13}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.019</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.001</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.009</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.006</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.014</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">5.222</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.862</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.244</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>According to the two presented metrics, the best results achieved using PSO were for the parameter configuration <inline-formula id="j_infor572_ineq_169"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula>. All tested configurations produced excellent results for the first six case studies (<xref rid="j_infor572_fig_004">1</xref>(a)–<xref rid="j_infor572_fig_004">1</xref>(f)).</p>
<p>The most interesting observations were made for the real-world time series. All named configurations did not locate structural breaks in the correct locations and found none or one structural break close to the end of the time series. The detection of such structural breaks (near or precisely at the end of a sequence) is a side effect of the algorithm’s operations. During the optimization procedure, each structural break location is treated as a variable, and it can change its position in time series. A variable at the end of the time series is treated as if the structural break did not exist. This, however, may result in the observed adverse effect. If a time series is challenging, we may end up with incorrectly identified structural breaks near the end. The described behaviour did not occur for configuration <inline-formula id="j_infor572_ineq_170"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{13}}$]]></tex-math></alternatives></inline-formula>, but it appeared for <inline-formula id="j_infor572_ineq_171"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{12}}$]]></tex-math></alternatives></inline-formula>, where the population count was smaller (20), and for <inline-formula id="j_infor572_ineq_172"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula>, probably due to the negative inertia.</p>
</sec>
<sec id="j_infor572_s_033">
<label>6.2</label>
<title>GA</title>
<table-wrap id="j_infor572_tab_005">
<label>Table 5</label>
<caption>
<p>BPD score for different GA configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_173"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>21</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{21}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.5</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.500</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_174"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{22}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.5</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.522</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_175"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{23}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.2</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.4</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.522</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_176"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>24</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{24}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.6</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.533</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor572_tab_006">
<label>Table 6</label>
<caption>
<p>SC score for different GA configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_177"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>21</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{21}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.029</td>
<td style="vertical-align: top; text-align: left">0.030</td>
<td style="vertical-align: top; text-align: left">0.012</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.049</td>
<td style="vertical-align: top; text-align: left">0.067</td>
<td style="vertical-align: top; text-align: left">3.027</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.038</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_178"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{22}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.235</td>
<td style="vertical-align: top; text-align: left">0.018</td>
<td style="vertical-align: top; text-align: left">0.021</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.249</td>
<td style="vertical-align: top; text-align: left">0.053</td>
<td style="vertical-align: top; text-align: left">3.028</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.081</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_179"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{23}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.245</td>
<td style="vertical-align: top; text-align: left">0.041</td>
<td style="vertical-align: top; text-align: left">0.417</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.065</td>
<td style="vertical-align: top; text-align: left">0.081</td>
<td style="vertical-align: top; text-align: left">2.827</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.089</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_180"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>24</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{24}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.244</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.028</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.211</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.039</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.054</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.230</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.103</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For the GA we ran the experiments on a grid of parameters. We have tested mutation probabilities from the set <inline-formula id="j_infor572_ineq_181"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0.0125</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.0083</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.0033</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{0.0125,0.0083,0.0033\}$]]></tex-math></alternatives></inline-formula>, crossover probabilities from the set <inline-formula id="j_infor572_ineq_182"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0.2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.8</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{0.2,0.5,0.8\}$]]></tex-math></alternatives></inline-formula>, tournament sizes <inline-formula id="j_infor572_ineq_183"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>8</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{2,8\}$]]></tex-math></alternatives></inline-formula>, population size 40 and using small direction modification (0.2) or not.</p>
<p>Both metrics indicated the same best-performing parameter configurations listed below:</p>
<list>
<list-item id="j_infor572_li_063">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_184"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>21</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{21}}$]]></tex-math></alternatives></inline-formula>: mutation probability: 0.0083, crossover probability: 0.5, tournament size: 8, population size: 40, no direction modification,</p>
</list-item>
<list-item id="j_infor572_li_064">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_185"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{22}}$]]></tex-math></alternatives></inline-formula>: mutation probability: 0.0125, crossover probability: 0.5, tournament size: 8, population size: 40, no direction modification,</p>
</list-item>
<list-item id="j_infor572_li_065">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_186"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{23}}$]]></tex-math></alternatives></inline-formula>: mutation probability: 0.0083, crossover probability: 0.2, tournament size: 8, population size: 40, no direction modification,</p>
</list-item>
<list-item id="j_infor572_li_066">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_187"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>24</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{24}}$]]></tex-math></alternatives></inline-formula>: mutation probability: 0.0033, crossover probability: 0.5, tournament size: 8, population size: 40, no direction modification.</p>
</list-item>
</list>
<p>The results calculated for listed configurations are in Tables <xref rid="j_infor572_tab_005">5</xref> and <xref rid="j_infor572_tab_006">6</xref>.</p>
<p>The analysis showed that it was generally better not to use the direction modification. The average value of the SC metrics of the results concerning the direction modification was 1.467, while the average for the results without it was 1.187. For various values of mutation probability, crossover probability, and tournament size, mean SC metrics fluctuations were very little, especially compared to concerning mutation modification influence.</p>
<p>Qualitative analysis of the experiments’ results showed that the outcomes were quite similar for all tested GA parameters. There were minor differences in the count of detected structural breaks in a few cases.</p>
</sec>
<sec id="j_infor572_s_034">
<label>6.3</label>
<title>ACO</title>
<table-wrap id="j_infor572_tab_007">
<label>Table 7</label>
<caption>
<p>SC score for different ACO configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_188"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{31}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.8</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.53</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_189"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{32}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.8</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.54</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_190"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{33}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.9</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.54</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor572_tab_008">
<label>Table 8</label>
<caption>
<p>SC score for different ACO configurations.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_191"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{31}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.029</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.011</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.014</td>
<td style="vertical-align: top; text-align: left">3.625</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.090</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_192"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{32}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.013</td>
<td style="vertical-align: top; text-align: left">0.001</td>
<td style="vertical-align: top; text-align: left">0.211</td>
<td style="vertical-align: top; text-align: left">0.000</td>
<td style="vertical-align: top; text-align: left">0.006</td>
<td style="vertical-align: top; text-align: left">0.024</td>
<td style="vertical-align: top; text-align: left">3.629</td>
<td style="vertical-align: top; text-align: left">4.062</td>
<td style="vertical-align: top; text-align: left">2.062</td>
<td style="vertical-align: top; text-align: left">1.112</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_193"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{33}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.029</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.003</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.009</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.006</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.031</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.823</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.114</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The experiments with ACO were conducted for a grid of parameters. We tested different combinations of parameters assuming the following sets of values of interest: the evaporation parameter <inline-formula id="j_infor572_ineq_194"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.9</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{0.5,0.9\}$]]></tex-math></alternatives></inline-formula>, importance of pheromone count <inline-formula id="j_infor572_ineq_195"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{1,1.5\}$]]></tex-math></alternatives></inline-formula>, importance of fragment rank {2, 5}, and estimated break count <inline-formula id="j_infor572_ineq_196"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{1,2\}$]]></tex-math></alternatives></inline-formula>, count of elitist ants used to correct pheromone data <inline-formula id="j_infor572_ineq_197"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{2,4\}$]]></tex-math></alternatives></inline-formula>, importance of count of pheromone updated at one time <inline-formula id="j_infor572_ineq_198"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0.05</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>0.2</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{0.05,0.2\}$]]></tex-math></alternatives></inline-formula> and the limit of detected structural breaks <inline-formula id="j_infor572_ineq_199"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{4,10\}$]]></tex-math></alternatives></inline-formula>. The best results were obtained for the following configurations: 
<list>
<list-item id="j_infor572_li_067">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_200"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{32}}$]]></tex-math></alternatives></inline-formula>: evaporation parameter: 0.9, pheromone count parameter: 1, fragment rank parameter: 2, estimated break count parameter: 2, elitist ants count: 4, updated pheromone count: 0.05, detected structural break limit: 4,</p>
</list-item>
<list-item id="j_infor572_li_068">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_201"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{31}}$]]></tex-math></alternatives></inline-formula>: evaporation parameter: 0.9, pheromone count parameter: 1, fragment rank parameter: 2, estimated break count parameter: 2, elitist ants count: 4, updated pheromone count: 0.05, detected structural break limit: 10,</p>
</list-item>
<list-item id="j_infor572_li_069">
<label>•</label>
<p><inline-formula id="j_infor572_ineq_202"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{33}}$]]></tex-math></alternatives></inline-formula>: evaporation parameter: 0.9, pheromone count parameter: 1.5, fragment rank parameter: 2, estimated break count parameter: 2, elitist ants count: 4, updated pheromone count: 0.05, detected structural break limit: 4.</p>
</list-item>
</list> 
Results obtained for the listed parameter configurations them are presented in Tables <xref rid="j_infor572_tab_007">7</xref> and <xref rid="j_infor572_tab_008">8</xref>.</p>
<p>Subsequently, we looked into each parameter and analysed its role in the achieved outcomes. As BPD and SC metrics usually give similar conclusions, but the SC metric provides more information, the discussion below refers to the average value of the SC. The results showed that:</p>
<list>
<list-item id="j_infor572_li_070">
<label>•</label>
<p>a more favourable value for the evaporation coefficient is 0.9 (SC 1.289) than 0.5 (SC 1.383),</p>
</list-item>
<list-item id="j_infor572_li_071">
<label>•</label>
<p>a slightly better value of importance of the pheromone parameter is 1.0 (SC 1.335) than 1.5 (SC 1.337),</p>
</list-item>
<list-item id="j_infor572_li_072">
<label>•</label>
<p>2 is a slightly better value than 5 for the weight of fragment rank (achieving the average SC of 1.321, in comparison to 1.350),</p>
</list-item>
<list-item id="j_infor572_li_073">
<label>•</label>
<p>for the importance of estimated break count parameter value 2 (SC 1.292) is a better choice than 1 (SC 1.379),</p>
</list-item>
<list-item id="j_infor572_li_074">
<label>•</label>
<p>increasing the count of elitist ants had a little contribution towards the improvement of the score (SC 1.345 for value 2 and 1.327 for 4),</p>
</list-item>
<list-item id="j_infor572_li_075">
<label>•</label>
<p>a better value of scale of the pheromone update parameter was 0.05 (SC 1.324) than 0.2 (SC 1.348),</p>
</list-item>
<list-item id="j_infor572_li_076">
<label>•</label>
<p>better results were obtained with the use of a limit of 10 maximum detected structural changes (SC 1.319) than with the use of a limit of 4 (SC 1.353).</p>
</list-item>
</list>
<p>The most significant conclusion refers to the structural break count limit. This limit allows for accelerating calculations and achieving better results for test cases where the desirable structural break count is less than this limit. The experiments showed that more favourable results were obtained with a bigger limit, which indicates that the algorithm can very well generalize and detect fewer breaks than this limit, which is an essential feature for many possible real-world applications of structural break detection methods.</p>
</sec>
</sec>
<sec id="j_infor572_s_035">
<label>7</label>
<title>Comparison with Baseline and State-of-the-Art Methods</title>
<p>The proposed approaches were compared with two selected state-of-the-art methods: Bai and Perron (<xref ref-type="bibr" rid="j_infor572_ref_003">1998</xref>, <xref ref-type="bibr" rid="j_infor572_ref_004">2003</xref>), ClaSP by Ermshaus <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_024">2023</xref>) and Davis <italic>et al.</italic> method (Davis <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_019">2016</xref>, <xref ref-type="bibr" rid="j_infor572_ref_017">2006</xref>, <xref ref-type="bibr" rid="j_infor572_ref_018">2008</xref>; Davis and Yau, <xref ref-type="bibr" rid="j_infor572_ref_015">2013</xref>; Davis <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor572_ref_016">2005</xref>). The comparison is divided into three parts. First, we compare with the Bai-Perron method, and next with ClaSP. It was performed using cases <xref rid="j_infor572_fig_004">1</xref>(a)–<xref rid="j_infor572_fig_005">2</xref>(b) without case <xref rid="j_infor572_fig_004">1</xref>(h). Next, we address the time series used by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_016">2005</xref>) in their work, denoted in this paper as case <xref rid="j_infor572_fig_004">1</xref>h. For this time series, we compare our results with those of the Bai-Perron, ClaSP, and Davis methods.</p>
<sec id="j_infor572_s_036">
<label>7.1</label>
<title>Comparison with the Bai-Perron Method (Baseline)</title>
<p>We performed experiments using the Bai-Perron method with the same test cases as in previous tests. Mean BPD and SC for these examples and general mean are presented in Table <xref rid="j_infor572_tab_009">9</xref>.</p>
<table-wrap id="j_infor572_tab_009">
<label>Table 9</label>
<caption>
<p>BPD and SC results for the Bai-Perron method.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin"/>
<td colspan="10" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Test case</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">BPD</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0.7</td>
<td style="vertical-align: top; text-align: left">0.2</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0.4</td>
<td style="vertical-align: top; text-align: left">4.1</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">4.0</td>
<td style="vertical-align: top; text-align: left">1.167</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">SC</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.335</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.081</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.492</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.400</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.066</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.864</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">8.214</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.020</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">8.058</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.392</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>We can see that the Bai-Perron method was substantially worse than the presented methods. Qualitative analysis showed that the Bai-Perron method achieved moderately satisfying results for cases <xref rid="j_infor572_fig_004">1</xref>(c), <xref rid="j_infor572_fig_004">1</xref>(e), or <xref rid="j_infor572_fig_004">1</xref>(f). However, even in these cases, the structural breaks were inexact. The Bai-Perron method produced even worse outcomes for the remaining test cases, confirming results for individual test cases. It is worth highlighting that the method had problems with real-world cases where it detected too many structural breaks. The experiments proved that the methods presented in this paper guarantee better results than the baseline Bai-Perron method (please compare with Tables <xref rid="j_infor572_tab_001">1</xref> and <xref rid="j_infor572_tab_002">2</xref> concerning our results).</p>
</sec>
<sec id="j_infor572_s_037">
<label>7.2</label>
<title>Comparison with ClaSP Algorithm</title>
<p>We compared our work also to the state-of-the-art ClaSP algorithm by Ermshaus <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_024">2023</xref>). We run the algorithm on our examples. The obtained results were very poor. They are presented in Table <xref rid="j_infor572_tab_010">10</xref>. The method found any structural breaks rarely. The only example from set <xref rid="j_infor572_fig_004">1</xref>(a)–<xref rid="j_infor572_fig_005">2</xref>(b) where structural break was detected was example <xref rid="j_infor572_fig_004">1</xref>(c), but the precision also was not ideal.</p>
<p>The results covered in Table <xref rid="j_infor572_tab_010">10</xref> (ClaSP) may be compared with Table <xref rid="j_infor572_tab_001">1</xref> and <xref rid="j_infor572_tab_002">2</xref> concerning our results. The advantage of the proposed approach is visible.</p>
<table-wrap id="j_infor572_tab_010">
<label>Table 10</label>
<caption>
<p>BPD and SC results for the ClaSP method.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Metric</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(c)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(d)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(e)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(f)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_004">1</xref>(g)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(a)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><xref rid="j_infor572_fig_005">2</xref>(b)</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Mean</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">BPD</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">0.1</td>
<td style="vertical-align: top; text-align: left">0.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">2.0</td>
<td style="vertical-align: top; text-align: left">1.0</td>
<td style="vertical-align: top; text-align: left">1.011</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">SC</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.235</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.062</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2.074</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="j_infor572_s_038">
<label>7.3</label>
<title>Experiments Using Real-World Time Series</title>
<p>Contrary to previous experiments, to process the real-world dataset published by Davis <italic>et al.</italic>, we used the island model (40 islands, 20 migrations, 5 iterations between migrations, small population size 40) to make our settings similar to the settings employed by Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_016">2005</xref>).</p>
<p>Table <xref rid="j_infor572_tab_011">11</xref> presents mean precision of detected structural break locations and associated standard deviations. Particular hyperparameter configurations used with our optimizers are noted with letter <italic>C</italic>, and their explanation is provided in Section <xref rid="j_infor572_s_031">6</xref>.</p>
<p>Davis <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor572_ref_016">2005</xref>) delivered a method that returned two structural breaks for every experiment. Our algorithms also found two structural breaks for every performed test.</p>
<p>Subsequently, we compared our results against those calculated using Bai-Perron’s and ClaSP methods. They are also given in Table <xref rid="j_infor572_tab_011">11</xref>. Please note “Std” values, which show the efficiency of the compared methods (the smaller the better).</p>
<p>It is essential to state that the means and standard deviations presented in Table <xref rid="j_infor572_tab_011">11</xref> are calculated only for experiments where two structural breaks were detected. Notably, Davis’s algorithm and our configurations consistently detected two breaks each time we ran them. That was the expected behaviour. However, the Bai-Perron method detected two breaks in 80% of repetitions, while ClaSP detected two breaks only in 40% of repetitions. That information is sufficient to claim that both Bai-Perron and ClaSP methods work worse than the other analysed methods.</p>
<p>Still, to provide a deeper analysis, Table <xref rid="j_infor572_tab_011">11</xref> presents the results achieved by all four approaches limited to the cases when two structural breaks were detected (which promotes Bai-Perron and ClaSP, as we skipped the cases when these two returned other breaks numbers).</p>
<table-wrap id="j_infor572_tab_011">
<label>Table 11</label>
<caption>
<p>Comparison with the state-of-the-art methods for case <xref rid="j_infor572_fig_004">1</xref>h. Mean 1 and Std 1 refer to the mean precision and standard deviation for the first (out of two) true structural breaks in the time series. Mean 2 and Std 2 refer to the mean precision and standard deviation concerning detecting the second true structural break. Results for Bai-Perron and ClaSP algorithms concern only experiments where two structural breaks were detected.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Algo.</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Config.</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cost Function</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Mean 1</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Std 1</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Mean 2</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Std 2</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">Davis <italic>et al.</italic></td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">MDL<inline-formula id="j_infor572_ineq_203"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>AR</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{AR}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">0.50000</td>
<td style="vertical-align: top; text-align: left">0.00200</td>
<td style="vertical-align: top; text-align: left">0.74200</td>
<td style="vertical-align: top; text-align: left">0.00700</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Bai-Perron</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.49898</td>
<td style="vertical-align: top; text-align: left">0.07827</td>
<td style="vertical-align: top; text-align: left">0.73511</td>
<td style="vertical-align: top; text-align: left">0.03329</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">ClaSP</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">–</td>
<td style="vertical-align: top; text-align: left">0.62666</td>
<td style="vertical-align: top; text-align: left">0.16288</td>
<td style="vertical-align: top; text-align: left">0.73706</td>
<td style="vertical-align: top; text-align: left">0.00674</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">PSO</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_204"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_205"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_206"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_207"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">0.50020</td>
<td style="vertical-align: top; text-align: left">0.00373</td>
<td style="vertical-align: top; text-align: left">0.75039</td>
<td style="vertical-align: top; text-align: left">0.00050</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">PSO</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_208"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">ARIMA MDL</td>
<td style="vertical-align: top; text-align: left">0.50127</td>
<td style="vertical-align: top; text-align: left">0.00291</td>
<td style="vertical-align: top; text-align: left">0.75000</td>
<td style="vertical-align: top; text-align: left">0.00159</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">GA</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor572_ineq_209"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>27</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{27}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">EMDL<inline-formula id="j_infor572_ineq_210"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_211"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$\mu =3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_212"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\nu =1$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left">0.50068</td>
<td style="vertical-align: top; text-align: left">0.00252</td>
<td style="vertical-align: top; text-align: left">0.75000</td>
<td style="vertical-align: top; text-align: left">0.00260</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">PSO</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor572_ineq_213"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{11}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">PDCF<inline-formula id="j_infor572_ineq_214"><alternatives><mml:math>
<mml:msub>
<mml:mrow/>
<mml:mrow>
<mml:mtext>ARIMA</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${_{\text{ARIMA}}}$]]></tex-math></alternatives></inline-formula> (<inline-formula id="j_infor572_ineq_215"><alternatives><mml:math>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$\mu =10$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_216"><alternatives><mml:math>
<mml:mi mathvariant="italic">ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.1</mml:mn></mml:math><tex-math><![CDATA[$\nu =0.1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor572_ineq_217"><alternatives><mml:math>
<mml:mi mathvariant="italic">δ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\delta =2$]]></tex-math></alternatives></inline-formula>)</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.50068</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.00412</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.74932</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.00393</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>First and foremost, Table <xref rid="j_infor572_tab_011">11</xref> allows comparing our results and those of Davis <italic>et al.</italic> In both cases, two (out of two) structural breaks were always detected. However, using our method, the second structural break was detected much better than in Davis’s work, while the first was slightly worse. If we take an average of standard deviations for the location of the first and the second structural break, we see that the average for Davis’s work is 0.0045, and the average of the best variant of our method is 0.00212. The latter average (our approach) is two times better than the Davis’s. This shows that the method presented in this article outperforms the one given by Davis <italic>et al.</italic></p>
<p>Our approach is very good in comparison with state-of-the-art methods. In our opinion, it is also more versatile and customizable. We have delivered not a single method but a suite of methods. Finally, we may emphasize that our results are much better than those obtained with Bai-Perron’s and ClaSP methods. These two algorithms struggle to find two structural breaks. Even if they find two structural breaks, they locate them inaccurately.</p>
</sec>
</sec>
<sec id="j_infor572_s_039">
<label>8</label>
<title>Conclusion</title>
<p>The discussed experiments have proven the key statements from the introductory section of this paper. In our studies, we have delivered a suite of new cost functions to be used for structural break detection with the help of metaheuristic optimization.</p>
<p>The experimental procedure was designed to ensure that a satisfying number of repetitions of a model construction process was performed. We have paid attention to the three aspects in which properties influence the processing outcome. To eliminate chances of drawing unfounded conclusions, we applied the following schema:</p>
<list>
<list-item id="j_infor572_li_077">
<label>•</label>
<p>We have drawn 10 (different) time series for each synthetic time series case. The generative process stayed the same within one case, but time series-specific values were different.</p>
</list-item>
<list-item id="j_infor572_li_078">
<label>•</label>
<p>For real-world time series, each experiment was repeated 10 times.</p>
</list-item>
<list-item id="j_infor572_li_079">
<label>•</label>
<p>We have fixed the metaheuristic methods’ hyperparameters to a selected configuration and run the same configuration for different specifications of the break detection algorithm to test one aspect.</p>
</list-item>
<list-item id="j_infor572_li_080">
<label>•</label>
<p>We have fixed the structural break detection algorithm specification for a few configurations and tested the impact of metaheuristic algorithm hyperparameters.</p>
</list-item>
</list>
<p>The introduced changes allowed us to improve the qualitative and quantitative outcomes of the structural break detection task. In particular, concerning the state-of-the-art algorithms, we managed to:</p>
<list>
<list-item id="j_infor572_li_081">
<label>•</label>
<p>improve numerical accuracy of the results, especially when analysing time series containing trend,</p>
</list-item>
<list-item id="j_infor572_li_082">
<label>•</label>
<p>show that ACO and PSO methods are not worse at solving the task than GA,</p>
</list-item>
<list-item id="j_infor572_li_083">
<label>•</label>
<p>give more flexibility to the experts (potential users of our method) by allowing, optionally, to set parameters that control the count of detected structural breaks.</p>
</list-item>
</list>
<p>Each new cost function or modification presented in this paper targeted a different new property. The Elastic MDL method guarantees results similar to the state-of-the-art techniques but introduces the possibility of adapting the model’s shape to the user’s preferences. Methods using a penalty for deviation from a linear trend work well for real-world time series. DCF and PDCF cost functions capture the new understanding of cost functions designed for structural break detection problems. Let us recall that these two take into account the variance of residuals.</p>
<p>The experiments have shown that using ARIMA often helps to achieve better results than AR. Thanks to the use of metaheuristic approaches, in such cases, the optimization procedure adjusts the model’s shape and allows us to obtain more accurate results.</p>
<p>Our studies in this area can be continued. The most interesting future research area is extending this approach to time series with multiple variables.</p>
<p>There is a straightforward solution to this task because the proposed formulas are additive, cf. equations (<xref rid="j_infor572_eq_010">10</xref>)–(<xref rid="j_infor572_eq_020">20</xref>). Because of that, we can simply add more components to these formulas to account for multiple variables – they will be represented with their own AR/ARIMA models for the same segments. The issue with this simple solution is that the formulas’ complexity grows. Consequently, such an objective function may become more challenging to optimize, even for a heuristic method. However, we cannot evaluate the actual influence of this complexity without appropriate empirical tests.</p>
<p>An alternative path worthy of further inspection when working with multivariate time series could be to reduce time series dimensionality (perhaps even to one dimension) and proceed with the approach presented in this paper. The potential problem that may arise when working with such a solution is that the procedure may become intangible. We would have to employ an external algorithm whose properties will heavily influence the processing outcome. Analysing the performance of such a data processing pipeline will be more complex, as we need to cover this additional algorithm.</p>
<p>Finally, the most advanced solution would be to replace ARIMA/AR, predominantly for univariate time series, with a model suitable for dealing with multiple variables. VAR (Vector Autoregression) can be fused to the proposed framework in such a case.</p>
</sec>
</body>
<back>
<ref-list id="j_infor572_reflist_001">
<title>References</title>
<ref id="j_infor572_ref_001">
<mixed-citation publication-type="chapter"><string-name><surname>Abdel-Basset</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Abdel-Fatah</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Sangaiah</surname>, <given-names>A.K.</given-names></string-name> (<year>2018</year>). <chapter-title>Metaheuristic algorithms: a comprehensive review</chapter-title>. In: <source>Computational Intelligence for Multimedia Big Data on the Cloud with Engineering Applications</source>, pp. <fpage>185</fpage>–<lpage>231</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_002">
<mixed-citation publication-type="journal"><string-name><surname>Altansukh</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Osborn</surname>, <given-names>D.R.</given-names></string-name> (<year>2022</year>). <article-title>Using structural break inference for forecasting time series</article-title>. <source>Empirical Economics</source>, <volume>63</volume>, <fpage>1</fpage>–<lpage>41</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_003">
<mixed-citation publication-type="journal"><string-name><surname>Bai</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Perron</surname>, <given-names>P.</given-names></string-name> (<year>1998</year>). <article-title>Estimating and testing linear models with multiple structural changes</article-title>. <source>Econometrica</source>, <volume>66</volume>(<issue>1</issue>), <fpage>47</fpage>–<lpage>78</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_004">
<mixed-citation publication-type="journal"><string-name><surname>Bai</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Perron</surname>, <given-names>P.</given-names></string-name> (<year>2003</year>). <article-title>Computation and analysis of multiple structural change models</article-title>. <source>Journal of Applied Econometrics</source>, <volume>18</volume>(<issue>1</issue>), <fpage>1</fpage>–<lpage>22</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Bai</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Duan</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Han</surname>, <given-names>X.</given-names></string-name> (<year>2024</year>). <article-title>The likelihood ratio test for structural changes in factor models</article-title>. <source>Journal of Econometrics</source>, <volume>238</volume>(<issue>2</issue>), <elocation-id>105631</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>Bardwell</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Fearnhead</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Eckley</surname>, <given-names>I.A.</given-names></string-name>, <string-name><surname>Smith</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Spott</surname>, <given-names>M.</given-names></string-name> (<year>2019</year>). <article-title>Most recent changepoint detection in panel data</article-title>. <source>Technometrics</source>, <volume>61</volume>(<issue>1</issue>), <fpage>88</fpage>–<lpage>98</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_007">
<mixed-citation publication-type="journal"><string-name><surname>Behrendt</surname>, <given-names>S.</given-names></string-name> (<year>2021</year>). <article-title>Structural breaks in Box-Cox transforms of realized volatility: a model selection perspective</article-title>. <source>Quantitative Finance</source>, <volume>21</volume>(<issue>11</issue>), <fpage>1905</fpage>–<lpage>1919</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Borzykh</surname>, <given-names>D.A.</given-names></string-name>, <string-name><surname>Yazykov</surname>, <given-names>A.A.</given-names></string-name> (<year>2020</year>). <article-title>On the practical applicability of three cusum-methods for structural breaks detection in EGARCH-models</article-title>. <source>Vestnik of Saint Petersburg University. Applied Mathematics. Computer Science. Control Processes</source>, <volume>16</volume>(<issue>1</issue>), <fpage>19</fpage>–<lpage>30</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>Casini</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Perron</surname>, <given-names>P.</given-names></string-name> (<year>2024</year>). <article-title>Change-point analysis of time series with evolutionary spectra</article-title>. <source>Journal of Econometrics</source>, <volume>242</volume>(<issue>2</issue>), <elocation-id>105811</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Charalampakis</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Dimou</surname>, <given-names>C.</given-names></string-name> (<year>2010</year>). <article-title>Identification of Bouc–Wen hysteretic systems using particle swarm optimization</article-title>. <source>Computers &amp; Structures</source>, <volume>88</volume>(<issue>21</issue>), <fpage>1197</fpage>–<lpage>1205</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_011">
<mixed-citation publication-type="journal"><string-name><surname>Cheng</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Yi</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Lai</surname>, <given-names>K.K.</given-names></string-name>, <string-name><surname>Seco</surname>, <given-names>L.</given-names></string-name> (<year>2022</year>). <article-title>A CEEMD-ARIMA-SVM model with structural breaks to forecast the crude oil prices linked with extreme events</article-title>. <source>Soft Computing</source>, <volume>26</volume>, <fpage>8537</fpage>–<lpage>8551</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Cho</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Kirch</surname>, <given-names>C.</given-names></string-name> (<year>2022</year>). <article-title>Two-stage data segmentation permitting multiscale change points, heavy tails and dependence</article-title>. <source>Annals of the Institute of Statistical Mathematics</source>, <volume>74</volume>(<issue>4</issue>), <fpage>653</fpage>–<lpage>684</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Cho</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Korkas</surname>, <given-names>K.K.</given-names></string-name> (<year>2022</year>). <article-title>High-dimensional garch process segmentation with an application to value-at-risk</article-title>. <source>Econometrics and Statistics</source>, <volume>23</volume>, <fpage>187</fpage>–<lpage>203</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_014">
<mixed-citation publication-type="journal"><string-name><surname>Cho</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Kirch</surname>, <given-names>C.</given-names></string-name> (<year>2024</year>). <article-title>Data segmentation algorithms: univariate mean change and beyond</article-title>. <source>Econometrics and Statistics</source>, <volume>30</volume>, <fpage>76</fpage>–<lpage>95</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_015">
<mixed-citation publication-type="journal"><string-name><surname>Davis</surname>, <given-names>R.A.</given-names></string-name>, <string-name><surname>Yau</surname>, <given-names>C.Y.</given-names></string-name> (<year>2013</year>). <article-title>Consistency of minimum description length model selection for piecewise stationary time series models</article-title>. <source>Electronic Journal of Statistics</source>, <volume>7</volume>, <fpage>381</fpage>–<lpage>411</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_016">
<mixed-citation publication-type="chapter"><string-name><surname>Davis</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Rodriguez-Yam</surname>, <given-names>G.</given-names></string-name> (<year>2005</year>). <chapter-title>Structural breaks estimation for non-stationary time series signals</chapter-title>. In: <source>IEEE Workshop on Statistical Signal Processing Proceedings</source>, Vol. <volume>2005</volume>, pp. <fpage>233</fpage>–<lpage>238</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_017">
<mixed-citation publication-type="journal"><string-name><surname>Davis</surname>, <given-names>R.A.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>T.C.M.</given-names></string-name>, <string-name><surname>Rodriguez-Yam</surname>, <given-names>G.A.</given-names></string-name> (<year>2006</year>). <article-title>Structural break estimation for nonstationary time series models</article-title>. <source>Journal of the American Statistical Association</source>, <volume>101</volume>(<issue>473</issue>), <fpage>223</fpage>–<lpage>239</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_018">
<mixed-citation publication-type="journal"><string-name><surname>Davis</surname>, <given-names>R.A.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>T.C.M.</given-names></string-name>, <string-name><surname>Rodriguez-Yam</surname>, <given-names>G.A.</given-names></string-name> (<year>2008</year>). <article-title>Break detection for a class of nonlinear time series models</article-title>. <source>Journal of Time Series Analysis</source>, <volume>29</volume>(<issue>5</issue>), <fpage>834</fpage>–<lpage>867</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Davis</surname>, <given-names>R.A.</given-names></string-name>, <string-name><surname>Hancock</surname>, <given-names>S.A.</given-names></string-name>, <string-name><surname>Yao</surname>, <given-names>Y.-C.</given-names></string-name> (<year>2016</year>). <article-title>On consistency of minimum description length model selection for piecewise autoregressions</article-title>. <source>Journal of Econometrics</source>, <volume>194</volume>(<issue>2</issue>), <fpage>360</fpage>–<lpage>368</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_020">
<mixed-citation publication-type="other"><string-name><surname>Ditzen</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Karavias</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Westerlund</surname>, <given-names>J.</given-names></string-name> (<year>2021</year>). <italic>Testing and Estimating Structural Breaks in Time Series and Panel Data in Stata</italic>. Discussion Papers 21-14, Department of Economics, University of Birmingham.</mixed-citation>
</ref>
<ref id="j_infor572_ref_021">
<mixed-citation publication-type="journal"><string-name><surname>Doerr</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Fischer</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Hilbert</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Witt</surname>, <given-names>C.</given-names></string-name> (<year>2017</year>). <article-title>Detecting structural breaks in time series via genetic algorithms</article-title>. <source>Soft Computing</source>, <volume>21</volume>, <fpage>4707</fpage>–<lpage>4720</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_022">
<mixed-citation publication-type="book"><string-name><surname>Dorigo</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Stützle</surname>, <given-names>T.</given-names></string-name> (<year>2019</year>). <source>Ant Colony Optimization</source>. <publisher-name>MIT Press</publisher-name>, <publisher-loc>Cambridge, MA</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_023">
<mixed-citation publication-type="journal"><string-name><surname>Éltetö</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Hansen</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Germain-Renaud</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Bondon</surname>, <given-names>P.</given-names></string-name> (<year>2012</year>). <article-title>Scalable structural break detection</article-title>. <source>Applied Soft Computing</source>, <volume>12</volume>(<issue>11</issue>), <fpage>3408</fpage>–<lpage>3420</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_024">
<mixed-citation publication-type="journal"><string-name><surname>Ermshaus</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Schäfer</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Leser</surname>, <given-names>U.</given-names></string-name> (<year>2023</year>). <article-title>ClaSP: parameter-free time series segmentation</article-title>. <source>Data Mining and Knowledge Discovery</source>, <volume>37</volume>(<issue>3</issue>), <fpage>1262</fpage>–<lpage>1300</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_025">
<mixed-citation publication-type="journal"><string-name><surname>Farsi</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Mahjouri</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Ghasemi</surname>, <given-names>H.</given-names></string-name> (<year>2020</year>). <article-title>Breakpoint detection in non-stationary runoff time series under uncertainty</article-title>. <source>Journal of Hydrology</source>, <volume>590</volume>, <elocation-id>125458</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_026">
<mixed-citation publication-type="other"><string-name><surname>Fryzlewicz</surname>, <given-names>P.</given-names></string-name> (<year>2014</year>). Wild binary segmentation for multiple change-point detection. <italic>The Annals of Statistics</italic>, <italic>42</italic>(6).</mixed-citation>
</ref>
<ref id="j_infor572_ref_027">
<mixed-citation publication-type="journal"><string-name><surname>Fryzlewicz</surname>, <given-names>P.</given-names></string-name> (<year>2020</year>). <article-title>Detecting possibly frequent change-points: wild binary segmentation 2 and steepest-drop model selection</article-title>. <source>Journal of the Korean Statistical Society</source>, <volume>49</volume>(<issue>4</issue>), <fpage>1027</fpage>–<lpage>1070</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_028">
<mixed-citation publication-type="journal"><string-name><surname>Hall</surname>, <given-names>A.R.</given-names></string-name>, <string-name><surname>Osborn</surname>, <given-names>D.R.</given-names></string-name>, <string-name><surname>Sakkas</surname>, <given-names>N.</given-names></string-name> (<year>2013</year>). <article-title>Inference on structural breaks using information criteria</article-title>. <source>The Manchester School</source>, <volume>81</volume>(<issue>S3</issue>), <fpage>54</fpage>–<lpage>81</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_029">
<mixed-citation publication-type="chapter"><string-name><surname>Huang</surname>, <given-names>S.-H.</given-names></string-name>, <string-name><surname>Shih</surname>, <given-names>W.-Y.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>J.-Y.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>H.-H.</given-names></string-name>, <string-name><surname>Chu</surname>, <given-names>C.-H.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>J.-Z.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>J.-L.</given-names></string-name>, <string-name><surname>Dai</surname>, <given-names>T.-S.</given-names></string-name> (<year>2020</year>). <chapter-title>Online structural break detection for pairs trading using wavelet transform and hybrid deep learning model</chapter-title>. In: <source>2020 IEEE International Conference on Big Data and Smart Computing (BigComp)</source>, pp. <fpage>209</fpage>–<lpage>216</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_030">
<mixed-citation publication-type="other"><string-name><surname>Hvass Pedersen</surname>, <given-names>M.E.</given-names></string-name> (<year>2010</year>). <italic>Good Parameters for Particle Swarm Optimization</italic>. In technical report No. HL1001. Hvass Laboratories.</mixed-citation>
</ref>
<ref id="j_infor572_ref_031">
<mixed-citation publication-type="journal"><string-name><surname>Inclan</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Tiao</surname>, <given-names>G.C.</given-names></string-name> (<year>1994</year>). <article-title>Use of cumulative sums of squares for retrospective detection of changes of variance</article-title>. <source>Journal of the American Statistical Association</source>, <volume>89</volume>(<issue>427</issue>), <fpage>913</fpage>–<lpage>923</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_032">
<mixed-citation publication-type="journal"><string-name><surname>Kim</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Park</surname>, <given-names>J.H.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Song</surname>, <given-names>J.W.</given-names></string-name> (<year>2022</year>). <article-title>Unsupervised change point detection and trend prediction for financial time-series using a new CUSUM-based approach</article-title>. <source>IEEE Access</source>, <volume>10</volume>, <fpage>34690</fpage>–<lpage>34705</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_033">
<mixed-citation publication-type="journal"><string-name><surname>Kirch</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Reckruehm</surname>, <given-names>K.</given-names></string-name> (<year>2024</year>). <article-title>Data segmentation for time series based on a general moving sum approach</article-title>. <source>Annals of the Institute of Statistical Mathematics</source>, <volume>76</volume>, <fpage>393</fpage>–<lpage>421</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_034">
<mixed-citation publication-type="journal"><string-name><surname>Kovács</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Bühlmann</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Munk</surname>, <given-names>A.</given-names></string-name> (<year>2023</year>). <article-title>Seeded binary segmentation: a general methodology for fast and optimal changepoint detection</article-title>. <source>Biometrika</source>, <volume>110</volume>(<issue>1</issue>), <fpage>249</fpage>–<lpage>256</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_035">
<mixed-citation publication-type="journal"><string-name><surname>Lan</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Geyer</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Chemla</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Katzir</surname>, <given-names>R.</given-names></string-name> (<year>2022</year>). <article-title>Minimum description length recurrent neural networks</article-title>. <source>Transactions of the Association for Computational Linguistics</source>, <volume>10</volume>, <fpage>785</fpage>–<lpage>799</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_036">
<mixed-citation publication-type="journal"><string-name><surname>Lee</surname>, <given-names>T.H.</given-names></string-name>, <string-name><surname>Parsaeian</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Ullah</surname>, <given-names>A.</given-names></string-name> (<year>2022</year>). <article-title>Efficient combined estimation under structural breaks</article-title>. <source>Advances in Econometrics</source>, <volume>43A</volume>, <fpage>119</fpage>–<lpage>142</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_037">
<mixed-citation publication-type="other"><string-name><surname>Li</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Cezeaux</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Yu</surname>, <given-names>D.</given-names></string-name> (<year>2019</year>a). Automating data monitoring: detecting structural breaks in time series data using Bayesian minimum description length.</mixed-citation>
</ref>
<ref id="j_infor572_ref_038">
<mixed-citation publication-type="journal"><string-name><surname>Li</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Lund</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Hewaarachchi</surname>, <given-names>A.</given-names></string-name> (<year>2019</year>b). <article-title>Multiple changepoint detection with partial information on changepoint times</article-title>. <source>Electronic Journal of Statistics</source>, <volume>13</volume>(<issue>2</issue>), <fpage>2462</fpage>–<lpage>2520</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_039">
<mixed-citation publication-type="journal"><string-name><surname>Lim</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Choi</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Choi</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Kim</surname>, <given-names>I.-J.</given-names></string-name> (<year>2020</year>). <article-title>Memetic algorithm for multivariate time-series segmentation</article-title>. <source>Pattern Recognition Letters</source>, <volume>138</volume>, <fpage>60</fpage>–<lpage>67</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_040">
<mixed-citation publication-type="journal"><string-name><surname>Lu</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Lund</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>T.C.M.</given-names></string-name> (<year>2010</year>). <article-title>An MDL approach to the climate segmentation problem</article-title>. <source>The Annals of Applied Statistics</source>, <volume>4</volume>(<issue>1</issue>), <fpage>299</fpage>–<lpage>319</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_041">
<mixed-citation publication-type="journal"><string-name><surname>Madrid Padilla</surname>, <given-names>O.H.</given-names></string-name>, <string-name><surname>Yu</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Rinaldo</surname>, <given-names>A.</given-names></string-name> (<year>2022</year>). <article-title>Optimal nonparametric multivariate change point detection and localization</article-title>. <source>IEEE Transactions on Information Theory</source>, <volume>68</volume>(<issue>3</issue>), <fpage>1922</fpage>–<lpage>1944</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_042">
<mixed-citation publication-type="journal"><string-name><surname>Meier</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Kirch</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Cho</surname>, <given-names>H.</given-names></string-name> (<year>2021</year>). <article-title>mosum: a package for moving sums in change-point analysis</article-title>. <source>Journal of Statistical Software</source>, <volume>97</volume>(<issue>8</issue>), <fpage>1</fpage>–<lpage>42</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_043">
<mixed-citation publication-type="chapter"><string-name><surname>Murray</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Liao</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Stankovic</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Stankovic</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Hauxwell-Baldwin</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Wilson</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Coleman</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Kane</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Firth</surname>, <given-names>S.</given-names></string-name> (<year>2015</year>). <chapter-title>A data management platform for personalised real-time energy feedback</chapter-title>. In: <source>Proceedings of the 8th International Conference on Energy Efficiency in Domestic Appliances and Lighting</source>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_044">
<mixed-citation publication-type="journal"><string-name><surname>Rissanen</surname>, <given-names>J.</given-names></string-name> (<year>1978</year>). <article-title>Modeling by shortest data description</article-title>. <source>Automatica</source>, <volume>14</volume>(<issue>5</issue>), <fpage>465</fpage>–<lpage>471</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_045">
<mixed-citation publication-type="journal"><string-name><surname>Romano</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Rigaill</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Runge</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Fearnhead</surname>, <given-names>P.</given-names></string-name> (<year>2022</year>). <article-title>Detecting abrupt changes in the presence of local fluctuations and autocorrelated noise</article-title>. <source>Journal of the American Statistical Association</source>, <volume>117</volume>(<issue>540</issue>), <fpage>2147</fpage>–<lpage>2162</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_046">
<mixed-citation publication-type="journal"><string-name><surname>Safikhani</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Bai</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Michailidis</surname>, <given-names>G.</given-names></string-name> (<year>2022</year>). <article-title>Fast and scalable algorithm for detection of structural breaks in big VAR models</article-title>. <source>Journal of Computational and Graphical Statistics</source>, <volume>31</volume>(<issue>1</issue>), <fpage>176</fpage>–<lpage>189</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_047">
<mixed-citation publication-type="journal"><string-name><surname>Scott</surname>, <given-names>A.J.</given-names></string-name>, <string-name><surname>Knott</surname>, <given-names>M.</given-names></string-name> (<year>1974</year>). <article-title>A cluster analysis method for grouping means in the analysis of variance</article-title>. <source>Biometrics</source>, <volume>30</volume>(<issue>3</issue>), <fpage>507</fpage>–<lpage>512</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_048">
<mixed-citation publication-type="journal"><string-name><surname>Shaochuan</surname>, <given-names>L.</given-names></string-name> (<year>2020</year>). <article-title>Bayesian multiple changepoints detection for Markov jump processes</article-title>. <source>Computational Statistics</source>, <volume>35</volume>(<issue>3</issue>), <fpage>1501</fpage>–<lpage>1523</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_049">
<mixed-citation publication-type="journal"><string-name><surname>Shi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Beaulieu</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Killick</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Lund</surname>, <given-names>R.</given-names></string-name> (<year>2022</year>a). <article-title>Changepoint detection: an analysis of the Central England temperature series</article-title>. <source>Journal of Climate</source>, <volume>35</volume>(<issue>19</issue>), <fpage>2729</fpage>–<lpage>2742</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_050">
<mixed-citation publication-type="journal"><string-name><surname>Shi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Gallagher</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Lund</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Killick</surname>, <given-names>R.</given-names></string-name> (<year>2022</year>b). <article-title>A comparison of single and multiple changepoint techniques for time series data</article-title>. <source>Computational Statistics &amp; Data Analysis</source>, <volume>170</volume>, <elocation-id>107433</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_051">
<mixed-citation publication-type="journal"><string-name><surname>Smith</surname>, <given-names>S.C.</given-names></string-name> (<year>2023</year>). <article-title>Structural breaks in grouped heterogeneity</article-title>. <source>Journal of Business &amp; Economic Statistics</source>, <volume>41</volume>, <fpage>752</fpage>–<lpage>764</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_052">
<mixed-citation publication-type="journal"><string-name><surname>Suárez-Sierra</surname>, <given-names>B.M.</given-names></string-name>, <string-name><surname>Coen</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Taimal</surname>, <given-names>C.A.</given-names></string-name> (<year>2023</year>). <article-title>Genetic algorithm with a Bayesian approach for the detection of multiple points of change of time series of counting exceedances of specific thresholds</article-title>. <source>Journal of the Korean Statistical Society</source>, <volume>52</volume>, <fpage>982</fpage>–<lpage>1024</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_053">
<mixed-citation publication-type="book"><string-name><surname>Tartakovsky</surname>, <given-names>A.</given-names></string-name> (<year>2019</year>). <source>Sequential Change Detection and Hypothesis Testing</source>. <publisher-name>Chapman and Hall/CRC</publisher-name>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_054">
<mixed-citation publication-type="journal"><string-name><surname>Woody</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Xu</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Dyer</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Lund</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Hewaarachchi</surname>, <given-names>A.P.</given-names></string-name> (<year>2021</year>). <article-title>A statistical analysis of daily snow depth trends in North America</article-title>. <source>Atmosphere</source>, <volume>17</volume>(<issue>7</issue>) <elocation-id>820</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_055">
<mixed-citation publication-type="journal"><string-name><surname>Yan</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Ma</surname>, <given-names>T.</given-names></string-name> (<year>2021</year>). <article-title>Change-point detection based on adjusted shape context cost method</article-title>. <source>Information Sciences</source>, <volume>545</volume>, <fpage>363</fpage>–<lpage>380</lpage>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_056">
<mixed-citation publication-type="journal"><string-name><surname>Yang</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>Y.</given-names></string-name> (<year>2022</year>). <article-title>Change-point detection for the link function in a single-index model</article-title>. <source>Statistics &amp; Probability Letters</source>, <volume>186</volume>, <elocation-id>109468</elocation-id>.</mixed-citation>
</ref>
<ref id="j_infor572_ref_057">
<mixed-citation publication-type="journal"><string-name><surname>Zhang</surname>, <given-names>N.R.</given-names></string-name>, <string-name><surname>Siegmund</surname>, <given-names>D.O.</given-names></string-name> (<year>2007</year>). <article-title>A modified Bayes Information Criterion with applications to the analysis of comparative genomic hybridization data</article-title>. <source>Biometrics</source>, <volume>63</volume>(<issue>1</issue>), <fpage>22</fpage>–<lpage>32</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
