佳点集初始化种群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
% Good Node Set Matalb-code<br>function [GD] = Goodnode(M,N)
% M is the number of points; N is the dimension
if (nargin==0)
    M=100;
    N=2;
end
%%
tmp1 = [1: M]'*ones(1, N);
Ind = [1: N];
prime1 = primes(100*N);
[p,q]=find(prime1 >= (2*N+3));
tmp2 = (2*pi.*Ind)/prime1(1,q(1));
tmp2 = 2*cos(tmp2);
tmp2 = ones(M,1)*tmp2;
GD = tmp1.*tmp2;
GD = mod(GD,1);
%% For debuging
plot(GD(:,1),GD(:,2),'*');
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from matplotlib import pyplot as plt
import numpy as np
import sympy
 
 
def GoodNode(m, d, lb, ub):
    """
    :param m: 点的数目
    :param d: 点的维数
    :param lb: 下界
    :param ub: 上界
    """
    temp1 = np.arange(1, m + 1).reshape(-1, 1) * np.ones((1, d))
    ind = np.arange(1, d + 1)
    prime = list(sympy.sieve.primerange(0, 100 * d))
    idx = np.where(np.array(prime) >= (2 * d + 3))[0]
    temp2 = (2 * np.pi * ind) / prime[idx[1]]
    temp2 = 2 * np.cos(temp2)
    temp2 = np.ones((m, 1)) * temp2
    gd = temp1 * temp2
    gd = np.mod(gd, 1)
    pop = lb + gd*(ub - lb)
    return pop
 
 
if __name__ == "__main__":
    p = GoodNode(100, 2, -100, 100)
    plt.figure()
    plt.scatter(p[:, 0], p[:, 1], marker="*")
 
    p1 = -100 + np.random.rand(100, 2) * 200
    plt.figure()
    plt.scatter(p1[:, 0], p1[:, 1], marker=".")
    plt.show()

posted @   编码雪人  阅读(3696)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示