23.08.2021, 22:15 | #1 (permalink) |
Новичок
Регистрация: 23.08.2021
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программа C++
обработки детали j на любом из станков равно tj , j=1..n. Разбить детали на m групп для обработки на m станках так, чтобы время завершения обработки всех деталей было минимально. Помогите, пожалуйста, с решением задачи |
23.08.2021, 22:15 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Может быть решение проблемы скрывается в похожих темах Программа Программа на С Программа |
24.08.2021, 08:16 | #2 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
если детали одинаковые, то в каждой группе будет n%m деталей, хотя есть подозрение что всё не так очевидно и детали разные.
__________________
Убить всех человеков! |
24.08.2021, 09:51 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да ну, Лёша, кой уж там "одинаковые", не зря же для каждой дается время обработки. Задачка-то из серии "ой-ёй-ёй!". Даже не знаю, в каком направлении искать алгоритм — ну не тупым же перебором действовать (в таком случае счёт будет продолжаться, как выражаются поляки, "до морковкина заговенья"). Не говоря уж и С++, в коем я ни бум-бум. Хоть бы алгоритм найти!
|
24.08.2021, 10:13 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Впрочем, одна идея есть.
1. Находим время T обработки всех деталей НА ОДНОМ станке путём суммирования элементов массива tj. 2. Упорядочиваем массив tj по убыванию. 3. Идём по массиву "сверху вниз" (от наибольшего времени) до тех пор, пока суммарное время t1 (сумма пройденных элементов массива) не превысит значение T/m. Это будет загрузка первого станка. 4. Дальше повторяем процедуру m-1 раз, находя времена tm, и, таким образом, определим загрузку остальных станков. Конечно, это может не быть "абсолютным минимумом" из-за самого хвоста (может даже оказаться, что последний станок не загружен вовсе!*) но, по крайней мере, что-то близкое к искомому. Можно, конечно, пытаться отработать и этот момент. Пока так. ____________________ *Впрочем, в самом по себе таком факте ничего страшного нет. Представим себе, что у нас есть 5 деталей и 3 станка, при этом время обработки первой детали составляет 10 часов, а остальных — 2 часа. Тогда, пока будет обрабатываться первая деталь на первом станке, остальные (с запасом!) могут быть обработаны на втором станке, а третий станок не нужен. |
24.08.2021, 12:06 | #5 (permalink) |
Радиоинженер
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,273
Записей в дневнике: 7
Сказал(а) спасибо: 291
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
|
М-м-м... Э-э-э...Ничего так задачка с беклнецным количеством неизвестных!
А ничего так, что имеется определённая технологическая последовательность обработки каждой детали? Например, нельзя нарезать внутреннюю резьбу не просверлив отверстие подходящего диаметра. Тут нужно сначала составить технологическую карту обработки каждого типа деталей, а уж потом распределять станки. Хотя... Если мы изучаем программирование, а не технологию... Можно и так, как предложил Владимир Игоревич. P.s. Катюха, попадёшь к нам на форум, узнаешь много нового. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
24.08.2021, 13:10 | #6 (permalink) |
Member
Регистрация: 09.01.2014
Адрес: Казань
Сообщений: 6,093
Сказал(а) спасибо: 32
Поблагодарили 3 раз(а) в 2 сообщениях
Репутация: 33625
|
АГА! Тяжёлая артиллерия подтянулась!
Или, для начала, в условиях оговорить, что все-ли детали одинаковые или столько-то видов деталей, если видов несколько, то, хотя-бы, к примеру, оговорить процентное соотношение по трудоёмкости изготовления этих видов деталей. Думаю - как-то так. Иначе - по воде вилами.
__________________
Нешто я да не пойму? При моём-то при уму?.. Чай, не лаптем щи хлебаю! Сображаю, что к чему. |
24.08.2021, 13:24 | #7 (permalink) | |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Цитата:
__________________
Убить всех человеков! |
|
24.08.2021, 13:25 | #8 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Да не, Николай, с точки зрения программирования "черного ящика" количество неизвестных в этой задаче всё-таки конечное и ограничивается значением n
По условию: станков m деталей n время обработки одной детали tj j выбирается из списка {1..n}, то есть для каждой детали в списке назначено своё время обработки. Решение задачи можно свести к сортировке списка (массива) по убыванию и последующему распределению элементов по времени обработки. Есть ещё идея одна: проссумировать элементы списка, разделить сумму на количество станков, тем самым получаем среднюю нагрузку на 1 станок, потом перебрать значения времени обработки деталей в сравнении с вычисленной средней нагрузкой.
__________________
Убить всех человеков! |
24.08.2021, 16:17 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Коля, ну что за трёп, ей-Богу? Задачка всё-таки на программирование, а не на составление реальной технологической карты.Так и есть. Характеризуются разными (данными!) временами обработки.Это ещё зачем? По условию задачи станки одинаковые, смысл задания — оптимально их загрузить.Очень даже имеет. Условия вполне достаточны для однозначного решения.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|