<!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>
      <issn pub-type="ppub">1613-0073</issn>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Optimization of the Book Scanning Problem via Iterated Local Search and Genetic Algorithms</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Driton Alija</string-name>
          <email>driton.alija@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Meriton Kryeziu</string-name>
          <email>meriton.kryeziu@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Endrit Hoda</string-name>
          <email>endrit.hoda@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lirim Islami</string-name>
          <email>Lirim.Islami@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lorik Mustafa</string-name>
          <email>lorik.mustafa2@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yll Berisha</string-name>
          <email>yll.berisha3@student.uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kadri Sylejmani</string-name>
          <email>kadri.sylejmani@uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arben Ahmeti</string-name>
          <email>arben.ahmeti@universitetiaab.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Labeat Arbneshi</string-name>
          <email>labeat.arbneshi@uni-pr.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Workshop</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Computer Sciences, AAB College</institution>
          ,
          <addr-line>Elez Berisha, Nr.56 10000 Prishtinë</addr-line>
          ,
          <country country="KO">Kosova</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Faculty of Electrical and Computer Engineering, University of Prishtina</institution>
          ,
          <addr-line>Bregu i Diellit p.n., 10000, Prishtina</addr-line>
          ,
          <country country="KO">Kosova</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>NP-hard problem, Iterated Local Search</institution>
          ,
          <addr-line>Genetic Algorithms, Metaheuristics, Empirical Analysis</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>This short paper presents ongoing work on solving the Book Scanning problem introduced in the Google Hash Code 2020 competition. The problem requires scheduling library signups and book scanning activities to maximize the total score, subject to time and capacity constraints. Two metaheuristic approaches are investigated: Iterated Local Search (ILS) and Genetic Algorithms (GA). A Greedy Randomized Adaptive Search Procedure (GRASP) is used to construct the initial solution, which is subsequently improved through neighborhood-based search. The methods are evaluated on a set of benchmark and synthetically generated instances. Results show that both ILS and GA produce competitive solutions, with GA consistently matching or exceeding best-known results across most instances and demonstrating lower variability. ILS performs similarly in terms of solution quality but tends to exhibit higher fluctuation across runs. The findings highlight the efectiveness of metaheuristic approaches in large-scale, constrained scheduling problems and confirm GA's advantage in consistency and robustness.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1.1. Notations</title>
      <p>Let  be the set of books and  the set of libraries. Denote by  the total number of days available for
scanning. For each book  ∈  , let   be the score awarded when the book is scanned.</p>
      <p>For each library  ∈  , we define   ⊆  as the set of books available in library  . Let   be the number
of days required to complete the signup process for library  , and   be the number of books that can be
scanned each day from library  once the signup process is completed.</p>
      <p>We define the following decision variables:
•   ∈ {0, 1},  ∈  , a binary variable which takes the value 1 if library  is selected for signup, and 0
•   ∈ {0, 1},  ∈  ,  ∈   , a binary variable which takes the value 1 if book  is scanned from library</p>
      <p>LGOBE</p>
      <p>CEUR</p>
      <p>ceur-ws.org
•   ∈ {0, 1},  ∈  , a binary variable which takes the value 1 if book  is scanned from any library,
and 0 otherwise.</p>
      <p>before library  2, and 0 otherwise.
•   1, 2 ∈ {0, 1},  1,  2 ∈  ,  1 ≠  2, a binary variable which takes the value 1 if library  1 is processed
•   ∈ {0, 1, … ,  − 1} ,  ∈  , an integer variable which gives the day on which the signup process for
library  starts.</p>
    </sec>
    <sec id="sec-2">
      <title>1.2. Formulation</title>
      <p>Using these definitions, the Book Scanning Problem can be formulated as a Mixed-Integer Linear
Programming (MILP) model using the following equations:</p>
      <p>Maximize
subject to:
∑    
∈
∈
  ≥  
  ≤  
