Introduction to Integer Programming and Applications with Julia

Master Integer Linear Programming with practical examples and Jupyter notebooks

What You Will Find

  • Concepts: Foundations of integer programming
  • Applications: Real-world optimization problems
  • Practice: Notebooks and examples in Julia
Book cover preview

Book Chapters

Chapter 1

Introduction to Integer Programming

Introduces the foundations of integer programming, including model formulation, decision variables, objective functions, and the role of integrality in optimization.

Part 1 - Applications

Chapter 2

Knapsack Problems

Explores classic knapsack formulations and shows how binary and integer decisions can model resource allocation problems.

  • Binary Knapsack Problem (BKP)
  • Integer Knapsack Problem (IKP)
Chapter 3

Location Problems

Presents fundamental facility-location models and their use in deciding where to place services or resources efficiently.

  • P-Median Problem (PMP)
  • Set Covering Location Problem (SCLP)
  • Maximal Coverage Location Problem (MCLP)
Chapter 4

Traveling Salesman Problem

Discusses one of the most well-known combinatorial optimization problems and compares different mathematical formulations and solution approaches.

Chapter 5

Graph Problems

Examines several important graph optimization problems and demonstrates how graph structures can be translated into integer programming models.

  • Maximum Independent Set Problem (MISP)
  • Vertex Covering Problem (VCP)
  • Graph Coloring Problem (GCP)
  • Graph Partitioning Problem (GPP)
  • Clique Partitioning Problem (CPP)

Part 2 - Advanced Techniques

Chapter 6

Column Generation

Introduces column generation as a decomposition technique for solving large-scale optimization models efficiently.

  • One-dimensional Cutting Stock Problem (1D-CSP)
  • P-Median Problem (PMP)
Chapter 7

Lagrangian Relaxation

Explains Lagrangian relaxation as a strategy for simplifying difficult models and deriving bounds for complex optimization problems.

  • P-Median Problem (PMP)
  • Maximum Independent Set Problem (MISP)
  • Generalized Assignment Problem (GAP)
Chapter 8

Branch-and-Bound

Covers branch-and-bound methods and their role in systematically exploring solution spaces to find optimal integer solutions.

  • Binary Knapsack Problem (BKP)
  • Traveling Salesman Problem (TSP)

Appendix

Appendix A

Julia Introduction

Provides a practical introduction to Julia and its use for implementing and solving optimization models.

Appendix B

Exercise Solutions

Offers complete solutions and explanations for the exercises presented throughout the book.

Authors

Luiz Antonio Nogueira Lorena

Luiz Antonio Nogueira Lorena

Brazilian researcher with an established career in the field of Operations Research. He worked for many years at the National Institute for Space Research (INPE), conducting research on optimization and computational methods for decision support. His academic career is distinguished by an extensive scientific publication record in national and international peer-reviewed journals, participation in research projects funded by agencies such as FAPESP, and the supervision of graduate students and researchers.

His primary areas of expertise include Operations Research, Combinatorial Optimization, Mathematical Programming, Metaheuristics, and Evolutionary Algorithms. His research has focused on applications in logistics, transportation, facility location, routing, scheduling, and geographic information systems, with particular emphasis on the development and application of optimization methods for complex decision-support problems in scientific and industrial settings.

Luiz Henrique Nogueira Lorena

Luiz Henrique Nogueira Lorena

Brazilian researcher with Ph.D. in Computer Science with expertise in Optimization and Machine Learning.

His research interests include Combinatorial Optimization, Graph Theory, Exact Algorithms, Heuristics and Metaheuristics, Complex Networks, and Machine Learning. His work combines Operations Research and Artificial Intelligence methodologies to address complex computational problems with practical applications.

Ant么nio Augusto Chaves

Ant么nio Augusto Chaves

Brazilian researcher and Associate Professor at the Institute of Science and Technology of the Federal University of S茫o Paulo (UNIFESP). He has also held several academic leadership positions, including Coordinator of the Graduate Program in Operations Research (UNIFESP鈥揑TA), Coordinator of Graduate Studies and Research at ICT/UNIFESP, and Editor-in-Chief of the journal Pesquisa Operacional (POPe).

His research expertise lies in Operations Research, Combinatorial Optimization, Mathematical Programming, Heuristics and Metaheuristics, Evolutionary Computation, and Artificial Intelligence for optimization. His work focuses on solving complex optimization problems arising in logistics, transportation, vehicle routing, scheduling, healthcare operations, production planning, and industrial engineering. He has led numerous FAPESP-funded research projects, supervised graduate students, and published extensively in leading international journals in Operations Research and Optimization, contributing to both methodological advances and practical applications in industrial and service systems.

How to Cite

Please cite this book in your research using the following BibTeX entry:

@book{LorenaEtAl2026,
  title = {
    Introduction to Integer Programming and Applications with Julia
  },
  author = {
    Lorena, Luiz Antonio Nogueira and
    Lorena, Luiz Henrique Nogueira and
    Chaves, Ant么nio Augusto
  },
  year = {2026},
  doi = {https://doi.org/10.5281/zenodo.21227210},
  url = {https://github.com/intro-ilp-julia/book}
}
猬囷笍 Download CITATION.bib 馃敆 View on Zenodo 馃悪 GitHub Repository