Страницы: 1
RSS
Равномерно распределить числа на указанное количество столбцов.
 

Задался вопросом сортировки чисел, но не нашел инструментов/формул.
Например, имеем ряд автоматов для электрощита. Уже понятна мощность нагрузки по каждому из них, а т.к. электричество заводится на 3 фазы типом "треугольник", то есть желание (хотя бы "тупо по числам") "равномерно" распределить автоматы по фазам.
(Понятно, что это всё лишь условно и прежде всего следует еще ориентироваться на % средней нагрузки на тот или другой автомат. Хочется хотя бы так иметь возможность отсортировать таковые без электрика  :) ).

Уже читал отличную статью про подбор слагаемых. Да и задача кажется простой. Но на ум ничего не приходит. Файл шаблон прилагаю.
У кого какие есть идеи?

 
И Вам, здравствуйте!
Формула массива вводится одновременным нажатием Ctrl+Shift+Enter. Вставить в G3 и протянуть вправо и вниз:
Код
=МАКС((СУММ($A$2:$A$14)/3-СУММ(G$2:G7)+МИН($A$2:$A$14)/3>=$A$2:$A$14)*(СЧЁТЕСЛИ($F8:F8;$A$2:$A$14)=0)*(СЧЁТЕСЛИ($G$2:$I7;$A$2:$A$14)=0)*$A$2:$A$14)

*Все числа должны быть разными.

Изменено: Светлый - 15.07.2021 14:38:13
 
То ли лыжи ...
В общем пока получили "нолики".
+ мне нужно что бы распределение было независимо от того, есть одинаковые числа или нету.
Изменено: vikttur - 15.07.2021 14:54:44
 
Цитата
timahvey написал:
В общем пока получили "нолики".
Цитата
Светлый написал:
Формула массива вводится одновременным нажатием Ctrl+Shift+Enter.
Несколько алгоритмов. В жёлтых сравнение.
 
Светлый, благодарю!  "Вариант 3" это и есть искомое.
Но хотелось бы иметь возможность несколько таких комбинаций рассматривать + задавать уровень не равномерности (я это ошибочно назвал "Допустимая погрешность"). Это возможно?
Да и как определить, сколько может быть таких комбинаций?
Изменено: timahvey - 15.07.2021 15:24:51
 
Цитата
timahvey написал:
Да и как определить, сколько может быть таких комбинаций?
13 чисел на 3 корзины - 1,5 миллиона вариантов (3^13 = 1 594 323)
Можно все их перебрать и выбрать лучшее или допустимое
"вручную" подобрал следующее решение (относительно равномерно):
0,82+8,66+2,803+2,54 = 14,823
4,2+0,87+6,05+3+0,7 = 14,82
2,136+0,289+9,1+3,269 = 14,794
 
Цитата
MCH написал:
"вручную"
Оптимальный вариант формулами. Сортировать необязательно. Значения могут быть одинаковыми. Формула работает только для 13 значений.
Цитата
timahvey написал:
"Вариант 3" это и есть искомое
Третий как раз худший из трёх для этого набора значений. Лучший - второй, не считая оптимального.
*
Цитата
timahvey написал:
хотелось бы иметь возможность несколько таких комбинаций рассматривать
Вот четыре различных комбинации уже есть.
Изменено: Светлый - 15.07.2021 16:32:08
 
timahvey, а время включения этой нагрузки учитывается, или Вы считаете, что всё будет включено постоянно?  
 
Цитата
Светлый написал:
Третий как раз худший из трёх
Он единственный, который считает еще более менее.
Остальные же вообще не распределяют все числа. (а тогда какой в них смысл?)

Требуется максимально равномерно (по сумме) разложить по корзинам числа из первого столбца.
Цитата
msi2102 написал:
Вы считаете, что всё будет включено постоянно?
Да, к сожалению пока идёт учёт именно на это.
Более динамически просчитать - это нужно уже использование формул учёта среднестатистического потребления. Но и этого мне достаточно, т.к. на каждый из диффов идёт похожая нагрузка. Т.е. сильных перекосов, надеюсь, не получим. Опять же еще очно пересматриваю полученные результаты.
 
Вариант решения через "Поиск решения" при котором пытаемся найти оптимальное решение (наименьшее отклонение от среднего)
Модель линейная, поэтому считает относительно быстро
Можно использовать как стандартный "Поиск решения" так и OpenSolver
 
MCH, благодарю!
 
Цитата
timahvey написал:
Остальные же вообще не распределяют все числа.
Жестковатое условие задал в одну треть минимального значения. Можно сделать в 1/2 или 2/3. Заменить фрагмент +МИН($A$2:$A$14)/2>= на +МИН($A$2:$A$14)*2/3>
Можно вообще не делить, но тогда разброс может большой получиться.
*Можно множитель (точность) задать в отдельной ячейке. +МИН($A$2:$A$14)*$D$5> и там значение от 0,5 до 0,99
Файл перезалил.
**Для вариант 3 массивная формула:
Код
=НАИБОЛЬШИЙ(Ч(+$A$2:$A$90);-1^СТРОКА()*(СТОЛБЕЦ()-СТОЛБЕЦ($T3))+СТРОКА(S1)*3-1)
Для вариант 1 массивная формула:
Код
=НАИБОЛЬШИЙ((СУММ($A$2:$A$14)/3-СУММ(G$2:G2)+МИН($A$2:$A$14)*$D$5>$A$2:$A$14)*(СЧЁТЕСЛИ($F3:F3;$A$2:$A$14)=0)*(СЧЁТЕСЛИ($G$2:$I2;$A$2:$A$14)=0)*$A$2:$A$14;(4-СТОЛБЕЦ(A3))^ЕЧЁТН(СТРОКА()))


Изменено: Светлый - 16.07.2021 13:27:07
 
Светлый, благодарю!
Страницы: 1
Наверх