%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Requires yalmip %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Part 1 % Spin Glass Chain %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N = 20; b = randn(1,N); B = diag(b); J = 0.5*([B(:,end) B(:,1:end-1)] + [B(end,:); B(1:end-1,:)]); c_min_e = -sum(abs(b)); c_min_sdp = sdp(J); c_min_ann = anneal(J); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Part 2 % Spin Glass Grid %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% n = 5; N = n*n; J = zeros(N); for i = [1:N] if (mod(i,n) == 0) J(i-n+1,i) = randn(); else J(i,i+1) = randn(); end if (i <= N - n) J(i,i+n) = randn(); else J(i,i-N+n) = randn(); end end b = J(J~=0); J = 0.5*(J + J'); g_min_e = -sum(abs(b)); g_min_sdp = sdp(J); g_min_ann = anneal(J); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Print Results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% disp(sprintf('-----------------------------------------\n')); disp(sprintf('Spin Glass Chain')); disp(sprintf('min energy: %f',c_min_e)); disp(sprintf('sdp min energy: %f',c_min_sdp)); disp(sprintf('anneal min energy: %f',c_min_ann)); disp(sprintf('\n-----------------------------------------\n')); disp(sprintf('-----------------------------------------\n')); disp(sprintf('Spin Glass Grid')); disp(sprintf('min energy: %f',g_min_e)); disp(sprintf('sdp min energy: %f',g_min_sdp)); disp(sprintf('anneal min energy: %f',g_min_ann)); disp(sprintf('\n-----------------------------------------\n'));