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/Производство металлических прутков