∑   ≤ 1 ∀ ∈ ,
∀ ∈ , ∀ ∈ 
∀ ∈ , ∀ ∈ 
,

,

  1, 2 +   2, 1 ≤ 1 ∀ 1,  2 ∈ ,  1 ≠  2,
  2 ≥  
1
+   1 ⋅   1 −  ⋅ (1 −   1, 2)</p>
      <p>∀ 1,  2 ∈ ,  1 ≠  2,
  1, 2 +   2, 1 ≥  
1</p>
      <p>+   2 − 1 ∀ 1,  2 ∈ ,  1 ≠  2,
  +   ⋅   ≤  ∀ ∈ ,
∑   ≤   ⋅ ( −   −   ) ⋅</p>
      <p>∀ ∈ ,
∈ 
∈ 
  ≤ ∑  ,</p>
      <p>∈
∑   ≤ |  | ⋅</p>
      <p>
        ∀ ∈ ,
∀ ∈ ,
  ,   ,   ,   1, 2 ∈ {0, 1} ∀,  1,  2 ∈ , ∀ ∈ ,
  ∈ {0, 1, … ,  − 1} ∀ ∈ .
(
        <xref ref-type="bibr" rid="ref1">1</xref>
        )
(
        <xref ref-type="bibr" rid="ref2">2</xref>
        )
(
        <xref ref-type="bibr" rid="ref3">3</xref>
        )
(
        <xref ref-type="bibr" rid="ref4">4</xref>
        )
(
        <xref ref-type="bibr" rid="ref5">5</xref>
        )
(
        <xref ref-type="bibr" rid="ref6">6</xref>
        )
(
        <xref ref-type="bibr" rid="ref7">7</xref>
        )
(
        <xref ref-type="bibr" rid="ref8">8</xref>
        )
(
        <xref ref-type="bibr" rid="ref9">9</xref>
        )
(
        <xref ref-type="bibr" rid="ref10">10</xref>
        )
(
        <xref ref-type="bibr" rid="ref11">11</xref>
        )
(12)
(13)
      </p>
      <p>
        The objective function (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) states that we wish to maximize the total score of all scanned books.
Constraints (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) require that each book be scanned at most once. Constraints (
        <xref ref-type="bibr" rid="ref3">3</xref>
        ) define that a book is
considered scanned if it’s scanned from at least one library, while constraints (
        <xref ref-type="bibr" rid="ref4">4</xref>
        ) ensure books can only
be scanned from libraries that are signed up.
      </p>
      <p>
        Constraints (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ) establish that for any two distinct libraries, at most one can precede the other.
Constraints (
        <xref ref-type="bibr" rid="ref6">6</xref>
        ) enforce that if library  1 is processed before library  2, then the signup process for  2 can
only start after the signup process for  1 is completed. Constraints (
        <xref ref-type="bibr" rid="ref7">7</xref>
        ) ensure that for any two libraries
that are signed up, one must precede the other in the signup process. Collectively, Constraints (
        <xref ref-type="bibr" rid="ref5">5</xref>
        )–(
        <xref ref-type="bibr" rid="ref7">7</xref>
        )
enforce a sequential signup process, ensuring that only one library is processed at any given time.
      </p>
      <p>
        Constraints (
        <xref ref-type="bibr" rid="ref8">8</xref>
        ) guarantee that library signup must be completed within the available days. Constraints
(
        <xref ref-type="bibr" rid="ref9">9</xref>
        ) limit the number of books that can be scanned from a library based on its daily capacity and the
number of days available after its signup process completes. Constraints (
        <xref ref-type="bibr" rid="ref10">10</xref>
        ) ensure that the number
of books scanned from a library does not exceed the number of books available in that library, while
constraints (
        <xref ref-type="bibr" rid="ref11">11</xref>
        ) ensure that a book can be scanned only by a signed-up library.
      </p>
      <p>Finally, constraints (12) and (13) state that the decision variables are binary or non-negative integers
