Algorithm 表示覆盖子集。作为加权函数,您可以使用位计数(覆盖子集中的点数),例如,对于育种,您可以混合两个位图,随机选择两个子串,然后修复它们,以确保它们覆盖子集。@Christian,实际上,我正试图编写一个完整的解决方案:-),因此您将其视为集合覆盖问题。我希望

Algorithm 表示覆盖子集。作为加权函数,您可以使用位计数(覆盖子集中的点数),例如,对于育种,您可以混合两个位图,随机选择两个子串,然后修复它们,以确保它们覆盖子集。@Christian,实际上,我正试图编写一个完整的解决方案:-),因此您将其视为集合覆盖问题。我希望,algorithm,geometry,selection,subset,sampling,Algorithm,Geometry,Selection,Subset,Sampling,表示覆盖子集。作为加权函数,您可以使用位计数(覆盖子集中的点数),例如,对于育种,您可以混合两个位图,随机选择两个子串,然后修复它们,以确保它们覆盖子集。@Christian,实际上,我正试图编写一个完整的解决方案:-),因此您将其视为集合覆盖问题。我希望你能找到好的育种/变异方法。。。特别是育种。我看不出你的方法如何满足所述条件(对于A中的每一个x,B中有一个y,因此dist(x,y)


表示覆盖子集。作为加权函数,您可以使用位计数(覆盖子集中的点数),例如,对于育种,您可以混合两个位图,随机选择两个子串,然后修复它们,以确保它们覆盖子集。@Christian,实际上,我正试图编写一个完整的解决方案:-),因此您将其视为集合覆盖问题。我希望你能找到好的育种/变异方法。。。特别是育种。我看不出你的方法如何满足所述条件(
对于A中的每一个x,B中有一个y,因此dist(x,y)
)。我也找不到您正在使用的python
h2
包。我的小方法是反向操作的——它创建的选择对某些d语言有效。抱歉,
h2
是我收集的可重用代码块。。。我不知道我用过它。对这种方法的一个简单改进是使用三角形网格而不是正方形网格。这样,球之间的重叠就少了。@salva,这对于二维欧几里德度量可能更好,尽管六边形更好。但是OP似乎想要一个更高维度的东西——你能马上知道18维的瓷砖形状是什么吗?=)六边形网格和三角形网格是具有相同几何结构的两个视图。只要画一个六边形网格,然后把相邻六边形的中心连接起来,就可以找到它的三角形等价物。对于更高的维度,三角形/四面体泛化是最重要的。
param N, integer, > 0;
set C{1..N};

var x{i in 1..N}, binary;
s.t. cover{i in 1..N}: sum{j in C[i]} x[j] >= 1;
minimize goal: sum{i in 1..N} x[i];