Russian Qt Forum
Ноябрь 23, 2024, 00:13
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
большое количество комбинаций и выбор оптимального решения
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: большое количество комбинаций и выбор оптимального решения (Прочитано 25887 раз)
ksv-uk
Гость
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #15 :
Сентябрь 06, 2016, 17:02 »
Вот, с этого места можно подробнее. Я понимаю, что можно решать обратным методом, но там тоже будут циклы.
Например потребность продукта на неделю 15 , я могу отклониться +-5, поэтому ищу в дипазоне нужную партию
«
Последнее редактирование: Сентябрь 06, 2016, 17:04 от ksv-uk
»
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #16 :
Сентябрь 06, 2016, 18:17 »
У вас есть продукты, которые не используют все 9 бочек.
Делайте цикл только по бочкам в пределах продуктов, которые будут включены в данную серию.
Например, Продукт 1 зависит только от Бочки 4 - значит, нет смысла для него перебирать остальные
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
ksv-uk
Гость
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #17 :
Сентябрь 06, 2016, 20:28 »
Так с первым продуктом понятно. Как поступать с остальными? Например есть продукт который использует несколько видов сырья. а также продукты , которые также используют данное сырье. Т.е. я выравняю одно сырье, как сбалансировать все виды сырья?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #18 :
Сентябрь 06, 2016, 21:28 »
Ну смотрите. Делаете цикл по продуктам от 1 до 10. С 1 понятно. Затем для 2 продукта подбираем пропорции так, что бочки использованы по максимуму. Запоминаем остатки в бочках, переходим к продукту 3. Снова подбираем максимальный расход бочек, с учётом остатков с предыдущего шага, если такие имеются для текущих бочек. Опять запоминаем остатки и переходим к продукту 4 и т.д. Таким образом получается только один внешний цикл по продуктам, а в каждом продукте циклы по коэффициентам только для используемых в нем бочек. В конце получим несколько бочек с "издержками производтства", но это будет ваш допустимый минимум
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
qate
Супер
Offline
Сообщений: 1177
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #19 :
Сентябрь 07, 2016, 08:26 »
не забыть qtconcurent для использования всех ядер при обработке в цикле
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #20 :
Сентябрь 07, 2016, 09:52 »
Цитата: Racheengel от Сентябрь 06, 2016, 21:28
Затем для 2 продукта подбираем пропорции так, что бочки использованы по максимуму. Запоминаем остатки в бочках, переходим к продукту 3. Снова подбираем максимальный расход бочек,
Продукты 2 и 3 могут использовать одну и ту же бочку. Идеальным может оказаться напр у каждого остаток по пол-бочки
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #21 :
Сентябрь 07, 2016, 10:39 »
Цитата: Igors от Сентябрь 07, 2016, 09:52
Продукты 2 и 3 могут использовать одну и ту же бочку. Идеальным может оказаться напр у каждого остаток по пол-бочки
Могут, поэтому мы должны запомнить остатки и использовать их в последующих продуктах.
Ну а если пол-бочки осталось и ничего с этим не сделать, придется, наверно, разбодяжить
Кстати, алгоритм мог бы еще подсчитывать оптимальное разбодяживание сырья, с допустимым ухудшением продукта...
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #22 :
Сентябрь 07, 2016, 11:29 »
Цитата: ksv-uk от Сентябрь 06, 2016, 20:28
Так с первым продуктом понятно. Как поступать с остальными? Например есть продукт который использует несколько видов сырья. а также продукты , которые также используют данное сырье. Т.е. я выравняю одно сырье, как сбалансировать все виды сырья?
А как Вы выровняете хотя бы одно сырье? Напр сырье 8 используется всеми продуктами кроме 1. Тогда может так.
1) Перебираем все варианты продукта 2 (с шагом как у Вас) и сохраняем все остатки в контейнере. Если такой остаток уже есть - пропускаем
2) То же самое для продукта 3
3) Теперь из 2 контейнеров собираем общий. В него заносим остатки-суммы всех комбинаций 1-го и 2-го. Большинство остатков будет повторяться, их отбрасываем
4) Вычисляем остатки для продукта 4 и делаем сумму общий + остатки 4
И так по всем продуктам. В итоге получаем контейнер остатков из которого выбираем минимальный элемент. Смысл в том что с увеличением числа продуктов вычислительные расходы растут линейно
Записан
ksv-uk
Гость
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #23 :
Сентябрь 07, 2016, 12:31 »
Что вы понимаете под "сохраняем все остатки в контейнере"?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #24 :
Сентябрь 07, 2016, 12:48 »
Цитата: ksv-uk от Сентябрь 07, 2016, 12:31
Что вы понимаете под "сохраняем все остатки в контейнере"?
Тот пример что Вы привели
Цитата: ksv-uk от Сентябрь 06, 2016, 14:13
пример для одного продукта. Продукт1 партия пр-ва 10 тыс.л. Расход сырья (выше в таблице закладки. Для данного продукта используется только сырье 4. Закладка 179,5) : уйдет сырья 4 - 1795 кг. (вес бочки 250 кг). т.е видно что мы не вырабатываем бочку. (7.18 бочек)
След итерация +0,1 Продукт1 партия пр-ва 10.1 тыс.л. Расход сырья (выше в таблице закладки) : уйдет сырья 4 - 1812,95 кг. (вес бочки 250 кг). т.е видно что мы не вырабатываем бочку. (7,2518 бочек)
итд.
Остатки будут 8-7.18 и 8-7,2518. Вот их и храним
Update: только храним как целые числа, напр домножаем float на 1000 и отнимаем 1 если не ноль. Чтобы контейнер не сильно разрастался
«
Последнее редактирование: Сентябрь 07, 2016, 14:40 от Igors
»
Записан
demal
Чайник
Offline
Сообщений: 53
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #25 :
Сентябрь 07, 2016, 21:27 »
Мое имхо, что нужно вводить весовые коэффициенты продуктов. Например, по количеству используемых материалов. Начинать расчет нужно с продукта, использующего максимальное количество сырья. Ввести ограничение сколько нужно его произвести или определить сколько его вообще можно выработать. А потом или начинать считать по убыванию количества используемого сырья. За примером смотреть тут (тут правда один материално разные продукты. несложно переложить на лад топикстартера)
http://industrial-wood.ru/lesopilenie/6250-proektirovanie-optimalnyh-sistem-postavov-s-ispolzovaniem-evm.html
. Да похоже на рюкзак, но другого ничего не выдумаешь. В конце концов Задача о назначении какую мы тут видим это тоже вариант рюкзака.
Записан
ssoft
Программист
Offline
Сообщений: 584
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #26 :
Сентябрь 08, 2016, 07:42 »
В самой постановке задачи "выбор оптимального решения" есть ответ, каким образом целесообразно ее решить без полного перебора комбинаций. Сейчас имеется 9 продуктов, а как быть, если продуктов станет больше? Требуется сформулировать целевую функцию - сейчас это количество остатков, потом может другой критерий оптимизации. Затем использовать любой алгоритм оптимизации, подставляя объемы продуктов из области допустимых значений. Имхо, такая задача сходится достаточно быстро.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #27 :
Сентябрь 08, 2016, 09:18 »
Цитата: ssoft от Сентябрь 08, 2016, 07:42
...есть ответ..
...использовать любой алгоритм оптимизации,...
...такая задача сходится достаточно быстро.
Ну как-то складывается впечатление что, мол, да тут легко, общих фраз вполне достаточно
Я так не считаю, задачка трудная (хотя возможно и стандартная).
Цитата: kambala от Сентябрь 06, 2016, 15:15
звучит как задача о ранце
Ну и типа дальше все ясно - гуглим, находим решение и реализуем. Вряд ли. Во-первых не вижу где тут (зас)ранец
Мы ничего не наполняем, наоборот, общее кол-во может быть очень разным. Во-вторых, даже если бы и "попали" - толку немного. "Ранец", "Коммивояжер" и др. - эти задачи известны сотни лет, а вот каких-то четких решений нет. Ну вот рекомендуют напр "метод ветвей и границ" - и что? Как его здесь применить, где же "ветви"?
Не говоря уже о том что есть масса вариаций задачи
Записан
ksv-uk
Гость
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #28 :
Сентябрь 08, 2016, 09:32 »
Да, согласен. Я тоже не увидел здесь стандартных алгоритмов. Может кто-то сталкивался с подобными задачами на практике?
Если решать обратным методом, т.е. идти циклом не по продуктам, а по бочкам. То тоже кол-во комбинаций будет большое, так как если я вырабатываю не целые бочки, а например
98% 1 бочки (1 сырье), 99,5% бочек (2 сырье); 96% бочек (3 сырье) ... Это тоже может быть решением.
«
Последнее редактирование: Сентябрь 08, 2016, 09:35 от ksv-uk
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: большое количество комбинаций и выбор оптимального решения
«
Ответ #29 :
Сентябрь 08, 2016, 09:54 »
Цитата: ksv-uk от Сентябрь 08, 2016, 09:32
Да, согласен. Я тоже не увидел здесь стандартных алгоритмов.
То что я предложил стандартно, называется "динамика" (динамическое программирование), вроде здесь подходит
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...