{"id":219839,"date":"2026-01-15T14:59:29","date_gmt":"2026-01-15T12:59:29","guid":{"rendered":"https:\/\/azbuki.bg\/?p=219839"},"modified":"2026-01-15T14:59:29","modified_gmt":"2026-01-15T12:59:29","slug":"solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages","status":"publish","type":"post","link":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/","title":{"rendered":"Solving the Job Shop Scheduling Problem &#8211; Different Techniques and Programming Languages"},"content":{"rendered":"<p><strong>Sofoklis Christoforidis<\/strong><\/p>\n<p><strong>Efstathios Titopoulos<\/strong><\/p>\n<p><em>Democritus University <\/em><em>of Thrace (Greece)<\/em><\/p>\n<p><strong>Boryana Mihaylova<\/strong><\/p>\n<p><em>Technical University of Sofia (Bulgaria)<\/em><\/p>\n<p><strong>Eleni Kromitoglou<\/strong><\/p>\n<p><strong>Stergios Intzes<\/strong><\/p>\n<p><em>Democritus University <\/em><em>of Thrace (Greece)<\/em><\/p>\n<p><a href=\"https:\/\/doi.org\/10.53656\/voc25-3-4-12\" target=\"_blank\" rel=\"noopener\">https:\/\/doi.org\/10.53656\/voc25-3-4-12<\/a><\/p>\n<p><strong>Abstract. <\/strong>The Job Shop Scheduling Problem (JSSP) is a long-standing combinatorial optimization problem studied since the 1960s. JSSP is NP-complete, meaning solutions exist but cannot be guaranteed within polynomial time for general instances. In this paper we aim to compare some algorithms and techniques that have been proposed by various researchers. We also present the execution of these algorithms using two programming languages, python and C#.<\/p>\n<p><em>Keywords: <\/em>Genetic Algorithm, Metaheuristics, Constraint Programming<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong> Introduction<\/strong><\/li>\n<\/ol>\n<p>JSSP is also one of the most challenging problems that researchers have been trying to solve since the 1960s. Simply put, we can specify the problem as a scheduling problem with a finite set of tasks, J = {1, 2,\u2026., n} to schedule on a finite set of machine collections, M = {1, 2,\u2026., m} with each task having a distinct completion time T = {1,2, \u2026, n}.<\/p>\n<p>Of course, we should clarify that there are various constraints such as an operation should be processed only after all previous operations related to this object have been completed and the resource constraint should be applied which states that each task should be processed on the machine exactly once. The completion time of a task consisting of many tasks is defined from the processing of the first task to the completion of the processing of the last task. It should be clarified that the tasks should not be interrupted, and this time is known as the make-span of the schedule. This is the time that must be minimized. JSSP is such a complex combinatorial problem that for an optimal solution in a reasonable time it is done using heuristic techniques.<\/p>\n<p>We make a bibliographic survey of the different methods that have been applied to find a solution to the problem in the following paper. By applying methods that develop algorithms based on GA, we show applications that have been developed with the python programming language.<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"2\">\n<li><strong> The Main Methods for JSSP<\/strong><\/li>\n<\/ol>\n<p>The main methods for JSSP are:<\/p>\n<ol>\n<li>Exact \/ Mathematical Programming Approaches<\/li>\n<\/ol>\n<p>\u2013 Branch and Bound, Branch and Cut<\/p>\n<p>\u2013 Integer Linear Programming (ILP), Constraint Programming (CP)<\/p>\n<ol start=\"2\">\n<li>Dispatching Rules &amp; Priority Heuristics<\/li>\n<\/ol>\n<p>\u2013 Simple rules like SPT (Shortest Processing Time), LPT, EDD, etc.<\/p>\n<p>\u2013 Composite dispatching rules<\/p>\n<ol start=\"3\">\n<li>Metaheuristics<\/li>\n<\/ol>\n<p>\u2013 Genetic Algorithms (GA), Simulated Annealing (SA), Tabu Search (TS), Ant Colony Optimization (ACO), Particle Swarm Optimization (PSO)<\/p>\n<ol start=\"4\">\n<li>Hybrid &amp; Memetic Algorithms<\/li>\n<\/ol>\n<p>\u2013 Combinations of GA + Local Search, TS + SA, etc.<\/p>\n<ol start=\"5\">\n<li>Constraint-Based &amp; AI \/ Learning Approaches<\/li>\n<\/ol>\n<p>\u2013 Constraint Programming (CP), Reinforcement Learning (RL), Neural Networks (NNs), Deep Learning<\/p>\n<ol start=\"6\">\n<li>Decomposition &amp; Relaxation Methods<\/li>\n<\/ol>\n<p>\u2013 Lagrangian Relaxation, Benders Decomposition, Dantzig-Wolfe<\/p>\n<p>Summary Table 1 for the most citation paper for the above methods.<\/p>\n<p>The new literature review for the methods \/ algorithms which use for the solved the JSSP:<\/p>\n<p>Exact and constraint programming<\/p>\n<p>\u2013 <strong>CP\/OR integration:<\/strong> (Infantes et al., 2024b, 2024a)<\/p>\n<p>\u2013 <strong>CP for dynamic dispatch:<\/strong> (C. Zhang et al., 2020)<\/p>\n<p>\u2013 <strong>Survey:<\/strong> (Cebi et al., 2020a)<\/p>\n<p>\u2013 <strong>Constraint\/AI synthesis (chapter):<\/strong> (Infantes et al., 2024a)<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Table <\/strong><strong>1<\/strong><strong>.<\/strong> Most citation paper for the methods how to solve the JSSP.<\/p>\n<table>\n<thead>\n<tr>\n<td width=\"138\"><strong>Method Family<\/strong><\/td>\n<td width=\"457\"><strong>Most Cited Works<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td width=\"138\">Exact \/ ILP \/ CP<\/td>\n<td width=\"457\">(Applegate &amp; Cook, 1991), (Brucker et al., 1994),<\/td>\n<\/tr>\n<tr>\n<td width=\"138\">Dispatching Rules<\/td>\n<td width=\"457\">(Blackstone et al., 1982) (Panwalkar &amp; Iskander, 1977) (Haupt, 1989)<\/td>\n<\/tr>\n<tr>\n<td width=\"138\">Metaheuristics<\/td>\n<td width=\"457\">(Glover, 1989) (Nowicki &amp; Smutnicki, 1996) (Ghedjati, 1999) (Dorigo &amp; Gambardella, 1997)<\/td>\n<\/tr>\n<tr>\n<td width=\"138\">Hybrid \/ Memetic<\/td>\n<td width=\"457\">(C. Y. Zhang et al., 2008) (Pezzella et al., 2008) (Louren\u00e7o, 1995)<\/td>\n<\/tr>\n<tr>\n<td width=\"138\">Constraint &amp; AI<\/td>\n<td width=\"457\">(Fromherz, 2001) (Baptiste et al., 2001) (Jain &amp; Meeran, 1999) (Mnih et al., 2015)<\/td>\n<\/tr>\n<tr>\n<td width=\"138\">Decomposition<\/td>\n<td width=\"457\">(Fisher, 1981) (Hooker, 2012)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>There have been new developments aimed at augmenting classical constraint programming (CP) and integer programming methods with machine learning techniques for handling uncertainty. Infantes et al. (2024) presented a deep reinforcement learning (DRL) framework that is complemented with graph neural networks (GNNs) for producing robust schedules with uncertain task durations. This study is notable for a move away from classical methods to robust optimization, in which uncertainty is specifically defined and addressed.<\/p>\n<p>Dispatching rules and rule learning:<\/p>\n<p>\u2013 <strong>Learned PDRs:<\/strong> (C. Zhang et al., 2020)<\/p>\n<p>\u2013 <strong>ANN with dispatching rules:<\/strong> (Sim et al., 2020)<\/p>\n<p>\u2013 <strong>Real-time rule selection:<\/strong> (Zhao et al., 2023)<\/p>\n<p>\u2013 <strong>Systematic review of intelligent scheduling (includes rule learning):<\/strong> (Momenikorbekandi &amp; Kalganova, 2025) (Rihane et al., 2025a)<\/p>\n<p>Classical priority dispatching rules (PDRs) like shortest processing time or most work remaining have been applied for many years to scheduling in real-time. But 2020 and afterwards consider adaptive and learned dispatching policies as key. Earlier work by Zhang and Dietterich on a paradigm of reinforcement learning has been generalized in the latest studies (2020\u20132023) to learn neural agents that adaptively choose dispatching rules and beat static heuristics in dynamic shop-floor settings. They show increasing importance of data-driven heuristics in overcoming the dichotomy between handcrafted policies and adaptive scheduling.<\/p>\n<p>Metaheuristics:<\/p>\n<p>\u2013 <strong>Hybrid evolutionary switching (DE\/PSO + TS):<\/strong> (Nadia, 2023)<\/p>\n<p>\u2013 <strong>Comprehensive metaheuristic study:<\/strong> (Benni et al., 2024)<\/p>\n<p>\u2013 <strong>AI for Flexible JSSP (metaheuristics + learning):<\/strong> (Nadia, 2023)<\/p>\n<p>\u2013 <strong>Intelligent scheduling review (metaheuristics emphasis):<\/strong> (Momenikorbekandi &amp; Kalganova, 2025)<\/p>\n<p>Metaheuristics continue to dominate the applied JSSP literature, with hybrid evolutionary and swarm-based algorithms being particularly influential. For example, hybrid differential evolution and particle swarm optimization methods with embedded tabu search (2022) have shown strong performance on benchmark instances. Similarly, multi-objective metaheuristics developed after 2020 address not only makes pan but also tardiness and energy efficiency, reflecting the multi-criteria nature of modern manufacturing systems.<\/p>\n<p>Hybrid and memetic algorithms:<\/p>\n<p>\u2013 <strong>Switching strategy-based hybrid EAs (DE+PSO+TS):<\/strong> (Mahmud et al., 2022)<\/p>\n<p>\u2013 <strong>AI for FJSSP (hybrid schemes):<\/strong> (Nadia, 2023)<\/p>\n<p>\u2013 <strong>Intelligent scheduling systematic review (hybrid focus):<\/strong> (Momenikorbekandi &amp; Kalganova, 2025)<\/p>\n<p>\u2013 <strong>Comprehensive metaheuristic study (hybrid comparisons):<\/strong> (Benni et al., 2024)<\/p>\n<p>The drift toward hybridization can also be found in new work that marries global search with local fine-tuning(Rego &amp; Duarte, 2009). laid the groundwork for tabu search\/simulated annealing hybrids, and recent works (2021\u20132023) build on this by integrating deep learning modules with evolutionary structures. The resulting hybrids combine the pattern recognition ability of neural models with metaheuristics&#8217; power to explore, achieving top-performing outcomes on adaptive JSSP variants.<\/p>\n<p>Learning-based approaches (RL\/GNN\/transformers):<\/p>\n<p>\u2013 <strong>DRL+GNN for uncertainty:<\/strong> (Infantes et al., 2024a) (Infantes et al., 2024b)<\/p>\n<p>\u2013 <strong>PDR via DRL:<\/strong> (C. Zhang et al., 2020)<\/p>\n<p>\u2013 <strong>Behavioral cloning \/ attention models for JSSP (2023 chapters referenced in<\/strong>\u2013 <strong>CPAIOR context):<\/strong>(Infantes et al., 2024b)<\/p>\n<p>\u2013 Review of learning-based methods: (Rihane et al., 2025a) (Rihane et al., 2025b)<\/p>\n<p>Perhaps the most transformative development since 2020 is the application of deep reinforcement learning and graph neural networks. (Infantes et al., 2024a) demonstrated that DRL agents can generalize across problem instances, learning scheduling policies that adapt to uncertainty. Other works (2021\u20132023) have explored curriculum learning, attention-based models, and imitation learning for dispatching, signalling a paradigm shift toward end-to-end learning systems that bypass handcrafted heuristics altogether.<\/p>\n<p>Decomposition and relaxation:<\/p>\n<p>\u2013 <strong>Uncertainty-aware schedules (robust angle; integrates with decomposition ideas):<\/strong> (Infantes et al., 2024b) (Infantes et al., 2024c)<\/p>\n<p>\u2013 <strong>Recent reviews touching Lagrangian\/Benders in JSSP contexts:<\/strong> (Cebi et al., 2020b)<\/p>\n<p>\u2013 <strong>Intelligent scheduling review (2025) with relaxation mentions in industrial settings:<\/strong> (Momenikorbekandi &amp; Kalganova, 2025)<\/p>\n<p>\u2013 <strong>Metaheuristic\u2013relaxation hybrids surveyed:<\/strong> (Benni et al., 2024)<\/p>\n<p>The algorithm performed very well, outperforming many previous methods in the reduction of make-span.<\/p>\n<p>This is a hybrid algorithm that utilizes a global search with genetic crossover and mutation operators under a CA-like neighborhood. The above operators primarily fine-tune the order of the operations. Hill-climbing performs a local search to assign the best machine to each critical operation. This GA-RRHC aspect makes the formulation compatible with FJSSP instances possessing a lot of flexibility.<\/p>\n<p>CA-like neighborhood facilitates concurrent execution of genetic operations, thereby advancing enhanced exploration capability for the GA-RRHC. The hill-climbing yields comparable iteration numbers with other algorithms and is also straightforward to implement, with a moderate level of complexity. A common data set suite containing four files that represent a compendium of 101 various problems was adopted in the numerical experiments involving the GA-RRHC. The outcomes register enhanced effectiveness relative to contemporary comparison algorithms, primarily for higher flexibility scenarios.<\/p>\n<p>GA-RRHC presents a new way of achieving neighborhoods like that found in cultural algorithms that concurrently employ exploration and exploitation methods in dealing with different task scheduling problems like flow shops, job shop, and open shop cases.<\/p>\n<p>Future work can be the idea of using a different kind of exploitation approach such as simulated annealing, so that the local search can become less intensive. Other types of scaling algorithms can also be attempted for enhancing the sequences of the operations for solving instances of FJSSP with low flexibility, with further extension of such a methodology for optimization problems with multiple objectives.<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"3\">\n<li><strong> Solving Job-Shop Scheduling Problems by Genetic Algorithm<\/strong><\/li>\n<\/ol>\n<p><strong>Genetic Algorithm (GA)-based approach<\/strong> to solving the <strong>Job-Shop Scheduling Problem (JSP)<\/strong>, which is known for its complexity due to large combinatorial search spaces and precedence constraints between machines. Traditional methods like <strong>branch-and-bound<\/strong> struggle with scalability, making GA a promising alternative.<\/p>\n<ul>\n<li><strong>Problem Definition<\/strong>: The JSP involves scheduling <strong>N jobs<\/strong> across <strong>M machines<\/strong>, ensuring that:<\/li>\n<\/ul>\n<p>\u2013 No machine processes more than one job at a time.<\/p>\n<p>\u2013 No job is processed by multiple machines simultaneously.<\/p>\n<p>\u2013 The sequence of machines for each job is predefined.<\/p>\n<p>\u2013 Processing times are known.<\/p>\n<p>\u2013 Each job must be processed on every machine exactly once.<\/p>\n<ul>\n<li>Challenges in JSP:<\/li>\n<\/ul>\n<p>\u2013 The problem is harder than the Traveling Salesman Problem (TSP) due to precedence constraints.<\/p>\n<p>\u2013 Traditional methods like <strong>branch-and-bound<\/strong> yield good results but require excessive computation time, even for <strong>10\u00d710 problems<\/strong>.<\/p>\n<ul>\n<li>Genetic Algorithm Approach:<\/li>\n<\/ul>\n<p>\u2013 <strong>Representation<\/strong>: Schedules are encoded as individuals in the population.<\/p>\n<p>\u2013 <strong>Genetic Operators<\/strong>: Custom crossover and mutation operators are designed to maintain valid schedules.<\/p>\n<p>\u2013 <strong>Selection Mechanism<\/strong>: The algorithm ensures that the best individuals are retained across generations.<\/p>\n<ul>\n<li>Experimental Results:<\/li>\n<\/ul>\n<p>\u2013 The GA method is tested on <strong>standard JSP benchmarks<\/strong>.<\/p>\n<p>\u2013 It demonstrates efficiency in finding near-optimal schedules.<\/p>\n<p>\u2013 While GA does not always outperform traditional methods in terms of absolute best results, it significantly reduces computation time.<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<ol start=\"4\">\n<li><strong> <a name=\"_Toc210772298\"><\/a>Realization the algorithm step by step<\/strong><\/li>\n<\/ol>\n<p>Define Parameters:<\/p>\n<p>Set up key parameters such as population size (`pop_size`), mutation rate (`p_mut`), crossover rate (`p_cross`), and max generations (`max_gen`). Initialize `gen = 0` and `ftmin = 9999`.<\/p>\n<p>Generating Initial Population<\/p>\n<p>Create a population of schedules (`pop_size` individuals), ensuring each job appears exactly `M` times in sequences of length `N`.<\/p>\n<p>Evaluate Fitness<\/p>\n<p>Each individual&#8217;s fitness is determined by the maximum finishing time (`f(Si) = max(ft)`). Track the best schedule.<\/p>\n<p>Crossover<\/p>\n<p>Perform crossover between selected pairs of individuals, exchanging partial schedules while maintaining validity.<\/p>\n<p>Mutation<\/p>\n<p>Randomly swap positions of two jobs within individuals based on mutation rate.<\/p>\n<p>Selection<\/p>\n<p>Use elitist selection to keep the best individuals for the next generation.<\/p>\n<p>Iterate Until Convergence<\/p>\n<p>Repeat steps 9.1.1.2-9.1.1.6 until the max generation is reached.<\/p>\n<p><a name=\"_Toc210772299\"><\/a>The realization of algorithm in Python<\/p>\n<p><strong>Figure <\/strong><strong>1<\/strong><strong>.<\/strong> This provides a basic Genetic Algorithm implementation for solving Job-Shop Scheduling (in Python programming language)<\/p>\n<p><a name=\"_Toc210772300\"><\/a><strong>\u00a0<\/strong><\/p>\n<ol start=\"5\">\n<li><strong> A Search Using Genetic Algorithms and Random-Restart Hill-Climbing for Flexible Job Shop Scheduling Instances.<\/strong><\/li>\n<\/ol>\n<p>This algorithm presents a novel hybrid algorithm called GA-RRHC, which combines Genetic Algorithms (GA) and Random-Restart Hill-Climbing (RRHC) to optimize the Flexible Job Shop Scheduling Problem (FJSSP), particularly in cases with high flexibility\u2014where each operation can be completed by multiple machines.<\/p>\n<p><a name=\"_Toc210772301\"><\/a><strong>Key Contributions<\/strong><\/p>\n<p>\u2013 Hybrid Approach: The GA-RRHC integrates global search using GA operators with a local search refinement via RRHC.<\/p>\n<p>\u2013 Cellular Automata-Inspired Neighbourhood: The algorithm applies a unique CA-type neighbourhood to enhance the exploration of solutions.<\/p>\n<p>\u2013 Machine Assignment Optimization: RRHC is used to refine machine selection for critical operations, improving scheduling efficiency.<\/p>\n<p>\u2013 Competitive Performance: The GA-RRHC was tested against six recent algorithms using relative percentage deviation (RPD) and Friedman tests, demonstrating its effectiveness.<\/p>\n<p><a name=\"_Toc210772302\"><\/a><strong>Methodology<\/strong><\/p>\n<p>Encoding &amp; Decoding: Solutions are represented as sequences for operation scheduling (OS) and machine selection (MS).<\/p>\n<ul>\n<li>Genetic Operators:<\/li>\n<\/ul>\n<p>\u2013 Crossover: Precedence operation crossover (POX) and job-based crossover (JBX).<\/p>\n<p>\u2013 Mutation: Swap mutation and random position changes for operations.<\/p>\n<ul>\n<li>Local Search via RRHC:<\/li>\n<\/ul>\n<p>\u2013 Identifies critical operations that define the make span.<\/p>\n<p>\u2013 Randomly selects alternative machines to optimize processing time.<\/p>\n<p><strong>Uses restart strategies to escape local minima.<\/strong><\/p>\n<p>Experimental Results<\/p>\n<p>The GA-RRHC was implemented in python and tested on four widely used datasets:<\/p>\n<p>\u2013 Kacem dataset (high flexibility)<\/p>\n<p>\u2013 BRdata dataset (partial flexibility)<\/p>\n<p>\u2013 Rdata &amp; Vdata datasets (varying flexibility levels)<\/p>\n<p>The algorithm demonstrated competitive performance, overcoming several current techniques in make-span reduction.<\/p>\n<p>It is a hybrid algorithm that employs a global search based on genetic crossover and mutation operators in CA-like neighborhood. The latter mainly adjust the order of operations. The random-restart hill-climbing performs a local search in an effort to assign the best machine to each critical operation. By this GA-RRHC feature, this schedule is highly adaptable to applications with wide flexibility in FJSSP.<\/p>\n<p>CA-like neighborhood permits the simultaneous realization of genetic operations, promoting the possibility for GA-RRHC exploration. A hill-climbing method employs a comparable amount of iteration with other methods and is also easy to code, with a moderate degree of complexity. On the GA-RRHC in the numerical experiment, four standard datasets with 101 problems each were used. The result indicates a satisfying outcome compared with the latest comparison methods, particularly for highly flexible problems.<\/p>\n<p>The GA-RRHC employs a new way of applying CA-like neighborhoods that concurrently apply the exploration and exploitation operators in order to tackle scheduling problems for tasks; e.g., the flow shop, job shop, or open shop.<\/p>\n<p>As a future work, we intend to use a different type of exploitation scheme such as simulated annealing, in order to reduce the complexity of the local search. We can also attempt other forms of the scaling algorithms in order to find the optimisation sequences of the operations to address instances of FJSSP with a minimal degree of flexibility, and also extend this approach for the optimisation problems with multiple objectives.<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"6\">\n<li><strong> <a name=\"_Toc210772303\"><\/a>The realization of algorithm in Python<\/strong><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p><strong>Figure <\/strong><strong>2<\/strong><strong>.<\/strong> Implementing a hybrid algorithm for Flexible Job Shop Scheduling<\/p>\n<p>(in Python programming language)<\/p>\n<p>&nbsp;<\/p>\n<p>The hybrid algorithm for Flexible Job Shop Scheduling<\/p>\n<p>Complexity of the Problem<\/p>\n<p>\u2013 <strong>High Dimensionality<\/strong>: The number of jobs, machines, and operations can lead to a vast search space, making it computationally intensive to find optimal solutions.<\/p>\n<p>\u2013 <strong>Dynamic Changes<\/strong>: Real-time changes in job priorities, machine breakdowns, or new job arrivals can complicate the scheduling process.<\/p>\n<p>Data Accuracy and Availability<\/p>\n<p>\u2013 <strong>Incomplete Data<\/strong>: Inaccurate or incomplete data about job processing times, machine capabilities, and maintenance schedules can lead to suboptimal scheduling.<\/p>\n<p>\u2013 <strong>Data Integration<\/strong>: Integrating data from various sources (e.g., ERP systems, machine sensors) can be challenging.<\/p>\n<p>Algorithm Parameters<\/p>\n<p>\u2013 <strong>Tuning Parameters<\/strong>: It is crucial for the algorithm&#8217;s performance to find the right balance for parameters such as population size, mutation rate, and number of iterations.<\/p>\n<p>\u2013 <strong>Convergence Issues<\/strong>: The algorithm might converge to local optima rather than the global optimum, especially if not properly tuned.<\/p>\n<p>Scalability<\/p>\n<p>\u2013 <strong>Large-Scale Problems<\/strong>: As the number of jobs and machines increases, the computational resources required to solve the problem also increase.<\/p>\n<p>\u2013 <strong>Real-Time Scheduling<\/strong>: Implementing the algorithm in a real-time environment where decisions need to be made quickly can be challenging.<\/p>\n<p>Implementation and Integration<\/p>\n<p>\u2013 <strong>Software Integration<\/strong>: Integrating the scheduling algorithm with existing manufacturing execution systems (MES) and other software tools can be complex.<\/p>\n<p>\u2013 <strong>User Training<\/strong>: Ensuring the staff understands and can effectively use the new scheduling system is essential for successful implementation.<\/p>\n<p>Flexibility and Adaptability<\/p>\n<p>\u2013 <strong>Handling Variability<\/strong>: The algorithm must be flexible enough to handle variability in job types, processing times, and machine availability.<\/p>\n<p>\u2013 <strong>Customisation: Customising<\/strong> the algorithm to fit specific manufacturing processes and constraints can be time-consuming.<\/p>\n<p>Performance Metrics<\/p>\n<p>\u2013 <strong>Multiple Objectives<\/strong>: Balancing multiple objectives, such as minimising completion time, reducing machine idle time, and maximising throughput, can be challenging.<\/p>\n<p>\u2013 <strong>Measuring Success<\/strong>: It is crucial to define and measure the scheduling algorithm&#8217;s success using key performance indicators (KPIs).<\/p>\n<p>Mitigation Strategies<\/p>\n<p>\u2013 <strong>Robust Data Collection<\/strong>: Ensure accurate and comprehensive data collection and integration.<\/p>\n<p>\u2013 <strong>Parameter Tuning<\/strong>: Use techniques like cross-validation to tune algorithm parameters.<\/p>\n<p>\u2013 <strong>Scalability Solutions<\/strong>: Employ parallel computing and cloud-based solutions to handle large-scale problems.<\/p>\n<p>\u2013 <strong>User Training<\/strong>: Provide thorough training and support for users to ensure smooth implementation.<\/p>\n<p>Addressing these challenges requires careful planning, continuous monitoring, and iterative improvements to ensure the scheduling system meets the needs of the manufacturing environment. If you have any specific concerns or need further details, feel free to ask!<\/p>\n<p>&nbsp;<\/p>\n<ol start=\"7\">\n<li><strong> Conclusions and Future Work<\/strong><\/li>\n<\/ol>\n<p>The Job Shop Scheduling Problem (JSSP) remains a bellwether both for theoretical developments in combinatorial optimization and for practical breakthroughs in industrial scheduling. During the past several decades, the research has transformed from exact formulations and hand-designed heuristics to metaheuristics, hybrids, and, recently, learning-based methods. Each family of methods offers unique strengths: exact and decomposition approaches offer theoretical tractability and tight bounds; dispatching rules provide quickness and flexibility; metaheuristics are the workhorse for problems at a large scale; hybrids explore an equilibrium between investigation and exploitation; and AI-based methods provide adaptability and universalization across problem instances.<\/p>\n<p>Even with such advances, a series of open problems persist. First, variability in processing times, machine breakdowns, and stochastic job arrivals is still not adequately addressed in the vast bulk of work driven by benchmarking. Even though robust optimization and reinforcement learning have shown promise, scalable schemes that can cope with disruptions at a non-traditional, or at least non-batch, timescale are still in their infancy. Second, scalability is a key bottleneck. Even the latest metaheuristics and hybrids are not equipped to cope with very large or very flexible JSSPs, and learning-based approaches almost always have a great deal of training data that is not typically available in industrial settings. Third, explainability is an increasing worry. As deep reinforcement learning and neural models become mainstream, their &#8222;black box&#8220; characteristics are a worry for industrial take-up, where clarity on decisions is as important as solution quality. Finally, benchmarking and reproducibility persist as problems. Whereas classical benchmarks like the Lawrence and Taillard instances have spurred advances, they no longer fully capture the complexity of modern manufacturing systems. We require richer, standardized benchmarks that capture uncertainty, multi-objective trade-offs, and dynamic environments. Looking forward, promising research directions include:<\/p>\n<p>\u2013 <strong>Integrative frameworks<\/strong> that combine exact relaxations with learning-based heuristics to balance optimality and scalability.<\/p>\n<p>\u2013 <strong>Uncertainty-aware scheduling<\/strong> through robust optimization, stochastic programming, and reinforcement learning with domain adaptation.<\/p>\n<p>\u2013 <strong>Explainable AI for scheduling<\/strong>, where interpretable models or hybrid symbolic-neural approaches provide both performance and transparency.<\/p>\n<p>\u2013 <strong>Next-generation benchmarks and open repositories<\/strong> that reflect industrial realities and enable fair, reproducible comparisons across methods.<\/p>\n<p>\u2013 <strong>Cross-domain transfer learning<\/strong>, allowing scheduling policies trained in one environment to generalize to others with minimal retraining.<\/p>\n<p><strong>Python vs C# for implementing JSSP<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Table <\/strong><strong>2<\/strong>. Comparison between the programming languages Python and C#<\/p>\n<table>\n<thead>\n<tr>\n<td><strong>Attribute<\/strong><\/td>\n<td><strong>Python<\/strong><\/td>\n<td><strong>C#<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Performance<\/td>\n<td>Slower in pure Python; fast with NumPy, Numba, Cython, or PyPy; easy to call C\/C++ for hot loops<\/td>\n<td>Faster out of the box; strong JIT; excellent performance for multi-threaded, SIMD, and optimized data structures<\/td>\n<\/tr>\n<tr>\n<td>Ecosystem<\/td>\n<td>Rich scientific stack (NumPy, SciPy, NetworkX), OR libraries (OR-Tools), ML (PyTorch, TensorFlow)<\/td>\n<td>Strong enterprise tooling; decent OR tooling via OR-Tools .NET, Accord.NET; easier Windows\/desktop integration<\/td>\n<\/tr>\n<tr>\n<td>Development speed<\/td>\n<td>Very high; rapid prototyping; concise syntax; interactive notebooks<\/td>\n<td>Moderate; more boilerplate; strong type safety; great tooling in Visual Studio\/Rider<\/td>\n<\/tr>\n<tr>\n<td>Parallelism<\/td>\n<td>GIL limits threads; good for multi-processing; easy to offload to C\/Numba; strong support for distributed via Ray\/Dask<\/td>\n<td>True multi-threading; TPL\/async excellent; predictable performance for concurrent search (e.g., TS neighborhoods)<\/td>\n<\/tr>\n<tr>\n<td>Deployment<\/td>\n<td>Simple scripts, containers; ubiquitous in research; cross-platform<\/td>\n<td>Robust deployment for services, desktop apps; great for industrial environments and Windows ecosystems<\/td>\n<\/tr>\n<tr>\n<td>Visualization<\/td>\n<td>Matplotlib\/Plotly\/Seaborn; quick Gantt, convergence plots; Jupyter for demos<\/td>\n<td>WPF\/WinUI for desktop; web dashboards with ASP.NET; charts via third-party libs<\/td>\n<\/tr>\n<tr>\n<td>ML integration<\/td>\n<td>Best-in-class; seamless for learned dispatching (RL\/GNN); easy experiment tracking<\/td>\n<td>Possible via ML.NET or interop with Python; fewer cutting-edge RL\/GNN tools natively<\/td>\n<\/tr>\n<tr>\n<td>Reproducibility<\/td>\n<td>Strong with notebooks, environments, Docker; easy to share<\/td>\n<td>Strong via solution files, CI\/CD; deterministic builds in enterprise contexts<\/td>\n<\/tr>\n<tr>\n<td>Community &amp; examples<\/td>\n<td>Massive research codebase and tutorials for metaheuristics and RL scheduling<\/td>\n<td>Fewer open JSSP research repos; more production-grade patterns and enterprise support<\/td>\n<\/tr>\n<tr>\n<td>Cost &amp; licensing<\/td>\n<td>Open source; low barriers<\/td>\n<td>Free tooling available; enterprise IDEs commonly used<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>When to choose Python<\/p>\n<p>\u2013 <strong>Exploration and research:<\/strong> Rapid prototyping of GA\/TS\/SA\/ACO, benchmarking on OR-Library instances, trying variants (FJSSP, blocking, stochastic).<\/p>\n<p>\u2013 <strong>Learning-based methods:<\/strong> <strong>DRL\/GNN<\/strong> for learned dispatching, policy search, imitation learning.<\/p>\n<p>\u2013 <strong>Hybrid pipelines:<\/strong> Glue code around OR-Tools, custom local search in Numba\/Cython, experiment tracking.<\/p>\n<p>\u2013 <strong>Visualization and reporting:<\/strong> Quick convergence plots, Gantt charts, notebooks for papers and demos.<\/p>\n<p>When to choose C#<\/p>\n<p>\u2013 <strong>High-performance production schedulers:<\/strong> Real-time or near-real-time dispatch, stable services, and operator UIs.<\/p>\n<p>\u2013 <strong>Concurrency-heavy local search:<\/strong> Parallel neighborhoods for Tabu Search, large-scale simulation with predictable throughput.<\/p>\n<p>\u2013 <strong>Integration needs:<\/strong> ERP\/MES systems, Windows services, desktop apps, and secure deployment with mature tooling.<\/p>\n<p>\u2013 <strong>Maintainability at scale:<\/strong> Strong typing, robust CI\/CD, long-term enterprise support.<\/p>\n<p>Practical architecture suggestions<\/p>\n<p>\u2013 <strong>Python-first research, C# for production:<\/strong><\/p>\n<p>\u2013 <strong>Prototype<\/strong> algorithms in Python (GA\/TS\/DRL) with clear interfaces and unit tests.<\/p>\n<p>\u2013 <strong>Identify hot spots<\/strong> (e.g., move evaluation, neighbourhood generation), then port those kernels to C# for a production scheduler or expose them via a REST service.<\/p>\n<ul>\n<li><strong>Shared core in C\/C++ for speed:<\/strong><\/li>\n<\/ul>\n<p>\u2013 Implement core primitives (schedule representation, constraint checks, incremental move evaluation) in C++.<\/p>\n<p>\u2013 Bind to Python via pybind11 for research and to C# via C++\/CLI or P\/Invoke for production.<\/p>\n<ul>\n<li><strong>Benchmarking discipline:<\/strong><\/li>\n<\/ul>\n<p>\u2013 <strong>Common instance set:<\/strong> LA, FT, TA, ORB, and modern FJSSP variants.<\/p>\n<p>\u2013 <strong>Metrics:<\/strong> Makespan, tardiness, stability under dynamic arrivals; runtime distribution, scalability curves.<\/p>\n<p>\u2013 <strong>Reproducibility:<\/strong> Fixed seeds, environment capture, per-instance logs, configuration files.<\/p>\n<ul>\n<li><strong>Hybrid runtime:<\/strong><\/li>\n<\/ul>\n<p>\u2013 Use <strong>Python<\/strong> for offline policy training (RL\/GNN), export policies.<\/p>\n<p>\u2013 Use <strong>C#<\/strong> runtime to apply learned policies in production, with explainability hooks and guardrails.<\/p>\n<p>On the whole, while no single approach is optimum across all problem situations, optimization, metaheuristics, and machine learning as a blend is an innovation-rich area. The future of JSSP is not merely improving solution quality, but also handling uncertainty, scalability, interpretability, and reproducibility\u2014it is these that will define the pragmatic implication of scheduling study under smart manufacturing.<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>REFERENCE<\/strong><\/p>\n<p>Applegate, D., &amp; Cook, W. (1991). A Computational Study of the Job-Shop Scheduling Problem. <em>ORSA Journal on Computing<\/em>, <em>3<\/em>(2), 149 \u2013 156. https:\/\/doi.org\/10.1287\/ijoc.3.2.149.<\/p>\n<p>Baptiste, P., Le Pape, C., &amp; Nuijten, W. (2001). <em>Constraint-Based Scheduling<\/em> (Vol. 39). Springer US. https:\/\/doi.org\/10.1007\/978-1-4615-1479-4,<\/p>\n<p>Benni, R., Umarani, S. R., &amp; Totad, S. (2024). A Comprehensive Study of Meta-Heuristic Algorithms for Job Shop Scheduling Optimization. <em>2024 15th International Conference on Computing Communication and Networking Technologies (ICCCNT)<\/em>, 1 \u2013 10. https:\/\/doi.org\/10.1109\/ICCCNT61001.2024.10725590.<\/p>\n<p>Blackstone, J. H., Phillips, D. T., &amp; Hogg, G. L. (1982). A state-of-the-art survey of dispatching rules for manufacturing job shop operations. <em>International Journal of Production Research<\/em>, <em>20<\/em>(1), 27 \u2013 45. https:\/\/doi.org\/10.1080\/00207548208947745.<\/p>\n<p>Brucker, P., Jurisch, B., &amp; Sievers, B. (1994). A branch and bound algorithm for the job-shop scheduling problem. <em>Discrete Applied Mathematics<\/em>, <em>49<\/em>(1 \u2013 3), 107 \u2013 127. https:\/\/doi.org\/10.1016\/0166-218X(94)90204-6.<\/p>\n<p>Cebi, C., Atac, E., &amp; Sahingoz, O. K. (2020a). Job Shop Scheduling Problem and Solution Algorithms: A Review. <em>2020 11th International Conference on Computing, Communication and Networking Technologies (ICCCNT)<\/em>, 1 \u2013 7. https:\/\/doi.org\/10.1109\/ICCCNT49239.2020.9225581<\/p>\n<p>Cebi, C., Atac, E., &amp; Sahingoz, O. K. (2020b). Job Shop Scheduling Problem and Solution Algorithms: A Review. <em>2020 11th International Conference on Computing, Communication and Networking Technologies (ICCCNT)<\/em>, 1 \u2013 7. https:\/\/doi.org\/10.1109\/ICCCNT49239.2020.9225581.<\/p>\n<p>Chaouiya, C. (2007). Petri net modelling of biological networks. <em>Briefings in Bioinformatics<\/em>, <em>8<\/em>(4), 210 \u2013 219.<\/p>\n<p>Dorigo, M., &amp; Gambardella, L. M. (1997). Ant colony system: A cooperative learning approach to the traveling salesman problem. <em>IEEE Transactions on Evolutionary Computation<\/em>, <em>1<\/em>(1), 53 \u2013 66. https:\/\/doi.org\/10.1109\/4235.585892.<\/p>\n<p>Fisher, M. L. (1981). The Lagrangian Relaxation Method for Solving Integer Programming Problems. <em>Management Science<\/em>, <em>27<\/em>(1), 1 \u2013 18. https:\/\/doi.org\/10.1287\/mnsc.27.1.1<\/p>\n<p>Fromherz, M. P. J. (2001). Constraint-based scheduling. <em>Proceedings of the 2001 American Control Conference. (Cat. No.01CH37148)<\/em>, <em>4<\/em>, 3231 \u2013 3244. https:\/\/doi.org\/10.1109\/ACC.2001.946421.<\/p>\n<p>Ghedjati, F. (1999). Genetic algorithms for the job-shop scheduling problem with unrelated parallel constraints: Heuristic mixing method machines and precedence. <em>Computers &amp; Industrial Engineering<\/em>, <em>37<\/em>(1 \u2013 2), 39 \u2013 42. https:\/\/doi.org\/10.1016\/S0360-8352(99)00019-4.<\/p>\n<p>Glover, F. (1989). Tabu Search \u2013 Part I. <em>ORSA Journal on Computing<\/em>, <em>1<\/em>(3), 190 \u2013 206. https:\/\/doi.org\/10.1287\/ijoc.1.3.190.<\/p>\n<p>Haupt, R. (1989). A survey of priority rule-based scheduling. <em>OR Spektrum<\/em>, <em>11<\/em>(1), 3 \u2013 16. https:\/\/doi.org\/10.1007\/BF01721162.<\/p>\n<p>Hooker, J. N. (2012). <em>Integrated Methods for Optimization<\/em> (Vol. 170). Springer US. https:\/\/doi.org\/10.1007\/978-1-4614-1900-6.<\/p>\n<p>Infantes, G., Roussel, S., Pereira, P., Jacquet, A., &amp; Benazera, E. (2024a). <em>Learning to Solve Job Shop Scheduling under Uncertainty<\/em> (Version 1). arXiv. https:\/\/doi.org\/10.48550\/ARXIV.2404.01308.<\/p>\n<p>Infantes, G., Roussel, S., Pereira, P., Jacquet, A., &amp; Benazera, E. (2024b). <em>Learning to Solve Job Shop Scheduling under Uncertainty<\/em> (Version 1). arXiv. https:\/\/doi.org\/10.48550\/ARXIV.2404.01308.<\/p>\n<p>Infantes, G., Roussel, S., Pereira, P., Jacquet, A., &amp; Benazera, E. (2024c). Learning to Solve Job Shop Scheduling Under Uncertainty. In B. Dilkina (Ed.), <em>Integration of Constraint Programming, Artificial Intelligence, and Operations Research<\/em> (Vol. 14742, pp. 329 \u2013 345). Springer Nature Switzerland. https:\/\/doi.org\/10.1007\/978-3-031-60597-0_21.<\/p>\n<p>Jain, A. S., &amp; Meeran, S. (1999). Deterministic job-shop scheduling: Past, present and future. <em>European Journal of Operational Research<\/em>, <em>113<\/em>(2), 390 \u2013 434. https:\/\/doi.org\/10.1016\/S0377-2217(98)00113-1.<\/p>\n<p>Louren\u00e7o, H. R. (1995). Job-shop scheduling: Computational study of local search and large-step optimization methods. <em>European Journal of Operational Research<\/em>, <em>83<\/em>(2), 347 \u2013 364. https:\/\/doi.org\/10.1016\/0377-2217(95)00012-F.<\/p>\n<p>Mahmud, S., Chakrabortty, R. K., Abbasi, A., &amp; Ryan, M. J. (2022). Switching strategy-based hybrid evolutionary algorithms for job shop scheduling problems. <em>Journal of Intelligent Manufacturing<\/em>, <em>33<\/em>(7), 1939 \u2013 1966. https:\/\/doi.org\/10.1007\/s10845-022-01940-1.<\/p>\n<p>Mnih, V., Kavukcuoglu, K., Silver, D., Rusu, A. A., Veness, J., Bellemare, M. G., Graves, A., Riedmiller, M., Fidjeland, A. K., Ostrovski, G., Petersen, S., Beattie, C., Sadik, A., Antonoglou, I., King, H., Kumaran, D., Wierstra, D., Legg, S., &amp; Hassabis, D. (2015). Human-level control through deep reinforcement learning. <em>Nature<\/em>, <em>518<\/em>(7540), 529 \u2013 533. https:\/\/doi.org\/10.1038\/nature14236.<\/p>\n<p>Momenikorbekandi, A., &amp; Kalganova, T. (2025). Intelligent Scheduling Methods for Optimisation of Job Shop Scheduling Problems in the Manufacturing Sector: A Systematic Review. <em>Electronics<\/em>, <em>14<\/em>(8), 1663. https:\/\/doi.org\/10.3390\/electronics14081663.<\/p>\n<p>Nadia, L. (2023). Using Artificial Intelligence for Flexible Job Shop Scheduling Problem Solving. <em>2023 Third International Conference on Theoretical and Applicative Aspects of Computer Science (ICTAACS)<\/em>, 1 \u2013 9. https:\/\/doi.org\/10.1109\/ICTAACS60400.2023.10449588.<\/p>\n<p>Nowicki, E., &amp; Smutnicki, C. (1996). A fast tabu search algorithm for the permutation flow-shop problem. <em>European Journal of Operational Research<\/em>, <em>91<\/em>(1), 160 \u2013 175. https:\/\/doi.org\/10.1016\/0377-2217(95)00037-2.<\/p>\n<p>Panwalkar, S. S., &amp; Iskander, W. (1977). A Survey of Scheduling Rules. <em>Operations Research<\/em>, <em>25<\/em>(1), 45 \u2013 61. https:\/\/doi.org\/10.1287\/opre.25.1.45.<\/p>\n<p>Pezzella, F., Morganti, G., &amp; Ciaschetti, G. (2008). A genetic algorithm for the Flexible Job-shop Scheduling Problem. <em>Computers &amp; Operations Research<\/em>, <em>35<\/em>(10), 3202 \u2013 3212. https:\/\/doi.org\/10.1016\/j.cor.2007.02.014.<\/p>\n<p>Rego, C., &amp; Duarte, R. (2009). A filter-and-fan approach to the job shop scheduling problem. <em>European Journal of Operational Research<\/em>, <em>194<\/em>(3), 650 \u2013 662. https:\/\/doi.org\/10.1016\/j.ejor.2007.12.035.<\/p>\n<p>Rihane, K., Dabah, A., &amp; Aitzai, A. (2025a). <em>Learning-Based Approaches for Job Shop Scheduling Problems: A Review<\/em> (Version 1). arXiv. https:\/\/doi.org\/10.48550\/ARXIV.2505.04246.<\/p>\n<p>Rihane, K., Dabah, A., &amp; Aitzai, A. (2025b). <em>Learning-Based Approaches for Job Shop Scheduling Problems: A Review<\/em> (Version 1). arXiv. https:\/\/doi.org\/10.48550\/ARXIV.2505.04246.<\/p>\n<p>Sim, M. H., Low, M. Y. H., Chong, C. S., &amp; Shakeri, M. (2020). Job Shop Scheduling Problem Neural Network Solver with Dispatching Rules. <em>2020 IEEE International Conference on Industrial Engineering and Engineering Management (IEEM)<\/em>, 514 \u2013 518. https:\/\/doi.org\/10.1109\/IEEM45057.2020.9309776.<\/p>\n<p>Zhang, C., Song, W., Cao, Z., Zhang, J., Tan, P. S., &amp; Xu, C. (2020). <em>Learning to Dispatch for Job Shop Scheduling via Deep Reinforcement Learning<\/em> (Version 1). arXiv. https:\/\/doi.org\/10.48550\/ARXIV.2010.12367.<\/p>\n<p>Zhang, C. Y., Li, P., Rao, Y., &amp; Guan, Z. (2008). A very fast TS\/SA algorithm for the job shop scheduling problem. <em>Computers &amp; Operations Research<\/em>, <em>35<\/em>(1), 282 \u2013 294. https:\/\/doi.org\/10.1016\/j.cor.2006.02.024.<\/p>\n<p>Zhao, A., Liu, P., Li, Y., Xie, Z., Hu, L., &amp; Li, H. (2023). Real-Time Selection System of Dispatching Rules for the Job Shop Scheduling Problem. <em>Machines<\/em>, <em>11<\/em>(10), 921. https:\/\/doi.org\/10.3390\/machines11100921.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: right;\"><strong>Sofoklis Christoforidis<\/strong><\/p>\n<p style=\"text-align: right;\">Democritus University of Thrace<\/p>\n<p style=\"text-align: right;\">Greece<\/p>\n<p style=\"text-align: right;\">E-mail: sofoklis9@gmail.com<\/p>\n<p style=\"text-align: right;\"><strong>Efstathios Titopoulos<\/strong><\/p>\n<p style=\"text-align: right;\">Democritus University of Thrace<\/p>\n<p style=\"text-align: right;\">Greece<\/p>\n<p style=\"text-align: right;\">E-mail: etitopolus@tu-sofia.bg<\/p>\n<p style=\"text-align: right;\"><strong>Boryana Mihaylova<\/strong><\/p>\n<p style=\"text-align: right;\">WoS Researcher ID: NUQ-0610-2025<\/p>\n<p style=\"text-align: right;\">Technical University of Sofia<\/p>\n<p style=\"text-align: right;\">Sofia, Bulgaria<\/p>\n<p style=\"text-align: right;\">E-mail: bilieva@tu-sofia.bg<\/p>\n<p style=\"text-align: right;\"><strong>Eleni Kromitoglou<\/strong><\/p>\n<p style=\"text-align: right;\">Democritus University of Thrace<\/p>\n<p style=\"text-align: right;\">Greece<\/p>\n<p style=\"text-align: right;\"><strong>Stergios Intzes<\/strong><\/p>\n<p style=\"text-align: right;\">Democritus University of Thrace<\/p>\n<p style=\"text-align: right;\">Greece<\/p>\n<p><a href=\"https:\/\/azbuki.bg\/wp-content\/uploads\/2026\/01\/vocational_education_3-4_sofoklis-christoforidis-2.pdf\" target=\"_blank\" rel=\"noopener\">>> Download the article as a PDF file <<<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Sofoklis Christoforidis Efstathios Titopoulos Democritus University of Thrace (Greece) Boryana Mihaylova Technical University of Sofia (Bulgaria) Eleni Kromitoglou Stergios Intzes Democritus University of Thrace (Greece) https:\/\/doi.org\/10.53656\/voc25-3-4-12 Abstract. The Job Shop Scheduling Problem (JSSP) is a long-standing combinatorial optimization problem studied since the 1960s. JSSP is NP-complete, meaning solutions exist but cannot be guaranteed within polynomial [&hellip;]<\/p>","protected":false},"author":124332423427287,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[]},"categories":[1],"tags":[15823,15821,15822],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438\" \/>\n<meta property=\"og:description\" content=\"Sofoklis Christoforidis Efstathios Titopoulos Democritus University of Thrace (Greece) Boryana Mihaylova Technical University of Sofia (Bulgaria) Eleni Kromitoglou Stergios Intzes Democritus University of Thrace (Greece) https:\/\/doi.org\/10.53656\/voc25-3-4-12 Abstract. The Job Shop Scheduling Problem (JSSP) is a long-standing combinatorial optimization problem studied since the 1960s. JSSP is NP-complete, meaning solutions exist but cannot be guaranteed within polynomial [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0410\u0437-\u0431\u0443\u043a\u0438\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Azbuki55\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-15T12:59:29+00:00\" \/>\n<meta name=\"author\" content=\"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\"},\"author\":{\"name\":\"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/de220d282eaa494f914ce0fd838645dd\"},\"headline\":\"Solving the Job Shop Scheduling Problem &#8211; Different Techniques and Programming Languages\",\"datePublished\":\"2026-01-15T12:59:29+00:00\",\"dateModified\":\"2026-01-15T12:59:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\"},\"wordCount\":4546,\"publisher\":{\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization\"},\"keywords\":[\"Constraint Programming\",\"Genetic Algorithm\",\"Metaheuristics\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\",\"url\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\",\"name\":\"Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438\",\"isPartOf\":{\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#website\"},\"datePublished\":\"2026-01-15T12:59:29+00:00\",\"dateModified\":\"2026-01-15T12:59:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/science.azbuki.bg\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solving the Job Shop Scheduling Problem &#8211; Different Techniques and Programming Languages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#website\",\"url\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/\",\"name\":\"\u0410\u0437-\u0431\u0443\u043a\u0438\",\"description\":\"\u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u043d\u043e \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0441\u0442\u0432\u043e \u0437\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0443\u043a\u0430\",\"publisher\":{\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization\",\"name\":\"\u0410\u0437-\u0431\u0443\u043a\u0438\",\"url\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azbuki.bg\/wp-content\/uploads\/2019\/04\/logo-azbuki-e1580374651845.png\",\"contentUrl\":\"https:\/\/azbuki.bg\/wp-content\/uploads\/2019\/04\/logo-azbuki-e1580374651845.png\",\"width\":250,\"height\":70,\"caption\":\"\u0410\u0437-\u0431\u0443\u043a\u0438\"},\"image\":{\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Azbuki55\/\",\"https:\/\/www.instagram.com\/nion_azbuki\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/de220d282eaa494f914ce0fd838645dd\",\"name\":\"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d08ccbd951212deb604aa2d403575d4e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d08ccbd951212deb604aa2d403575d4e?s=96&d=mm&r=g\",\"caption\":\"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c\"},\"sameAs\":[\"https:\/\/azbuki.bg\/\"],\"url\":\"https:\/\/azbuki.bg\/en\/author\/azbuki_ekip\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/","og_locale":"en_US","og_type":"article","og_title":"Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438","og_description":"Sofoklis Christoforidis Efstathios Titopoulos Democritus University of Thrace (Greece) Boryana Mihaylova Technical University of Sofia (Bulgaria) Eleni Kromitoglou Stergios Intzes Democritus University of Thrace (Greece) https:\/\/doi.org\/10.53656\/voc25-3-4-12 Abstract. The Job Shop Scheduling Problem (JSSP) is a long-standing combinatorial optimization problem studied since the 1960s. JSSP is NP-complete, meaning solutions exist but cannot be guaranteed within polynomial [&hellip;]","og_url":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/","og_site_name":"\u0410\u0437-\u0431\u0443\u043a\u0438","article_publisher":"https:\/\/www.facebook.com\/Azbuki55\/","article_published_time":"2026-01-15T12:59:29+00:00","author":"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#article","isPartOf":{"@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/"},"author":{"name":"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/de220d282eaa494f914ce0fd838645dd"},"headline":"Solving the Job Shop Scheduling Problem &#8211; Different Techniques and Programming Languages","datePublished":"2026-01-15T12:59:29+00:00","dateModified":"2026-01-15T12:59:29+00:00","mainEntityOfPage":{"@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/"},"wordCount":4546,"publisher":{"@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization"},"keywords":["Constraint Programming","Genetic Algorithm","Metaheuristics"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/","url":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/","name":"Solving the Job Shop Scheduling Problem - Different Techniques and Programming Languages - \u0410\u0437-\u0431\u0443\u043a\u0438","isPartOf":{"@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#website"},"datePublished":"2026-01-15T12:59:29+00:00","dateModified":"2026-01-15T12:59:29+00:00","breadcrumb":{"@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azbuki.bg\/en\/uncategorized\/solving-the-job-shop-scheduling-problem-different-techniques-and-programming-languages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/science.azbuki.bg\/en\/"},{"@type":"ListItem","position":2,"name":"Solving the Job Shop Scheduling Problem &#8211; Different Techniques and Programming Languages"}]},{"@type":"WebSite","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#website","url":"https:\/\/foreignlanguages.azbuki.bg\/en\/","name":"\u0410\u0437-\u0431\u0443\u043a\u0438","description":"\u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u043d\u043e \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0441\u0442\u0432\u043e \u0437\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0443\u043a\u0430","publisher":{"@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/foreignlanguages.azbuki.bg\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#organization","name":"\u0410\u0437-\u0431\u0443\u043a\u0438","url":"https:\/\/foreignlanguages.azbuki.bg\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/logo\/image\/","url":"https:\/\/azbuki.bg\/wp-content\/uploads\/2019\/04\/logo-azbuki-e1580374651845.png","contentUrl":"https:\/\/azbuki.bg\/wp-content\/uploads\/2019\/04\/logo-azbuki-e1580374651845.png","width":250,"height":70,"caption":"\u0410\u0437-\u0431\u0443\u043a\u0438"},"image":{"@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Azbuki55\/","https:\/\/www.instagram.com\/nion_azbuki\/"]},{"@type":"Person","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/de220d282eaa494f914ce0fd838645dd","name":"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/foreignlanguages.azbuki.bg\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d08ccbd951212deb604aa2d403575d4e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d08ccbd951212deb604aa2d403575d4e?s=96&d=mm&r=g","caption":"\u201e\u0410\u0437-\u0431\u0443\u043a\u0438\u201c"},"sameAs":["https:\/\/azbuki.bg\/"],"url":"https:\/\/azbuki.bg\/en\/author\/azbuki_ekip\/"}]}},"_links":{"self":[{"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/posts\/219839"}],"collection":[{"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/users\/124332423427287"}],"replies":[{"embeddable":true,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/comments?post=219839"}],"version-history":[{"count":1,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/posts\/219839\/revisions"}],"predecessor-version":[{"id":219892,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/posts\/219839\/revisions\/219892"}],"wp:attachment":[{"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/media?parent=219839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/categories?post=219839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azbuki.bg\/en\/wp-json\/wp\/v2\/tags?post=219839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}