{"id":11271,"date":"2024-01-12T09:48:02","date_gmt":"2024-01-12T08:48:02","guid":{"rendered":"https:\/\/www.iese.fraunhofer.de\/blog\/?p=11271"},"modified":"2024-01-22T10:59:20","modified_gmt":"2024-01-22T09:59:20","slug":"process-planning","status":"publish","type":"post","link":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/","title":{"rendered":"Process Planning and Continuous Scheduling (Part 2)"},"content":{"rendered":"<p class=\"lead\">In our last Fraunhofer IESE blog post, we introduced a <a href=\"https:\/\/www.iese.fraunhofer.de\/blog\/deep-reinforcement-learning\">holistic process planning and scheduling design called RL design, which addresses individualized production with small lot sizes<\/a>. However, this design cannot deal with scheduling problems in the case of large job quantities. In this post, we introduce the second RL design: process planning with subsequent scheduling. This design aims to address the case where jobs arrive continuously at random times, with all of them sharing several common product types.<\/p>\n<p>This design separates the process planning module and the scheduling modules into two separate DQN architectures. The DQN for process planning is started first. It has the same construction as the first RL design except that all services have a duration of a single time step and the agents only have to learn to synthesize process plans instead of deriving schedules. This reduces the computation time for process planning dramatically. The process plans are stored in one\u00a0 place and are later accessed by the scheduling module. The continuous scheduling module is responsible for deriving near-optimal schedules based on the process plans.<\/p>\n<div id='gallery-1' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2.png'><img loading=\"lazy\" decoding=\"async\" width=\"1348\" height=\"389\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2.png\" class=\"attachment-full size-full\" alt=\"RL-design (Process Planning)\" aria-describedby=\"gallery-1-11303\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2.png 1348w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2-400x115.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2-698x201.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure1_blogpost2-768x222.png 768w\" sizes=\"auto, (max-width: 1348px) 100vw, 1348px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-1-11303'>\n\t\t\t\tFigure1: General architecture of the second RL design\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<h2><strong>Process planning and scheduling for large job quantities<\/strong><\/h2>\n<p>The DQN for continuous scheduling has a different RL design, especially for state space modeling and reward generation. The action space of this design can still be formulated as <strong>A<\/strong>= {a_1, a_2, a_3, &#8230;, a_k}Ua_{idle}. The state space contains only the job states <strong>S<\/strong>={s_{j1}, s_{j2},&#8230;,s_{jn}}. Each job state contains the following information: (1) current services based on the process plan. The current services of all jobs form a set\u00a0 a_{cur} = {a_{cur(j1)}, a_{cur(j2)}, &#8230;, a_{cur(jn)}}; (2) the service providers of the current services; and (3) the current status of the service providers. In this state modeling, the resource state is represented implicitly inside a job state. This design uses a Long-Short-Term-Memory (LSTM) network as the approximation function, where the series of job states are fed into the input series of the LSTM. The output equals the quality values of the actions.<\/p>\n<div id='gallery-2' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure2_bp2.png'><img loading=\"lazy\" decoding=\"async\" width=\"615\" height=\"297\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure2_bp2.png\" class=\"attachment-full size-full\" alt=\"Process Planning (Design)\" aria-describedby=\"gallery-2-11304\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure2_bp2.png 615w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/figure2_bp2-400x193.png 400w\" sizes=\"auto, (max-width: 615px) 100vw, 615px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-2-11304'>\n\t\t\t\tFigure 2: LSTM network used by the second RL design.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<h2><strong>Rewarding system<\/strong><\/h2>\n<p>The reward modeling of this design is application-specific. It can be summarized as follows: (1) The virtual plant checks whether the selected service belongs to the set of current services A_{cur}. If this is not the case, a negative reward is returned to the agent. (2) If the selected service belongs to A_{cur}, the virtual plant checks the executability of the service using the logic shown in Figure 4. If the service is not executable in the current state, a negative reward is returned to the agent. (4) Otherwise, the service is started at the current time step. Now the logic of the scheduling module is started to manage the running services and a scheduling reward is generated based on the mean machine utilization. (5) Finally, it checks whether new jobs arrive at the current time step. The released jobs are added to the internal queue of the virtual plant and are ready for scheduling.<\/p>\n<h2><strong>Validation and result analysis<\/strong><\/h2>\n<p>&nbsp;<\/p>\n<div id='gallery-3' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2.png'><img loading=\"lazy\" decoding=\"async\" width=\"1923\" height=\"1015\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-3-11314\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2.png 1923w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2-400x211.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2-698x368.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2-768x405.png 768w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure3-bp2-1536x811.png 1536w\" sizes=\"auto, (max-width: 1923px) 100vw, 1923px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-3-11314'>\n\t\t\t\tFigure 3: A virtual aluminum cold rolling mill used for the validation of our approach.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<p>&nbsp;<\/p>\n<p>We performed a case study using a virtual aluminum cold rolling mill, which is shown in Figure 3. It consists of a cold rolling mill and a pallet transport system. The pallet transport system consists of multiple roller conveyors, turn tables, and shift tables to move an aluminum coil to a specific position. All resource types and their services are shown in Table 1.<\/p>\n<p>&nbsp;<\/p>\n<div id='gallery-4' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2.png'><img loading=\"lazy\" decoding=\"async\" width=\"798\" height=\"274\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2.png\" class=\"attachment-full size-full\" alt=\"Resources and Services (Process Planning)\" aria-describedby=\"gallery-4-11311\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2.png 798w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2-400x137.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2-698x240.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-4-bp2-768x264.png 768w\" sizes=\"auto, (max-width: 798px) 100vw, 798px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-4-11311'>\n\t\t\t\tTable 1: Available resources and services.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<table width=\"100%\">\n<tbody>\n<tr>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>The aluminum coils should be transported to the cold rolling mill and transported back to the warehouse after the milling process. Figure 4 shows the modeling of the production goal of an aluminum coil. This production goal defines that the coil should be turned by a turn table (\u201cis-tuned=true\u201d) and processed by a rolling mill (\u201cis-rolled = true\u201d). The job properties that are represented as the yellow boxes show the current job state of the aluminum coil. The agent tries to find a sequence of services that can change the jobs states to the values defined in the production goal.<\/p>\n<div id='gallery-5' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5.png'><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"526\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-5-11312\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5.png 950w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5-400x221.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5-698x386.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-5-768x425.png 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-5-11312'>\n\t\t\t\tFigure 4: Modeling production goal and job state of an aluminum coil.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<h2><strong>Results<\/strong><\/h2>\n<p>The evaluation focused on the scalability of our approach with different numbers of jobs. Hence, we measured the time the agents need for the initial and repeated learning process. The experiment was performed on a computer with an Intel i5 core with 4G RAM. The neural networks had a CPU backend. Figure 5 shows the time consumption for the 1<sup>st<\/sup> RL design. For the initial learning process, the agent needed about 40 min. to learn the process plans for a single job, about 2 hours for 2 jobs, and more than 10 hours for 4 jobs. For the repeated learning process, where the agent should learn new schedules for different production goals, the agent only needed about 10 min to derive schedules for 4 jobs. From the statistics, we can see that this design is adequate for individualized production with small lot sizes.<\/p>\n<div id='gallery-6' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6.png'><img loading=\"lazy\" decoding=\"async\" width=\"1219\" height=\"276\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-6-11315\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6.png 1219w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6-400x91.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6-698x158.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure6-768x174.png 768w\" sizes=\"auto, (max-width: 1219px) 100vw, 1219px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-6-11315'>\n\t\t\t\tFigure 5: Time consumption of the initial learning process and the repeated learning process of the agent of the first RL design.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<div class=\"mceTemp\"><\/div>\n<div id='gallery-7' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon portrait'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure7.png'><img loading=\"lazy\" decoding=\"async\" width=\"752\" height=\"842\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure7.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-7-11316\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure7.png 752w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure7-400x448.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure7-698x782.png 698w\" sizes=\"auto, (max-width: 752px) 100vw, 752px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-7-11316'>\n\t\t\t\tFigure 6: The cumulative reward that was achieved by the agent during the initial learning round. With each episode, the agent was able to achieve better rewards until it found near-optimal schedules for all jobs.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<p>&nbsp;<\/p>\n<p>In the evaluation of the second RL design, the agents took about 16 hours for the initial learning round. During the learning process, the production performance KPIs\u00a0 improved continuously. The average job flow time decreased from about 1250 s to about 550 s; mean machine utilization increased from about 0.015 to around 0.5.<\/p>\n<p>One significant discovery of this experiment for the second RL design was that a trained agent can handle a range of situations without re-training. We summarize the factors as follows:<\/p>\n<ul>\n<li>No re-training required:\n<ol>\n<li>Job release period<\/li>\n<li>Job release timepoint<\/li>\n<li>Job release quantity<\/li>\n<li>Service duration<\/li>\n<\/ol>\n<\/li>\n<li>Re-training necessary:\n<ol>\n<li>Changing of production goals, where new product types are inserted.<\/li>\n<li>Changing of available resources and services.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div class=\"mceTemp\"><\/div>\n<div id='gallery-8' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8.png'><img loading=\"lazy\" decoding=\"async\" width=\"2557\" height=\"1358\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-8-11313\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8.png 2557w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8-400x212.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8-698x371.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8-768x408.png 768w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8-1536x816.png 1536w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure-8-2048x1088.png 2048w\" sizes=\"auto, (max-width: 2557px) 100vw, 2557px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-8-11313'>\n\t\t\t\tFigure 7: We extended the service duration 5 times. The agent derived schedules without re-training.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<p>&nbsp;<\/p>\n<div class=\"mceTemp\"><\/div>\n<div id='gallery-9' class='gallery galleryid-11271 gallery-columns-1 gallery-size-full'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9.png'><img loading=\"lazy\" decoding=\"async\" width=\"2557\" height=\"1358\" src=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9.png\" class=\"attachment-full size-full\" alt=\"Process Planning\" aria-describedby=\"gallery-9-11317\" srcset=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9.png 2557w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9-400x212.png 400w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9-698x371.png 698w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9-768x408.png 768w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9-1536x816.png 1536w, https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/Figure9-2048x1088.png 2048w\" sizes=\"auto, (max-width: 2557px) 100vw, 2557px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-9-11317'>\n\t\t\t\tFigure 8: A schedule showing the time line of more 80 jobs\u00a0 released continuously at random times.\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<p>&nbsp;<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>We have presented two RL designs and performed a validation for both RL designs. The validation results show that the first RL design is suitable for individualized production with small lot sizes where process plans are adapted frequently due to the introduction of new product types. The second RL design is suitable for problems with large job quantities where jobs arrive continuously at random times.<\/p>\n<h2><strong>Bibliography<\/strong><\/h2>\n<p>[1] \u00a0D. Silver, T. Hubert, J. Schrittwieser, I. Antonoglou, M. Lai, A. Guez, M. Lanctot, L. Sifre, D. Kumaran und T. &amp;. o. Graepel, \u201eA general reinforcement learning algorithm that masters chess, shogi, and Go through self-play,\u201c <em>Science, <\/em>2018.<br \/>\n[2] \u201eChatGPT: Optimizing Language Models for Dialogue,\u201c OpenAI, [Online]. Available: https:\/\/openai.com\/blog\/chatgpt\/<br \/>\n[3] V. Mnih, K. Kavukcuoglu, D. Silver, A. Graves, I. Antonoglou und D. &amp;. R. M. Wierstra, \u201ePlaying atari with deep reinforcement learning,\u201c <em>arXiv preprint arXiv:1312.5602, <\/em>2013.<br \/>\n[4] B. M. a. Y. G. Kayhan, \u201eReinforcement learning applications to machine scheduling problems: a comprehensive literature review,\u201c <em>Journal of Intelligent Manufacturing, <\/em>pp. 1&#8211;25, 2021.<br \/>\n[5] T. a. S. F. a. O. A. P. Kuhn, \u201eService-Based Architectures in Production Systems: Challenges, Solutions amp; Experiences,\u201c in <em>2020 ITU Kaleidoscope: Industry-Driven Digital Transformation (ITU K)<\/em>, 2020.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our last Fraunhofer IESE blog post, we introduced a holistic process planning and scheduling design called RL design, which addresses individualized production with small lot sizes. However, this design cannot deal with scheduling problems in the case of large&#8230;<\/p>\n","protected":false},"author":85,"featured_media":11334,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[211,94],"tags":[120,48,233],"coauthors":[356,379],"class_list":["post-11271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digitale-transformation","category-industrie-4-0","tag-digitaler-zwilling","tag-digitalisierung","tag-software-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE<\/title>\n<meta name=\"description\" content=\"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE\" \/>\n<meta property=\"og:description\" content=\"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/\" \/>\n<meta property=\"og:site_name\" content=\"Fraunhofer IESE\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/FraunhoferIESE\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-12T08:48:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-22T09:59:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1496\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Zai M\u00fcller-Zhang, Dr.-Ing. Pablo Oliveira Antonino\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@FraunhoferIESE\" \/>\n<meta name=\"twitter:site\" content=\"@FraunhoferIESE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zai M\u00fcller-Zhang\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Zai M\u00fcller-Zhang, Dr.-Ing. Pablo Oliveira Antonino\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/\"},\"author\":{\"name\":\"Zai M\u00fcller-Zhang\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#\\\/schema\\\/person\\\/031cee200b1ae3ff13f3c885e17a71d5\"},\"headline\":\"Process Planning and Continuous Scheduling (Part 2)\",\"datePublished\":\"2024-01-12T08:48:02+00:00\",\"dateModified\":\"2024-01-22T09:59:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/\"},\"wordCount\":1190,\"publisher\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ProcessPlanning_2.jpg\",\"keywords\":[\"Digitaler Zwilling\",\"Digitalisierung\",\"Software Engineering\"],\"articleSection\":[\"Digitale Transformation\",\"Industrie 4.0\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/\",\"name\":\"Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ProcessPlanning_2.jpg\",\"datePublished\":\"2024-01-12T08:48:02+00:00\",\"dateModified\":\"2024-01-22T09:59:20+00:00\",\"description\":\"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ProcessPlanning_2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ProcessPlanning_2.jpg\",\"width\":1496,\"height\":750,\"caption\":\"Process Planning and Continuous Scheduling\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/process-planning\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Process Planning and Continuous Scheduling (Part 2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/\",\"name\":\"Fraunhofer IESE\",\"description\":\"Blog des Fraunhofer-Institut f\u00fcr Experimentelles Software Engineering\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#organization\",\"name\":\"Fraunhofer IESE\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/08\\\/fhg_iese_logo.png\",\"contentUrl\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/08\\\/fhg_iese_logo.png\",\"width\":183,\"height\":50,\"caption\":\"Fraunhofer IESE\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/FraunhoferIESE\\\/\",\"https:\\\/\\\/x.com\\\/FraunhoferIESE\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/fraunhoferiese\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/FraunhoferIESE\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/#\\\/schema\\\/person\\\/031cee200b1ae3ff13f3c885e17a71d5\",\"name\":\"Zai M\u00fcller-Zhang\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zai_zang_mueller_C97A0177_web-96x96.jpg912178a811c022732e2f7c328bda9546\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zai_zang_mueller_C97A0177_web-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zai_zang_mueller_C97A0177_web-96x96.jpg\",\"caption\":\"Zai M\u00fcller-Zhang\"},\"description\":\"Zai M\u00fcller-Zhang ist Mitarbeiterin in der Abteilung Virtual Engineering. Sie hat an der Technische Universit\u00e4t Kaiserslautern Elektro- und Informationstechnik mit dem Schwerpunkt Embedded System studiert. Als Embedded Software Ingenieur besch\u00e4ftigt sie sich prim\u00e4r mit den Themen k\u00fcnstliche Intelligenz f\u00fcr Cyber-Physische Systeme in der Automatisierungsdom\u00e4ne, Eingebettete Echtzeitsysteme und Technologien der industriellen Kommunikation.\",\"url\":\"https:\\\/\\\/www.iese.fraunhofer.de\\\/blog\\\/author\\\/zai-mueller-zhang\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE","description":"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.","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:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/","og_locale":"de_DE","og_type":"article","og_title":"Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE","og_description":"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.","og_url":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/","og_site_name":"Fraunhofer IESE","article_publisher":"https:\/\/www.facebook.com\/FraunhoferIESE\/","article_published_time":"2024-01-12T08:48:02+00:00","article_modified_time":"2024-01-22T09:59:20+00:00","og_image":[{"width":1496,"height":750,"url":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","type":"image\/jpeg"}],"author":"Zai M\u00fcller-Zhang, Dr.-Ing. Pablo Oliveira Antonino","twitter_card":"summary_large_image","twitter_creator":"@FraunhoferIESE","twitter_site":"@FraunhoferIESE","twitter_misc":{"Verfasst von":"Zai M\u00fcller-Zhang","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten","Written by":"Zai M\u00fcller-Zhang, Dr.-Ing. Pablo Oliveira Antonino"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#article","isPartOf":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/"},"author":{"name":"Zai M\u00fcller-Zhang","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#\/schema\/person\/031cee200b1ae3ff13f3c885e17a71d5"},"headline":"Process Planning and Continuous Scheduling (Part 2)","datePublished":"2024-01-12T08:48:02+00:00","dateModified":"2024-01-22T09:59:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/"},"wordCount":1190,"publisher":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","keywords":["Digitaler Zwilling","Digitalisierung","Software Engineering"],"articleSection":["Digitale Transformation","Industrie 4.0"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/","url":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/","name":"Process Planning and Continuous Scheduling (Part 2) - Blog des Fraunhofer IESE","isPartOf":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#primaryimage"},"image":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","datePublished":"2024-01-12T08:48:02+00:00","dateModified":"2024-01-22T09:59:20+00:00","description":"Process planning and subsequent scheduling: jobs arrive continuously at random times, with all of them sharing several common product types.","breadcrumb":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#primaryimage","url":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","contentUrl":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","width":1496,"height":750,"caption":"Process Planning and Continuous Scheduling"},{"@type":"BreadcrumbList","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/process-planning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.iese.fraunhofer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Process Planning and Continuous Scheduling (Part 2)"}]},{"@type":"WebSite","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#website","url":"https:\/\/www.iese.fraunhofer.de\/blog\/","name":"Fraunhofer IESE","description":"Blog des Fraunhofer-Institut f\u00fcr Experimentelles Software Engineering","publisher":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iese.fraunhofer.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#organization","name":"Fraunhofer IESE","url":"https:\/\/www.iese.fraunhofer.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2016\/08\/fhg_iese_logo.png","contentUrl":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2016\/08\/fhg_iese_logo.png","width":183,"height":50,"caption":"Fraunhofer IESE"},"image":{"@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/FraunhoferIESE\/","https:\/\/x.com\/FraunhoferIESE","https:\/\/www.linkedin.com\/company\/fraunhoferiese\/","https:\/\/www.youtube.com\/c\/FraunhoferIESE"]},{"@type":"Person","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/#\/schema\/person\/031cee200b1ae3ff13f3c885e17a71d5","name":"Zai M\u00fcller-Zhang","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/09\/zai_zang_mueller_C97A0177_web-96x96.jpg912178a811c022732e2f7c328bda9546","url":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/09\/zai_zang_mueller_C97A0177_web-96x96.jpg","contentUrl":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/09\/zai_zang_mueller_C97A0177_web-96x96.jpg","caption":"Zai M\u00fcller-Zhang"},"description":"Zai M\u00fcller-Zhang ist Mitarbeiterin in der Abteilung Virtual Engineering. Sie hat an der Technische Universit\u00e4t Kaiserslautern Elektro- und Informationstechnik mit dem Schwerpunkt Embedded System studiert. Als Embedded Software Ingenieur besch\u00e4ftigt sie sich prim\u00e4r mit den Themen k\u00fcnstliche Intelligenz f\u00fcr Cyber-Physische Systeme in der Automatisierungsdom\u00e4ne, Eingebettete Echtzeitsysteme und Technologien der industriellen Kommunikation.","url":"https:\/\/www.iese.fraunhofer.de\/blog\/author\/zai-mueller-zhang\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-content\/uploads\/2024\/01\/ProcessPlanning_2.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/posts\/11271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/comments?post=11271"}],"version-history":[{"count":11,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/posts\/11271\/revisions"}],"predecessor-version":[{"id":11348,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/posts\/11271\/revisions\/11348"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/media\/11334"}],"wp:attachment":[{"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/media?parent=11271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/categories?post=11271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/tags?post=11271"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.iese.fraunhofer.de\/blog\/wp-json\/wp\/v2\/coauthors?post=11271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}