<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>An Optimization Modulo Theories-Based Approach to Cumulative Scheduling with Delays</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Antton Kasslin</string-name>
          <email>antton.kasslin@helsinki.fi</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jeremias Berg</string-name>
          <email>jeremias.berg@helsinki.fi</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of Helsinki</institution>
          ,
          <country country="FI">Finland</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <fpage>16</fpage>
      <lpage>28</lpage>
      <abstract>
        <p>Scheduling problems arise in many applications and are commonly solved with automated reasoning and constraint-based methods. We study a variant of the so-called resource-constrained cumulative scheduling problem, with a flavor of flow allocation, in which a set of workers must send workloads to a shared processing facility. The goal is to schedule the workload sent from each worker at each time step without exceeding the facility's maximum processing capacity or the storage capacities of the workers. In a central instantiation of the problem, the workers are industrial sources that produce wastewater that needs to be transferred to a treatment plant. The problem of computing a feasible schedule in a similar setting has previously been studied under the name of the wastewater treatment plant problem. More precisely, we study the applicability of optimization modulo theories (OMT) and mixed integer programming (MIP) to solving real-world benchmarks of this scheduling problem. As our main contributions, we: i) extend a previously proposed constraint model for computing feasible schedules by e.g., allowing more flexible scheduling of the released water, ii) extend the model with several diferent optimization criteria, including optimizing for evenness of the workload arriving at the facility, and minimizing the makespan of the schedule, and iii) collect a new open-source dataset based on real-world wastewater flow quantities. We evaluate our model on two diferently-sized time spans of the new dataset as well as on previously used benchmarks using state-of-the-art solvers in both paradigms. Our evaluation demonstrates that optimization criteria related to makespan minimization do not need to slow down the run time of the solvers. In contrast, the criteria on workload evenness are, in general, more dificult to handle.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Optimization Modulo Theories</kwd>
        <kwd>OMT</kwd>
        <kwd>Mixed Integer Linear Programming</kwd>
        <kwd>MILP</kwd>
        <kwd>Preemptive Cumulative Scheduling</kwd>
        <kwd>Flow Evenness</kwd>
        <kwd>Time Delay</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        The resource-constrained scheduling problem (RCSP) [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ] is a well-known and general formalization
of a problem setting in which tasks need to be scheduled over a discrete timeframe in a way that respects
the resource requirements of the individual tasks and any possible precedence constraints between
them. Many variants of RCSP are known to be NP-hard [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], but the strong prevalence of scheduling
problems in diferent domains has motivated research into diferent variants of RCSP (see e.g. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] for
a recent survey) and efective methods for computing both feasible and optimal schedules.
Resourceconstrained scheduling problems can roughly be divided into disjunctive and cumulative scheduling
problems based on the portion of tasks that can be scheduled in parallel, and further into preemptive
and non-preemptive scheduling based on whether tasks can be interrupted once started. We focus on
a variant of preemptive cumulative scheduling that, arguably, has received less attention than many
other variants of RCSP [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and in doing so contribute to the well-established field of constraint-based
approaches across various constraint paradigms for solving scheduling problems [
        <xref ref-type="bibr" rid="ref10 ref11 ref2 ref5 ref6 ref7 ref8 ref9">2, 5, 6, 7, 8, 9, 10, 11</xref>
        ].
      </p>
      <p>
        More precisely, we study a problem setting in which a set of workers must access the limited resources
of a shared processing facility. At each time step, all workers release separate tasks that each require
some amount of the facility’s processing capacity. Each worker can then send a part of the task’s
total workload directly to the facility, and temporarily store the remainder. The goal is to schedule the
workload sent from each worker at each timestep without exceeding either the maximum intake capacity
of the facility or the storage capacities of individual workers. The general formulation highlights that
our model could be applicable in many settings; the processing facility could be a storage facility or
a vaccination center that needs to vaccinate parts of the population. In our experiments, we focus
on a central concrete instantiation of the problem called the wastewater treatment problem in which
the workers are pumping stations [
        <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
        ] that, at each timestep, receive some amount of water that
needs to be transported to a wastewater treatment plant for processing. Each station can temporarily
store a limited amount of water, and the treatment plant can only receive a limited amount at each
timestep. While a model for computing feasible schedules has been proposed in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], to the best of our
understanding, we present the first study into constraint models for optimal schedules. While presented
through the lens of scheduling in previous work, this problem is also closely related to flow allocation
in networks [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ].
      </p>
      <p>
        More precisely, as the main contribution of this paper, we develop a constraint model for computing
schedules to the general formulation of the wastewater treatment problem. Our model is designed based
on consultation from the Helsinki Region Environmental Services Authority (HSY). Specifically, we
allow each worker to send only part of the new workload for processing at a time. Our model also allows
a time delay between a worker releasing workload and that workload arriving at the facility. We study
the computational feasibility of finding both feasible and optimal schedules under a number of diferent
optimization criteria. We show how to minimize the makespan of the schedule and how to compute
schedules in which the amount of workload (e.g. wastewater) arriving at the processing facility is as even
as possible. Especially the latter criterion is motivated by the discussions with HSY; high wastewater
influx rates are undesirable as they necessitate feeding the input faster through the limited-capacity
treatment process, leading to worse output water quality. We detail an optimization modulo theories
(OMT) [
        <xref ref-type="bibr" rid="ref16 ref17 ref18">16, 17, 18</xref>
        ], and a mixed integer programming (MIP) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] model for this problem.
      </p>
      <p>
        As an additional contribution, we collect real-world wastewater data from HSY and use it to form a