as appropriate.</p>
      <sec id="sec-2-1">
        <title>2. Solution Approach</title>
        <p>Our approach to solving the Book Scanning problem is twofold: one based on single-state solutions,
such as Iterated Local Search (ILS) [3], and the other based on population-based methods, such as
Genetic Algorithms (GA) [4]. Both approaches have proven efective in solving various planning and
scheduling problems across diverse domains, such as technician routing and scheduling [5], and flexible
job shop scheduling [6].</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>2.1. Preprocessing, Search Space and Fitness Function</title>
      <p>As part of the preprocessing phase, we begin by extracting the key structural components of the
problem: books, libraries, and time constraints. Each book is associated with a unique score, while
each library is characterized by its signup time, daily scanning capacity, and the list of books it holds.
These books are sorted in decreasing order of their scores to prioritize higher-value selections during
scanning. Additionally, we construct a hash table data structure that maps each book to the list of
libraries in which it is available. This mapping facilitates eficient lookup during library selection and
book allocation in later stages of the algorithm.</p>
      <p>Figure 2.1 illustrates a snapshot of a possible solution configuration. Libraries that have already been
signed up are represented as a list of hash tables, each mapping a library ID (as the key) to a list of book
indices assigned for scanning from that library. Libraries that have not yet been signed up are grouped
into a separate list, and books that remain unscanned are also tracked explicitly.</p>
      <p>Based on this structure, the search space of the problem includes all possible ways to choose and
order libraries for signup, all possible subsets of books to scan from those libraries, as well as the
possible decisions to leave some libraries unsigned and some books unscanned.</p>
      <p>More formally, let  be the set of all libraries, and let  be the set of all books. For each library  ∈  ,
let   ⊆  denote the set of books available in that library. Then the search space consists of:
• All possible subsets  ′ ⊆  representing the libraries selected for signup, and all permutations of
 ′ representing the signup order;
• For each signed-up library  ∈  ′, all possible subsets   ⊆   of books selected for scanning, such
that the scanning of   can be completed within the remaining time after the library’s signup;
• The set of libraries not selected for signup,  ∖  ′, and the set of books not scanned in the solution,
given by  ∖ ⋃∈ ′   .</p>
      <p>Efectively, the search space includes decisions about which subset of libraries to sign up, the order
in which to sign them up, and the subset of books to scan from each selected library. It also involves
deciding which libraries to exclude entirely and which books to leave unscanned.</p>
      <p>
        The fitness function (Equation (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) in Section 1.2) evaluates the total score of all uniquely scanned
books, taking into account the constraints imposed by library signup durations and daily scanning
capacities. If a book is scanned by multiple libraries, its score is counted only once in the final total.
      </p>
    </sec>
    <sec id="sec-4">
      <title>2.2. Initial solution</title>
      <p>The initial solution is constructed using four diferent strategies, with the best among them adopted as
the initial solution before the algorithm enters its iterative phase. Below, we provide details about each
strategy.</p>
      <p>Greedy by Signup and Book Score: This strategy prioritizes libraries with shorter signup times and
higher total book scores. Libraries are sorted first by ascending signup days, then by descending total
book score. Libraries are selected one by one, ensuring that the total number of days is not exceeded
and that no duplicate books are scanned. For each selected library, the most valuable unscanned books
are chosen, and the scanned book list and remaining days are updated accordingly.</p>
      <p>Greedy by Eficiency : This strategy uses a priority queue (heap) to always select the library with the
highest scanning eficiency. Eficiency is defined as the ratio of the potential book score (from the most</p>
      <sec id="sec-4-1">
        <title>Signed-up Libraries Unsigned Libraries</title>
        <p>valuable books that can be scanned within the remaining time) to the library’s signup days. At each
step, the most eficient library is selected, scanned books and remaining time are updated, and the heap
is adjusted if needed.</p>
        <p>Weighted Eficiency with Penalization : This strategy enhances the basic greedy approach by penalizing
