Добрый день. Есть задача-есть несколько(каждый раз число разное)однофазных потребителей с заданной мощностью(столбец А), нужно их "раскидать" таким образом чтобы напряжение на каждой фазе L1,L2,L3(столбцы C,D) было одинаковое насколько это возможно. Этот расчет требуется чтобы не было перекоса по фазам. Есть ли у кого то наработки по этому поводу или мысль как это реализовать?И самое главное чтобы макрос рядом с каждым значением подписывал на какую фазу он раскинул эту нагрузку! Т.е. есть десяток устройств,каждый со своей мощностью, вот алгоритм и должен сначала оптимально рассчитать что и куда раскинуть,а потом рядом подписать, чтобы после этого на электрической схеме было понятно куда эту нагрузку сажать. Если тема слишком сложна, чтобы "выполнить ее на добровольной основе", прошу закрыть тему и извиняюсь что отнял ваше время.
Это вариант задачи о рюкзаке или транспортной задачи. Есть несколько алгоритмов (помимо тупого перебора) Выбор конкретно алгоритма зависит от входящих данных и от критичности конечного результата.
Я бы решал "жадным алгоритмом": 1. Отсортировать последовательность по убыванию 2. Посчитать сумму последовательности 3. Взять с начала списка максимально возможное количество элементов, чтобы их сумма не превышала сумму/3 4. Оставшиеся так же включить во вторую группу 5. оставшиеся - так же в 3ю
Если входящие данные более-менее однородные и не важно, по сколько элементов в группе, то это самое простое, если большая дисперсия - нужно что-то посложнее
Ух ты,офигенно!То что нужно! Данные всегда будут вводится в столбец в виде чисел.
Единственное, что хотелось бы еще, чтобы алгоритм,формула или условное форматирование "показывали" какая нагрузка на какую фазу "взята".Можно и так конечно все увидеть,где что,но хотелось бы автоматизации Хотя подозреваю что тут нужно будет добавлять столбец с именами нагрузки(типа QF1,QF2,QF3 и т.д.),а то получается будут 2 одинаковые нагрузки 100Вт и алгоритм в ступор войдет куда чего писать...
Делал давно похожую задачу, распределение нагрузок по фазам, осталось только видео с примером решения https://yadi.sk/i/jFfJFZF-k8jfo файла не осталось (заказчик отказался оплачивать работу), но если очень нужно, то могу восстановить решение.
Данную задачу можно решить разными способами: Полным перебором - сложность алгоритма 6^n, где n - кол-во проводов. Подойдет, когда проводов не более 10. Будет найдено оптимальное решение, если оно есть.
Если проводов более 10, то решение находится с помощью динамического программирования, сложность в данном случае m*n, где m - суммарная нагрузка, n - кол-во проводов. Решается только по целочисленным данным, и практически не зависит от количества проводов, т.к. сложность линейная, а не степенная.
2 "MCH": да ладно, не утруждайтесь, тут уже предложили неплохие решения. Вы видимо и так очень заняты, раз на 3-4 последних моих письма, которые я вам пол года назад посылал, не ответили-по поводу "нашего" проекта 2 "SAS888": очень неплохо,единственное подправить надо чтобы если нагрузок больше чем 32 тоже работало... 2 "Андрей VG": что то в документе нет ни кнопок ни формул, вижу что в проекте есть макросы, но где что и как работает, непонятно,просто книга открывается и цифры.
Извините телепат в отпуске, можно было сразу наверное описать как и что делать?Или у вас буквы на клавиатуре платные?
P.S.Я понимаю что с одной стороны не очень красиво пререкаться с человеком, который вроде как помочь хочет,но с другой я в упор не понимаю людей которым не влом писать сообщения про "Вы что и пальцы за меня загибать будете?",вместо того чтобы сразу два предложения расписать как ваш метод работает...
legionercheg написал: но с другой я в упор не понимаю людей которым не влом писать сообщения
Так и вам "влом" воспользоваться поиском и писать претензии без какой-либо благодарности помогающим вам людям. Это форум, а не бюро "сделайте всё за меня". Впрочем, оно есть здесь, коль вы не хотите принимать никакого собственного участия. Помощь предполагает и участие того, кто эту помощь просит.
Ё-моё, да как вы все не поймете, вы только потом написали что нужно создать кнопку и привязать к ней макрос, а сразу было тяжело это сделать?Мне не сложно сделать кнопку с макросом,мне ИМЕННО нужно было знать что делать!А то файл дали без каких либо объяснений,я подумал что там так же как у SAS888 все есть,поэтому когда не нашел ни кнопок ни формул отписался по этому поводу, причем без каких либо упреков и наездов!
надо чтобы если нагрузок больше чем 32 тоже работало...
Посмотрите прикрепленный файл. Строку "Ток" заполнять вручную. Количество значений в этой строке не ограничено. Строку "№ потребителя" заполнять не нужно (заполняется автоматически при расчете).
Андрей VG, спасибо. SAS888, да,отлично,спасибо большое, именно то что я и просил.Браво! Skif-F, именно по моей теме,вы правы)Ушел читать ваши сообщения в теме
Уважаемый, SAS888. Подскажите, пожалуйста, как сделать расчет макроса из вертикальной таблицы состоящей из двух столбцов (ток/номер фазы). Не сильно силен в VBA. Исходники в таком формате. А ваш макрос очень понравился.
Решил проблему так: функция заполнения моих данных в таблицу из примера. выполнение макроса из "Распределение_2.xls" функция вывода результата в свою таблицу)))