new benchmark set containing altogether 624 OMT and 624 MIP benchmarks. We report on an extensive
evaluation of state-of-the-art solvers in these two constraint paradigms on this problem. In addition
to the new benchmarks that we collected, we also evaluate solvers on the data used in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In the
evaluation, we study diferent variants of the problem and demonstrate, e.g., the efect of enforcing all
workloads to integer values. Our results indicate that computing optimal schedules incurs a negligible
amount of overhead compared to computing feasible ones, and that the MIP solver Gurobi is particularly
efective in solving these problems.
      </p>
      <p>The rest of the paper is structured as follows: in Section 2, we detail our problem setting and
the constraint paradigms of interest. In Section 3, we describe the constraint model for computing
optimal schedules in this setting under diferent optimization criteria. In Section 4, we describe the
new open-source benchmarks we collected as part of this work, and in Section 5, we report on the
experimental evaluation of these state-of-the-art solvers in all paradigms on these and previously
established benchmarks. The paper is concluded in Section 6.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <p>We detail preliminaries on the variant of preemptive cumulative scheduling that we study, as well as
the constraint paradigms in which we model the problem.</p>
      <sec id="sec-2-1">
        <title>2.1. Cumulative Resource-Constrained Scheduling with Delays</title>
        <p>
          We study a variant of the resource-constrained cumulative scheduling problem in which each worker
can subdivide and temporarily store their tasks. For some intuition on our problem setting, consider a
set of pumping stations that pump wastewater to a treating facility that can process a limited amount
of wastewater at each time step. Each pumping station receives new wastewater at each time step and
needs to decide how much to pump forward for treatment and how much to store in its temporary
storage with a limited capacity. The task is to schedule the amount of water pumped forward at
each timestep while ensuring that neither the treating facility’s processing capacity, nor any pumping
station’s storage capacity is exceeded. Additionally, each pumping station has an upper limit on the
amount of water that can be pumped per timestep, and it takes some time for the water to arrive from
a pumping station to the facility. A similar problem was studied under the name of the wastewater
treatment plant problem in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>More abstractly, a problem instance in our setting specifies a finite and discretized time horizon over
#t timesteps under which #w diferent workers need the limited resources of a single shared facility
that can receive a total workload of maxCapacity on each time step. The input instance specifies
for each worker  and timestep  the new incoming resource requirement task, that  will need
from the facility within the time horizon. Since the facility can receive a limited quantity of workload
per timestep, each worker can temporarily store up to storageCapacity of workload. The total
quantity of storage capacity at each worker is constant for all time steps; the quantity stored at time 
takes from the remaining storage space available at subsequent timesteps until the workload is sent to
the facility. Finally, we assume that the sent workload takes d timesteps to arrive from  at the facility
and that the maximal rate of workload output to the facility for each worker is limited by maxOutput.</p>
        <p>The goal in our setting is to schedule the amount of workload sent from each worker at each timestep
to the facility. More precisely, a schedule specifies for each worker  a storage output Sout(, ) as
the amount of the currently stored workload to send for processing at timestep , and the part P(, )
of task, released at timestep  to immediately send for processing. The rest of the task released at
 then needs to be temporarily stored. A schedule is feasible if neither the maximum capacity of the
facility nor the maximum storage or output capacities of any worker are exceeded at any timestep.</p>
        <p>In preemptive scheduling, the processing of each task can be paused and continued later. Since
a worker in our setting can subdivide its task in a way that momentarily sends zero workload for
processing, our problem formulation captures a preemptive setting as long as the storage capacities
of the individual workers are high enough to enable this. As we focus on an optimization setting,
we also only consider instances in which the time horizon, the maxCapacity of the facility, and the
maxOutput and storageCapacity values of the workers are large enough for feasible schedules
to exist.</p>
        <p>To summarize, we say that a schedule is feasible if the total workload from all workers combined
arriving at the facility at any timestep does not not exceed maxCapacity, and the following three
statements hold for each timestep  and worker : (i) the workload temporarily stored at  does not
exceed storageCapacity, (ii) the total quantity of workload released from , Sout(, ) + P(, )
does not exceed the maximum output rate maxOutput, (iii) all workloads arrive at the facility within
the time horizon.</p>
        <p>For a concrete example, Table 1 details a feasible schedule for a problem instance where the shared
facility is a wastewater treatment plant (wwtp), and there are two pumping stations with flexible
forward-pumping capacities up to maxOutput1 = 6000 m3/h, and maxOutput2 = 10000 m3/h, both
located 0 hours away from the facility (i.e. d1 = d2 = 0). The maximum capacity of the facility is
maxCapacity = 15 000 m3 incoming wastewater per hour, and the workers have individual storage
capacities of storageCapacity1 = 6000 m3 and storageCapacity2 = 10000 m3, respectively. The
displayed schedule is for task1,1 = 4000, task1,2 = 5000, task2,1 = 2000 and task2,2 = 5000 m3
and assuming initial storage levels of startLevel1 = Storage(1, 0) = 3000 and startLevel2 =
Storage(2, 0) = 5000 m3.</p>
        <sec id="sec-2-1-1">
          <title>2.1.1. Optimal Schedules</title>
          <p>
            In addition to the problem of computing feasible schedules, we consider several diferent optimization
extensions. The first three are motivated by a desire to find schedules that reduce exceptionally high or
low levels in the hourly processing requirements placed on the facility. In the context of wastewater
treatment, the motivation for computing schedules that have an even flow of wastewater arriving at the
treatment plant is motivated by the treatment processes and discussions we had with HSY [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ] . With
high influx rates, water has to be fed through the limited-capacity process faster, resulting in a shorter
retention time for the water in each successive part of the process, reducing the overall treatment level.
Additionally, optimization of the treatment process itself is facilitated by a steady influx of wastewater.
          </p>
          <p>
            In more detail, we focus on three separate optimization criteria related to minimizing fluctuations in