libraries selected later or those with high signup durations. It introduces two tunable parameters, α
(alpha) and β (beta), to control the impact of signup time and selection order. Each library’s eficiency is
calculated using a weighted formula that balances book value against registration cost and selection
delay. At each step, the library with the highest weighted eficiency is selected, and the scanned book
list, remaining time, and library count are updated. Parameters α and β can be fine-tuned for optimal
performance.</p>
        <p>GRASP-Based Initialization: This strategy constructs the initial solution using the Greedy Randomized
Adaptive Search Procedure (GRASP) [7]. Libraries are first sorted by ascending signup days and then by
descending total book score. At each step, one library is randomly selected from a Restricted Candidate
List (RCL), containing the top 5% of libraries according to this ordering. Libraries are added sequentially,
with their books scheduled for scanning immediately after signup. The process stops when no additional
library can be added without exceeding the time limit.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>2.3. Neighborhood Structure</title>
      <p>To explore the solution space efectively and escape local optima, we define a set of neighborhood
operators that modify the current solution in controlled ways. These operators generate neighboring
solutions by altering the structure of the library signup order and book selections, while preserving
feasibility with respect to the problem constraints.</p>
      <p>The neighborhood is composed of the following six move types:
• Swap between two signed-up libraries: Two libraries currently included in the solution are
randomly selected, and their positions in the signup sequence are swapped. This move changes
the order in which their scanning begins and can afect the number of books ultimately scanned
due to timing constraints.
• Swap of signed library with an unsigned library: A library that has been signed up is replaced
with one that has not been signed up. The unsigned library is inserted into the same position in
the signup sequence, and its book selection is initialized based on available scanning time.
• Swap books between libraries that share common books: If two signed-up libraries contain
overlapping books in their inventories, a book from one library can be swapped with a diferent
book from the other.
• Swap the last book of a selected library with an unscanned book: For a given library, the
last book scheduled for scanning can be replaced with a book that has not yet been scanned.
This allows fine-tuning of the scanned book list, potentially replacing low-value books with
higher-scoring alternatives.
• Random reordering of libraries with reassigned book sets: This move shufles the library
order and attempts to reassign books from their old libraries to new randomly chosen ones. For
each reassigned library, books are filtered to exclude those already scanned or not available in
the new library.
• Insert Library – Inserts a randomly selected unused library into a random position in the signed
library list. From that position onward, the solution is completely rebuilt.</p>
      <p>These neighborhood operations provide both diversification and intensification capabilities. By
mixing structural changes (e.g., reordering libraries) with content-level changes (e.g., modifying scanned
books), the search is guided toward promising regions of the solution space while maintaining suficient
variability to avoid premature convergence.</p>
    </sec>
    <sec id="sec-6">
      <title>2.4. Iterated Local Search</title>
      <p>The ILS algorithm [8] for the Book Scanning problem combines the described initial solution procedure
with iterative refinement and perturbation mechanisms. The implementation follows the ILS with
Random Restarts framework described by Luke [9]. The initial solution is generated using the procedure
detailed in Section 2.2, which prioritizes libraries with shorter signup times and higher total book scores.</p>
      <p>In the iterative phase of the algorithm, the solution is improved using a local search (hill climbing)
procedure that applies several neighborhood operations, including swapping signed and unsigned libraries,
reordering libraries with overlapping books, applying crossover-based reordering, and replacing the last
book in a library with an unscanned, higher-value book. Neighborhoods are selected probabilistically,
with 50% assigned to the move that swaps signed-up libraries with unsigned ones, 20% to the library
reordering move, and the remaining 30% equally distributed among the other neighborhood operations.
Only improving moves are accepted, except with a small probability (10%) of accepting worse solutions
to escape local optima.</p>
      <p>In each iteration, a perturbation step is applied using a destroy-and-rebuild strategy: a random subset
