2016-07-12 4 views
1

폭이 w이고 높이가 h이고 영역이 A 인 사각형 경계 상자가 있습니다.동일한 크기의 원형 파이썬으로 사각형을 패킹

A-n*a이 최소가되도록 n 개의 동그라미 개수의 동그라미를 a 개 묶을 수 있습니다. 우리는 사각형 안에 포장 할 수있다 동일한 크기의 원의 최적의 수를 계산하는 방법 즉

,

내 사용 사례 : 내가 지리적 경계에 차량을 클러스터링을위한 kmeans 클러스터링 알고리즘을 사용하고 있습니다 상자. kmeans 알고리즘의 클러스터 수를 설정하려면 kmeans 알고리즘을 적용하기 전에 클러스터 수를 유도하는 한 가지 방법으로 원형 패킹을 실험하고 있습니다.

+1

는 참조 https://en.wikipedia.org/wiki/Circle_packing 및 https://en.wikipedia.org/wiki/Circle_packing_in_a_square –

+0

일부 고급형를 얻을 수 있습니다 귀하의 사용 사례와 kmeans 태그 추가 다른 클러스터로부터 최적의 클러스터 수를 결정하는 방법. 다음을 참조하십시오. https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set –

답변

1

편집 : 편집 : OP에 도움이되도록 편집하여 평면의 피팅 원에 따라 k- 평균 클러스터 수를 결정하고 덮개가없는 부분을 최소화 할 수 있습니다.

from math import sqrt, pi 

def get_approximate_k(rectangle_area, circle_area): 
    # Making use of the fact that in an infinite hexagonal packing, the packing ratio is (pi*sqrt(3)/6) 
    return int((rectangle_area * pi * sqrt(3))/(6 * circle_area)) 

print get_approximate_k(10*100, 12) # Returns 75 
+0

육각 패킹이 항상 최적의 것은 아닙니다. 위에 게시 한 위키 백과 링크를 참조하십시오. –

+0

지리적 경계 상자에서 차량을 클러스터링하기 위해 kmeans 클러스터링 알고리즘을 사용하고 있습니다. kmeans 알고리즘에 대한 클러스터 수를 설정하려면 kmeans 알고리즘 – Mechanic

+0

@tobias_k를 적용하기 전에 클러스터 수를 계산하는 한 가지 방법으로 원형 패킹을 실험하고 있습니다. 그러나 일반적으로 상자 크기가 볼 크기보다 큰 경우, 육각형 포장이 트릭을 수행합니다. 몇 년 전 고체로 분자 포장을 연구 한 이래로 적어도 내가 믿어 온 것입니다! –

관련 문제