Знает ли кто, где можно почитать про простой алгоритм картонизации? К примеру есть 3-4 товара, нужно проверить или они влезут в данную коробку. Размеры и товара и коробки известны. Товар тоже коробки, но заведомо меньшего размера. По обьему товар влазит, а вот как по размерам?
Спасибо.
Алгоритм картонизации?
-
- Уже с Приветом
- Posts: 859
- Joined: 14 Sep 2016 21:33
- Location: Illinois
Алгоритм картонизации?
Да и фиг с ним с апокалипсисом, просто глядя на то что творится вокруг, оформилось стойкое убеждение что лучше быть живым параноиком, чем мертвым идеалистом, если вдруг что...
-
- Уже с Приветом
- Posts: 2157
- Joined: 29 Jul 2019 17:34
- Location: Нуёкщина -> Притампье
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: Алгоритм картонизации?
В зависимости от специфики под эту задачу подходят алгоритмы:
1. Ветвей и границ
2. Динамическое программирование
3. Мета эвристики
1. Ветвей и границ
2. Динамическое программирование
3. Мета эвристики
-
- Уже с Приветом
- Posts: 8485
- Joined: 02 Aug 2003 01:32
- Location: SPb->SFBA
Re: Алгоритм картонизации?
В общем случае это NP-hard проблема.
Один из вариантов решения - линейное программирование (Канторович нобелевку получил).
Один из вариантов решения - линейное программирование (Канторович нобелевку получил).
-
- Уже с Приветом
- Posts: 7723
- Joined: 29 Mar 2000 10:01
- Location: Kirkland,WA
Re: Алгоритм картонизации?
https://en.wikipedia.org/wiki/Knapsack_problem
я поскольку много чего не знал решал проблему для фур ~25 лет назад в лоб. кто его знает теперь насколько успешно.
вроде даже целевую функцию вспомнил - не более половины больших по объему, забить как минимум 25% дорогим ходким, все остальные 25% программе на откуп
я поскольку много чего не знал решал проблему для фур ~25 лет назад в лоб. кто его знает теперь насколько успешно.
вроде даже целевую функцию вспомнил - не более половины больших по объему, забить как минимум 25% дорогим ходким, все остальные 25% программе на откуп
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Алгоритм картонизации?
Если не секрет это софт коробочный или для внутреннего пользования?alex_127 wrote: ↑21 Aug 2020 01:30 https://en.wikipedia.org/wiki/Knapsack_problem
я поскольку много чего не знал решал проблему для фур ~25 лет назад в лоб. кто его знает теперь насколько успешно.
вроде даже целевую функцию вспомнил - не более половины больших по объему, забить как минимум 25% дорогим ходким, все остальные 25% программе на откуп
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 19484
- Joined: 09 Aug 2009 03:46
- Location: Москва->США
Re: Алгоритм картонизации?
Вот этот товарищ таким пол-жизни занимается:
https://patents.justia.com/inventor/kirill-k-pankratov
У него есть ЖЖ
https://neznaika-nalune.livejournal.com
Наверное, можно в ЖЖ же и спросить.
https://patents.justia.com/inventor/kirill-k-pankratov
У него есть ЖЖ
https://neznaika-nalune.livejournal.com
Наверное, можно в ЖЖ же и спросить.
蝸牛そろそろ登れ富士の山
-
- Уже с Приветом
- Posts: 2846
- Joined: 28 Jun 2000 09:01
- Location: Milwaukee, WI
Re: Алгоритм картонизации?
moria# show running-config
-
- Уже с Приветом
- Posts: 2846
- Joined: 28 Jun 2000 09:01
- Location: Milwaukee, WI
Re: Алгоритм картонизации?
Code: Select all
from __future__ import print_function
from ortools.algorithms import pywrapknapsack_solver
def main():
# Create the solver.
solver = pywrapknapsack_solver.KnapsackSolver(
pywrapknapsack_solver.KnapsackSolver.
KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, 'KnapsackExample')
values = [
360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147,
78, 256, 63, 17, 120, 164, 432, 35, 92, 110, 22, 42, 50, 323, 514, 28,
87, 73, 78, 15, 26, 78, 210, 36, 85, 189, 274, 43, 33, 10, 19, 389, 276,
312
]
weights = [[
7, 0, 30, 22, 80, 94, 11, 81, 70, 64, 59, 18, 0, 36, 3, 8, 15, 42, 9, 0,
42, 47, 52, 32, 26, 48, 55, 6, 29, 84, 2, 4, 18, 56, 7, 29, 93, 44, 71,
3, 86, 66, 31, 65, 0, 79, 20, 65, 52, 13
]]
capacities = [850]
solver.Init(values, weights, capacities)
computed_value = solver.Solve()
packed_items = []
packed_weights = []
total_weight = 0
print('Total value =', computed_value)
for i in range(len(values)):
if solver.BestSolutionContains(i):
packed_items.append(i)
packed_weights.append(weights[0][i])
total_weight += weights[0][i]
print('Total weight:', total_weight)
print('Packed items:', packed_items)
print('Packed_weights:', packed_weights)
if __name__ == '__main__':
main()
moria# show running-config