• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа C++

katerina00

Ученик
Регистрация
23 Авг 2021
Сообщения
1
Реакции
0
Баллы
0
Программа C++

На m одинаковых станках требуется обработать n деталей. Время
обработки детали j на любом из станков равно tj , j=1..n. Разбить
детали на m групп для обработки на m станках так, чтобы время
завершения обработки всех деталей было минимально.

Помогите, пожалуйста, с решением задачи
 
если детали одинаковые, то в каждой группе будет n%m деталей, хотя есть подозрение что всё не так очевидно и детали разные.
 
если детали одинаковые, то в каждой группе будет n%m деталей, хотя есть подозрение что всё не так очевидно и детали разные.
Да ну, Лёша, кой уж там "одинаковые", не зря же для каждой дается время обработки. Задачка-то из серии "ой-ёй-ёй!". Даже не знаю, в каком направлении искать алгоритм — ну не тупым же перебором действовать (в таком случае счёт будет продолжаться, как выражаются поляки, "до морковкина заговенья"). Не говоря уж и С++, в коем я ни бум-бум. Хоть бы алгоритм найти!
 
Впрочем, одна идея есть.

1. Находим время T обработки всех деталей НА ОДНОМ станке путём суммирования элементов массива tj.

2. Упорядочиваем массив tj по убыванию.

3. Идём по массиву "сверху вниз" (от наибольшего времени) до тех пор, пока суммарное время t1 (сумма пройденных элементов массива) не превысит значение T/m. Это будет загрузка первого станка.

4. Дальше повторяем процедуру m-1 раз, находя времена tm, и, таким образом, определим загрузку остальных станков.

Конечно, это может не быть "абсолютным минимумом" из-за самого хвоста (может даже оказаться, что последний станок не загружен вовсе!*) но, по крайней мере, что-то близкое к искомому. Можно, конечно, пытаться отработать и этот момент.
Пока так.
____________________
*Впрочем, в самом по себе таком факте ничего страшного нет. Представим себе, что у нас есть 5 деталей и 3 станка, при этом время обработки первой детали составляет 10 часов, а остальных — 2 часа. Тогда, пока будет обрабатываться первая деталь на первом станке, остальные (с запасом!) могут быть обработаны на втором станке, а третий станок не нужен.
 
М-м-м... Э-э-э...Ничего так задачка с беклнецным количеством неизвестных!
А ничего так, что имеется определённая технологическая последовательность обработки каждой детали? Например, нельзя нарезать внутреннюю резьбу не просверлив отверстие подходящего диаметра. Тут нужно сначала составить технологическую карту обработки каждого типа деталей, а уж потом распределять станки. Хотя... Если мы изучаем программирование, а не технологию... Можно и так, как предложил Владимир Игоревич.

P.s. Катюха, попадёшь к нам на форум, узнаешь много нового. ;)
 
АГА! Тяжёлая артиллерия подтянулась!
Тут нужно сначала составить технологическую карту обработки
Или, для начала, в условиях оговорить, что все-ли детали одинаковые или столько-то видов деталей, если видов несколько, то, хотя-бы, к примеру, оговорить процентное соотношение по трудоёмкости изготовления этих видов деталей. Думаю - как-то так. Иначе - по воде вилами.
 
все-ли детали одинаковые или столько-то видов деталей, если видов несколько, то, хотя-бы, к примеру, оговорить процентное соотношение по трудоёмкости изготовления этих видов деталей
Ну а я о чём выше написал-то?
если детали одинаковые, то в каждой группе будет n%m деталей, хотя есть подозрение что всё не так очевидно и детали разные
 
Ничего так задачка с беклнецным количеством неизвестных
Да не, Николай, с точки зрения программирования "черного ящика" количество неизвестных в этой задаче всё-таки конечное и ограничивается значением n
По условию:
станков m
деталей n
время обработки одной детали tj
j выбирается из списка {1..n}, то есть для каждой детали в списке назначено своё время обработки.
Решение задачи можно свести к сортировке списка (массива) по убыванию и последующему распределению элементов по времени обработки.
Есть ещё идея одна: проссумировать элементы списка, разделить сумму на количество станков, тем самым получаем среднюю нагрузку на 1 станок, потом перебрать значения времени обработки деталей в сравнении с вычисленной средней нагрузкой.
 
АГА! Тяжёлая артиллерия подтянулась!
И это ещё Македоныча нет снами. Он бы сейчас точно "развернул" на примере курей. ;)

Детали д.б. разнотипные, станки тоже. Иначе задача не имеет смысла. Так вот и надо бы определиться с типами.
 
Коля, ну что за трёп, ей-Богу? Задачка всё-таки на программирование, а не на составление реальной технологической карты.
Детали д.б. разнотипные
Так и есть. Характеризуются разными (данными!) временами обработки.
Это ещё зачем? По условию задачи станки одинаковые, смысл задания — оптимально их загрузить.
Иначе задача не имеет смысла.
Очень даже имеет. Условия вполне достаточны для однозначного решения.
 
Есть ещё идея одна: проссумировать элементы списка, разделить сумму на количество станков, тем самым получаем среднюю нагрузку на 1 станок, потом перебрать значения времени обработки деталей в сравнении с вычисленной средней нагрузкой.
Лёша, так это то же самое, что я и предлагаю. И сумма (T), и "средняя загрузка" (T/m) у меня фигурируют. Единственно, я даю конкретный алгоритм перебора (сверху вниз по упорядоченному массиву).
 
Такие умы задействованы в данной теме, а Катюха со вчерашнего вечера даже не появилась. :(
 
Назад
Сверху