まず、これは宿題です。私は努力したと思いますが、コードではなくヒントを探しています。旅行セールスマン問題に対するHopfieldニューラルネットワークの問題点は何ですか?
問題は次のとおりです。演算式には、与えられたニューロンを変更するための4つのコンポーネントがあります。
- A)各都市が最大で1回訪問されるようにするための1つの部分。
- B)それぞれの位置(第1、第2、第3など)が多くとも1つの都市を持つようにするためのもの。
- C)アクティブなニューロンの総数が都市の数に等しいことを保証するための1つの部分。
- D)距離を最小にするための1つの部分。
重大な影響があるほど重い場合、ネットワークは無効なツアー(たとえば、A、D、どこも、E、C)に定住します。しかし、私はDの重みを減じることができ、コードは解を見つけることができますが、距離は最小です。
私はどんなアドバイスでも非常に感謝しています。私はしばらくの間、頭を叩いていました。このコードは、HopfieldネットワークでTSPを解決する方法を理解している人なら誰でも理解できるはずです。
ダスコード:
%parameters
n=5;
theta = .5;
u0 = 0.02;
h = .1;
limit = 2000;
%init u
u=zeros(n,n);
uinit = -u0/2*log(n-1); %p94 uINIT = - u0/2 * ln(n-1)
for i=1:n
for j=1:n
u(i,j) = uinit * (1+rand()*0.2-0.1); %add noise [-0.1*uInit 0.1*uINIT]
end
end
%loop
for index=1:limit
i = ceil(rand()*n);
k = ceil(rand()*n);
%runge kutta
k1 = h*du(u,i,k,0);
k2 = h*du(u,i,k, k1/2);
k3 = h*du(u,i,k, k2/2);
k4 = h*du(u,i,k, k3);
u(i,k) = u(i,k) + (k1 + 2*k2 + 2*k3 + k4)/6;
end
Vfinal = hardlim(V(u)-theta)
デュ()
function out=du(u,X,i,c)
dist = [0, 41, 45, 32, 32;
41, 0, 36, 64, 54;
45, 36, 0, 76, 32;
32, 64, 76, 0, 60;
32, 54, 32, 60, 0];
t = 1;
n = 5;
A = 10;
B = 10;
C = 10;
D = .0001;
AComp = A*sum(V(u(X,:))) - A*V(u(X,i));
BComp = B*sum(V(u(:,i))) - B*V(u(X,i));
CComp = C*(sum(sum(V(u)))-n);
DComp = 0;
before = i-1;
after = i+1;
if before == 0
before = 5;
end
if after == 6
after = 1;
end
for Y=1:5
DComp = DComp + dist(X,Y) * (V(u(Y,after)) + V(u(Y,before)));
end
DComp = DComp * D;
out = -1*(u(X,i)+c)/t - AComp - BComp - CComp - DComp;
V()
function out=V(u)
u0 = 0.02;
out = (1 + tanh(u/u0))/2;
これはクールな問題です。学期は終わりそうです。解決策を見つけましたか? –
いいえ、教授は悲しいことに、最も役に立たなかった。私はクラスの他の生徒と話しましたが、彼はそれを解決したとは思いません。 –