Страницы: Пред. 1 2 3 След.
RSS
Решения задач комбинаторики. XLAM or XLL (VBA or C++)
 
Михаил, что быстрее стек или предыдущее изменения?
У меня стек дольше выполняется (на тестовом примере).
Внес предыдущее в С++, меняем на стек?
И еще важно, можно ли параллелить алгоритм.
Я так понимаю со стеком  - это под вопросом (важна очередность)?
На freebasic не получилось с потоками сделать? у меня здесь вопросы есть.

upd:
По алгоритм, через sMaxArr
Поиск 2 тыс. слагаемых на 3 млн. рублей.
VBA - 137 сек. 85 сек.
XLL - 4 сек. 2 сек.
Изменено: bedvit - 10.12.2020 16:36:55
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
Михаил, что быстрее стек или предыдущее изменения?
У меня получается стек немного быстрее и он не требует сокращения на НОД, но нужно выделять больше памяти

Цитата
bedvit написал:
Я так понимаю со стеком  - это под вопросом (важна очередность)?
Стек разделять на потоки наверное сложнее, т.к. потоки должны работать с одним и тем же стеком, будут конфликты между потоками

Цитата
bedvit написал:
На freebasic не получилось с потоками сделать? у меня здесь вопросы есть.
Пока нет времени, может вечером получится набросать

Хочу немного изменить ввод и вывод данных
на входе размер слагаемого и кол-во (по умолчанию кол-во = 1)
на выходе порядковый номер слагаемого и их кол-во, можно выводит как в сжатом виде так и полный перечень всех слагаемых с нулевым количеством (если слагаемое не используется)
Это пригодится например в задаче раскроя
 
Пока сделал самый быстрый вариант на С++. На тестовом стенде (ранее выложенный файл) - 2 сек. Добавил обработку ошибок, диалог о первоначальном расположении данных.

Обновил xll на ресурсе. Тестируйте.
Изменено: bedvit - 10.12.2020 18:23:38
«Бритва Оккама» или «Принцип Калашникова»?
 
Пока с потоками не получается сделать, видимо сама концепция разделения на параллельные вычисления не правильная, подумаю еще
 
Цитата
bedvit написал:
На тестовом стенде (ранее выложенный файл) - 2 сек
У меня FreeBasic считает значительно дольше 2х секунд
Выложить реализацию на FreeBasic в 1 поток для теста?
Изменено: MCH - 11.12.2020 16:13:13
 
Выложи. А сколько считает XLL?
«Бритва Оккама» или «Принцип Калашникова»?
 
Вариант на FreeBasic
Все данные находятся в txt файле, после решения результат сохраняется также в txt
У меня версия 64бит считает 5 секунд 3-4 сек
XLL не тестировал, не разобрался еще как это сделать

UPD: файл обновил
Изменено: MCH - 12.12.2020 09:39:17
 
Просто скачать xll, открыть, открыть нужный файл, нажать кнопку  "XLL Find Summands ". Здесь еще скрин и ссылка.
Возможно комп слабый и xll тоже будет отрабатывать 5 сек. Интересен результат.
Изменено: bedvit - 11.12.2020 23:58:28
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
Интересен результат.
XLL 32бит - 9,9 сек
XLL 64бит - не запускается т.к. система 64, Excel 32
FB 32 бит - 10,5 сек 8,9 сек
FB 64 бит - 4,9 сек 3,9 сек

Виталий, протестируй код на FreeBasic на своем компьютере, сопоставима будет скорость с C++? Я немного скорректировал код.
Изменено: MCH - 12.12.2020 09:42:40
 
На рабочем ПК - Excel x64


Дома - Excel x64


Excel x32
Изменено: bedvit - 13.12.2020 23:11:25
«Бритва Оккама» или «Принцип Калашникова»?
 
Все таки C++ обгоняет FB, если в 32bit это не так заметно, то в 64bit разница ярко выражена, может быть разница в компиляторах и оптимизации кода
 
