粒子群 多目标 matlab_matlab 粒子群求解三角形垂心位置

续 https://www.toutiao.com/i6766960319995576843/

  1. 设定三角形A顶点的坐标为 (x1,y1);(x2,y2);(x3,y3);随机初始化;计算得知垂心到三个顶点距离为:

R=(((x1^2 - 2*x1*x2 + x2^2 + y1^2 - 2*y1*y2 + y2^2)*(x1^2 - 2*x1*x3 + x3^2 + y1^2 - 2*y1*y3 + y3^2)*(x2^2 - 2*x2*x3 + x3^2 + y2^2 - 2*y2*y3 + y3^2))/(4*(x1*y2 - x2*y1 - x1*y3 + x3*y1 + x2*y3 - x3*y2)^2))^(1/2);

  1. 固定 R, 利用遍历x,y坐标轴 绘制,误差z(三个顶点到坐标(x,y)的距离和R 的差的绝对值),其3d 图为
026e0788f8b74dc880e6db5a70ce9c37.png
  1. 初始化n个 粒子群 points ,计算每个粒子的误差,并且从小到大排序。
  2. 从群体中任取另外两个粒子,并获取到从适应度低的到高的两个粒子的空间向量p。以适应度最好的粒子为基准,加上每个向量p; 得到一个·新的粒子群;排序,筛选前n个;并且反复迭代第4步,直到所有粒子位置叠合。得到结果图:
f9a9541775bfcba00f08f04d461249cb.gif
x1=rand()*30;x2=rand()*30;x3=rand()*30;y1=rand()*30;y2=rand()*30;y3=rand()*30;p3=[x1,x2,x3;y1,y2,y3];triangle_x=[x1,x2,x3,x1];triangle_y=[y1,y2,y3,y1];% figurefill(triangle_x,triangle_y,'b');% mx0=rand()*60;% my0=rand()*60;points = ceil(rand(20,4)*60);for i= 1:size(points) x=points(i,1); y=points(i,2); R=points(i,3); hold on plot(x,y,'r.') points(i,4)= countDev(p3,[x,y],R);endF=getframe(gcf);I=frame2im(F);[I,map]=rgb2ind(I,256);imwrite(I,map,'test.gif','gif','Loopcount',inf,'DelayTime',0.6);% pointspoints = sortrows(points,4);min00 = points(1,4);pz = size(points,1);tp = zeros((pz-1)*(pz-2)/2,4);for time=1:20 tpp=1; cla hold on fill(triangle_x,triangle_y,'b'); for rn=2:pz-1 for rn2=rn+1:pz % tp(tpp,:) = points(1,:)+ (points(1,:)- points(rn,:))+(points(1,:)- points(rn2,:)); tp(tpp,:) = points(1,:) + (points(rn,:)- points(rn2,:)); % + (points(1,:)-) x=tp(tpp,1); y=tp(tpp,2); tp(tpp,3)=abs(tp(tpp,3)); R=tp(tpp,3); % [rn,rn2] %hold on plot(x,y,'r.'); tp(tpp,4)= countDev(p3,[x,y],R); % if tpp==1 % plot(points(rn,1),points(rn,2),'r.'); % plot(points(rn2,1),points(rn2,2),'r.'); % plot(points(1,1),points(1,2),'b.'); % plot(tp(tpp,1),tp(tpp,2),'g.') % end tpp=tpp+1; end end % plot3(tp(1,1),tp(1,2),tp(1,4),'r.'); tp=sortrows([tp],4);%;points  % for ii=1:size(tp,1) % if tp(ii,4) > min00 % [time,ii,size(tp,1)] % break % end % end min00 =tp(1,4); points=tp(1:pz,:); % 00 F=getframe(gcf); I=frame2im(F); [I,map]=rgb2ind(I,256); imwrite(I,map,'test.gif','gif','WriteMode','append','DelayTime',0.6); pause(0.9);end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php hasmany,浅谈laravel orm 中的一对多关系 hasMany

个人对于laravel orm 中对于一对多关系的理解文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论。 在 comment 表中有字段 article 记录评论所属文章,文…

C类型转换

当执行算术运算时,如果类型不同都会发生类型转换 1、如果整形转换为signed不丢失数据,就转换为signed.否则需要转换为unsigned 如: 一类型为signed int,另一类型为unsigned short,因为signed可以容纳unsigned short的全部值,所以unsigned sho…

python多级字典_Python多层字典取值

#! /usr/bin/python# coding:utf-8"""author:Bingo.hefile: get_target_value.pytime: 2017/12/22"""def get_target_value(key, dic, tmp_list):""":param key: 目标key值:param dic: JSON数据:param tmp_list: 用于存储获取的数…

CSerialPort类定义的消息

CSerialPort类定义的消息 消息名称消息号功能说明WM_COMM_BREAK_DETECTEDWM_USER1检测到输入中断WM_COMM_CTS_DETECTEDWM_USER2检测到CTS(清除发送)信号状态改变WM_COMM_DSR_DETECTEDWM_USER3检测到DSR(数据设置准备就绪)信号状态…

