Ограничение итерации SciPy ВороногоPython

Программы на Python
Ответить
Anonymous
 Ограничение итерации SciPy Вороного

Сообщение Anonymous »

Я рассматриваю различные способы балансировки точек в заданном пространстве, и меня манила итерация/релаксация Вороного (также известная как алгоритм Ллойда).
Однако при использовании SciPy Voronoi , точки, кажется, вытекают из границы и распространяются в известную вселенную, что у меня вообще не работает!
Следующее создает десять точек в регионе [-0.5,0.5], но через 100 поколений они распространились на область -800k ...600k (в зависимости от стартовых условий.
Я надеюсь на равномерно распределенный набор точек в пределах [-0.5,0.5 ].
import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
from random import random

if __name__ == '__main__':

points = [[random()-0.5, random()-0.5] for pt in range(100)]
voronoi = None

for i in range(60):
voronoi = Voronoi(np.array(points))
points = []

for reg in voronoi.point_region:
if len(voronoi.regions[reg]) > 0:
points.append(np.mean([voronoi.vertices for i in voronoi.regions[reg] if i >= 0], axis=0))

plt = voronoi_plot_2d(voronoi, show_vertices=False, line_colors='orange', line_width=2, line_alpha=0.6, point_size=2)
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/791 ... on-bounded
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»