of signed libraries is removed, and candidate replacements are evaluated greedily based on their average
book score, scanning eficiency, and signup time. The algorithm runs until a total time limit (default:
300 seconds) or a maximum number of iterations (default: 1000) is reached.</p>
    </sec>
    <sec id="sec-7">
      <title>2.5. Genetic Algorithms</title>
      <p>The proposed approach [10] is based on the Genetic Algorithm with Elitism described by Luke [9], and
initializes the population using small variations of the procedure in Section 2.2, generated through
limited hill climbing steps. This introduces diversity while maintaining reasonably fit initial solutions.</p>
      <p>After initialization, the algorithm evolves through multiple generations. In each generation,
individuals are ranked by fitness, enabling efective selection. The best solution is preserved via elitism to
ensure no loss of progress.</p>
      <p>Ofspring are generated using tournament selection, where two parents are chosen by selecting the
best individual from small random subsets of the population. This method favors stronger candidates
while preserving diversity by giving weaker ones a chance.</p>
      <p>Crossover is performed in a partially random but structured manner. Half of the library signup order
is randomly taken from the first parent, with remaining positions filled by non-duplicate libraries from
the second parent. Any missing libraries are appended to ensure completeness. This ensures valid
ofspring while promoting trait inheritance from both parents.</p>
      <p>Mutation is applied to each ofspring with a probability of 1.0, meaning it always occurs. Instead of
random tweaks, mutation runs hill climbing for several steps, integrating local search into the genetic
process. This hybrid approach forms a memetic algorithm, combining global evolution with greedy
local refinement.</p>
      <p>Over successive generations, fitter individuals are more likely to reproduce, guiding the population
toward better solutions. Crossover and mutation introduce variation, while selection and elitism ensure
steady improvement. The algorithm terminates after a fixed number of generations, returning the best
solution found.</p>
      <sec id="sec-7-1">
        <title>3. Preliminary Computational Study</title>
        <p>The preliminary experiments were conducted on a test set of 20 instances, with each algorithm executed
ifve times. Both ILS and GA were run for a total of 12 minutes: 2 minutes were allocated for generating
the initial solution, and the remaining 10 minutes were dedicated to the iterative phase of each respective
algorithm. All computations were performed on standard computing machines without the use of
parallelization or specialized hardware.</p>
        <p>The test set used for evaluation consists of two subsets. The first subset includes five benchmark
instances originally provided in the Google Hash Code 2020 competition. These instances vary
significantly in size and complexity, featuring between 78,600 and 100,000 books, 100 to 30,000 libraries, and
scanning periods ranging from 200 to 100,000 days. The average book score ranges from 65 to over
400, and library characteristics span from small, fast-signup libraries to very large ones with high daily
throughput.</p>
        <p>The second subset contains 15 additional instances generated using a custom instance generator [11].
These synthetic instances introduce controlled variations in structural parameters such as the number
of books (ranging from 300 to 100,000), number of libraries (from 11 to 850), and available scanning
days (from 14 to 140). The generator also allows for tuning average signup times and book shipment
capacities per library. These instances provide a more diverse and challenging testbed for evaluating
the scalability and robustness of the proposed algorithms under diferent constraint combinations.</p>
        <p>For evaluation purposes, we use upper bound values as a theoretical benchmark. The upper bound is
estimated by calculating, for each library, the total score of the books it could scan if it were signed
up first. The libraries are then ranked by their maximum potential contribution, and the scores of the
top- libraries—where  is the number of libraries that can be signed up sequentially within the time
limit—are summed.</p>
        <p>Additionally, for comparative analysis, we include the results of state-of-the-art approaches found
in the literature, specifically those by Bartosz et al. [ 12], Indzhev et al. [13], and Rodrigues [14], who
ranked 5th, 28th, and 33rd, respectively, in the Google Hash Code Competition. In the tables below, for
each instance, we present the best result achieved among these three approaches and refer to it as the
Best Known value.</p>
        <p>Table 1 presents the performance of ILS and GA compared to MILP results and the best-known values
