基于MATLAB利用模拟退火算法解决费马点问题
2017-07-16 20:17
477 查看
数据来源:安徽各市的坐标。安徽内一点到所有各市的距离最短。
代码实现了各点的连线组成不交叉的普通多边形。实现图形的显示,将各市连接。
代码如下
距离计算函数
axis1.txt文件过大,上传不方便,请看链接这里写链接内容
代码实现了各点的连线组成不交叉的普通多边形。实现图形的显示,将各市连接。
代码如下
%费马点问题求解 %给n个点,找出一个点,使这个点到n点的距离之和最小,也就是求费马点。 function SA=SA_fun(T,delta,x0,y0,eps) % FPI=fopen('axis.txt','rt'); % NELEM=fscanf(FPI,'%d',1); % s(1,:)=fscanf(FPI,'%f',[1,NELEM]); % s(2,:)=fscanf(FPI,'%f',[1,NELEM]); [a1,a2,a3,s(1,:),a5,s(2,:)]=textread('axis1.txt','%s%s%s%f%s%f'); %fid=fopen('data1.txt');%以只读模式打开该文本问价你,为fscanf和textscan函数的读取操作做准备 %dat3=fscanf(fid,'%g',[4,inf])%采用fscanf函数读取该文件,逐列读,逐行显示,行列互换 i=1; while (T>eps) for j=1:100 X=max(s(1,:)); Y=max(s(2,:)); x=min(s(1,:)); y=min(s(2,:)); x3=abs(X-x)*rand(1)+x;%保证x1在x0附近[-0.5,0.5]之间。 y3=abs(Y-x)*rand(1)+y; dE=fun_SA(s,x3,y3)-fun_SA(s,x0,y0); if (dE<=0) x0=x3;%移动后得到优解 y0=y3; else if(exp(dE/T)<rand(1))%以一定概率移动。 x0=x3; y0=y3; end end i=i+1; end T=T*delta; end SA=fun_SA(s,x0,y0); %********************************************** %********************************************** p=s';%产生n个二维坐标 cen=mean(p);%Average or mean value求平均值。 ang=atan2(p(:,1)-cen(1),p(:,2)-cen(2)); %每个点到坐标中心极角 %atan函数四象限反正切。 p=[p,ang];%妙,不断拓展P空间。 p=sortrows(p,3);%按极角排序 hold on; %连接各点 plot(p(:,1),p(:,2),'color','black'); p=circshift(p,1); plot(p(:,1),p(:,2),'color','black'); m=length(s); for i=1:m line([x0,s(1,i)],[y0,s(2,i)],'color','red'); hold on; end
距离计算函数
function f=fun_SA(s,x,y) f1=0; m=length(s); for i=1:m f1=f1+sqrt((x-s(1,i))^2+(y-s(2,i))^2); end f=f1;
axis1.txt文件过大,上传不方便,请看链接这里写链接内容
相关文章推荐
- 利用Matlab 解决二维矩阵问题
- 模拟退火算法解决01背包问题(matlab实现)
- 基于MATLAB的有限差分法解决二位瞬态导热问题
- 基于Matlab的霍夫直线检测问题的解决
- MATLAB(1)基于遗传算法解决最优化问题及相应的MATLAB遗传工具箱使用
- 5*.使用模拟退火算法解决“费马点”问题
- 利用MATLAB解决人工神经网络模拟预测问题研究
- 基于MATLAB的模拟退火算法求解TSP问题
- 利用bintray-release插件上传到Bintray- HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]问题解决
- 利用深度搜索法解决八皇后问题
- 解决在windows下配置Matlab版本的DPM出现round函数重载错误的问题
- 利用堆栈解决迷宫问题
- 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
- Android 没有SD卡,利用手机存储下载、自动安装,解决Parse error when parsing manifest问题
- 试着用React写项目-利用react-router解决跳转路由等问题(二)
- 基于java在服务端解决手机上传竖拍照片旋转90度问题
- 基于.NET BitmapImage 内存释放问题的解决方法详解
- 利用js的cookie来解决domino中frame中的页面返回异常的问题!
- 利用controler解决Struts的编码问题
- 利用“宏元编程”解决重复问题