{"id":11081,"date":"2022-09-05T00:26:50","date_gmt":"2022-09-04T15:26:50","guid":{"rendered":"https:\/\/prodskill.com\/?p=11081"},"modified":"2022-11-17T10:05:36","modified_gmt":"2022-11-17T01:05:36","slug":"job-scheduling-using-1d-bin-packing-algorithm-4","status":"publish","type":"post","link":"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/","title":{"rendered":"Optimization of work distribution using one-dimensional bin packing algorithm_3.Implementation (1)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">&lt;&lt;Table of Contents&gt;&gt;<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#3_Bin_Packing_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EA%B5%AC%ED%98%84\" >3. Bin Packing Algorithm Implementation<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#31_%EC%97%91%EC%85%80_VBA_%EA%B8%B0%EB%B0%98_%EB%8F%84%EA%B5%AC\" >3.1. Excel VBA based tool<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#311_%EC%9E%85%EB%A0%A5_%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%84%B1\" >3.1.1. Input material configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#312_%EC%98%B5%EC%85%98_%EC%84%A4%EC%A0%95\" >3.1.2. Option setting<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#313_Bin_Packing_%EC%8B%A4%ED%96%89\" >3.1.3. Run Bin Packing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#314_%EC%8B%A4%ED%96%89_%EA%B2%B0%EA%B3%BC_%ED%99%95%EC%9D%B8\" >3.1.4. Check the execution result<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/#315_VBA_%EC%BD%94%EB%93%9C_%EA%B5%AC%EC%84%B1\" >3.1.5. VBA code configuration<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"3._Bin_Packing_\uc54c\uace0\ub9ac\uc998_\uad6c\ud604\"><span class=\"ez-toc-section\" id=\"3_Bin_Packing_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EA%B5%AC%ED%98%84\"><\/span>3. Bin Packing Algorithm Implementation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A development environment is required to input the list of items and constraints, implement the algorithm, and check the results. There are several development environments such as Excel VBA, Python, and R. Among them, Excel VBA does not have an open library, so you have to write most of the source code yourself. Python and R can implement the bin packing algorithm directly, or use an already provided package. Here, I will look at how to use the tool that implements the algorithm myself with Excel VBA and the package provided in Python.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3.1._\uc5d1\uc140_VBA_\uae30\ubc18_\ub3c4\uad6c\"><span class=\"ez-toc-section\" id=\"31_%EC%97%91%EC%85%80_VBA_%EA%B8%B0%EB%B0%98_%EB%8F%84%EA%B5%AC\"><\/span>3.1. Excel VBA based tool<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A tool or language that implements an algorithm usually receives a data file as input separately from the program&#039;s source code. Excel VBA has the characteristic of being able to manage program source code and data in one file and manage them separately. Here, the program source code and data are managed in one file.<\/p>\n\n\n\n<p>The configuration and source code of the tool that manages the list of items by inputting them into an Excel sheet and implements the one-dimensional bin packing algorithm with VBA will be briefly introduced below. The entire source code is provided as an appendix. <a href=\"https:\/\/github.com\/DAToolset\/1D-bin-packing\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/DAToolset\/1D-bin-packing<\/a>&nbsp;can also be checked.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>**Note: This article does not cover the concept or syntax of Excel VBA, but will be written in detail in a separate article in the future.<\/p>\n\n\n\n<p>The overall configuration of the tool is shown in the figure below. Input data in \u201cRun\u201d sheet, set options, and click \u201cRun Bin Packing\u201d button to check the execution result.<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png\"><img loading=\"lazy\" decoding=\"async\" width=\"598\" height=\"378\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png\" alt=\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654 \ub3c4\uad6c \ud654\uba74\" class=\"wp-image-11082\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png 598w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35-300x190.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35-18x12.png 18w\" sizes=\"auto, (max-width: 598px) 100vw, 598px\" \/><\/a><figcaption class=\"wp-element-caption\">Screen of work distribution optimization tool using one-dimensional bin packing algorithm<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Details of the four areas in the figure above are explained in the following table of contents.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3.1.1._\uc785\ub825_\uc790\ub8cc_\uad6c\uc131\"><span class=\"ez-toc-section\" id=\"311_%EC%9E%85%EB%A0%A5_%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%84%B1\"><\/span>3.1.1. Input material configuration<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>In the Item list, enter Name and Size in the following format.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-36.png\"><img loading=\"lazy\" decoding=\"async\" width=\"221\" height=\"343\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-36.png\" alt=\"\uc785\ub825 \uc790\ub8cc \uad6c\uc131\" class=\"wp-image-11083\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-36.png 221w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-36-193x300.png 193w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-36-8x12.png 8w\" sizes=\"auto, (max-width: 221px) 100vw, 221px\" \/><\/a><figcaption class=\"wp-element-caption\">Input material configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Here, the Bin Item Name is a name for identifying the type of an Item, and it can be appropriately designated according to the Item type. For example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the Item is a database table, the table name<\/li>\n\n\n\n<li>If the Item is a Job, the job name<\/li>\n\n\n\n<li>In addition, a name suitable for identifying each item (order number, etc. is also possible)<\/li>\n<\/ul>\n\n\n\n<p>Note that there should be no duplicate names in the Item list. This is because even if the size is the same, it is necessary to know that they are different objects to determine which object to fill in the bin.<\/p>\n\n\n\n<p>In Size, enter the size of each Item. For the size, the number of rows and bytes can be used in the case of a table, and in the case of a job, the execution time can be input in minutes or seconds. The required time should be checked in the job execution record, but it is recommended to calculate and use the average value excluding the maximum and minimum values among the last 5 or more times required.<\/p>\n\n\n\n<p>If you need multiple data sets, you can copy and input the \u201cRun\u201d sheet. The name of the sheet can be any name, but It is good to specify in the form of to distinguish it from other sheets. For example, it is designated as \u201cRun_Org\u201d as shown in the figure below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-37.png\"><img loading=\"lazy\" decoding=\"async\" width=\"552\" height=\"69\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-37.png\" alt=\"\uc790\ub8cc Set\" class=\"wp-image-11125\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-37.png 552w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-37-300x38.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-37-18x2.png 18w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/a><figcaption class=\"wp-element-caption\">material set<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Bin Packing can be executed by creating multiple data sets and setting different data or different options in each data set sheet. The sheet on which the execution result is displayed is not created for each data set but is used permanently. If you want to keep the results of each data set, you can save the Excel file under a different name and create a separate file.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3.1.2._\uc635\uc158_\uc124\uc815\"><span class=\"ez-toc-section\" id=\"312_%EC%98%B5%EC%85%98_%EC%84%A4%EC%A0%95\"><\/span>3.1.2. Option setting<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>The maximum size of the bin, which is a constraint, and whether to sort the reference column in descending order are entered in the following format.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-38.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"67\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-38.png\" alt=\"\uc635\uc158 \uc124\uc815\" class=\"wp-image-11126\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-38.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-38-300x33.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-38-18x2.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Option setting<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Max Bin Size is the maximum size to be assigned to one bin. In other words, when filling multiple items into one bin, it is a constraint on the sum of Item Sizes.<\/p>\n\n\n\n<p>Item Size standard column is a column that specifies which value to use when there are multiple size values in one bin item. For example, suppose that it is configured so that multiple sizes can be entered into one item as follows.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-39.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"297\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-39.png\" alt=\"Item Size\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac12 \uc608\uc2dc (C ~ I)\" class=\"wp-image-11127\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-39.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-39-300x148.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-39-18x9.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Examples of values that can be used as Item Size (C ~ I)<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Columns that can be used as size values are C to I. Enter the column name to select which column to use as the size input value among them. To simulate by creating a random value in Size, copy the value generated by the formula in the J column (Rando Size), paste it as a value in the I column (Simulation), and then execute it by designating the reference column as I. . The reason why you should not specify the J column is because a formula is used in the J column and a new value is created every time it is calculated, so it is impossible to know which value was used as an input value.<\/p>\n\n\n\n<p>If the item size descending sort option is selected (checked), first, the item size is sorted in descending order and Bin Packing algorithm is applied.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3.1.3._Bin_Packing_\uc2e4\ud589\"><span class=\"ez-toc-section\" id=\"313_Bin_Packing_%EC%8B%A4%ED%96%89\"><\/span>3.1.3. Run Bin Packing<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>When the input data configuration and option settings are completed, click the \u201cRun BinPacking\u201d button to execute.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-40.png\"><img loading=\"lazy\" decoding=\"async\" width=\"140\" height=\"64\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-40.png\" alt=\"Bin Packing \uc2e4\ud589 \ubc84\ud2bc\" class=\"wp-image-11128\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-40.png 140w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-40-18x8.png 18w\" sizes=\"auto, (max-width: 140px) 100vw, 140px\" \/><\/a><figcaption class=\"wp-element-caption\">Bin Packing Run Button<\/figcaption><\/figure>\n<\/div>\n\n\n<p>If there is a duplicate in \u201cBin Item Name\u201d when executing, an error may occur. Check and remove the duplicate and execute.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3.1.4._\uc2e4\ud589_\uacb0\uacfc_\ud655\uc778\"><span class=\"ez-toc-section\" id=\"314_%EC%8B%A4%ED%96%89_%EA%B2%B0%EA%B3%BC_%ED%99%95%EC%9D%B8\"><\/span>3.1.4. Check the execution result<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>The execution result consists of 5 sheets. The overall summary is checked in the Result summary sheet, which collects the execution results of each algorithm, and the detailed results of each algorithm are checked in each sheet.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-41.png\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"70\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-41.png\" alt=\"Bin Packing \uc2e4\ud589 \uacb0\uacfc\" class=\"wp-image-11129\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-41.png 550w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-41-300x38.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-41-18x2.png 18w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><figcaption class=\"wp-element-caption\">Bin Packing Execution Result<\/figcaption><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Result Summary: A sheet in which the results of executing each algorithm can be seen at a glance<\/li>\n\n\n\n<li>Next Fit: The result sheet of running the Next Fit algorithm<\/li>\n\n\n\n<li>First Fit: The result sheet of running the First Fit algorithm<\/li>\n\n\n\n<li>Worst Fit: The result sheet of running the Worst Fit algorithm<\/li>\n\n\n\n<li>Best Fit: The result sheet of running the Best Fit algorithm<\/li>\n<\/ul>\n\n\n\n<p>The contents of the Result summary sheet are as follows.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-42.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"322\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-42.png\" alt=\"Bin Packing Result Summary sheet\" class=\"wp-image-11130\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-42.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-42-300x160.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-42-18x10.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Bin Packing Result Summary sheet<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Reference information for the Max Bin Size set in the options is displayed at the top, and a chart of the results of running each of the four algorithms is shown at the bottom.<\/p>\n\n\n\n<p>The composition of the information displayed on the result sheet after executing each algorithm is as follows.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-43.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"329\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-43.png\" alt=\"\uac01 \uc54c\uace0\ub9ac\uc998\uc744 \uc2e4\ud589\ud55c \uacb0\uacfc sheet \uad6c\uc131\" class=\"wp-image-11131\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-43.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-43-300x164.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-43-18x10.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Composition of result sheet after executing each algorithm<\/figcaption><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Item<\/th><th>Contents<\/th><\/tr><\/thead><tbody><tr><td>\u2460 Result list<\/td><td>As a result of executing the bin packing algorithm, you can check which items are filled in which bins. Here, the Bin name is created with the rule of \u201cBin_\u201d + sequence number (5 digits) in the process of program processing.<\/td><\/tr><tr><td>\u2461 Bin total<\/td><td>This is a pivot table for calculating the sum of Item Sizes in units of bins. &lt;\u2463 Bin Total Chart&gt; is created using this pivot table as a data source.<\/td><\/tr><tr><td>\u2462 Execution information<\/td><td>It displays the time taken to process the algorithm, the total of the remaining space in all bins, the total space, and the space inefficiency information. The space inefficiency is calculated as (Bin Total Residual Space Sum)\/(Total Space Sum).<\/td><\/tr><tr><td>\u2463 Bin Total Chart<\/td><td>&lt;\u2461 Bin total pivot table&gt; is visualized as a column chart.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u25bc Next Fit Execution Results<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-44.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"298\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-44.png\" alt=\"Next Fit \uc2e4\ud589 \uacb0\uacfc\" class=\"wp-image-11132\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-44.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-44-300x149.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-44-18x9.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Next Fit Run Results<\/figcaption><\/figure>\n<\/div>\n\n\n<p>\u25bc First Fit Run Results<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-45.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"298\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-45.png\" alt=\"First Fit \uc2e4\ud589 \uacb0\uacfc\" class=\"wp-image-11133\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-45.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-45-300x149.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-45-18x9.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">First Fit run results<\/figcaption><\/figure>\n<\/div>\n\n\n<p>\u25bc Worst Fit Execution Results<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-46.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"298\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-46.png\" alt=\"Worst Fit \uc2e4\ud589 \uacb0\uacfc\" class=\"wp-image-11134\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-46.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-46-300x149.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-46-18x9.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Worst Fit Run Results<\/figcaption><\/figure>\n<\/div>\n\n\n<p>\u25bc Best Fit Run Results<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-47.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"298\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-47.png\" alt=\"Best Fit \uc2e4\ud589 \uacb0\uacfc\" class=\"wp-image-11135\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-47.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-47-300x149.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-47-18x9.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Best Fit Run Results<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"3.1.5._VBA_\ucf54\ub4dc_\uad6c\uc131\"><span class=\"ez-toc-section\" id=\"315_VBA_%EC%BD%94%EB%93%9C_%EA%B5%AC%EC%84%B1\"><\/span>3.1.5. VBA code configuration<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>The source code that implements Bin Packing with VBA is briefly described. The overall composition of the VBA Project is as follows.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-48.png\"><img loading=\"lazy\" decoding=\"async\" width=\"308\" height=\"387\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-48.png\" alt=\"VBA \ucf54\ub4dc \uad6c\uc131\" class=\"wp-image-11136\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-48.png 308w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-48-239x300.png 239w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-48-10x12.png 10w\" sizes=\"auto, (max-width: 308px) 100vw, 308px\" \/><\/a><figcaption class=\"wp-element-caption\">VBA code configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Sheet (Excel UI) manages the list of input data and displays the input and output of the algorithm processing result.<\/li>\n\n\n\n<li>A module is responsible for handling and controlling the entire processing process, creating instances of classes, and common functions.<\/li>\n\n\n\n<li>The class is responsible for functions such as loading input data into memory, implementing algorithms, and outputting result data.<\/li>\n<\/ul>\n\n\n\n<p>The purpose of the detailed items is as follows.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sheet\n<ul class=\"wp-block-list\">\n<li>Each sheet: input data\/option setting, execution result output<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>module\n<ul class=\"wp-block-list\">\n<li>modControl: Manages the entire process of objectifying a class, loading input data, implementing each bin packing algorithm, and outputting results<\/li>\n\n\n\n<li>modFactory: Manage instantiation of classes\n<ul class=\"wp-block-list\">\n<li>The VBA class cannot specify the input parameter of the constructor, so it is configured to create an object using the Factory Pattern.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>modUtil: Manage functions such as logging and setting the format of the required time string\n<ul class=\"wp-block-list\">\n<li>Here, Logging does not leave a file, but it is configured so that log messages can be checked on the Debugger with OutputDebugString among Windows APIs.<\/li>\n\n\n\n<li>Debugger recommends using DebugView<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>class<ul><li>CBin: Class of 1 Bin<ul><li>Main methods: AddBinItem, IsAbleToAdd<\/li><\/ul><\/li><\/ul><ul><li>CBinItem: Class of 1 Item to be put in Bin<ul><li>That is, a class corresponding to one line of input data.<\/li><li>Main method: CompareTo<\/li><\/ul><\/li><\/ul><ul><li>CBinItemCollection: A collection class that manages a list of multiple BinItems.<ul><li>Main methods: Add, Sort, GetString<\/li><\/ul><\/li><\/ul><ul><li>CPacker: A class that manages a list of bins as a Collection.<ul><li>Implement an algorithm that fills the input data to an appropriate place among the existing bin list or creates a new bin to fill it<\/li><li>Main methods: DoPacking, Add, GetNewBin, GetBinNextFit, GetBinFirstBit, GetBinWorstFit, GetBinBestFit, PackToBin, DoOutput, GetRemainSizeSum<\/li><\/ul><\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>CTimer: A class for measuring time spent\n<ul class=\"wp-block-list\">\n<li>Using Windows API QueryPerformanceCounter, QueryPerformanceFrequency<\/li>\n\n\n\n<li>Main methods: StartCounter, TimeElasped<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>In order to properly apply the OOP concept, it is standard to expose public properties composed of Getter\/Setter without public member variables in the class. However, in this tool, public properties are not used for the convenience of implementation. However, member variables, functions, and procedures that can be accessed from outside are declared public, and objects to be accessed from outside are declared private.<\/p>\n\n\n\n<p>The relationship between the classes defined in the VBA source code is briefly expressed as a UML Class Diagram as follows.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-49.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"253\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-49.png\" alt=\"Class Diagram\" class=\"wp-image-11137\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-49.png 602w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-49-300x126.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-49-18x8.png 18w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><figcaption class=\"wp-element-caption\">Class Diagram<\/figcaption><\/figure>\n<\/div>\n\n\n<p>The relationship between classes in the class diagram above is a has a relationship. That is, in the composition relationship defined between the two classes, the filled diamond (\u2666) is the container.<\/p>\n\n\n\n<p>&nbsp;From the right to the left, it can be seen that the lower class is connected to the upper class. One input data is managed by the CBinItem class, and the CBinItemCollection class manages the entire input data as a collection of CBinItems. The CBin class manages individual bin objects and manages the list of items filled in each bin as an object of the CBinItemCollection class. The CPacker class implements the algorithm and manages the entire result Bin object as a collection of the CBin class. Each class has a composition relationship, so when the container object is removed, all sub-objects are removed. The CTimer class is used in the CPacker class to measure the execution time of the algorithm.<\/p>\n\n\n\n<p>Here, the CBinItemCollection class is used to manage the entire input data and also to manage the list of items filled in each bin. For example, assuming that 100 items are filled with 10 items in 10 bins, the object that manages all 100 items is also of the CBinItemCollection class type, and the object that manages 10 items filled in each bin is also of the CBinItemCollection class type. to be.<\/p>\n\n\n\n<p>Refer to the appendix for the source code of each class, and the pseudo code of modControl, a module that controls the entire process of loading input data, executing algorithm, and outputting result data, is as follows.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\" data-no-auto-translation=\"\">Public Sub RunBinPacking()\n    \uc785\ub825\uc790\ub8cc\ub97c \uc77d\uc5b4\ub4e4\uc5ec CBinItemCollection type\uc758 oInputItemCol \ubcc0\uc218\uc5d0 \uc801\uc7ac\n    \uc785\ub825\uc790\ub8cc\uc758 \uc815\ub82c \uc2e4\ud589\uc744 \uc120\ud0dd\ud588\uc73c\uba74 oInputItemCol \ub0b4\ub9bc\ucc28\uc21c \uc815\ub82c\n    \uac01 \uc54c\uace0\ub9ac\uc998\uc758 \uc2e4\ud589\uacb0\uacfc\ub97c \ub2f4\uc744 \ubcc0\uc218 \uc120\uc5b8\n    \uac01 \ubcc0\uc218\uc5d0 \ucd5c\ub300 Bin \ud06c\uae30\uc640 PackingType\uc744 \uc124\uc815\ud558\uc5ec \uac1c\uccb4 \uc0dd\uc131\n    \uac01 \ubcc0\uc218\uc5d0 \uc785\ub825\uc790\ub8cc \ucc44\uc6b0\uae30\n    \uacb0\uacfc\ucd9c\ub825\n    \uac01 \ubcc0\uc218 \uba54\ubaa8\ub9ac\uc5d0\uc11c \uc0ad\uc81c\ud558\uc5ec \uc815\ub9ac\nEnd Sub<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<p>In the next article, we will look at the source code implemented using the Python Bin Packing package and the execution result.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-medium-font-size\">&lt;&lt; <strong>List of related articles<\/strong> &gt;&gt;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-1\/\">Optimization of work distribution using one-dimensional bin packing algorithm_1.Overview<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-2\/\">Optimization of work distribution using one-dimensional bin packing algorithm_2.Algorithm (1)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-3\/\">Optimization of work distribution using one-dimensional bin packing algorithm_2.Algorithm(2)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/\">Optimization of work distribution using one-dimensional bin packing algorithm_3.Implementation (1)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-5\/\">Optimization of work distribution using one-dimensional bin packing algorithm_3.Implementation (2)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-6\/\">Optimization of work distribution using one-dimensional bin packing algorithm_4.Attachment<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-7\/\">One-dimensional Bin Packing Tool Recent Changes (as of March 21, 2021)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-toc\/\">Work distribution optimization tool using one-dimensional bin packing algorithm Full Contents, Download<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>3. Bin Packing Algorithm Implementation A development environment is required to enter the list of items and constraints, implement the algorithm, and check the result. There are various development environments such as Excel VBA, Python, and R. Among them, Excel VBA does not have an open library, so most of the source code must be written by hand. Python and...<\/p>","protected":false},"author":1,"featured_media":11082,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[16,17,18],"class_list":["post-11081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1d-bin-packing-tool","tag-binpacking","tag-vba","tag-18"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)<\/title>\n<meta name=\"description\" content=\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998 \uc744 \uad6c\ud604\ud55c \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc785\ub825 \uc790\ub8cc \uad6c\uc131, \uc635\uc158 \uc124\uc815, \uc2e4\ud589, \uc2e4\ud589 \uacb0\uacfc\ub97c \ud655\uc778\ud558\uace0 Sheet, \ubaa8\ub4c8, \ud074\ub798\uc2a4\ub85c \uad6c\uc131\ub41c VBA \ucf54\ub4dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)\" \/>\n<meta property=\"og:description\" content=\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998 \uc744 \uad6c\ud604\ud55c \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc785\ub825 \uc790\ub8cc \uad6c\uc131, \uc635\uc158 \uc124\uc815, \uc2e4\ud589, \uc2e4\ud589 \uacb0\uacfc\ub97c \ud655\uc778\ud558\uace0 Sheet, \ubaa8\ub4c8, \ud074\ub798\uc2a4\ub85c \uad6c\uc131\ub41c VBA \ucf54\ub4dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/\" \/>\n<meta property=\"og:site_name\" content=\"\uc0dd\uc0b0\uc131 Skill\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-04T15:26:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-17T01:05:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png\" \/>\n\t<meta property=\"og:image:width\" content=\"598\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Zerom\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zerom\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/\"},\"author\":{\"name\":\"Zerom\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\"},\"headline\":\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)\",\"datePublished\":\"2022-09-04T15:26:50+00:00\",\"dateModified\":\"2022-11-17T01:05:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/\"},\"wordCount\":365,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\"},\"image\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-35.png\",\"keywords\":[\"BinPacking\",\"\uc5d1\uc140VBA\",\"\uc791\uc5c5\ubc30\ubd84\ucd5c\uc801\ud654\"],\"articleSection\":[\"1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/\",\"url\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/\",\"name\":\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-35.png\",\"datePublished\":\"2022-09-04T15:26:50+00:00\",\"dateModified\":\"2022-11-17T01:05:36+00:00\",\"description\":\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998 \uc744 \uad6c\ud604\ud55c \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc785\ub825 \uc790\ub8cc \uad6c\uc131, \uc635\uc158 \uc124\uc815, \uc2e4\ud589, \uc2e4\ud589 \uacb0\uacfc\ub97c \ud655\uc778\ud558\uace0 Sheet, \ubaa8\ub4c8, \ud074\ub798\uc2a4\ub85c \uad6c\uc131\ub41c VBA \ucf54\ub4dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#primaryimage\",\"url\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-35.png\",\"contentUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-35.png\",\"width\":598,\"height\":378},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#website\",\"url\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/\",\"name\":\"\uc0dd\uc0b0\uc131 Skill\",\"description\":\"Meta Thinking, Meta Working\",\"publisher\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\",\"name\":\"Zerom\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/productivity_clockgear.png\",\"url\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/productivity_clockgear.png\",\"contentUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/productivity_clockgear.png\",\"width\":512,\"height\":512,\"caption\":\"Zerom\"},\"logo\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/productivity_clockgear.png\"},\"url\":\"https:\\\/\\\/prodskill.com\\\/en\\\/author\\\/proda\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Optimization of work distribution using one-dimensional bin packing algorithm_3.Implementation (1)","description":"This article examines an Excel VBA-based tool that implements a one-dimensional bin packing algorithm. You can configure input data, set options, run the tool, and review the results. You can also examine the VBA code, which consists of sheets, modules, and classes.","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:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/","og_locale":"en_US","og_type":"article","og_title":"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)","og_description":"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998 \uc744 \uad6c\ud604\ud55c \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc785\ub825 \uc790\ub8cc \uad6c\uc131, \uc635\uc158 \uc124\uc815, \uc2e4\ud589, \uc2e4\ud589 \uacb0\uacfc\ub97c \ud655\uc778\ud558\uace0 Sheet, \ubaa8\ub4c8, \ud074\ub798\uc2a4\ub85c \uad6c\uc131\ub41c VBA \ucf54\ub4dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.","og_url":"https:\/\/prodskill.com\/en\/job-scheduling-using-1d-bin-packing-algorithm-4\/","og_site_name":"\uc0dd\uc0b0\uc131 Skill","article_published_time":"2022-09-04T15:26:50+00:00","article_modified_time":"2022-11-17T01:05:36+00:00","og_image":[{"width":598,"height":378,"url":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png","type":"image\/png"}],"author":"Zerom","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Zerom","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#article","isPartOf":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/"},"author":{"name":"Zerom","@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd"},"headline":"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)","datePublished":"2022-09-04T15:26:50+00:00","dateModified":"2022-11-17T01:05:36+00:00","mainEntityOfPage":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/"},"wordCount":365,"commentCount":0,"publisher":{"@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd"},"image":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#primaryimage"},"thumbnailUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png","keywords":["BinPacking","\uc5d1\uc140VBA","\uc791\uc5c5\ubc30\ubd84\ucd5c\uc801\ud654"],"articleSection":["1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/","url":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/","name":"Optimization of work distribution using one-dimensional bin packing algorithm_3.Implementation (1)","isPartOf":{"@id":"https:\/\/prodskill.com\/ko\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#primaryimage"},"image":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#primaryimage"},"thumbnailUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png","datePublished":"2022-09-04T15:26:50+00:00","dateModified":"2022-11-17T01:05:36+00:00","description":"This article examines an Excel VBA-based tool that implements a one-dimensional bin packing algorithm. You can configure input data, set options, run the tool, and review the results. You can also examine the VBA code, which consists of sheets, modules, and classes.","breadcrumb":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#primaryimage","url":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png","contentUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-35.png","width":598,"height":378},{"@type":"BreadcrumbList","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prodskill.com\/ko\/"},{"@type":"ListItem","position":2,"name":"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)"}]},{"@type":"WebSite","@id":"https:\/\/prodskill.com\/ko\/#website","url":"https:\/\/prodskill.com\/ko\/","name":"Productivity Skills","description":"Meta Thinking, Meta Working","publisher":{"@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prodskill.com\/ko\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd","name":"Zerom","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/productivity_clockgear.png","url":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/productivity_clockgear.png","contentUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/productivity_clockgear.png","width":512,"height":512,"caption":"Zerom"},"logo":{"@id":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/productivity_clockgear.png"},"url":"https:\/\/prodskill.com\/en\/author\/proda\/"}]}},"_links":{"self":[{"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/posts\/11081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/comments?post=11081"}],"version-history":[{"count":0,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/posts\/11081\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/media\/11082"}],"wp:attachment":[{"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/media?parent=11081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/categories?post=11081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prodskill.com\/en\/wp-json\/wp\/v2\/tags?post=11081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}