across all benchmark instances. The column Best Known refers to the highest score obtained by any
known method from the literature or our experiments. In several cases, both ILS and GA match the
best-known results, with GA slightly outperforming ILS in a few larger instances. Integer Programming
results are included where available, primarily for smaller instances due to its computational limits.
Overall, the results highlight the efectiveness of metaheuristic methods, with GA showing more
consistent superiority in complex instances and ILS demonstrating competitive performance in many
cases.</p>
        <p>Table 2 complements the previous results by reporting standard deviations and relative performance
comparisons between ILS and GA. The standard deviations show that GA exhibits lower variability
than ILS in 4 instances, while both algorithms have a standard deviation of zero in the remaining 14
instances. In terms of relative performance, both ILS and GA show small average deviations from the
best-known or IP-based values, with ILS yielding an average diference of 0.23% and GA achieving
the same. When comparing their best solutions directly, the average performance diference between
ILS and GA is (0.00%), suggesting that while GA tends to be more stable, both methods are capable of
producing similarly competitive results.</p>
        <p>In summary, both ILS and GA demonstrate strong performance across the benchmark instances.
GA shows greater consistency, with lower variability in several cases and frequent matches with the
best-known solutions. ILS is equally competitive in terms of best-case results but tends to exhibit
higher variability, making it less stable across runs. The baseline approaches, including Integer
Programming (where applicable), remain efective—particularly in smaller or less complex instances—but
are consistently outperformed by the metaheuristic methods in larger and more challenging problem
settings.</p>
      </sec>
      <sec id="sec-7-2">
        <title>Acknowledgments</title>
        <p>We thank all students of the Master’s study program in Computer or Software Engineering, generation
2024/2025, at the Faculty of Electrical and Computer Engineering, University of Prishtina, for their
contributions in implementing various algorithm components in Python, as well as developing supporting
tools such as the validator, instance generator, and solution visualizer.</p>
      </sec>
      <sec id="sec-7-3">
        <title>Declaration on Generative AI</title>
        <p>During the preparation of this work, the authors used ChatGPT-4o and Claude.ai to check the grammar
and spelling of the paper, as well as to analyze and reason about the mathematical model of the problem.
Following the use of these AI tools, the authors reviewed and edited the content as necessary and
assume full responsibility for the content of the publication.</p>
        <sec id="sec-7-3-1">
          <title>Instance</title>
          <p>ILS (STD) GA (STD)</p>
        </sec>
        <sec id="sec-7-3-2">
          <title>ILS vs. MILP / GA vs. MILP /</title>
        </sec>
        <sec id="sec-7-3-3">
          <title>Best Known (%) Best Known (%) ILS vs. GA (Best) (%)</title>
          <p>b_read_on
c_incunabula
d_tough_choices
e_so_many_books
f_libraries_of_the_world
B300_L11_D20
B500_L14_D18
B750_L20_D14
B1k_L18_D17
B1.5k_L20_D40
B2.5k_L25_D50
B4k_L30_D60
B5k_L90_D21
B6k_L35_D70
B9k_L40_D80
B50k_L400_D28
B60k_L70_D140
B90k_L850_D21
B95k_L2k_D28
B100k_L600_D28
Average</p>
          <p>netlify.app/, 2025. Accessed: 2024-04-05.
[12] B. Kostka, Ghc 2020 - google hash code 2020 repository, https://github.com/Kostero/ghc20, 2020.</p>
          <p>Accessed: 2025-05-21.
[13] E. Indzhev, Book scanning solution - google hash code 2020, https://github.com/indjev99/</p>
          <p>Optimizational-Problems-Solutions/blob/master/book_scanning.cpp, 2020. Accessed: 2025-05-21.