Цитата
MCH: C++ обгоняет FB,
я, конечно, не особо разбираюсь в нюансах, но по-моему, C++ — это болид формулы 1, а FreeBasic больше похож на Kia Rio. То есть уже не старенький работяга Ford Focus, как VBA, но и к мирообразующим языкам не относится, чтобы сравнивать  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Сильно не разбирался, но думаю не только компилятор. Как устроен контейнер (массив) тоже имеет значение (скорость чтения/записи, проверка на выход за границы и т.д.). Разрыв незначительный, по сравнению с VBA.
Можно подумать над вариантом параллельного алгоритма.
Или решить ещё одну задачу.
Или внедрить сторонние, хорошо зарекомендовавшие себя библиотеки.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, пишу  :D
Тут просто нечему ломаться (сумма 1…30 чисел = 465)
после нажатия "Да" на 3ем скрине вылет
Изменено: Jack Famous - 22.04.2021 13:32:23
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Завтра гляну, отпишусь...
Может Михаил быстрее сможет ответить...
Изменено: bedvit - 22.04.2021 18:01:56
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit: Может Михаил быстрее сможет ответить
так проблема-то не в подборе (он тестовый), а в надстройке — а её Михаил вряд ли поправит  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Это да, поправил. Библу залил на сайт.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit: поправил
закрыл Excel, заменил в AddIns надстройку, открыл пустую книгу - вылетает
При повторном запуске, она отключена, включаю из Excel - вылетает
Установщик просит включить её, а я не могу  :cry:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Я залил недавно, качни сейчас, возможно ты еще старую версию закачал.
Новая 2.0.0.8
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit: Я залил недавно, качни сейчас, возможно ты еще старую версию закачал
вряд ли ты залил ПОСЛЕ того, как написал в 11:47  :D
Я скачал в 14 где-то, версию мне где посмотреть? Если ты помнишь, мне не так-то просто качать))) да и работы полно
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Доступна все по той же ссылке. Сначала отключи и удали старую. Потом поставь новую.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, полёт нормальный - подбор оттестировал на том же примере
Не хочешь добавить возможность вывода нескольких вариантов, как тут?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, можно все что угодно. Главное, что бы было нужно сие. Техника сложная, нужно не забивать ей гвозди, а напилить, то что нельзя или долго считается на VBA.
«Бритва Оккама» или «Принцип Калашникова»?
 
Сделал немного другую реализацию на VBA поиска слагаемых, когда есть суммы и кол-ва
может кому нибудь пригодится
Считает на VBA по сравнению с C++ значительно медленнее
 
bedvit, согласен - тем более у тебя отображается, что было взято (только заметил)  :idea:  8)
UPD: периодически вылетает при открытии книги
UPD2: не периодически - теперь надстройку не подключить опять (просто закрыл книгу и открыл заново - и всё началось)
Удалить и подключить заново не удалось - что-то с регистрацией, наверное

Цитата
MCH: Сделал немного другую реализацию
спасибо!  :idea:
Изменено: Jack Famous - 23.04.2021 17:10:01
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
MCH, спасибо, глянем!
Jack Famous, прямо наваждение какое-то. Что пишет? Сможешь посмотреть лог через справку (в надстройке) или через функцию (не документируемую :)) в категории XLL "ColorRGB()"
Напиши мне в вотсапе, что делаешь, нужно понять проблему. У меня на 2х ПК днями работает, полет нормальный (может винда разная и т.д.)
«Бритва Оккама» или «Принцип Калашникова»?
 
MCH, Михаил, Коллеги, сможете скачать/установить и протестировать работу надстройки? (есть установщик, или самому установить для нужной разрядности EXCEL)
Нажать кнопку "XLL Справка", приложить скриншот, указать версию Windows.
Изменено: bedvit - 23.04.2021 18:19:48
«Бритва Оккама» или «Принцип Калашникова»?
 
Скрин отчёта (винда под аватаром)
Изменено: Jack Famous - 04.05.2021 09:17:54
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Алексей, судя по отчету (за исключением некоторого момента - подключения в references, подключал вручную?), все должно работает штатно. Так ли?
Изменено: bedvit - 04.05.2021 14:00:06
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, ссылку на библу подключал вручную, как и надстройку - да))
Пока особо не тестил, но то, что успел - да. Спасибо!  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: Пред. 1 2 3 След.
Наверх