【转】Windows Server2008 R2下安装Oracle 10g

因开发环境需要,在Windows Server 2008 R2 Enterprise64位系统上安装Oracle 10g。去Oracle 官方网站下载了Oracle Database 10g Release 2 (10.2.0.4) for Microsoft Windows Vista x64, Microsoft Windows Server 2008 R2 x64, Windows 7 x64。 可刚执行安装&am…

移植libmxml到(arm-linux)

官方网站 http://www.minixml.org/ 下载源码:mxml-2.6.tar.gz 解压缩: tar -zxvf mxml-2.6.tar 进入目录mxml-2.6后配置属性 ./configure --enable-shared --hostarm-linux make 编译后会出现一个小错误。不用理会,因为目前编译是在A…

mysqlworkbench导入sql文件_将sql脚本文件导入数据库

一、用cmd的调试环境导入.sql文件中的数据:WinR键打开cmd输入:MySQL -u root -p 输入密码:*******进入MySQL后MySQL>show databases; --查看所有数据库MySQL>create database mydatabase; --创建数据库 MySQL>use mydata…

linux创建目录的语句,Linux的 文件 和 目录 管理(基本语句)

包括了文件和目录的创建、删除、修改,权限、压缩、搜索、分区、挂载简单的一些命令:【 pwd 】查看当前所在目录【 cd .. 】上级目录【 cd ~ 】当前用户的家目录【cd -】上次打开目录(回看)【 rmdir 目录名】删除空目录【du -sh 文件或目录】查看文件或目…

win8开发中需要用到一些系统版本之类的统计信息,总结如下。

1.获取软件的版本号,这个比较简单: Package package Package.Current; PackageId packageId package.Id; PackageVersion version packageId.Version; string version String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build…

sql怎么读_大白话讲解脏写、脏读、不可重复读和幻读

一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决我们来看看…

Linux显示txt文件,如何在Linux中显示文本文件中的某些行?

sed -n 10000000,10000020p filename你可能能够加快这一点:sed -n 10000000,10000020p; 10000021q filename在这些命令中,选项-n使sed“抑制模式空间的自动打印”. p命令“print [s]当前模式空间”和q命令“立即退出[s] sed脚本而不再处理任何输入……”引号来自sed…

Android上试用Linphone(Free SIP VOIP Client)

1. 下载Linphone apk并且安装到两个Android手机上http://www.linphone.org/eng/download/packages/android.html2. 申请两个免费的SIP帐号进行测试https://www.ekiga.net/3. 在每个Android手机上分别配置Linphone应用程序点击Settings菜单, 在SIP Account界面分别配置如下:User…

greensock包使用

greensock包使用 官网: http://www.greensock.com/tweenlite/ 新的遮罩类:BlitMask类 http://www.snorkl.tv/2011/10/use-blitmasks-wrap-feature-for-easy-bitmap-scrolling-and-looping/ 转载于:https://www.cnblogs.com/tinytiny/archive/2013/01/10/…

esp8266 micropython oled_micropython(4):使用ESP8266 控制 oled 屏幕,并显示 helloworld 字符...

目录前言1,关于esp 8266 和 oled2,使用lib库驱动 1306 4pin led3,总结前言相关micropython 全部分类:https://blog.csdn.net/freewebsys/category_9670462.html本文的原文连接是:https://blog.csdn.net/freewebsys/article/detail…

linphone-android移植

一:到网站上下载linphone-android的源码: http://www.linphone.org/eng/download/git.html linphone-android对应的git地址是: 在虚拟机中敲入如下命令 git clone git://git.linphone.org/linphone-android.git --recursive 记住一定要把rescursive给带上&…

debian 升级linux内核,Debian8升级内核到4.5

本文讲述如何升级Debian8的内核到4.5版本0x01:去linux kernel官网https://www.kernel.org/下载4.5的内核,选择tar.xz格式0x02:想办法把下载好的包弄进你的虚拟机或...直接你的物理机0x03:解压有的朋友可能没见过tar.xz格式的包&am…

jQuery.validate.js API

名称 返回类型 描述 validate(options) 返回:Validator 验证所选的 FORM valid() …

一个小公司老板的日常管理

1. 小公司如何留住骨干: 2.关于授权 3.有的钱不能省 5.关于招聘 6.老板尽量唱红脸 7.公司里的亲戚 8.当老板和开车 9.按时发工资 10.学会说“不” 11.不要在公司内部奢望交朋友 12.避免当场做决定 13.政策的制定 14.矬子里拔将军 15.有些事情越透明越好 16.发劳保用…

软件安全测试报告模板_软件测试工程师经典面试题

软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件…

linux怎么删除exe文件夹,ubuntu linux 批量删除文件

sudo sucd /find / -name "*google-music*" -exec rm -rf "{}" \; 注:分号是必需的find [目录名] -name "文件名" -exec rm -rf "{}" \;搜索删除文件,例如:find / -name *.raw -exec rm -rf &…