[14] P. Rodrigues, Hash code models, https://github.com/pedromig/hashcode-models/tree/main, 2021.</p>
          <p>Accessed: 2025-05-21.</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Avnimelech</surname>
          </string-name>
          , Google hash code archive, https://github.com/pierreavn/google-hashcode-archive,
          <year>2023</year>
          . Accessed:
          <fpage>2025</fpage>
          -04-04.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <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. Freeman, San Francisco,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H. R.</given-names>
            <surname>Lourenço</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. C.</given-names>
            <surname>Martin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Stützle</surname>
          </string-name>
          ,
          <article-title>Iterated local search</article-title>
          , in: F. Glover,
          <string-name>
            <given-names>G. A.</given-names>
            <surname>Kochenberger</surname>
          </string-name>
          (Eds.),
          <source>Handbook of Metaheuristics</source>
          , Springer, Boston, MA,
          <year>2003</year>
          , pp.
          <fpage>320</fpage>
          -
          <lpage>353</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 0- 306- 48056- 5_
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Holland</surname>
          </string-name>
          ,
          <source>Adaptation in Natural and Artificial Systems</source>
          , University of Michigan Press, Ann Arbor, MI,
          <year>1975</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Yahiaoui</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Afi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Allaoui</surname>
          </string-name>
          ,
          <article-title>Enhanced iterated local search for the technician routing and scheduling problem</article-title>
          ,
          <source>Computers &amp; Operations Research</source>
          <volume>160</volume>
          (
          <year>2023</year>
          )
          <article-title>106385</article-title>
          . URL: https://www. sciencedirect.com/science/article/abs/pii/S0305054823002496. doi:
          <volume>10</volume>
          .1016/j.cor.
          <year>2023</year>
          .
          <volume>106385</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Meng</surname>
          </string-name>
          , W. Cheng,
          <string-name>
            <given-names>B.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , W. Zou,
          <string-name>
            <given-names>W.</given-names>
            <surname>Fang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Duan</surname>
          </string-name>
          ,
          <article-title>An improved genetic algorithm for solving the multi-agv flexible job shop scheduling problem</article-title>
          ,
          <source>Sensors</source>
          <volume>23</volume>
          (
          <year>2023</year>
          )
          <article-title>3815</article-title>
          . URL: https://www.mdpi.com/1424-8220/23/8/3815. doi:
          <volume>10</volume>
          .3390/s23083815.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M. G. C.</given-names>
            <surname>Resende</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Ribeiro</surname>
          </string-name>
          ,
          <article-title>Greedy randomized adaptive search procedures</article-title>
          , in: M.
          <string-name>
            <surname>Gendreau</surname>
          </string-name>
          , J.-Y. Potvin (Eds.),
          <source>Handbook of Metaheuristics</source>
          , volume
          <volume>146</volume>
          of International Series in Operations Research &amp; Management Science, Springer,
          <year>2010</year>
          , pp.
          <fpage>283</fpage>
          -
          <lpage>319</lpage>
          . doi:
          <volume>10</volume>
          .1007/978- 1-
          <fpage>4419</fpage>
          - 1665- 5_
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Alija</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Islami</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berisha</surname>
          </string-name>
          ,
          <article-title>Ils for book scanning problem</article-title>
          , https://github.com/dritonalija/ils_ book_scanning,
          <year>2024</year>
          . Accessed:
          <fpage>2024</fpage>
          -04-05.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Luke</surname>
          </string-name>
          , Essentials of Metaheuristics, 2nd ed.,
          <source>Lulu</source>
          ,
          <year>2014</year>
          . Available at https://cs.gmu.edu/~sean/ book/metaheuristics/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kryeziu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Hoda</surname>
          </string-name>
          , L. Mustafa,
          <article-title>Genetic algorithm for book scanning problem</article-title>
          , https://github. com/meritonkryeziu0/genetic_book_scanning,
          <year>2025</year>
          . Accessed:
          <fpage>2025</fpage>
          -04-05.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <article-title>Book Scanning Instance Generator, Book scanning instance generator</article-title>
          , https://bookscanning-ig.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>