Страницы: 1
RSS
Задача кластеризации.
 
Добрый день!  
 
Прошу помочь в решении следующей задачи:  
у меня имеется столбец из 52 чисел. Нужно разбить этот массив на три диапазона значений таким образом, чтоб ширина диапазона была минимальной (нужно минимизировать ширину максимально широкого из этих диапазонов).  
 
Возможно ли сделать это средствами Excel?  
 
Спасибо.
 
52/3=17,3333. Что у Вас "ширина диапазона"?
 
Допустим, диапазон [10;13,5]. Тогда его ширина - 3,5.
 
{quote}{login=vikttur}{date=27.07.2010 04:25}{thema=}{post}52/3=17,3333. Что у Вас "ширина диапазона"?{/post}{/quote}
 
имеется в виду поиск решения?  
в столбце СС д/б 1 или 2 или 3
 
Если построить график, ясно видно 2 "скачка". Видимо, надо определить положение этих скачков по разности соседних значений?
 
Нет, попробую сформулировать задачу точнее:  
 
в виде результата мне нужны три диапазона. К примеру:  
от 0,31 до 10  
от 10,47 до 27  
от 27,64 до 33,43  
 
Ширина диапазона 1 равна 9,69 (10-0,31), д. 2 - 16,53 (27-10,47), д. 3 - 5,79 (33,43-27,64). Максимальная ширина 16,53. Мне же нужно минимизировать эту максимальную ширину.  
 
Спасибо.  
 
 
{quote}{login=}{date=27.07.2010 04:34}{thema=}{post}имеется в виду поиск решения?  
в столбце СС д/б 1 или 2 или 3{/post}{/quote}
 
Не очень уверен, что это и будет решением.    
 
{quote}{login=Казанский}{date=27.07.2010 04:41}{thema=Yuri.M}{post}Если построить график, ясно видно 2 "скачка". Видимо, надо определить положение этих скачков по разности соседних значений?{/post}{/quote}
 
Если у Вас массив монотонно возрастающих чисел, то это будет решением, т.к. из диапазонов исключаются наибольшие разности. Вот что получается:  
 
Диап.1 5.26-0.31 = 4.96  
Диап.2 19.53-8.57 = 10.96  
Диап.3 33.43-8.27 = 6.43  
 
В приложенном файле почти все сделано вручную, но можно и формулы придумать.
 
Если практически вручную, то у меня по другому получилось:  
диапазон ниж гр            верх гр ширина  
1      0,306666667 9,526666667 9,22  
2             10        19,52666667 9,526666667  
3               27          33,43 6,43
 
Насколько я понимаю, никаких средств кластерного анализа в Excel нет?
 
Может, и есть, точно не скажу. Задача интересная, можно попробовать формульно, но завтра - дежурство кончается.  
 
Правильно ли понято?  
Диапазоны ячеек должны быть непрерывны.  
Данные в столбце В только в возрастающем порядке.  
Количество ячеек в диапазоне не играет роли.
 
{quote}{login=Yuri.M}{date=27.07.2010 04:42}{thema=Re: }{post}Нет, попробую сформулировать задачу точнее:  
 
в виде результата мне нужны три диапазона. К примеру:  
от 0,31 до 10  
от 10,47 до 27  
от 27,64 до 33,43  
 
Ширина диапазона 1 равна 9,69 (10-0,31), д. 2 - 16,53 (27-10,47), д. 3 - 5,79 (33,43-27,64). Максимальная ширина 16,53. Мне же нужно минимизировать эту максимальную ширину.  
 
Спасибо.  
post}{/quote}  
 
Как я понял задачу  
В данном примере количество значений в каждом диапозоне равен 21.  
поэтому и диапозоны - (1:21) (22:42) (43:52)  
Либо более четко формулируйте задачу
 
(43:52)=21?
 
{quote}{login=vikttur}{date=27.07.2010 05:58}{thema=}{post}(43:52)=21?{/post}{/quote}  
Должно быть 63, но количество значений всего 52, поэтому и берется последнее значение
 
1. Да, диапазоны ячеек должны быть непрерывны.  
2. Вообще говоря, данные могут быть расположены в любом порядке.  
3. Да, количество роли не играет, но их будет не более 52 (может быть меньше).  
 
{quote}{login=vikttur}{date=27.07.2010 05:47}{thema=}{post}Может, и есть, точно не скажу. Задача интересная, можно попробовать формульно, но завтра - дежурство кончается.  
 
Правильно ли понято?  
Диапазоны ячеек должны быть непрерывны.  
Данные в столбце В только в возрастающем порядке.  
Количество ячеек в диапазоне не играет роли.{/post}{/quote}
 
{quote}{login=Yuri.M}{date=27.07.2010 06:05}{thema=Re: }{post}1. Да, диапазоны ячеек должны быть непрерывны.  
2. Вообще говоря, данные могут быть расположены в любом порядке.  
3. Да, количество роли не играет, но их будет не более 52 (может быть меньше).  
 
{/post}{/quote}  
 
Количество возможных вариантов из 3 диапозонов для 52 ячеек составляе 1128  
необходимо их все перебрать (лучше через VBA) и найти нужноее решение.  
 
все возможные варианты можно найти с помощью цикла (к сожелению VBA не владею):  
 
k1 = 1  
k6 = 52  
FOR k3 = k1 + 2 TO k6 - 2  
FOR k5 = k3 + 2 TO k6 - 1  
k2 = k3 - 1  
k4 = k5 - 1  
...  
NEXT k5, k3  
 
где k1,k2  k3,k4  k5,k6 начальные и конечные позиции соответствующих диапозонов  
 
решение для данной задачи  
Диап ниж верх ширина  
1 0,31 9,53 9,22  
2 10,00 19,53 9,53  
3 27,00 33,43 6,43  
Макс 9,53  
 
решить задачу через надстройку Excel "Поиск решения" не получилось, т.к. не является задачей линейного программирования
Страницы: 1
Читают тему
Наверх