Optprob/Производство металлических прутков — различия между версиями
StasFomin (обсуждение | вклад) (Новая страница: «<!-- p36 --> {{checked|}} Есть металлургическая фабрика, на которой производятся типизированные ( j…») |
StasFomin (обсуждение | вклад) |
||
| (не показано 13 промежуточных версий 2 участников) | |||
| Строка 2: | Строка 2: | ||
{{checked|}} | {{checked|}} | ||
| − | + | [[File:Производство металлических прутков_2023-12-23_04-55-31_image0.png|right]] | |
| − | Каждый | + | Есть металлургическая фабрика, на которой производятся металлические пруты, на складе их ( j = 1 … n), n=50. |
| + | Каждый прут ''j'' имеет длину LA_j (в сантиметрах, запятая там для красоты). | ||
| − | {{WikiCutBegin| | + | {{WikiCutBegin|Металлические пруты на складе}} |
<table class=wikitable> | <table class=wikitable> | ||
| − | <tr><th colspan=" | + | <tr><th colspan="2">Warehousebars</th></tr><tr><th>Id</th><th>Length</th></tr><tr class="odd"><td>1</td><td>3,000</td></tr> |
| − | <tr><td>2</td><td>3,000 | + | <tr><td>2</td><td>3,000</td></tr> |
| − | <tr class="odd"><td>3</td><td>3,000 | + | <tr class="odd"><td>3</td><td>3,000</td></tr> |
| − | <tr><td>4</td><td>3,000 | + | <tr><td>4</td><td>3,000</td></tr> |
| − | <tr class="odd"><td>5</td><td>3,000 | + | <tr class="odd"><td>5</td><td>3,000</td></tr> |
| − | <tr><td>6</td><td>3,000 | + | <tr><td>6</td><td>3,000</td></tr> |
| − | <tr class="odd"><td>7</td><td>3,000 | + | <tr class="odd"><td>7</td><td>3,000</td></tr> |
| − | <tr><td>8</td><td>3,000 | + | <tr><td>8</td><td>3,000</td></tr> |
| − | <tr class="odd"><td>9</td><td>3,000 | + | <tr class="odd"><td>9</td><td>3,000</td></tr> |
| − | <tr><td>10</td><td>3,000 | + | <tr><td>10</td><td>3,000</td></tr> |
| − | <tr class="odd"><td>11</td><td>2, | + | <tr class="odd"><td>11</td><td>2,500</td></tr> |
| − | <tr><td>12</td><td>2,500 | + | <tr><td>12</td><td>2,500</td></tr> |
| − | <tr class="odd"><td>13</td><td>2,500 | + | <tr class="odd"><td>13</td><td>2,500</td></tr> |
| − | <tr><td>14</td><td>2,500 | + | <tr><td>14</td><td>2,500</td></tr> |
| − | <tr class="odd"><td>15</td><td>2, | + | <tr class="odd"><td>15</td><td>2,500</td></tr> |
| − | <tr><td>16</td><td>2,500 | + | <tr><td>16</td><td>2,500</td></tr> |
| − | <tr class="odd"><td>17</td><td>2, | + | <tr class="odd"><td>17</td><td>2,500</td></tr> |
| − | <tr><td>18</td><td>2,500 | + | <tr><td>18</td><td>2,500</td></tr> |
| − | <tr class="odd"><td>19</td><td>2, | + | <tr class="odd"><td>19</td><td>2,500</td></tr> |
| − | <tr><td>20</td><td>2, | + | <tr><td>20</td><td>2,500</td></tr> |
| − | <tr class="odd"><td>21</td><td>2,000 | + | <tr class="odd"><td>21</td><td>2,000</td></tr> |
| − | <tr><td>22</td><td>2,000 | + | <tr><td>22</td><td>2,000</td></tr> |
| − | <tr class="odd"><td>23</td><td>2,000 | + | <tr class="odd"><td>23</td><td>2,000</td></tr> |
| − | <tr><td>24</td><td>2,000 | + | <tr><td>24</td><td>2,000</td></tr> |
| − | <tr class="odd"><td>25</td><td>2,000 | + | <tr class="odd"><td>25</td><td>2,000</td></tr> |
| − | <tr><td>26</td><td>2,000 | + | <tr><td>26</td><td>2,000</td></tr> |
| − | <tr class="odd"><td>27</td><td>2,000 | + | <tr class="odd"><td>27</td><td>2,000</td></tr> |
| − | <tr><td>28</td><td>2,000 | + | <tr><td>28</td><td>2,000</td></tr> |
| − | <tr class="odd"><td>29</td><td>2,000 | + | <tr class="odd"><td>29</td><td>2,000</td></tr> |
| − | <tr><td>30</td><td>2,000 | + | <tr><td>30</td><td>2,000</td></tr> |
| − | <tr class="odd"><td>31</td><td>1,500 | + | <tr class="odd"><td>31</td><td>1,500</td></tr> |
| − | <tr><td>32</td><td>1,500 | + | <tr><td>32</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>33</td><td>1,500 | + | <tr class="odd"><td>33</td><td>1,500</td></tr> |
| − | <tr><td>34</td><td>1,500 | + | <tr><td>34</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>35</td><td>1,500 | + | <tr class="odd"><td>35</td><td>1,500</td></tr> |
| − | <tr><td>36</td><td>1,500 | + | <tr><td>36</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>37</td><td>1,500 | + | <tr class="odd"><td>37</td><td>1,500</td></tr> |
| − | <tr><td>38</td><td>1,500 | + | <tr><td>38</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>39 | + | <tr class="odd"><td>39</td><td>1,500</td></tr> |
| − | <tr><td>40</td><td>1,500 | + | <tr><td>40</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>101 | + | <tr class="odd"><td>101</td><td>1,500</td></tr> |
| − | <tr><td>102</td><td>1,500 | + | <tr><td>102</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>103</td><td>1,500 | + | <tr class="odd"><td>103</td><td>1,500</td></tr> |
| − | <tr><td>104</td><td>1,500 | + | <tr><td>104</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>105</td><td>1,500 | + | <tr class="odd"><td>105</td><td>1,500</td></tr> |
| − | <tr><td>106</td><td>1,500 | + | <tr><td>106</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>107</td><td>1,500 | + | <tr class="odd"><td>107</td><td>1,500</td></tr> |
| − | <tr><td>108</td><td>1, | + | <tr><td>108</td><td>1,500</td></tr> |
| − | <tr class="odd"><td>109 | + | <tr class="odd"><td>109</td><td>1,500</td></tr> |
| − | <tr><td>110</td><td>1,500 | + | <tr><td>110</td><td>1,500</td></tr> |
</table> | </table> | ||
{{WikiCutEnd}} | {{WikiCutEnd}} | ||
| Строка 77: | Строка 78: | ||
</table> | </table> | ||
| − | На рынке не востребованы бруски длиной менее | + | На рынке не востребованы бруски длиной менее 200 см, поэтому мы хотим минимизировать |
общую длину избыточных кусков менее 2 м, т.е. минимизировать отходы. | общую длину избыточных кусков менее 2 м, т.е. минимизировать отходы. | ||
| + | Мы также добавим «стоимость» (размерность в сантиметрах прута) C=200 для каждого используемого складского бруса, чтобы не использовать слишком много складских брусьев. | ||
| − | + | Т.е. пусть целевая функция | |
| − | + | <math> | |
| − | + | \sum_j d_j + C \times \alpha_j | |
| − | + | </math> | |
| + | * где d_j — остаток прута j меньше 200см | ||
| + | * <math>\alpha_j</math> — индикатор, что прут j вообще использовали. | ||
| + | рассмотреть вариант | ||
| + | * минимизировать количество используемых складских брусьев | ||
| + | * запрет на использование кусков размером менее 2 м | ||
| − | + | Есть не совсем корректное решение (которое можно доделать): | |
| − | + | {{Optsolv|incorrect/Производство_металлических_прутков.ipynb}} | |
| − | + | * [[Участник:Robohant/Производство металлических прутков]] | |
| − | {{ | + | |
{{enddiv}} | {{enddiv}} | ||
| − | + | {{Cat4Term2|{{FULLPAGENAME}}|OptimizationProblems}} | |
Текущая версия на 22:58, 4 октября 2024
Есть металлургическая фабрика, на которой производятся металлические пруты, на складе их ( j = 1 … n), n=50. Каждый прут j имеет длину LA_j (в сантиметрах, запятая там для красоты).
| Warehousebars | |
|---|---|
| Id | Length |
| 1 | 3,000 |
| 2 | 3,000 |
| 3 | 3,000 |
| 4 | 3,000 |
| 5 | 3,000 |
| 6 | 3,000 |
| 7 | 3,000 |
| 8 | 3,000 |
| 9 | 3,000 |
| 10 | 3,000 |
| 11 | 2,500 |
| 12 | 2,500 |
| 13 | 2,500 |
| 14 | 2,500 |
| 15 | 2,500 |
| 16 | 2,500 |
| 17 | 2,500 |
| 18 | 2,500 |
| 19 | 2,500 |
| 20 | 2,500 |
| 21 | 2,000 |
| 22 | 2,000 |
| 23 | 2,000 |
| 24 | 2,000 |
| 25 | 2,000 |
| 26 | 2,000 |
| 27 | 2,000 |
| 28 | 2,000 |
| 29 | 2,000 |
| 30 | 2,000 |
| 31 | 1,500 |
| 32 | 1,500 |
| 33 | 1,500 |
| 34 | 1,500 |
| 35 | 1,500 |
| 36 | 1,500 |
| 37 | 1,500 |
| 38 | 1,500 |
| 39 | 1,500 |
| 40 | 1,500 |
| 101 | 1,500 |
| 102 | 1,500 |
| 103 | 1,500 |
| 104 | 1,500 |
| 105 | 1,500 |
| 106 | 1,500 |
| 107 | 1,500 |
| 108 | 1,500 |
| 109 | 1,500 |
| 110 | 1,500 |
Получен заказ на набора запрошенных прутков десяти типов (i = 1...m, m=10).
Каждый тип i имеет длину ld_i и количество брусков D_i.
| DemandedBars | ||
|---|---|---|
| Id | Length | Number |
| 1 | 1,200 | 4 |
| 2 | 600 | 20 |
| 3 | 500 | 13 |
| 4 | 1,500 | 2 |
| 5 | 2,000 | 5 |
| 6 | 700 | 5 |
| 7 | 900 | 5 |
| 8 | 400 | 5 |
| 9 | 1,000 | 16 |
| 10 | 1,100 | 14 |
На рынке не востребованы бруски длиной менее 200 см, поэтому мы хотим минимизировать общую длину избыточных кусков менее 2 м, т.е. минимизировать отходы. Мы также добавим «стоимость» (размерность в сантиметрах прута) C=200 для каждого используемого складского бруса, чтобы не использовать слишком много складских брусьев.
Т.е. пусть целевая функция
- где d_j — остаток прута j меньше 200см
- — индикатор, что прут j вообще использовали.
рассмотреть вариант
- минимизировать количество используемых складских брусьев
- запрет на использование кусков размером менее 2 м
Есть не совсем корректное решение (которое можно доделать):
- Код решения в проекте «adv2022-course-pyomo-business-optimization» в «optprob/incorrect/Производство_металлических_прутков.ipynb.ipynb»
- Участник:Robohant/Производство металлических прутков
