1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Помогите с оптимизацией

Тема в разделе "Delphi - Система", создана пользователем YesNo, 26 фев 2006.

Статус темы:
Закрыта.
  1. YesNo

    YesNo Гость

    Репутация:
    0
    Здравствуйте!
    Проблема такова - есть программа, рассчитывающая, сколько штук коробок некоторых размеров войдет в некоторый контейнер, причем предпочтение отдается сначала тяжелым, потом большим коробкам и т.д. (коробки могут быть нескольких видов, с указанием количества)
    Алгоритм здесь моего сочинения, он итерационный (циклы и условия), вот только при больших размерах коробок\контейнера он … мягко говоря «виснет»…
    В связи с необходимостью графического построения схемы расположения коробок, я использую несколько форм и, как результат, глобальные переменные. Все ничего, да пара-тройка глобальных объектов типа массив некоторого класса, не особо добавляют скорости вычислений; к тому же весь алгоритм строиться на обработке булевого массива, описывающего содержимое контейнера по сантиметрам (занят\свободен). Так как размеры этого массива доходят до 1300 на 300 , то в результате обработки выполняется около 390000 операций.
    Беда в том, что в моей реализации алгоритма ничего нельзя выделить в отдельный поток\потоки, все операции зависят от предыдущих и влияют на последующие…
    Вот такой кошмар.
    Я прошу вашей помощи – может кто посоветует, как увеличить скорость работы всей этой радости?
    Хотелось бы попробовать ускорить работу с памятью, но эта тема мне незнакома. Подкиньте линков по работе с памятью в Дельфи на худой конец.
    Заранее спасибо. (прога в аттаче)
     

    Вложения:

    • Packer.rar
      Размер файла:
      188,7 КБ
      Просмотров:
      70
    • Packer.rar
      Размер файла:
      188,7 КБ
      Просмотров:
      77
  2. Barmutik

    Barmutik Гость

    Репутация:
    0
    Мда .. код конечно я не смотрел .. но скажу сразу ..

    Это стандартная задача раскроя\упаковки в 3-х мерном пространстве... Для решения её в частном(!!!!) случае существует много алгоритмов ... люди по этой теме диссертации пишут ...

    Так что Вы можете реализовать только вероятностный алгоритм который будет выполнять приблизительно оптимальную упаковку Ваших коробок ...

    Для ускорения скорости используйте не массивы а более быстрые структуры .. ну к примеру деревья ... также можете воспользоватся другим менеджером памяти ... к примеру в нащих проектах после замены стандратного борляндовского менеджера памяти на FastMM скорость выросла на 30%...

    Так же к примеру если проект компилять Delphi 7 то он будет работать на 15% быстрее с операция по памяти чем если Delphi 7 Update Pack 1

    Правда в Вашем случае когда построение идёт перебором, эти способы врядли помогут .. нужно координально менять алгоритм ... потому как с увеличением количество коробок время рассчёта растёт по экспоненте .. а значит шансов закончить работу в общем случае у программы нет ...
     
Загрузка...
Похожие Темы - Помогите оптимизацией
  1. number27
    Ответов:
    0
    Просмотров:
    76
  2. Rina
    Ответов:
    0
    Просмотров:
    89
  3. maksiiimka
    Ответов:
    2
    Просмотров:
    86
  4. Ким
    Ответов:
    23
    Просмотров:
    608
  5. Sr233
    Ответов:
    2
    Просмотров:
    190
Статус темы:
Закрыта.

Поделиться этой страницей