粒子群 多目标 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,一经查实,立即删除!

相关文章

【转】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…

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 文件或目录】查看文件或目…

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

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

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…

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

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

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

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

OD使用教程20 - 调试篇20

OD使用教程20 - 调试篇20 让编程改变世界 Change the world by program 名词注释:Keygen为Key Generator的缩写,就是我们一般所说的注册机。是软件注册生成所需的注册码或序列号的程序。 keygen可以独立做一个可执行程序存在,也可以作为程序…

堡垒机 请确认是否安装oracle客户端_OracleOracle数据库的安装(超详细)

一、Oracle的安装对于新手来说安装Oracle这样的数据库,第一次还是会有些陌生的,我自己在安装的过程中也是遇到的很多的坑。(自己装了5遍 /(ㄒoㄒ)/~~ )由于我自己安装的是11g这个版本,所以下面以11g的下载安装为例1.下载Oracle数据库是有免费…

linux编译器项目,编译器架构 LLVM

LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技…

卡巴斯基安全浏览器_卡巴斯基杀毒软件被曝出用户上网痕迹泄露漏洞

近期,国外安全研究人员曝出卡巴斯基杀毒软件的脚本中存在一个独特而唯一的标识符,可导致用户在过去4年中访问过的每个网站都被泄露。该漏洞被标记为CVE-2019-8286,其中所涉及的独特标识可让被访问过的网站和第三方商业公司在线跟踪用户。更严…

栅格矢量化_学会用栅格系统,普通LOGO秒变高大上

经常看到很多 LOGO 初看一般,但只要加上了栅格线,感觉瞬间就上了一个档次。有个比较出名的例子,就是锤子手机的 LOGO。是不是觉得右边的栅格线加上之后,瞬间高大上了许多?那这些栅格线真的只能拿来展示吗?有…

移动端怎么让底部固定_移动端排名应该怎么做?两种匹配移动端实战排名干货分享!...

关于移动端优化的问题、最近一些兄弟一直在问我应该怎么做?毕竟现在是手机的时代、绝大部分情况下、PC显得有点鸡肋!在讲移动端排名之前、逆冬先来讲两个容易被大家搞错的问题(移动端)。1、我观察现在的移动端都是独立的http://m.xxx.com,是不是百度喜欢独立的移动…

Linux绘图函数与驱动,Linux中与驱动相关的ioctl函数

一: ioctl函数的作用ioctl用于向设备发控制和配置命令 ,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体&…

给管道注册事件,用于用户是否登录!

1.一个网站项目的自定义cs文件,如图: 2.CheckRight.cs中的代码如下: public class CheckRight : IHttpModule{ public void Dispose() { } public void Init(HttpApplication app) { app.AcquireRequestState new EventHandler(app_AcquireR…

css 商城 两列_【云控基础】HTML+CSS基础入门

课程大纲:第一部分:课程概述1、什么是HTML、CSS,能做什么?2、HTML、HTML5、H5的区别3、HTMLCSS全览4、HTML、CSS的学习路径和学习方法第二部分:HTMLCSS开发环境搭建1、谷歌浏览器的安装和简单使用2、Sublime Text 编辑…

搜索不包含关键词_亚马逊listing关键词优化

亚马逊是一个客户至上的平台,它将客户体验置于一切之上。根据亚马逊的说法,消费者找到产品的速度越快,他们的购物体验就会越好。因此,亚马逊的A9算法被设计用来寻找对客户购物体验有价值的相关listing。如果你想提高你的搜索排名&…

excel文件损坏修复绝招_高手都在用的PDF转换PPT、WORD、EXCEL工具

点击上方关注我,UUUhooo,你最好了……首先说标题提到转换是在格式间转换,而不是软件间转换,所以标题是为了大多数人认知方便而起的,PDF是一种文档格式,全程叫便携式文档格式,而打开它的软件叫PD…

cowboy源码分析

2013-01-21 by 谢鸿锋   原创文章,转载请注明:转载自Erlang云中漫步 目录 一、概述 二、ranch源码分析 三、cowboy源码分析 1、Request调度规则 2、http协议实现分析 3、http协议之chunked编码 4、http协议之long_polling 5、http协议之websocket 6、…

linux解压tz zip,TZ 文件扩展名: 它是什么以及如何打开它?

TZ 疑难解答常见的 TZ 打开问题Smith Micro StuffIt Deluxe 已删除尝试打开 TZ 文件时,您收到错误 “无法打开 TZ 文件类型”。 发生这种情况时,通常是由于 %%os%% 中缺少 Smith Micro StuffIt Deluxe。 操作系统不知道如何处理你的 TZ 文件,…