3-х мерные алгоритмы упаковки бина

Если вы предпочитаете не объектно-ориентированный подход, переместите plt.xticks (rotation = 70) вправо перед двумя вызовами avail_plot, например

plt.xticks(rotation=70)
avail_plot(axs[0], dates, s1, 'testing', 'green')
avail_plot(axs[1], dates, s1, 'testing2', 'red')

. задает свойство вращения перед настройкой меток. Поскольку у вас есть две оси, plt.xticks запутывается после того, как вы сделали два сюжета. В тот момент, когда plt.xticks ничего не делает, plt.gca () делает not , чтобы дать вам оси, которые вы хотите изменить, и поэтому plt.xticks, который действует на текущие оси, является не будет работать.

Для объектно-ориентированного подхода, не использующего plt.xticks, вы можете использовать

plt.setp( axs[1].xaxis.get_majorticklabels(), rotation=70 )

после два вызова avail_plot. Это задает вращение в соответствующих точках.

30
задан BuschnicK 3 February 2010 в 13:18
поделиться

6 ответов

Из Википедии :

Хотя эти простые стратегии часто достаточно хороши, были продемонстрированы эффективные алгоритмы аппроксимации, которые могут решить проблему упаковки бина в пределах любой фиксированный процент оптимального решения для достаточно больших входов

Вот два источника, которые они дают для этого:

2
ответ дан BlueRaja - Danny Pflughoeft 3 February 2010 в 13:18
поделиться

Я написал программу , которая тестирует три различных алгоритма. Также это хороший источник информации: Тысяча способов упаковать мусорное ведро - практический подход к упаковке двухмерного прямоугольного мусорного ведра . Он предназначен для двумерного прямоугольника, но вы всегда можете преобразовать его в 3D.

3
ответ дан Kris 3 February 2010 в 13:18
поделиться

3dbinpacking - это коммерческое решение (, а не алгоритм ), открывающее API для потребителя с приятной визуализацией. Он предлагает:

  • Упаковка для одного контейнера
  • Упаковка для нескольких контейнеров
  • Найти третье измерение
  • Найти размеры для контейнера
0
ответ дан hdoghmen 3 February 2010 в 13:18
поделиться

Ваш вопрос похож на: Алгоритм трехмерной упаковки бинов

Хотя, поскольку вы запрещаете вращение, вы можете получить довольно хорошие результаты. Я предлагаю больше взглянуть на решение, которое поможет уменьшить вес.

0
ответ дан Community 3 February 2010 в 13:18
поделиться

Что касается готовых решений, обратите внимание на MAXLOADPRO для загрузки грузовиков. Его можно настроить для загрузки любого прямоугольного тома, но я еще не пробовал. В общем, проблемы с трехмерной упаковкой в ​​бункеры имеют дополнительную сложность, заключающуюся в том, что объекты можно поворачивать в разные положения, поэтому для любого объекта с заданной длиной, шириной и высотой вам фактически нужно создать три переменные, представляющие каждую позицию, но вы используете только одну в решение.

В общем, автономные формулировки MIP (или ветвление и граница) не работают хорошо для двумерной или трехмерной проблемы, но программирование с ограничениями добилось определенного успеха, дав точные решения для двумерной проблемы. Посмотрите эту аннотацию . Не глядя на бумагу, мне нравится метод декомпозиции для проблемы, когда вы пытаетесь минимизировать количество бинов одинакового размера. Я не видел так много результатов для 3D-задачи, но дайте нам знать, если вы найдете какие-либо из них, которые можно реализовать.

Удачи!

6
ответ дан 27 November 2019 в 21:17
поделиться

Лучший точный решатель: используйте динамическое программирование .

Переменные состояния:

  1. Предметы, которые вы упаковали и выбросили.
  2. В контейнере заполнено пространство.

Если контейнер представляет собой сетку в виде параллелепипеда, а элементы «помещаются» в точные ячейки сетки, вы можете использовать трехмерный массив для представления переменной состояния 2. В противном случае вам придется использовать более сложные структуры данных.

Лучшие эвристические решатели

Не знаю. Возможно Поиск переменного окружения . Есть некоторое сходство между вашей проблемой и проблемой построения расписания (над которой я работаю), поэтому одна и та же эвристика может быть полезна для обоих.

Готовые решения для проведения экспериментов

Извините, я даже понятия не имею.

1
ответ дан 27 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: