除非我没有记错,否则所有颜色都将在RGB立方体的表面上,原因是所有电荷都出现在电导体的表面上。这建议了以下确定颜色的方法:
- 将RGB颜色空间解释为XYZ笛卡尔空间;
- 将候选颜色解释为带电粒子,例如电子;
- 通过模拟退火找到系统的低能态;
对于,高度精确的仿真应该是相当快; 您可以使用Runge Kutta技术,甚至只需很小的时间步长即可获得Euler的方法(更容易实现/理解)。我可能会建议针对感兴趣的数值积分/正交技术的“数字食谱”系列。ñ 〜15
一旦粒子收敛,就可以通过将点解释为颜色来安排颜色。最初,粒子可以以很小的间距随机排列在立方体的表面上(有助于收敛和稳定性问题)。将小组放在多维数据集的面上应该可以。
为了避免陷入局部(而不是全局)最小值,可以在收敛后“脉冲化”一些小的随机电场,并查看系统是返回相同配置还是返回不同配置。在这种情况下,随机放置的粒子不太可能做到这一点,但有可能。
编辑:
正如评论中所指出的那样,在离散情况下,最优解决方案应仅位于表面上的假设可能并不适用于所有几何形状。
幸运的是,这与上述其他技术无关。粒子可以最初放置在任何地方。只是在成对的粒子之间留出一些空间以保持稳定性和覆盖性,然后使系统迭代以收敛,然后进行几次脉冲(强度可能会增加)以查看是否可以使系统收敛到某些不同的(可能更好)的配置。
还要注意,我相信这种方法将使“(成对的?)粒子对之间的平均距离”这样的值最大化。如果要最大化粒子对之间的最小距离或粒子对之间的一些其他平均值(几何?),则可能无法提供最佳解决方案。
无论如何,我觉得这种技术将为您提供一种简单的方法来提出一组近似最佳的颜色……在您的用例中,可能不需要实际的“最佳”解决方案。自然,如果需要精确且可证明是最优的解决方案,则数值模拟可能不是最佳方法。