the quantity of workload that arrives at the facility. In the following, let Total() be the total workload
arriving at the facility at timestep . The MAXMIN objective maximizes MinWorkload, i.e., maximizes
the minimum workload arriving at the facility over all timesteps. Analogously, the MINMAX objective
minimizes the maximum Total() over all timesteps, resulting in the smallest possible maximum
workload MaxWorkload received at the facility during the time horizon. Finally, the MINDIFF objective
minimizes the diference MaxWorkload − MinWorkload, essentially preferring schedules with more
even incoming hourly workloads. Under this objective, the problem can be seen as an example of a
resource leveling problem [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ]. Table 1 shows an optimal schedule with the MINDIFF objective, where
MaxWorkload − MinWorkload = 12000 − 12000 = 0.
          </p>
          <p>Additionally, we present results on two objectives that align more closely with previous work on
scheduling problems. The MAKESPAN objective minimizes the makespan of the schedule, i.e. the last
timestep at which the facility receives any workload. Finally, the MSTORAGE objective minimizes the
total sum of storage levels over all workers  and all timesteps . As an interesting side remark,
we note that the schedules optimal under MSTORAGE are also optimal under the MAKESPAN objective.
Because a decrement of Storage(, ) by a quantity of Sout(, ) &gt; 0 also decreases the sum of
Storage(,  + 1) + Storage(,  + 2) + · · · + Storage(, #t), MSTORAGE leads to emptying of all
storages at the earliest possible timestep, which is the objective of MAKESPAN.</p>
          <p>
            To end this section, we note that our problem setting is closely related to the well-studied network
lfow allocation problems [
            <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
            ] that seek to assign a flow value to each edge in a directed graph,
typically in a way that maximizes the total amount of flow between a specified source and sink node.
The two central diferences between the max-flow problem and our problem setting are that we allow
the workers (i.e. the nodes in a graph) to temporarily store workload (i.e., the flow in the graph), and
that the three main optimization criteria we study do not correspond to maximizing the flow through
the network.
2.2. OMT and MIP
We assume familiarity with propositional logic and satisfiability and recount some basics of optimization
modulo theories (OMT) with arithmetics over integer and real numbers using the standard interpretation
of the symbols +, − =, ≤ and &lt;.
          </p>
          <p>A term T is a sum or diference of integer or real variables. A theory atom  is a comparison (T1 &lt; T2)
or T1 = T2 between terms. A literal ℓ is either a {0, 1}-variable , a theory atom , or their negation
¬ and ¬. A clause  is a disjunction (∨) of literals, and a formula  is a conjunction (∧) of clauses.
When convenient, we view a clause  as a set of its literals and a formula  as a set of its clauses.</p>
          <p>An assignment  maps variables to their domains. A theory atom  is assigned to 1 by  (i.e.
 () = 1) if assigning the variables in the terms results in a true comparison. The semantics of
assignments are extended to literals, clauses and formulas in the standard way:  (¬ℓ) = 1 −  (ℓ),</p>
          <p>Description
number of workers
number of timesteps
maximum workload the facility can receive at each time step
total workload of the task released at worker  at time 
maximum workload storage capacity of 
workload stored at worker  at the beginning of timestep 1
number of timesteps for workload from  to arrive at the facility
maximum workload a worker can send for processing at any timestep</p>
          <p>Description
workload released at  at time  immediately sent to the facility
workload sent from storage of  at timestep  to the facility
workload in the temporary storage of  at the end of timestep 
total workload arriving at the facility at 
 () = max{ (ℓ) | ℓ ∈ }, and  ( ) = min{ () |  ∈  }. We say that an assignment  for
which  ( ) = 1 is a solution to  . The satisfiability modulo linear integer and rational arithmetic
problem is to decide the existence of a solution to a given formula. An OMT instance (over the same
theory) (, T) consists of a formula  and a term T. The task is to compute a solution  of  that
minimizes T. If one wishes to maximize T, this is achieved by minimizing − T.</p>
          <p>In addition to OMT, we consider mixed integer programming (MIP) where the goal is to minimize
an objective  ≡ ∑︀ + ∑︀ where  are integer variables,  are real variables, and  are real
constants, subject to a set of linear inequalities.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Constraint Models for Cumulative Scheduling with Delays</title>
      <p>
        In this section, we detail our constraint models for the scheduling problem. In Section 3.1, we detail
the OMT model and how it relates to the model for computing feasible schedules proposed in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In
Section 3.2 we describe the MIP model.
      </p>
      <sec id="sec-3-1">
        <title>3.1. OMT Model for Cumulative Scheduling</title>
        <p>notational convenience, we let P(, ) = Sout(, ) = 0 whenever  ≤ 0. Storage(, ) is the
amount of workload in the temporary storage of  at the end of timestep . Finally, Total() is the
total workload arriving at the facility at time , from all workers combined.</p>
        <sec id="sec-3-1-1">
          <title>3.1.1. Constraints in the OMT Model</title>
          <p>Note that while the timesteps, , range from 1 to #t, we denote startLevel for all workers  by
Storage(, 0).</p>
          <p>The first constraints define the domains of the main variables. The amount of workload immediately
sent for processing by worker  is at least 0 and at most task,; the constraint</p>
          <p>(0 ≤ P(, )) ∧ (P(, ) ≤ task,)
is included for all timesteps  in the range of 1 to #t − d. Note that for any feasible schedules to exist
task, = 0 has to hold for the last d timesteps.</p>
          <p>For some intuition on the domains of Sout(, ) and storageCapacity, note that in any feasible
schedule, the storage of worker  needs to be emptied at the latest at the timestep #t − d and not
increased after it so that all of the workload from  can arrive at the facility by the timestep #t. In our
model, the Sout(, ) variable is only included for  ∈ [1, #t − d] during which its domain is set to
be between 0 and storageCapacity; the constraint</p>
          <p>(0 ≤ Sout(, )) ∧ (Sout(, ) ≤ Storage(,  − 1))
is added for all timesteps  ∈ [1, #t − d]. Our setting also requires that the total quantity of workload
sent from  at each time step is at most maxOutput; the constraint</p>
          <p>(Sout(, ) + P(, ) ≤ maxOutput)
is included for all workers and timesteps in the range of 1 to #t − d. The domain of Storage(, )
is set between 0 and storageCapacity for all timesteps in the range of 0 to #t − d − 1 and to
equal 0 for the final d + 1 timesteps (note that Storage(, ) denotes the storage level at the end of
timestep , after possible emptying or filling at ); the constraint</p>
          <p>(0 ≤ Storage(, )) ∧ (Storage(, ) ≤ storageCapacity)
is included for  ∈ [0, #t − d − 1], and (Storage(, ) = 0) for  ∈ [#t − d, #t].</p>
          <p>Finally, the total workload arriving for processing at  is the sum of storage-derived and immediately
sent workloads arriving from each worker at ; the constraint</p>
          <p>Total() = ∑︀#w=1Sout(,  − d) + P(,  − d)
is added for all timesteps and all defined Sout(, ) values. With these variables, the constraint that
enforces that the maximum capacity of the facility is not exceeded is</p>
          <p>(Total() ≤ maxCapacity)
which is added for all timesteps  ∈ [1, #t].</p>
          <p>The final sets of constraints encode the semantics of Storage(, ) and link the workload
immediately sent for processing with the changes in the amounts stored. For some intuition on these, note that
the amount of new workload stored at worker  on time  is task, − P(, ). With this intuition,
the amount of workload stored at worker  is increased on each iteration by task, − P(, ) and
decreased by Sout(, ). Stated as a constraint, this is
(1)
(2)
(3)
(4)
(5)
(6)
Storage(, ) = Storage(,  − 1) − Sout(, ) + task, − P(, )
(7)
which is added for all  ∈ [1, #w] and  ∈ [1, #t − d].</p>
          <p>The last constraints link the changes in the amount of workload stored with the amount of workload
immediately sent for processing. In essence, the constraints state that the amount of new workload
task, is equal to the amount of workload immediately sent for processing and any positive change
in the amount stored at . If the change in the amount stored is negative (or zero), indicating that some
workload (or none) was also sent from the storage, then the workload equal to task, should be sent
for processing immediately. As constraints, with ΔS(, ) = Storage(, ) − Storage(,  − 1) as
notational shorthand, this is:
¬(0 &lt; ΔS(, )) ∨ (task, = P(, ) + ΔS(, ))
¬(ΔS(, ) ≤ 0) ∨ (task, = P(, ))
(8)
(9)
i.e. 0 &lt; ΔS(, ) =⇒ task, = P(, ) + ΔS(, ) and ΔS(, ) ≤ 0 =⇒ task, = P(, ). The
constraints 8 and 9 are added for all  ∈ [1, #w],  ∈ [1, #t − d], for which task, &gt; 0.</p>
          <p>We summarize the model for computing feasible schedules as follows. Let  schedule be an SMT
formula consisting of Constraints 1-9 as specified in this section. Then any solution  of  schedule sets
the P(, ), Sout(, ), and Storage(, ) variables in a way that corresponds to a feasible schedule.</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>3.1.2. Optimal Schedules with OMT</title>
          <p>To extend the constraint model from feasibility to optimization, we next describe how to encode each
of the five optimization criteria  discussed in Section 2.1.1 as a term T such that the optimal solutions
to the OMT instance ( schedule, T) correspond to optimal schedules under . Here  schedule is an
SMT formula consisting of the Constraints 1-9 detailed in 3.1.1.</p>
          <p>To encode the MAXMIN and MINMAX optimization criteria we add the real variables MinWorkload and
MaxWorkload to the instance as well as the constraints (MinWorkload ≤ Total()) ∧ (Total() ≤
MaxWorkload) for all  ∈ [1, #t] to define them. Then maximizing MinWorkload over the solutions
that satisfy the  schedule results in a schedule that maximizes the minimum workload arriving at the
facility at each time step (i.e. the MAXMIN criteria). Analogously, minimizing MaxWorkload obtains
a schedule that minimizes the maximum workload (i.e., the MINMAX criteria). Finally, minimizing
MaxWorkload − MinWorkload obtains a schedule in which the largest absolute diference in arriving
workload is as small as possible across all timesteps, i.e. the MINDIFF optimization criteria. The bounds
for MinWorkload and MaxWorkload are initialized to 0 and maxCapacity.</p>
          <p>The MSTORAGE objective is encoded by minimizing the sum of all Storage(, ) variables. Finally,
the MAKESPAN objective is encoded by minimizing the integer LastWorkIn variable defined to equal
the last time step on which the facility receives any workload. This definition is enforced with the
constraints ¬(Total() &gt; 0) ∨ ( ≤ LastWorkIn) added for each timestep.</p>
        </sec>
        <sec id="sec-3-1-3">
          <title>3.1.3. Relation to Previous Work</title>
          <p>
            We briefly detail the main diferences between our OMT model for cumulative scheduling presented
in Section 3.1.1, and the SMT approach to computing feasible schedules for the wastewater treatment
plant problem proposed by Bofill, Muñoz and Murillo in [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] that we will call the BMM model from
now on. The BMM model was studied in a setting where the workers are industrial facilities that
produce integer quantities of wastewater to send to a wastewater treatment plant. The BMM model
assumes no delay for the workers, i.e d = 0 for all , and that the storages of each worker are
empty at the beginning of the timeframe, i.e. that startLevel = 0 for all . It also enforces a limit
TankFlow only on Sout(, ), instead of Sout(, ) + P(, ), i.e., the amount of wastewater that
can be released from the storage of each worker at any given timestep. The BMM model also includes
the constraints (Sout(, ) = 0) ∨ (Sout(, ) = min{TankFlow, Storage(,  − 1)}) that enforce
that the workload released from the storage of any worker is either zero or the maximum possible, and
the constraints (P(, ) = 0) ∨ (P(, ) = task,) that enforce for each task, that either all of
task, is directly sent for processing, or none is.
          </p>
          <p>Our constraint model extends the problem of computing feasible schedules to optimization and
allows more flexible workload sending from workers. Our model allows, e.g., for sending all of the new
workload task, at  together with a part of the workload in storage. Constraint 3 in our model limits
the total quantity of workload sent from each worker rather than just the quantity released from the
storage of each worker; this decision was made based on discussion with the local wastewater agency
HSY where we confirmed that all wastewater at a given station is pumped forward using the same
pumps regardless of possible prior temporary storing.</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. A MIP Model for Cumulative Scheduling with Delays</title>
        <p>The MIP model we propose uses all constants and variables listed in Tables 2 and 3 as well as a
{0, 1}-variable SMinus(, ) for each worker  and timestep . SMinus(, ) is an indicator for 
emptying (some of) its storage at timestep . In other words, a solution to the MIP model that assigns
SMinus(, ) = 1 corresponds to a schedule in which Sout(, ) &gt; 0.</p>
        <sec id="sec-3-2-1">
          <title>3.2.1. Constraints in the MIP Model</title>
          <p>Our MIP model includes the Constraints 1-7 detailed in Section 3.1.1 as well as a "Big-M" encoding of
the implications in Constraints 8-9. The constant M was set as the maximum task, + maxOutput
over all timesteps and workers, and  was set to 10− 14, which is the smallest possible positive storage
decrement for any worker and timestep.</p>
          <p>ΔS(, ) ≤ −  · SMinus(, ) + M · (1 − SMinus(, ))
ΔS(, ) ≥ −</p>
          <p>M · SMinus(, )
P(, ) ≥ task, − M · (1 − SMinus(, ))</p>
          <p>P(, ) ≤ task, + M · (1 − SMinus(, ))
P(, ) + ΔS(, ) ≥ task, − M · SMinus(, )
P(, ) + ΔS(, ) ≤ task, + M · SMinus(, )
(10)
(11)
(12)
(13)
(14)
(15)
where ΔS(, ) = Storage(, ) − Storage(,  − 1). Constraint 10 requires that a non-negative
ΔS(, ) results in SMinus(, ) = 0. Constraint 11 requires that a negative ΔS(, ) results in
SMinus(, ) = 1. Thus, SMinus(, ) is 1 if the storage of worker  is decremented at timestep , and
0 otherwise. Constraints 12-13 ensure that if the storage of  at timestep  is being partially emptied,
the entire task task, is directly sent to the processing facility. If instead there is no storage decrement,
then constraints 14-15 split the workload as task, = P(, ) + ΔS(, ).</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>3.2.2. Optimal Schedules with MIP</title>
          <p>For the MIP model, the MAXMIN, MINMAX, MINDIFF and MSTORAGE objectives were encoded precisely
as described in Section 3.1.2. In order to encode MAKESPAN, we introduce for each  a binary variable
TotalPositive() as an indicator for the total workload arriving at the facility being greater than zero.
With this variable, the implication Total() &gt; 0 =⇒ LastWorkIn ≥  that defines the LastWorkIn
to be minimized for the MAKESPAN objective is encoded with the following constraints: Total() ≤
maxCapacity · TotalPositive(), and LastWorkIn ≥  · TotalPositive(). These ensure that
if TotalPositive() = 0 then Total() = 0 and if Total() &gt; 0 then TotalPositive() = 1.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. New Open-Source Benchmarks</title>
      <p>Before presenting the results of our experimental evaluation, we briefly detail the new open-source
benchmark set for OMT and MIP that we collected for this work.</p>
      <p>We obtained hourly real-world data on the quantities of wastewater pumped and wastewater surface
levels in 2023 and 2024 at two pumping stations maintained by HSY. The two pumping stations have
maximum outputs of maxOutput1 = 30000 m3/h and maxOutput2 = 5543 m3/h, respectively. The
maximum capacity of the treatment plant is maxCapacity = 29166 m3/h. The storage capacities of
the workers were estimated from the data. For the first station, we knew the theoretical total volume of
the storage. However, in consultation with HSY, we learned that storing water amounts even close to the
maximum volume would risk flooding of associated underground structures and be highly undesirable.
Thus, we instead set storageCapacity1 = 168241 m3 based on the maximum water level realized in
2023 and 2024. For the second station, we did not know the maximum volume of the storage. Instead,
we assumed that the largest drops in surface level correspond to situations with maximal output of the
pumps coinciding with comparatively negligible volume of incoming water. We averaged 10 largest
drops in surface levels during 2023 and 2024 to get an estimate for the ratio of surface level change (in cm)
to output water volume, and based on the highest observed storage surface level in this two-year period
then set the maximum storage volume as storageCapacity2 = 20468 m3. The maximum output
maxOutput1 = 30000 m3/h for the first station was obtained from the agency, while maxOutput2
was set to 5542 m3/h based on the maximum value in the data. The default delay d1 and d2 of both
stations is 0 hours.</p>
      <p>
        With these values for the constants, we create two sets of benchmarks: the 24-hour local set and
the 1104-hour local set. The 24-hour set is based on the timespan from 2024-11-16 00:00 to 2024-11-16
23:00, and the 1104-hour set on 2024-11-16 00:00 to 2024-12-31 23:00. This specific timeframe for our
evaluation was chosen due to the convenience of the data not containing any missing values in these
ranges. With the starting point of the timespan decided, the starting storage levels for the two stations
could be read directly from the dataset as startLevel1 = 58182 m3 and startLevel2 = 379 m3,
respectively. In line with [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] we experiment with a range of diferent maximum capacities of the
processing facility. As our focus is on optimization, we did some preliminary testing in order to
determine capacities high enough to guarantee the existence of feasible schedules. For the 1104-hour
set, we consider maxCapacity values in the range 12000 to 30000 m3 with intervals of 2000 m3 and
for the 24-hour set we used 18000 to 30000 m3 with intervals of 1000. The ranges start from the lowest
satisfiable maxCapacity divisible by 1000 common for the all-zero and artificially generated d value
choices. In both sets, we also include benchmarks with maxCapacity set to the maximum value of
50000 m3 to observe the solving times on a still higher maximum capacity. In total, the 24-hour set
includes 88 and the 1104-hour set 120 feasibility instances. Considering the five optimization criteria
described in Section 3.1.2, the full sets include 1248 benchmarks, of which 208 are feasibility instances.
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Experimental Evaluation</title>
      <p>
        We report on an experimental evaluation of the constraint models described in Section 3. After detailing
the setup of the experiments in Section 5.1, we present results on the relative hardness of computing
optimal schedules under diferent optimization criteria, as well as the efect of enforcing the workloads
to be integer and having delays between the workers and the facility in Section 5.2.
We describe the benchmarks, solvers and the hardware we use. The open-source benchmarks (including
the script for generating them) are available online [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
5.1. Setup
      </p>
      <sec id="sec-5-1">
        <title>Benchmarks</title>
        <p>
          In addition to the local benchmark sets described in Section 4 we use the dataset called real (which we
call B24) from [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] since our preliminary tests showed it to be the most challenging of the datasets
in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. The dataset contains information about the volume of wastewater produced each hour over
a 24-hour period by eight industrial facilities. We use 2500, 3000, 1500, 1000, 3000, 1500, 1000, and
2500 L/h from [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] as as the maxOutput values for the 8 workers in our benchmarks. These are the
same as used in the previous work for restricting the amount of water sent from the storages at each
time step. We also consider maxCapacity values in the range of 5000 to 6000 L/h with intervals of
100 L/h, together with 50000 L/h. The lowest value was chosen based on the feasibility checks in our
preliminary experiments, while the step of 100 L is the same as in previous work [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>In our experiments, we study the efect of two variations of the benchmarks being solved. The first
is whether all variables in the models are restricted to real values or integral values. The motivation
for studying the integer variants is two-fold. On the one hand, the abstract problem setting could be
applicable in settings where the workload cannot be divided, e.g., storing discrete wares or treating
people. On the other, some solvers do not support floating-point values, and those that do can sufer
from rounding errors when dealing with them.</p>
        <p>The second variation of benchmarks we study is whether there is a delay between the workers and
the facility. The default delays for all workers in the local data is 0 based on the physical locations of the
stations and the processing facility. The BMM dataset does not specify delays for the industrial facilities.
Thus, we consider the default values of the workers in the BMM set to be 0 as well. To demonstrate
the efect that delays have on the overall solving time, we consider a variant of the benchmarks with
synthetic delay values. For the local sets, the synthetic variant puts the delay of the second worker to 2.
For B24, we randomly assigned delay values 2, 2, 5, 2, 6, 5, 3, and 4 for the eight facilities, respectively.</p>
        <p>Table 4 summarizes the feasibility benchmarks we use in our evaluation. The number of constraints
and variables reported are for the OMT variants of the benchmarks. The total number of benchmarks
reported is obtained as the number of diferent maximum capacity values considered, plus the four
configurations following from the two variants (delays and integer variables) that we just described.
For example, for the 24-hour local dataset with 11 diferent maxCapacity values, this translates to 44
benchmarks of feasibility problems. The total number of unique combinations over all the datasets
is thus 44+60+48=152 for OMT and MIP models, encompassing all combinations of maxCapacity,
choice of integer vs. real-valued workload, and all-zero or non-zero delay values. Combined with the 5
optimization criteria and runs without optimization we end up with 912 runs for each OMT and MIP
solver (6 · (44 + 60) = 624 runs with the local sets, and 288 with B24 data).</p>
      </sec>
      <sec id="sec-5-2">
        <title>Solvers and Hardware</title>
        <p>
          As OMT solvers, we consider OptiMathSAT (OMath) version 1.7.3 [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] (obtained from https://
optimathsat.disi.unitn.it/) and Z3 [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] (from https://github.com/Z3Prover/z3). For MIP, we use Gurobi
version 12.0.0 [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] (from https://www.gurobi.com/).
        </p>
        <p>
          The OMT benchmarks in SMT-LIBv2-format were produced using the Python API of Z3 [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], and the
MIP benchmarks in MPS format with the Python API of Gurobi [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. All evaluations were performed
single-threaded on 2.50-GHz Intel Xeon Gold 6248 machines with 381-GB RAM in RHEL under a
per-instance 32-GiB memory limit and 30-minute time limit.
        </p>
        <sec id="sec-5-2-1">
          <title>5.2. Results</title>
          <p>fact, all Gurobi runs finished within 32 seconds. For Z3, we observe that enforcing the MSTORAGE
optimization criteria leads, in general, to higher running times and fewer solved instances compared
to enforcing MAKESPAN. We also observe that Z3 generally solves the integer-restricted benchmarks
more eficiently, and that optimizing the evenness of the flow to the processing plant is in general,
more challenging than only minimizing the makespan of the schedule, as witnessed by the lower
number of instances solved and higher running times of Z3 under MINMAX, MAXMIN and MINDIFF when
compared to MAKESPAN. For a more fine-grained view of the results for the OMT solvers, we note that
OptiMathSAT solved all feasibility benchmarks, but was not able to solve any optimization benchmarks
from the L1104 dataset within the time limit, while Z3 solved all feasibility instances and 58.3 % of the
optimization instances from L1104.</p>
          <p>
            As an interesting side note, we observe that when enforcing the constraint (P(, ) = 0) ∨ (P(, ) =
task,) for all workers and timesteps that was used in the previous model of a similar problem [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ]
(recall Section 3.1.3), we observed significant increases in solving time for both MIP and OMT. In fact,
with this additional constraint, the performance of the OMT solvers was much more comparable to the
performance of Gurobi, an observation in line with the one made in [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ]. Removing this constraint led
to overall decreases in solving time in both paradigms, albeit more significant decreases for Gurobi.
          </p>
          <p>Table 6 demonstrates the efect of non-zero delays on the overall solving time of MIP and OMT
solvers. We observe that delays between the workers and the processing facility do not, in general,
influence the running time of any solvers significantly.</p>
          <p>B24</p>
          <p>L24</p>
          <p>L1104
300</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>We studied a variant of cumulative scheduling under diferent optimization criteria, focusing on a
concrete instantiation in which a set of wastewater sources schedule pumping the water for treatment
while not overloading the facility’s max capacity or their individual (temporary storage) capacities.
We presented the first constraint model for computing optimal schedules for this problem, collected a
new real-world dataset, and used it to evaluate the performance of state-of-the-art solvers in MIP and
OMT in this setting. Our results demonstrate the efectiveness of MIP for the setting and the feasibility
of OMT. Interesting future work includes extending the model to settings where not all workers are
directly connected to the processing facility; multiple workers may link together prior to the facility, as
is common for wastewater treatment infrastructure.</p>
    </sec>
    <sec id="sec-7">
      <title>Declaration on Generative AI</title>
      <p>The authors have not employed any Generative AI tools.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgements</title>
      <p>The work is supported by the Research Council of Finland under the grant 362987. The authors wish to
thank the Finnish Computing Competence Infrastructure (FCCI) for computational and data storage
resources, and Helsinki Region Environmental Services Authority (HSY) for the Finnish wastewater
treatment data.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Caseau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Laburthe</surname>
          </string-name>
          ,
          <article-title>Cumulative scheduling with task intervals</article-title>
          , in: JICSLP, MIT Press,
          <year>1996</year>
          , pp.
          <fpage>363</fpage>
          -
          <lpage>377</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P.</given-names>
            <surname>Baptiste</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. L.</given-names>
            <surname>Pape</surname>
          </string-name>
          ,
          <article-title>Constraint propagation and decomposition techniques for highly disjunctive and highly cumulative project scheduling problems</article-title>
          ,
          <source>Constraints An Int. J</source>
          .
          <volume>5</volume>
          (
          <year>2000</year>
          )
          <fpage>119</fpage>
          -
          <lpage>139</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Garey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Johnson</surname>
          </string-name>
          ,
          <article-title>Computers and Intractability: A Guide to the Theory of NPCompleteness, W</article-title>
          . H.
          <string-name>
            <surname>Freeman</surname>
          </string-name>
          ,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hartmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Briskorn</surname>
          </string-name>
          ,
          <article-title>An updated survey of variants and extensions of the resourceconstrained project scheduling problem</article-title>
          ,
          <source>Eur. J. Oper. Res</source>
          .
          <volume>297</volume>
          (
          <year>2022</year>
          )
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E. P. K.</given-names>
            <surname>Tsang</surname>
          </string-name>
          ,
          <article-title>Constraint based scheduling: Applying constraint programming to scheduling problems</article-title>
          ,
          <source>J. Sched</source>
          .
          <volume>6</volume>
          (
          <year>2003</year>
          )
          <fpage>413</fpage>
          -
          <lpage>414</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>E.</given-names>
            <surname>Demirovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Musliu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Winter</surname>
          </string-name>
          ,
          <article-title>Modeling and solving staf scheduling with partial weighted maxsat</article-title>
          ,
          <source>Ann. Oper. Res</source>
          .
          <volume>275</volume>
          (
          <year>2019</year>
          )
          <fpage>79</fpage>
          -
          <lpage>99</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Floudas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <article-title>Mixed integer linear programming in process scheduling: Modeling, algorithms</article-title>
          , and applications, Ann. Oper. Res.
          <volume>139</volume>
          (
          <year>2005</year>
          )
          <fpage>131</fpage>
          -
          <lpage>162</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S. S.</given-names>
            <surname>Craciunas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. S.</given-names>
            <surname>Oliver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chmelík</surname>
          </string-name>
          , W. Steiner,
          <article-title>Scheduling real-time communication in IEEE 802.1qbv time sensitive networks</article-title>
          ,
          <source>in: RTNS, ACM</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>183</fpage>
          -
          <lpage>192</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>X.</given-names>
            <surname>Jin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Xia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Guan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Zeng</surname>
          </string-name>
          ,
          <article-title>Joint algorithm of message fragmentation and no-wait scheduling for time-sensitive networks</article-title>
          ,
          <source>IEEE CAA J. Autom. Sinica</source>
          <volume>8</volume>
          (
          <year>2021</year>
          )
          <fpage>478</fpage>
          -
          <lpage>490</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Patti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. L.</given-names>
            <surname>Bello</surname>
          </string-name>
          , L. Leonardi,
          <article-title>Deadline-aware online scheduling of TSN flows for automotive applications</article-title>
          ,
          <source>IEEE Trans. Ind. Informatics</source>
          <volume>19</volume>
          (
          <year>2023</year>
          )
          <fpage>5774</fpage>
          -
          <lpage>5784</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Shen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Deng</surname>
          </string-name>
          , S. Han,
          <string-name>
            <given-names>X. S.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <article-title>Qos guaranteed resource allocation for coexisting embb and URLLC trafic in 5g industrial networks</article-title>
          ,
          <source>in: RTCSA</source>
          , IEEE,
          <year>2022</year>
          , pp.
          <fpage>81</fpage>
          -
          <lpage>90</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Ontario</given-names>
            <surname>Onsite Wastewater Association</surname>
          </string-name>
          ,
          <source>Flow balancing and flow equalization</source>
          ,
          <year>2020</year>
          . URL: https: //www.oowa.org/wp-content/uploads/2022/05/FINAL-OOWA_
          <article-title>GD_Flow-Balancing-07162020</article-title>
          . pdf.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Bofill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Muñoz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Murillo</surname>
          </string-name>
          ,
          <article-title>Solving the wastewater treatment plant problem with SMT</article-title>
          ,
          <source>CoRR abs/1609</source>
          .05367 (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T.</given-names>
            <surname>Nixon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. M.</given-names>
            <surname>Curry</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. A. B.</surname>
          </string-name>
          ,
          <article-title>Mixed-integer programming models and heuristic algorithms for the maximum value dynamic network flow scheduling problem</article-title>
          ,
          <source>Comput. Oper. Res</source>
          .
          <volume>175</volume>
          (
          <year>2025</year>
          )
          <fpage>106897</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R. K.</given-names>
            <surname>Ahuja</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. L.</given-names>
            <surname>Magnanti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. B.</given-names>
            <surname>Orlin</surname>
          </string-name>
          ,
          <article-title>Network flows - theory, algorithms</article-title>
          and applications, Prentice Hall,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>P.</given-names>
            <surname>Trentin</surname>
          </string-name>
          ,
          <article-title>Optimization Modulo Theories with OptiMathSAT</article-title>
          ,
          <source>Ph.D. thesis</source>
          , University of Trento, Italy,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Trentin</surname>
          </string-name>
          ,
          <article-title>Optimathsat: A tool for optimization modulo theories</article-title>
          ,
          <source>J. Autom. Reason</source>
          .
          <volume>64</volume>
          (
          <year>2020</year>
          )
          <fpage>423</fpage>
          -
          <lpage>460</lpage>
          . URL: https://doi.org/10.1007/s10817-018-09508-6. doi:
          <volume>10</volume>
          .1007/ S10817-018-09508-6.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Seshia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <article-title>Satisfiability modulo theories</article-title>
          ,
          <source>in: Handbook of Satisfiability</source>
          , volume
          <volume>336</volume>
          <source>of Frontiers in Artificial Intelligence and Applications</source>
          , IOS Press,
          <year>2021</year>
          , pp.
          <fpage>1267</fpage>
          -
          <lpage>1329</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>D.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. G.</given-names>
            <surname>Batson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dang</surname>
          </string-name>
          , Applied Integer Programming: Modeling and Solution, Wiley,
          <year>2009</year>
          . URL: http://dx.doi.org/10.1002/9781118166000. doi:
          <volume>10</volume>
          .1002/9781118166000.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kasslin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Berg</surname>
          </string-name>
          ,
          <article-title>Benchmark repository for "An Optimization Modulo Theories-based Approach to Cumulative Scheduling with Delays"</article-title>
          ,
          <year>2025</year>
          . URL: https://doi.org/10.5281/zenodo.15741417. doi:
          <volume>10</volume>
          . 5281/zenodo.15741417.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>L. M. de Moura</surname>
            ,
            <given-names>N. S.</given-names>
          </string-name>
          <string-name>
            <surname>Bjørner</surname>
          </string-name>
          ,
          <article-title>Z3: an eficient SMT solver</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.),
          <string-name>
            <surname>Proc</surname>
            <given-names>TACAS</given-names>
          </string-name>
          , volume
          <volume>4963</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -78800-3_
          <fpage>24</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -78800-3\_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Gurobi</surname>
            <given-names>Optimization</given-names>
          </string-name>
          ,
          <string-name>
            <surname>LLC</surname>
          </string-name>
          , Gurobi Optimizer Reference Manual,
          <year>2024</year>
          . URL: https://www.gurobi. com.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>