{"id":11152,"date":"2022-09-06T18:29:28","date_gmt":"2022-09-06T09:29:28","guid":{"rendered":"https:\/\/prodskill.com\/?p=11152"},"modified":"2022-11-15T12:00:11","modified_gmt":"2022-11-15T03:00:11","slug":"job-scheduling-using-1d-bin-packing-algorithm-6","status":"publish","type":"post","link":"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/","title":{"rendered":"1\u6b21\u5143Bin Packing\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6d3b\u7528\u3057\u305f\u4f5c\u696d\u914d\u5206\u306e\u6700\u9069\u5316_4\u3002"},"content":{"rendered":"\n<p>\uc774 \uae00\uc758 \uc18c\uc2a4\ucf54\ub4dc\ub294 Bin Packing \ub3c4\uad6c\uc758 \ucc98\uc74c \ubc84\uc804 \uae30\uc900\uc73c\ub85c \uc791\uc131\ub418\uc5b4 \uc788\ub2e4. \uae30\ub2a5\uc774 \uac1c\uc120\ub41c \ucd5c\uc2e0\ubc84\uc804\uc774 \uc788\uc73c\ubbc0\ub85c \ud568\uaed8 \ucc38\uc870\ud558\uae30 \ubc14\ub780\ub2e4.<\/p>\n\n\n\n<p><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-7\/\">1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c \ucd5c\uadfc \ubcc0\uacbd \uc0ac\ud56d (2021-03-21 \uae30\uc900)<\/a><\/p>\n\n\n\n<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;\ubaa9\ucc28&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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#5_%EB%B3%84%EC%B2%A8\" >5. \ubcc4\ucca8<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#51_%EC%97%91%EC%85%80_VBA_%EA%B8%B0%EB%B0%98_%EB%8F%84%EA%B5%AC_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1. \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c \uc18c\uc2a4 \ucf54\ub4dc<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#511_Run_sheet_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.1. Run sheet \uc18c\uc2a4 \ucf54\ub4dc<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#512_modFactory_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.2. modFactory \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#513_modControl_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.3. modControl \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#514_modUtil_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.4. modUtil \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<\/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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#515_CPacker_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.5. CPacker \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#516_CBin_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.6. CBin \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#517_CBinItemCollection_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.7. CBinItemCollection \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#518_CBinItem_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.8. CBinItem \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/#519_CTimer_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >5.1.9. CTimer \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"5._\ubcc4\ucca8\"><span class=\"ez-toc-section\" id=\"5_%EB%B3%84%EC%B2%A8\"><\/span>5. \ubcc4\ucca8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5.1._\uc5d1\uc140_VBA_\uae30\ubc18_\ub3c4\uad6c_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"51_%EC%97%91%EC%85%80_VBA_%EA%B8%B0%EB%B0%98_%EB%8F%84%EA%B5%AC_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1. \uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\uc5d1\uc140 VBA\ub85c \uad6c\ud604\ud55c Bin Packing\uc740 \uc678\ubd80 library \ub610\ub294 package \uc5c6\uc774 \uc21c\uc218\ud558\uac8c VBA \ucf54\ub4dc\ub85c\ub9cc \uad6c\ud604\ud574\uc11c, \uc18c\uc2a4\ucf54\ub4dc\uc758 \uc591\uc774 \uae34 \ud3b8\uc774\ub2e4. \uc54c\uace0\ub9ac\uc998\uc758 \ub300\ubd80\ubd84\uc740 CPacker \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud074\ub798\uc2a4\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf4\uae30 \ubc14\ub780\ub2e4.<\/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-51.png\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"623\" src=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png\" alt=\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654 \uc18c\uc2a4\ucf54\ub4dc \ud654\uba74\" class=\"wp-image-11156\" srcset=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png 912w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51-300x205.png 300w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51-768x525.png 768w, https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51-18x12.png 18w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/a><figcaption class=\"wp-element-caption\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654 \uc18c\uc2a4\ucf54\ub4dc \ud654\uba74<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.1._Run_sheet_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"511_Run_sheet_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.1. Run sheet \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\u201cRun BinPacking\u201d \ubc84\ud2bc\uc758 \ud074\ub9ad \uc774\ubca4\ud2b8\uc5d0 \ub300\uc751\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4.<\/p>\n\n\n\n<p>Excel\uc758 Range \uac1c\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa9\ub85d\uc758 base range\uc640 \uc635\uc158\uac12\ub4e4\uc744 RunBinPacking \ud504\ub85c\uc2dc\uc800\uc5d0 \uc804\ub2ec\ud55c\ub2e4. \uc5ec\uae30\uc5d0\uc11c Range\ub294 \uba85\uce6d\uc73c\ub85c \uc815\uc758\ub41c \uac1c\uccb4\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uc600\ub2e4. (\uc608: Range(\u201cMaxBinSize\u201d)) Range\ub97c \uba85\uce6d\uc73c\ub85c \uc815\uc758\ud558\uba74 \ucc38\uc870 \uc8fc\uc18c\uac00 \ubcc0\uacbd\ub418\ub354\ub77c\ub3c4 \uc18c\uc2a4\ucf54\ub4dc\ub97c \ubc14\uafc0 \ud544\uc694\uac00 \uc5c6\uace0, \ud2b9\ud788 \ud589 \uc0bd\uc785, \uc5f4 \uc0bd\uc785 \ub4f1\uc758 \uae30\ub2a5\uc774 \uc2e4\ud589\ub420 \ub54c \ucc38\uc870 \uc8fc\uc18c\uac00 \uc790\ub3d9\uc73c\ub85c \ubcc0\uacbd\ub418\uc5b4 \ud3b8\ub9ac\ud558\ub2e4.<\/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=\"\">Private Sub cmdRunBinPacking_Click()\n    RunBinPacking aBaseRange:=Range(\"B2\").Address, _\n                  aMaxBinSize:=Range(\"MaxBinSize\").Value, _\n                  aSizeBaseColumn:=Range(\"SizeBaseClolumn\").Value, _\n                  aIsItemSort:=Range(\"ItemSize\ub0b4\ub9bc\ucc28\uc21c\uc815\ub82c\uc5ec\ubd80\").Value\nEnd Sub<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.2._modFactory_\ubaa8\ub4c8_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"512_modFactory_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.2. modFactory \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\ud074\ub798\uc2a4\uc758 instance\ub97c \uc0dd\uc131\ud558\ub294 \uc5ed\ud560\uc744 \ub2f4\ub2f9\ud55c\ub2e4. VBA\uc758 \ud074\ub798\uc2a4\ub294 parameter\ub97c \uac00\uc9c0\ub294 \uc0dd\uc131\uc790 overriding\uc744 \ud560 \uc218 \uc5c6\ub2e4. Factory Pattern\uc73c\ub85c \uad6c\ud604\ud55c \ubaa8\ub4c8\uc744 \uc0dd\uc131\uc790 \ub300\uc2e0\uc5d0 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p>CreatePacker \ud504\ub85c\uc2dc\uc800\uc758 aPackingType\uc740 Bin Packing \uc54c\uace0\ub9ac\uc998 \ucc98\ub9ac \uc720\ud615\uc744 \ub098\ud0c0\ub0b4\ub294 \uc5f4\uac70\ud615 \ubcc0\uc218\uc774\ub2e4. \uac00\ub2a5\ud55c \uac12\uc740 ptNextFit, ptFirstFit, ptBestFit, ptWorstFit \ub124 \uac00\uc9c0\uc774\ub2e4.<\/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=\"\">Option Explicit\n\nPublic Function CreatePacker(aMaxBinSize As Long, aPackingType As PackingType) As CPacker\n    Set CreatePacker = New CPacker\n    CreatePacker.Init aMaxBinSize, aPackingType\nEnd Function\n\nPublic Function CreateBin(aMaxBinSize As Long) As CBin\n    Set CreateBin = New CBin\n    CreateBin.Init aMaxBinSize\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.3._modControl_\ubaa8\ub4c8_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"513_modControl_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.3. modControl \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>RunBinPacking \ud504\ub85c\uc2dc\uc800\uc5d0\uc11c \uc804\uccb4 \uc54c\uace0\ub9ac\uc998\uc758 \ucc98\ub9ac \uacfc\uc815\uc744 \uad00\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ub2f4\ub2f9\ud55c\ub2e4. Parameter \uac01\uac01\uc758 \uc758\ubbf8\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aBaseRange: \uc785\ub825\uc790\ub8cc\uc758 \uc2dc\uc791 \ubc94\uc704(\u201cB2\u201d \ub4f1\uc758 \ubb38\uc790\uc5f4)<\/li>\n\n\n\n<li>aMaxBinSize: \ud55c Bin\uc758 \ucd5c\ub300 \ud06c\uae30 \uc81c\uc57d (80, 10000 \ub4f1\uc758 \uc815\uc218)<\/li>\n\n\n\n<li>aSizeBaseColumn: \uc635\uc158\uc5d0\uc11c \uc120\ud0dd\ud55c Bin \ud06c\uae30 \uae30\uc900 \uceec\ub7fc\uba85(\u201cC\u201d \ub4f1\uc758 \ubb38\uc790\uc5f4)<\/li>\n\n\n\n<li>aIsItemSort: \ub0b4\ub9bc\ucc28\uc21c\uc815\ub82c\uc744 \uc2e4\ud589\ud560 \uc9c0\uc758 \uc5ec\ubd80(True\/False \uac12)<\/li>\n<\/ul>\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=\"\">Option Explicit\n\nPublic Sub RunBinPacking(aBaseRange As String, aMaxBinSize As Long, _\n                         aSizeBaseColumn As String, aIsItemSort As Boolean)\n    Application.ScreenUpdating = False\n    Application.Calculation = xlCalculationManual\n\n    Dim oBaseRange As Range, lCurRow As Long, oBinItem As CBinItem\n    Dim oInputItemCol As CBinItemCollection: Set oInputItemCol = New CBinItemCollection\n    Set oBaseRange = Range(aBaseRange)\n    Dim sSizeBaseColumn As String, lSizeColumnOffset As Long\n    sSizeBaseColumn = aSizeBaseColumn 'Range(\"SizeBaseClolumn\")\n    lSizeColumnOffset = Range(oBaseRange, sSizeBaseColumn &amp; \"2\").Columns.Count - 1\n\n    'Build up the BinItem List Collection\n    lCurRow = 0\n    For lCurRow = 0 To oBaseRange.CurrentRegion.Rows.Count\n        If Trim(oBaseRange.Offset(lCurRow, 0).Value) = \"\" Then Exit For\n        Set oBinItem = New CBinItem\n        oBinItem.m_sName = oBaseRange.Offset(lCurRow, 0).Value  'Item Name\n        oBinItem.m_lSize = oBaseRange.Offset(lCurRow, lSizeColumnOffset).Value 'Item Size \uae30\uc900 \uceec\ub7fc\uc758 \uac12(\uc608: KB, MB \ub4f1)\n        oInputItemCol.Add oBinItem, oBinItem.m_sName\n    Next lCurRow\n\n    'Item Size\ub85c \ub0b4\ub9bc\ucc28\uc21c \uc815\ub82c \ucc98\ub9ac\n    If aIsItemSort Then\n        DoLog \"\uc815\ub82c \uc804 --> \" + oInputItemCol.GetString\n        Set oInputItemCol = oInputItemCol.Sort\n        DoLog \"\uc815\ub82c \ud6c4 --> \" + oInputItemCol.GetString\n    End If\n\n    Dim lMaxBinSize As Long\n    Dim oPackerNextFit As CPacker, oPackerFirstFit As CPacker\n    Dim oPackerWorstFit As CPacker, oPackerBestFit As CPacker\n    lMaxBinSize = aMaxBinSize\n\n    'NextFit\n    Set oPackerNextFit = CreatePacker(lMaxBinSize, ptNextFit)\n    oPackerNextFit.DoPacking oInputItemCol\n    oPackerNextFit.DoOutput Worksheets(\"Next Fit\")\n    Set oPackerNextFit = Nothing\n\n    'FirstFit\n    Set oPackerFirstFit = CreatePacker(lMaxBinSize, ptFirstFit)\n    oPackerFirstFit.DoPacking oInputItemCol\n    oPackerFirstFit.DoOutput Worksheets(\"First Fit\")\n    Set oPackerFirstFit = Nothing\n\n    'WorstFit\n    Set oPackerWorstFit = CreatePacker(lMaxBinSize, ptWorstFit)\n    oPackerWorstFit.DoPacking oInputItemCol\n    oPackerWorstFit.DoOutput Worksheets(\"Worst Fit\")\n    Set oPackerWorstFit = Nothing\n\n    'BestFit\n    Set oPackerBestFit = CreatePacker(lMaxBinSize, ptBestFit)\n    oPackerBestFit.DoPacking oInputItemCol\n    oPackerBestFit.DoOutput Worksheets(\"Best Fit\")\n    Set oPackerBestFit = Nothing\n\n    Worksheets(\"Result Summary\").Activate\n    Worksheets(\"Result Summary\").Range(\"E1\") = lMaxBinSize\n    DoEvents\n\n    Application.Calculation = xlCalculationAutomatic\n    Application.ScreenUpdating = True\nEnd Sub<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.4._modUtil_\ubaa8\ub4c8_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"514_modUtil_%EB%AA%A8%EB%93%88_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.4. modUtil \ubaa8\ub4c8 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Logging, \uc18c\uc694\uc2dc\uac04\uc744 \ubb38\uc790\uc5f4 \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ub4f1\uc758 \uacf5\ud1b5\uae30\ub2a5\uc744 \ub2f4\ub2f9\ud55c\ub2e4. Logging\uc740 Windows API OutputDebugString\uc744 \uc774\uc6a9\ud55c\ub2e4.<\/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=\"\">Option Explicit\n#Const DEBUGMODE = 1\n\n#If VBA7 Then 'For 64 Bit Systems\n    Public Declare PtrSafe Sub Sleep Lib \"kernel32\" (ByVal dwMilliseconds As LongPtr)\n    Private Declare PtrSafe Sub OutputDebugString Lib \"kernel32\" Alias \"OutputDebugStringA\" (ByVal lpOutputString As String)\n#Else 'For 32 Bit Systems\n    Public Declare Sub Sleep Lib \"kernel32\" (ByVal dwMilliseconds As Long)\n    Private Declare Sub OutputDebugString Lib \"kernel32\" Alias \"OutputDebugStringA\" (ByVal lpOutputString As String)\n#End If\n\n'OutputDebugString API\ub97c \uc774\uc6a9\ud55c Debug Message \ucd9c\ub825\n'DebugView\ub4f1\uc744 \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0 View \uac00\ub2a5\ud568\nPublic Sub DoLog(aMsg As String)\n    #If DEBUGMODE >= 1 Then\n        OutputDebugString \"[Bin] \" &amp; aMsg\n    #End If\nEnd Sub\n\nFunction GetTimeString(dTime As Double) As String\n  Dim H As Integer, M As Integer, S As Integer, MS As Integer, dMS As Double, sMS As String\n\n  H = Int(dTime \/ 3600)\n  M = Int(dTime \/ 60) Mod 60\n  S = Int(dTime Mod 60)\n  dMS = (dTime - Int(dTime))\n  'MS = dMS * 10 ^ (Len(CStr(dMS)) - 2)\n  sMS = Mid(CStr(dMS), 3, Len(dMS))\n\nGetTimeString = Format(H, \"00\") &amp; \":\" &amp; Format(M, \"00\") &amp; \":\" &amp; Format(S, \"00\") &amp; \".\" &amp; sMS\n\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.5._CPacker_\ud074\ub798\uc2a4_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"515_CPacker_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.5. CPacker \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\uc785\ub825\uc790\ub8cc\ub97c \uae30\uc874 Bin \ubaa9\ub85d \uc911 \uc801\ud569\ud55c \uacf3\uc5d0 \ucc44\uc6b0\uac70\ub098 \uc0c8\ub85c\uc6b4 Bin\uc744 \uc0dd\uc131\ud558\uc5ec \ucc44\uc6b0\ub294 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \uad6c\ud604\ud55c\ub2e4. \uc8fc\uc694 \ubcc0\uc218, \ud504\ub85c\uc2dc\uc800, \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bin&nbsp;\uac1c\uccb4\uc758&nbsp;\ubaa9\ub85d\uc744&nbsp;m_oBinCol&nbsp;collection&nbsp;\ubcc0\uc218\ub85c&nbsp;\uad00\ub9ac\ud558\uace0,&nbsp;\uac01&nbsp;Bin&nbsp;\uac1c\uccb4\uc758&nbsp;\uc794\uc5ec\uacf5\uac04&nbsp;\ud569\uacc4\ub97c&nbsp;lRemainSizeSum&nbsp;\ubcc0\uc218\ub85c&nbsp;\uad00\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li>Init \ud504\ub85c\uc2dc\uc800: Bin\uc758 \ucd5c\ub300 \ud06c\uae30\uc640 \ucc44\uc6b0\ub294 \uc54c\uace0\ub9ac\uc998\uc758 \uc720\ud615(Next Fit, First Fit, Best Fit, Worst Fit)\uc744 \uc124\uc815\ud55c\ub2e4.<br>Add \ud504\ub85c\uc2dc\uc800: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 Bin \uac1c\uccb4\ub97c m_oBinCol collection \ubcc0\uc218\uc5d0 \ucd94\uac00\ud558\uace0 \uc774\ub984\uc744 \u201cBin_\uc21c\ubc885\uc790\ub9ac\u201d\ub85c \uc0dd\uc131\ud55c\ub2e4.<\/li>\n\n\n\n<li>DoPacking \ud504\ub85c\uc2dc\uc800: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 Item\ubaa9\ub85d\uc744 Bin \uac1c\uccb4 \ubaa9\ub85d\uc5d0 \ucc44\uc6b4\ub2e4.<\/li>\n\n\n\n<li>GetNewBin \ud568\uc218: modFactory \ubaa8\ub4c8\uc758 CrreateBin \ud568\uc218\ub97c \uc774\uc6a9\ud558\uc5ec \uc0c8\ub85c\uc6b4 Bin \uac1c\uccb4\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/li>\n\n\n\n<li>GetBinNextFit \ud568\uc218: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 BinItem\uc744 Next Fit \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \ucc44\uc6b8 \uc801\ud569\ud55c Bin\uc744 \uc120\ud0dd\ud558\uac70\ub098 \uc0c8\ub85c \uc0dd\uc131\ud558\uc5ec \ubc18\ud658\ud55c\ub2e4.<\/li>\n\n\n\n<li>GetBinFirstFit \ud568\uc218: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 BinItem\uc744 First Fit \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \ucc44\uc6b8 \uc801\ud569\ud55c Bin\uc744 \uc120\ud0dd\ud558\uac70\ub098 \uc0c8\ub85c \uc0dd\uc131\ud558\uc5ec \ubc18\ud658\ud55c\ub2e4.<\/li>\n\n\n\n<li>GetBinWorstFit \ud568\uc218: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 BinItem\uc744 Worst Fit \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \ucc44\uc6b8 \uc801\ud569\ud55c Bin\uc744 \uc120\ud0dd\ud558\uac70\ub098 \uc0c8\ub85c \uc0dd\uc131\ud558\uc5ec \ubc18\ud658\ud55c\ub2e4.<\/li>\n\n\n\n<li>GetBinBestFit \ud568\uc218: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 BinItem\uc744 Best Fit \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \ucc44\uc6b8 \uc801\ud569\ud55c Bin\uc744 \uc120\ud0dd\ud558\uac70\ub098 \uc0c8\ub85c \uc0dd\uc131\ud558\uc5ec \ubc18\ud658\ud55c\ub2e4.<\/li>\n\n\n\n<li>PackToBin \ud504\ub85c\uc2dc\uc800: \uc124\uc815\ud55c \uc54c\uace0\ub9ac\uc998\uc758 \uc720\ud615\uc5d0 \ub530\ub77c \uc801\ud569\ud55c \ud568\uc218\ub97c \ud638\ucd9c\ud558\uc5ec BinItem\uc744 \ucc44\uc6b4\ub2e4.<\/li>\n\n\n\n<li>DoOutput \ud504\ub85c\uc2dc\uc800: Bin Packing \ucc98\ub9ac \uacb0\uacfc\ub97c \uc9c0\uc815\ud55c sheet\uc5d0 \ucd9c\ub825\ud55c\ub2e4.<\/li>\n<\/ul>\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=\"\">Option Explicit\n\nPublic m_oBinCol As Collection\nPublic m_dElapsedTime As Double\nPublic Enum PackingType\n    ptNextFit\n    ptFirstFit\n    ptBestFit\n    ptWorstFit\nEnd Enum\n\nPrivate m_lMaxBinSize As Long\nPrivate m_lLastBinIndex As Long\nPrivate m_PackingType As PackingType\nPrivate m_lCompareCount As Long '\ube44\uad50\uc5f0\uc0b0\uc758 \ud69f\uc218 \ub204\uc801\nPrivate m_lRemainSizeSum As Long '\uc794\uc5ec\uacf5\uac04 \ud569\uacc4\nPrivate m_oTimer As CTimer\n\nPrivate Sub Class_Initialize()\n    Set m_oBinCol = New Collection\n    Set m_oTimer = New CTimer\n    m_lLastBinIndex = 1\n    m_lCompareCount = 0\nEnd Sub\n\nPrivate Sub Class_Terminate()\n    Set m_oBinCol = Nothing\n    Set m_oTimer = Nothing\nEnd Sub\n\nPublic Sub Init(aMaxBinSize As Long, aPackingType As PackingType)\n    m_lMaxBinSize = aMaxBinSize\n    m_PackingType = aPackingType\nEnd Sub\n\n'\uc785\ub825\uc790\ub8cc \ubaa9\ub85d\uc744 \uc785\ub825\uc73c\ub85c \uc804\uccb4 \ucc44\uc6b0\uae30 \uc2e4\ud589\nPublic Sub DoPacking(aInputItemCol As CBinItemCollection)\n    Dim oBinItem As CBinItem\n    m_oTimer.StartCounter\n    For Each oBinItem In aInputItemCol.m_oBinItemCol\n        Me.PackToBin oBinItem\n    Next\n    Me.m_dElapsedTime = m_oTimer.TimeElapsed\nEnd Sub\n\n'\ud55c Item \ucc44\uc6b0\uae30\nPublic Sub PackToBin(oBinItem As CBinItem)\n    Dim oBin As CBin\n    'Select Case ePackingType\n    Select Case m_PackingType\n        Case ptNextFit\n            Set oBin = GetBinNextFit(oBinItem)\n        Case ptFirstFit\n            Set oBin = GetBinFirstFit(oBinItem)\n        Case ptWorstFit\n            Set oBin = GetBinWorstFit(oBinItem)\n        Case ptBestFit\n            Set oBin = GetBinBestFit(oBinItem)\n    End Select\n    oBin.AddBinItem oBinItem\nEnd Sub\n\n\nPublic Sub Add(oBin As CBin)\n    m_oBinCol.Add oBin\n    oBin.m_lIndex = m_oBinCol.Count\n    'oBin.m_sName = \"Bin\" + CStr(m_oBinCol.Count)\n    oBin.m_sName = \"Bin_\" + Format(CStr(m_oBinCol.Count), \"00000\")\nEnd Sub\n\nPublic Function GetNewBin() As CBin\n    Dim oBin As CBin\n    'Set oBin = New CBin\n    Set oBin = CreateBin(m_lMaxBinSize)\n    Me.Add oBin\n    Set GetNewBin = oBin\nEnd Function\n\n'NextFit\nPublic Function GetBinNextFit(oBinItem As CBinItem) As CBin\n    Dim oBin As CBin, oResult As CBin\n    If m_oBinCol.Count = 0 Then\n        '\uccab\ubc88\uc9f8 \uc2e4\ud589\uc778 \uacbd\uc6b0\n        Set oResult = GetNewBin\n        m_lLastBinIndex = 1\n    Else\n        Set oBin = m_oBinCol(m_lLastBinIndex)\n        m_lCompareCount = m_lCompareCount + 1\n        If oBin.IsAbleToAdd(oBinItem) Then\n            Set oResult = oBin\n        Else\n            Set oResult = GetNewBin\n            m_lLastBinIndex = oResult.m_lIndex\n        End If\n    End If\n    Set GetBinNextFit = oResult\nEnd Function\n\n'FirstFit\nPublic Function GetBinFirstFit(oBinItem As CBinItem) As CBin\n    Dim oBin As CBin, bFound As Boolean, lCurBinIndex As Long, oResult As CBin\n    bFound = False\n    '\ud56d\uc0c1 \ucc98\uc74c Bin\ubd80\ud130 \ud655\uc778\ud558\uc5ec \ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin return\n    For lCurBinIndex = 1 To m_oBinCol.Count\n    'For Each oBin In m_oBinCol\n        Set oBin = m_oBinCol(lCurBinIndex)\n        m_lCompareCount = m_lCompareCount + 1\n        If oBin.IsAbleToAdd(oBinItem) Then\n            bFound = True\n            Set oResult = oBin\n            Exit For\n        End If\n    Next\n    If Not bFound Then\n        Set oResult = GetNewBin\n    End If\n    Set GetBinFirstFit = oResult\nEnd Function\n\n'WorstFit\nPublic Function GetBinWorstFit(oBinItem As CBinItem) As CBin\n    Dim oBin As CBin, bFound As Boolean, lCurBinIndex As Long, oResult As CBin\n    Dim lMaxRemainSize As Long, lMaxRemainSizeBinIndex As Long\n    lMaxRemainSize = 0: lMaxRemainSizeBinIndex = 0\n    '\ubaa8\ub4e0 Bin\uc911\uc5d0\uc11c \ub0a8\uc740 Size\uac00 \uac00\uc7a5 \ud06c\uace0 oBinItem\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin\uc744 return\n    '\ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin\uc774 \uc5c6\uc73c\uba74 \uc0c8 Bin\uc744 \uc0dd\uc131\n    For lCurBinIndex = 1 To m_oBinCol.Count\n        '\ub0a8\uc740 Size\uac00 \uac00\uc7a5 \ud070 Bin \ucc3e\uae30\n        Set oBin = m_oBinCol(lCurBinIndex)\n        m_lCompareCount = m_lCompareCount + 1\n        If lMaxRemainSize &lt; oBin.m_lRemainSize Then\n            lMaxRemainSize = oBin.m_lRemainSize\n            lMaxRemainSizeBinIndex = lCurBinIndex\n        End If\n    Next\n\n    bFound = False\n    m_lCompareCount = m_lCompareCount + 1\n    If lMaxRemainSizeBinIndex > 0 Then\n        Set oBin = m_oBinCol(lMaxRemainSizeBinIndex)\n        If oBinItem.m_lSize &lt;= oBin.m_lRemainSize Then\n            bFound = True\n            Set oResult = oBin\n        End If\n    End If\n    If Not bFound Then\n        Set oResult = GetNewBin\n    End If\n    Set GetBinWorstFit = oResult\nEnd Function\n\n'BestFit\nPublic Function GetBinBestFit(oBinItem As CBinItem) As CBin\n    Dim oBin As CBin, bFound As Boolean, lCurBinIndex As Long, oResult As CBin\n    Dim lMinRemainSize As Long, lMinRemainSizeBinIndex As Long\n    lMinRemainSize = m_lMaxBinSize\n    lMinRemainSizeBinIndex = 0\n    '\ubaa8\ub4e0 Bin\uc911\uc5d0\uc11c \ub0a8\uc740 Size\uac00 \uac00\uc7a5 \uc801\uc73c\uba74\uc11c oBinItem\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin\uc744 return\n    '\ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin\uc774 \uc5c6\uc73c\uba74 \uc0c8 Bin\uc744 \uc0dd\uc131\n    For lCurBinIndex = 1 To m_oBinCol.Count\n        'oBinItem\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub294 Bin\uc911 \ub0a8\uc740 Size\uac00 \uac00\uc7a5 \uc791\uc740 Bin \ucc3e\uae30\n        Set oBin = m_oBinCol(lCurBinIndex)\n        m_lCompareCount = m_lCompareCount + 1\n        If oBin.m_lRemainSize >= oBinItem.m_lSize And _\n           lMinRemainSize > oBin.m_lRemainSize Then\n            lMinRemainSize = oBin.m_lRemainSize\n            lMinRemainSizeBinIndex = lCurBinIndex\n        End If\n    Next\n\n    bFound = False\n    m_lCompareCount = m_lCompareCount + 1\n    If lMinRemainSizeBinIndex > 0 Then\n        Set oBin = m_oBinCol(lMinRemainSizeBinIndex)\n        bFound = True\n        Set oResult = oBin\n    End If\n    If Not bFound Then\n        Set oResult = GetNewBin\n    End If\n    Set GetBinBestFit = oResult\nEnd Function\n\n'\uacb0\uacfc \ucd9c\ub825\nPublic Sub DoOutput(oResultSht As Worksheet)\n    oResultSht.Activate\n    Dim oResultBaseRange As Range, oBin As CBin, lCurRow As Long, oBinItem As CBinItem\n    Set oResultBaseRange = oResultSht.Range(\"A2\")\n    'oResultBaseRange.End(xlDown).Resize(0, 2).Clear\n    oResultBaseRange.Select\n    Range(Selection, Selection.End(xlDown)).Select\n    Selection.Resize(, 3).Select\n    'Range(Selection, Selection.End(xlToRight)).Select\n    Selection.ClearContents\n    oResultBaseRange.Select\n    lCurRow = 0\n    oResultSht.Range(\"I1\") = m_dElapsedTime '\uc18c\uc694\uc2dc\uac04\n    oResultSht.Range(\"J1\").NumberFormatLocal = \"@\"\n    oResultSht.Range(\"J1\") = GetTimeString(m_dElapsedTime)\n    oResultSht.Range(\"I2\") = m_lCompareCount '\ube44\uad50\ud69f\uc218\n    oResultSht.Range(\"I3\") = GetRemainSizeSum '\uc794\uc5ec\uacf5\uac04\ud569\uacc4\n    oResultSht.Range(\"I4\") = Me.m_oBinCol.Count * m_lMaxBinSize  '\uc804\uccb4\uacf5\uac04\ud569\uacc4\n    For Each oBin In Me.m_oBinCol\n        For Each oBinItem In oBin.m_oBinItemCol.m_oBinItemCol\n            oResultBaseRange.Offset(lCurRow, 0) = oBin.m_sName\n            oResultBaseRange.Offset(lCurRow, 1) = oBinItem.m_sName\n            oResultBaseRange.Offset(lCurRow, 2) = oBinItem.m_lSize\n            lCurRow = lCurRow + 1\n        Next\n    Next\n    Dim pt As PivotTable, sDataRange As String\n    sDataRange = oResultSht.Name + \"!R1C1:R\" + CStr(oResultBaseRange.CurrentRegion.Rows.Count) + _\n                 \"C\" + CStr(oResultBaseRange.CurrentRegion.Columns.Count)\n    For Each pt In oResultSht.PivotTables\n        pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=sDataRange, Version:=xlPivotTableVersion14)\n        pt.RefreshTable\n    Next\n    oResultBaseRange.Select\nEnd Sub\n\n'\uc794\uc5ec\uacf5\uac04 \ud569\uacc4 \uacc4\uc0b0\ud6c4 return\nPublic Function GetRemainSizeSum() As Long\n    m_lRemainSizeSum = 0\n    Dim oBin As CBin\n    For Each oBin In Me.m_oBinCol\n        m_lRemainSizeSum = m_lRemainSizeSum + oBin.m_lRemainSize\n    Next\n    GetRemainSizeSum = m_lRemainSizeSum\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.6._CBin_\ud074\ub798\uc2a4_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"516_CBin_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.6. CBin \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>\uac1c\ubcc4 Bin\uc744 \uad6c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bin\uc5d0 \ucc44\uc6cc\uc9c4 Item\uc744 m_oBinItemCol collection \ubcc0\uc218\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li>Init \ud504\ub85c\uc2dc\uc800: Bin\uc758 \ucd5c\ub300 \ud06c\uae30\ub97c \uc124\uc815\ud55c\ub2e4.<\/li>\n\n\n\n<li>AddBinItem \ud504\ub85c\uc2dc\uc800: item\uc744 \ud604\uc7ac Bin\uc5d0 \ucc44\uc6b0\ub294 \uc758\ubbf8\ub85c m_oBinItemCol collection\uc5d0 \ucd94\uac00\ud55c\ub2e4. \uc774\ub54c, \ud574\ub2f9 Item\uc758 \ud06c\uae30\ub97c \ud604\uc7ac Bin\uc758 \ud06c\uae30\uc5d0 \ub354\ud558\uc5ec m_lCurSize \ubcc0\uc218\ub85c \uad00\ub9ac\ud558\uace0, Bin\uc758 \ucd5c\ub300 \ud06c\uae30\uc5d0\uc11c \ud604\uc7ac Bin\uc758 \ud06c\uae30\ub97c \ube7c\uc11c \ub0a8\ub294 \ud06c\uae30\ub294 m_lRemainSize \ubcc0\uc218\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li>IsAbleToAdd: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 BinItem\uc744 \ud604\uc7ac Bin\uc5d0 \ucc44\uc6b8 \uc218 \uc788\ub294\uc9c0\ub97c \ud310\ubcc4\ud55c\ub2e4. \ud604\uc7ac Bin\uc758 \ud06c\uae30\uc5d0 Item\uc758 \ud06c\uae30\ub97c \ub354\ud55c \uacb0\uacfc\uac00 \ucd5c\ub300 \ud06c\uae30 \uc774\ud558\uc774\uba74 True\uc774\ub2e4.<\/li>\n<\/ul>\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=\"\">Option Explicit\n\nPublic m_oBinItemCol As CBinItemCollection\nPublic m_lIndex As Long\nPublic m_sName As String\nPublic m_lCurSize As Long\nPublic m_lMaxSize As Long\nPublic m_lRemainSize As Long\n\nPrivate Sub Class_Initialize()\n    Set m_oBinItemCol = New CBinItemCollection\n    m_lCurSize = 0\nEnd Sub\n\nPrivate Sub Class_Terminate()\n    Set m_oBinItemCol = Nothing\nEnd Sub\n\nPublic Sub Init(lMaxBinSize As Long)\n    m_lMaxSize = lMaxBinSize\nEnd Sub\n\nPublic Sub AddBinItem(oBinItem As CBinItem)\n    m_oBinItemCol.Add oBinItem, oBinItem.m_sName\n    m_lCurSize = m_lCurSize + oBinItem.m_lSize\n    m_lRemainSize = m_lMaxSize - m_lCurSize\n    If m_lRemainSize &lt; 0 Then m_lRemainSize = 0\nEnd Sub\n\nPublic Function IsAbleToAdd(oBinItem As CBinItem) As Boolean\n    IsAbleToAdd = m_lCurSize + oBinItem.m_lSize &lt;= m_lMaxSize\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.7._CBinItemCollection_\ud074\ub798\uc2a4_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"517_CBinItemCollection_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.7. CBinItemCollection \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>BinItem\uc758 \ubaa9\ub85d\uc744 \uad6c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BinItem\uc758 \ubaa9\ub85d\uc744 m_oBinItemCol collection \ubcc0\uc218\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li>Add \ud504\ub85c\uc2dc\uc800: parameter\ub85c \uc804\ub2ec\ubc1b\uc740 Item\uc744 m_oBinItemCol collection\uc5d0 \ucd94\uac00\ud55c\ub2e4.<\/li>\n\n\n\n<li>Sort \ud568\uc218: m_oBinItemCol collection\uc744 \uac01 Item\uc758 \ud06c\uae30 \ub0b4\ub9bc\ucc28\uc21c\uc73c\ub85c \uc815\ub82c\ud55c \uc0c8\ub85c\uc6b4 collection\uc744 \ubc18\ud658\ud55c\ub2e4.<\/li>\n\n\n\n<li>GetString \ud568\uc218: \uc804\uccb4 Item\uc744 [\uba85\uce6d: \ud06c\uae30]\uc758 \ud615\uc2dd\uc73c\ub85c \ubb38\uc790\uc5f4\ub85c \ub9cc\ub4e4\uc5b4 \ubc18\ud658\ud55c\ub2e4.<\/li>\n<\/ul>\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=\"\">Option Explicit\n\nPublic m_oBinItemCol As Collection\n\nPrivate Sub Class_Initialize()\n    Set m_oBinItemCol = New Collection\nEnd Sub\n\nPrivate Sub Class_Terminate()\n    Set m_oBinItemCol = Nothing\nEnd Sub\n\nPublic Sub Add(aBinItem As CBinItem, Optional aKey As String = \"\")\n    m_oBinItemCol.Add aBinItem, IIf(aKey = \"\", aBinItem.m_sName, aKey)\nEnd Sub\n\n'BinItem\uc758 Size\ub85c \ub0b4\ub9bc\ucc28\uc21c \uc815\ub82c\nPublic Function Sort() As CBinItemCollection\n    Dim i As Long, j As Long, k As Long, bln As Boolean\n    Dim lngCount As Long, arr() As Long, oSortedBinItemCol As CBinItemCollection\n    lngCount = m_oBinItemCol.Count\n    If lngCount > 0 Then\n        ReDim arr(0 To lngCount - 1)\n        For i = 0 To lngCount - 1: arr(i) = i + 1: Next\n\n        For i = 1 To lngCount - 1\n            k = arr(i)\n            j = i - 1\n            bln = False\n            Do\n                If m_oBinItemCol(arr(j)).CompareTo(m_oBinItemCol(k)) > 0 Then\n                    arr(j + 1) = arr(j)\n                    j = j - 1\n                    If j &lt; 0 Then bln = True\n                Else\n                    bln = True\n                End If\n            Loop Until bln\n            arr(j + 1) = k\n        Next\n    End If\n\n    Set oSortedBinItemCol = New CBinItemCollection\n    For i = lngCount - 1 To 0 Step -1: oSortedBinItemCol.Add m_oBinItemCol(arr(i)): Next\n\n    Set Sort = oSortedBinItemCol\nEnd Function\n\n'BinItem \ubaa9\ub85d\uc744 \ubb38\uc790\uc5f4\ub85c \ubc18\ud658\nPublic Function GetString() As String\n    Dim sResult As String, oBinItem As CBinItem\n    For Each oBinItem In m_oBinItemCol\n        sResult = sResult + \"[\" + oBinItem.m_sName + \":\" + CStr(oBinItem.m_lSize) + \"], \"\n    Next\n    If Len(sResult) > 2 Then sResult = Left(sResult, Len(sResult) - 2)\n    GetString = sResult\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.8._CBinItem_\ud074\ub798\uc2a4_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"518_CBinItem_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.8. CBinItem \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Bin\uc5d0 \ub2f4\uae38 Item\uc744 \uad6c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Item\uc758 \uc774\ub984\uc740 m_sName, \ud06c\uae30\ub294 m_lSize\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/li>\n\n\n\n<li>CompareTo \ud568\uc218: \ud604\uc7ac Item\uacfc \ube44\uad50\ub300\uc0c1 Item\uc758 \ud06c\uae30\ub97c \ube44\uad50\ud55c \uacb0\uacfc\ub97c \ubc18\ud658\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Option Explicit\n\nPublic m_sName  As String\nPublic m_lSize  As Long\n\n'BinItem\uc758 size \ube44\uad50 \ud568\uc218\n'   - parameter: \ube44\uad50\ub300\uc0c1 BinItem(B)\n'   - \ube44\uad50\uae30\uc900: \uc790\uae30\uc790\uc2e0 BinItem(A)\n'Return \uac12(Long type)\n'  0: \ub3d9\uc77c\ud568 (A = B)\n'  1: \ube44\uad50\ub300\uc0c1 BinItem\uc774 \ub354 \ud07c(A &lt; B)\n' -1: \uc790\uae30\uc790\uc2e0 BinItem\uc774 \ub354 \ud07c(A > B)\nPublic Function CompareTo(oBinItem As CBinItem) As Long\n    Dim i As Long\n \n    If Me.m_lSize = oBinItem.m_lSize Then\n        i = 0\n    ElseIf Me.m_lSize &lt; oBinItem.m_lSize Then\n        i = -1\n    Else\n        i = 1\n    End If\n \n    CompareTo = i\nEnd Function<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5.1.9._CTimer_\ud074\ub798\uc2a4_\uc18c\uc2a4_\ucf54\ub4dc\"><span class=\"ez-toc-section\" id=\"519_CTimer_%ED%81%B4%EB%9E%98%EC%8A%A4_%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>5.1.9. CTimer \ud074\ub798\uc2a4 \uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>&nbsp;\uac01 \uc54c\uace0\ub9ac\uc998\uc758 \uc2e4\ud589\uc2dc\uac04\uc744 \uc815\ud655\ud558\uac8c \uce21\uc815\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p>\ucd9c\ucc98:&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/198409\/how-do-you-test-running-time-of-vba-code\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stackoverflow.com\/questions\/198409\/how-do-you-test-running-time-of-vba-code<\/a><\/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=\"\">Option Explicit\n\nPrivate Type LARGE_INTEGER\n    lowpart As Long\n    highpart As Long\nEnd Type\n\nPrivate Declare Function QueryPerformanceCounter Lib \"kernel32\" (lpPerformanceCount As LARGE_INTEGER) As Long\nPrivate Declare Function QueryPerformanceFrequency Lib \"kernel32\" (lpFrequency As LARGE_INTEGER) As Long\n\nPrivate m_CounterStart As LARGE_INTEGER\nPrivate m_CounterEnd As LARGE_INTEGER\nPrivate m_crFrequency As Double\n\nPrivate Const TWO_32 = 4294967296# ' = 256# * 256# * 256# * 256#\n\nPrivate Function LI2Double(LI As LARGE_INTEGER) As Double\n    Dim Low As Double\n    Low = LI.lowpart\n    If Low &lt; 0 Then\n        Low = Low + TWO_32\n    End If\n    LI2Double = LI.highpart * TWO_32 + Low\nEnd Function\n\nPrivate Sub Class_Initialize()\n    Dim PerfFrequency As LARGE_INTEGER\n    QueryPerformanceFrequency PerfFrequency\n    m_crFrequency = LI2Double(PerfFrequency)\nEnd Sub\n\nPublic Sub StartCounter()\n    QueryPerformanceCounter m_CounterStart\nEnd Sub\n\nProperty Get TimeElapsed() As Double\n    Dim crStart As Double\n    Dim crStop As Double\n    QueryPerformanceCounter m_CounterEnd\n    crStart = LI2Double(m_CounterStart)\n    crStop = LI2Double(m_CounterEnd)\n    'TimeElapsed = 1000# * (crStop - crStart) \/ m_crFrequency\n    TimeElapsed = Round((crStop - crStart) \/ m_crFrequency, 4)\nEnd Property<\/pre>\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>\uad00\ub828 \uae00 \ubaa9\ub85d<\/strong> &gt;&gt;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-1\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_1.\uac1c\uc694<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-2\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_2.\uc54c\uace0\ub9ac\uc998(1)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-3\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_2.\uc54c\uace0\ub9ac\uc998(2)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-4\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(1)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-5\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_3.\uad6c\ud604(2)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_4.\ubcc4\ucca8<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-7\/\">1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c \ucd5c\uadfc \ubcc0\uacbd \uc0ac\ud56d (2021-03-21 \uae30\uc900)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-toc\/\">1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654 \ub3c4\uad6c \uc124\uba85\uae00 \uc804\uccb4 \ubaa9\ucc28, \ub2e4\uc6b4\ub85c\ub4dc<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3001Bin Packing\u30c4\u30fc\u30eb\u306e\u6700\u521d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30d9\u30fc\u30b9\u3067\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u6a5f\u80fd\u304c\u6539\u5584\u3055\u308c\u305f\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308b\u306e\u3067\u3001\u4e00\u7dd2\u306b\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 1\u6b21\u5143Bin Packing\u30c4\u30fc\u30eb\u6700\u8fd1\u306e\u5909\u66f4\uff082021-03-21\u306b\u57fa\u3065\u304f\uff095.\u5225\u7d195.1\u3002 Excel VBA\u30d9\u30fc\u30b9\u306e\u30c4\u30fc\u30eb\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9Excel VBA\u3068\u3057\u3066\u5b9f\u88c5\u3055\u308c\u305fBin ...<\/p>","protected":false},"author":1,"featured_media":11156,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[15,16,17,18],"class_list":["post-11152","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1d-bin-packing-tool","tag-python","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_4.\ubcc4\ucca8<\/title>\n<meta name=\"description\" content=\"\uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc758 \uac01 Sheet, Module, Class\uc758 \uc8fc\uc694 \uad6c\ud604 \ub0b4\uc6a9 \ub0b4\uc6a9\uacfc \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc54c\uace0\ub9ac\uc998\uc758 \ub300\ubd80\ubd84\uc740 CPacker \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud074\ub798\uc2a4\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf4\uae30 \ubc14\ub780\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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\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_4.\ubcc4\ucca8\" \/>\n<meta property=\"og:description\" content=\"\uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc758 \uac01 Sheet, Module, Class\uc758 \uc8fc\uc694 \uad6c\ud604 \ub0b4\uc6a9 \ub0b4\uc6a9\uacfc \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc54c\uace0\ub9ac\uc998\uc758 \ub300\ubd80\ubd84\uc740 CPacker \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud074\ub798\uc2a4\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf4\uae30 \ubc14\ub780\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/\" \/>\n<meta property=\"og:site_name\" content=\"\uc0dd\uc0b0\uc131 Skill\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-06T09:29:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-15T03:00:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png\" \/>\n\t<meta property=\"og:image:width\" content=\"912\" \/>\n\t<meta property=\"og:image:height\" content=\"623\" \/>\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=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zerom\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u5206\" \/>\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-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/\"},\"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_4.\ubcc4\ucca8\",\"datePublished\":\"2022-09-06T09:29:28+00:00\",\"dateModified\":\"2022-11-15T03:00:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/\"},\"wordCount\":236,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\"},\"image\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-51.png\",\"keywords\":[\"python\",\"BinPacking\",\"\uc5d1\uc140VBA\",\"\uc791\uc5c5\ubc30\ubd84\ucd5c\uc801\ud654\"],\"articleSection\":[\"1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/\",\"url\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/\",\"name\":\"1\ucc28\uc6d0 Bin Packing \uc54c\uace0\ub9ac\uc998\uc744 \ud65c\uc6a9\ud55c \uc791\uc5c5 \ubc30\ubd84 \ucd5c\uc801\ud654_4.\ubcc4\ucca8\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-51.png\",\"datePublished\":\"2022-09-06T09:29:28+00:00\",\"dateModified\":\"2022-11-15T03:00:11+00:00\",\"description\":\"\uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc758 \uac01 Sheet, Module, Class\uc758 \uc8fc\uc694 \uad6c\ud604 \ub0b4\uc6a9 \ub0b4\uc6a9\uacfc \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc54c\uace0\ub9ac\uc998\uc758 \ub300\ubd80\ubd84\uc740 CPacker \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud074\ub798\uc2a4\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf4\uae30 \ubc14\ub780\ub2e4.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#primaryimage\",\"url\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-51.png\",\"contentUrl\":\"https:\\\/\\\/prodskill.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-51.png\",\"width\":912,\"height\":623},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/prodskill.com\\\/job-scheduling-using-1d-bin-packing-algorithm-6\\\/#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_4.\ubcc4\ucca8\"}]},{\"@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\":\"ja\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/prodskill.com\\\/ko\\\/#\\\/schema\\\/person\\\/bbad0870c78008c82edbe0960fe768bd\",\"name\":\"Zerom\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@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\\\/ja\\\/author\\\/proda\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"1\u6b21\u5143Bin Packing\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6d3b\u7528\u3057\u305f\u4f5c\u696d\u914d\u5206\u306e\u6700\u9069\u5316_4\u3002","description":"Excel VBA\u30d9\u30fc\u30b9\u306e\u30c4\u30fc\u30eb\u306e\u5404Sheet\u3001Module\u3001Class\u306e\u4e3b\u306a\u5b9f\u88c5\u5185\u5bb9\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u591a\u304f\u306fCPacker\u30af\u30e9\u30b9\u306b\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u6700\u521d\u306b\u3053\u306e\u30af\u30e9\u30b9\u3092\u898b\u3066\u304f\u3060\u3055\u3044\u3002","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\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/","og_locale":"ja_JP","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_4.\ubcc4\ucca8","og_description":"\uc5d1\uc140 VBA \uae30\ubc18 \ub3c4\uad6c\uc758 \uac01 Sheet, Module, Class\uc758 \uc8fc\uc694 \uad6c\ud604 \ub0b4\uc6a9 \ub0b4\uc6a9\uacfc \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf8\ub2e4. \uc54c\uace0\ub9ac\uc998\uc758 \ub300\ubd80\ubd84\uc740 CPacker \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud074\ub798\uc2a4\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf4\uae30 \ubc14\ub780\ub2e4.","og_url":"https:\/\/prodskill.com\/ja\/job-scheduling-using-1d-bin-packing-algorithm-6\/","og_site_name":"\uc0dd\uc0b0\uc131 Skill","article_published_time":"2022-09-06T09:29:28+00:00","article_modified_time":"2022-11-15T03:00:11+00:00","og_image":[{"width":912,"height":623,"url":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png","type":"image\/png"}],"author":"Zerom","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"Zerom","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"14\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#article","isPartOf":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/"},"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_4.\ubcc4\ucca8","datePublished":"2022-09-06T09:29:28+00:00","dateModified":"2022-11-15T03:00:11+00:00","mainEntityOfPage":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/"},"wordCount":236,"commentCount":0,"publisher":{"@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd"},"image":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#primaryimage"},"thumbnailUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png","keywords":["python","BinPacking","\uc5d1\uc140VBA","\uc791\uc5c5\ubc30\ubd84\ucd5c\uc801\ud654"],"articleSection":["1\ucc28\uc6d0 Bin Packing \ub3c4\uad6c"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/","url":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/","name":"1\u6b21\u5143Bin Packing\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u6d3b\u7528\u3057\u305f\u4f5c\u696d\u914d\u5206\u306e\u6700\u9069\u5316_4\u3002","isPartOf":{"@id":"https:\/\/prodskill.com\/ko\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#primaryimage"},"image":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#primaryimage"},"thumbnailUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png","datePublished":"2022-09-06T09:29:28+00:00","dateModified":"2022-11-15T03:00:11+00:00","description":"Excel VBA\u30d9\u30fc\u30b9\u306e\u30c4\u30fc\u30eb\u306e\u5404Sheet\u3001Module\u3001Class\u306e\u4e3b\u306a\u5b9f\u88c5\u5185\u5bb9\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u591a\u304f\u306fCPacker\u30af\u30e9\u30b9\u306b\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u6700\u521d\u306b\u3053\u306e\u30af\u30e9\u30b9\u3092\u898b\u3066\u304f\u3060\u3055\u3044\u3002","breadcrumb":{"@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#primaryimage","url":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png","contentUrl":"https:\/\/prodskill.com\/wp-content\/uploads\/2022\/09\/image-51.png","width":912,"height":623},{"@type":"BreadcrumbList","@id":"https:\/\/prodskill.com\/job-scheduling-using-1d-bin-packing-algorithm-6\/#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_4.\ubcc4\ucca8"}]},{"@type":"WebSite","@id":"https:\/\/prodskill.com\/ko\/#website","url":"https:\/\/prodskill.com\/ko\/","name":"\u751f\u7523\u6027\u30b9\u30ad\u30eb","description":"\u30e1\u30bf\u30b7\u30f3\u30ad\u30f3\u30b0\u3001\u30e1\u30bf\u30ef\u30fc\u30af","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":"ja"},{"@type":["Person","Organization"],"@id":"https:\/\/prodskill.com\/ko\/#\/schema\/person\/bbad0870c78008c82edbe0960fe768bd","name":"Zerom","image":{"@type":"ImageObject","inLanguage":"ja","@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\/ja\/author\/proda\/"}]}},"_links":{"self":[{"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/posts\/11152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/comments?post=11152"}],"version-history":[{"count":0,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/posts\/11152\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/media\/11156"}],"wp:attachment":[{"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/media?parent=11152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/categories?post=11152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prodskill.com\/ja\/wp-json\/wp\/v2\/tags?post=11152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}