物联网技术与应用课设

上传人:汽*** 文档编号:564532846 上传时间:2023-04-03 格式:DOCX 页数:17 大小:250.45KB
返回 下载 相关 举报
物联网技术与应用课设_第1页
第1页 / 共17页
物联网技术与应用课设_第2页
第2页 / 共17页
物联网技术与应用课设_第3页
第3页 / 共17页
物联网技术与应用课设_第4页
第4页 / 共17页
物联网技术与应用课设_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《物联网技术与应用课设》由会员分享,可在线阅读,更多相关《物联网技术与应用课设(17页珍藏版)》请在金锄头文库上搜索。

1、物联网技术与应用课程设计报告班级:学号:3姓名:3老师:年月日目录一 课程题目 1二 需求分析 12.1具体功能 12.2设计思路 4三 具体设计 53.1 流程图 63.2模块设计 63.3 文件中结点的数据 8四 最终结果 9五 源代码 9一 课程题目道路网络中基于结点的静态聚类算法的实现java。本次课程设计所使用的系统为windows7,编译器为Eclipse,所使用的编程语言为 java。二 需求分析2.1 具体功能基于密度的聚类算法,首先任意选择一个对象执行e范围查询,如果该范围内至少 包含MinPts(满足聚类条件的最小移动对象个数)个对象,则为这个对象创建一个聚类, 并将该范围

2、内的对象都归到这个聚类中。然后,反复对聚类中新的对象执行范围查询 直到聚类不再扩张为止。基于结点的对象聚类本质上是一种基于密度的聚类算法,它利用网络的结点信息和 网络拓扑结构进行扩展,避免了随意扩展带来的冗余距离计算,以及传统的基于密度算 法中大量的范围查询。算法按照对象与结点之间距离的顺序遍历边,以解决结点相邻边 以及边上对象的重复访问问题。基于结点的对象聚类首先从某个结点出发,把结点周围 的对象聚类在一起,并扩展到相邻结点,将相邻结点周围满足条件的对象也包含到该聚 类中,直到聚类不再扩张。最后对网络边上未形成聚类的对象,根据对象的聚类条件来 判断是否单独形成聚类。基于结点的聚类过程实例:卩

3、4AP10kPi Pz图2-1基于结点类聚过程(a)PP1图2-2基于结点类聚过程(b)图2-2基于结点类聚过程(c)2.2设计思路基于某个结点的聚类过程可以分为两步:初始化阶段和扩展阶段。(1) 初始化阶段:先判断每个相邻边上与结点相邻的对象与该结点距离是否小于等于阈值 e,以此来过滤掉不必遍历的边;然后对满足条件的相邻边按照对象与结点的距离排序,将结点最邻近的对 象作为初始聚类。(2) 扩展阶段:按顺序依次遍历相邻边上的对象来扩展初始聚类,继续扩展到相邻结点 再对相邻结点周围的相邻边进行排序,按顺序遍历相邻边上的对象,直到 相邻对象之间的距离大于阈值e,聚类不能再扩展为止。算法工早于结点肘

4、聚类算法.找菜牛结点周围的麋类F血y和沁心A 输入:基于一个网踣的对象耒合.结点吟距离曲值&参数.输出:结点刊周审对镇的聚类结果一0优先甌列,毎1项E为“3血1,JW血2*站於表示边甘腻逬辭血空、.上号HtJflffi相哪的对象距离为dtsr.N击肌疝:存储每个结点相鄆边上离结点最近的对象的跖离,初始值为无穷大,Beih1. Mr叫的每个相邻结点fjz do*初始化阶段*2. 为边(曲思)的-第1亍对象:?. if (ooimll AXD Dd(o.pQSjiE)OR (o=iiiil AND 叽心.“乞)then-I.扌安照Q或化与叫的业离顺庁將脚皿一Ddn.pos一曲)或仙.叫.叭h插入到

5、纟中-.if不为空讪“刨崖一个新的聚类匚分配鈕:6. vliile Q不为空血.;扩歷阶段和7. 取出。的限首第:项“血讣、=理耳最卩E.蚯B.diMKWi苗r?、l theh Ndisrnv=B.disi:9.口为边(屯巧的第I个对象:0. if o=nullUien:B.fiisv. GdTo 19:LIif Dd(a payNtMe OR e为与叫距离最近的对象then13.1丄15.16.n18.19.20.21.22.三 具体设计nexro为边町*巧,)从g到结点丹的下一个对象:while f陽*Monull AND Dd(o.posexr&.p&i)h的-如 cid-C cfd:

6、c!usfered(p)=h ue:召=打鸭心畑耳旳为边(吆巧)从o到结点的下一亍对象,for吟的毎个相祁结点世(除了结点 心Ho。为如如碣的第1个对象一if (flOmdl A?D Dd(open*%胆将 OR (o=null A?D讨”、.一吧叫.上冬)thmn按照i?或叭与叭的距离顺序将或佃”冬,胚7聞叫+叭沖”:)插入到O的 队首;3.1 流程图图 3-1 整体流程图3.2模块设计结点类的定义public class Point private int x;private int y;private boolean isKey;结点的存储private static List poin

7、tsList=new ArrayList();/存储原始样 本点,pointsList中存放一堆Pointprivate static ListList resultList=newArrayListList();/存储最后的聚类结果,resultList 中存放一堆 List 列 表, List 中用存放一堆 Point 对象文件的读取BufferedReader br=new BufferedReader( new FileReader(points.txt);将文件中的字符串解析为数组public Point(String str)/String p=str.split( );St ri

8、ng p=s tr.spli tC,);/将字符窜解析为数组,以逗号来分割this.x=Integer.parseInt(p0);this.y=Integer.parseInt(p1);结点的聚类for (I tera tor it=ls t.i tera tor();i t.hasNexxt ();)/迭代器模式,hasNex t(); 是否存在下一个数据Point q=it.next()/next(); 返回当前值if(getDistance(p,q)=e)+count;if(!tmpLst.contains(q)tmpLst.add(q);聚类合并for(int index=0;inde

9、xb.size();+index)Point p=b.get(index);if(p.isKey() & a.contains(p)merge true;break;if(merge)for(int index=0;indexb.size();+index)if(!a.contains(b.get(index)a.add(b.get(index);聚类结果输出int index=1;for(IteratorList it=resultList.iterator();it.hasNext();)List lst=it.next(); if(lst.isEmpty()continue;System

10、 out.println(第+index+个聚类);for(Iterator it1=lst.iterator();it1.hasNext();)Point p=it1.next();Systemout.println(p.print();index+;3.3 文件中结点的数据TI - - - - - - - - - - 00 .r_l 一 LO LO J J J J J J J .oo PD J J J J J J io t J oo 0 il J3 3 8 9 o 1 J J J J J2 2 2 2 2 2 J J 2 J J Jo TI TI TI TI O-J TI TI TI TI

11、 TI TI TI TI TI图 3-2 结点集合最终结果119 jl,?1、2125&现7、图4-1所给结点弄坏案畫现第24當免第弓亍聿穽图4-2聚类结果五 源代码DBscan.javaimport java.io.IOException;import java.util.*;public class DBscan private final static int e=2;/w半径private final static int minp=4;/密度阈值private static List pointsList=new ArrayList() ; / /存储原始样本点,pointsList

12、中存放一堆Pointprivate static ListList resultList=newArrayLis tLis t();/存储最后的聚类结果,resul tList中存放一堆Lis t列表, Lis t中用存放一堆Poin t对象private static void applyDbscan() throws IOException pointsList=Utility.getPointsList();for( int index=0; indexpointsList.size( ) ;+index)/ System.out.println(index=+index);List t

13、mpLst new ArrayList();Point p pointsList.get(index);/if(p.isClassed()/ continue;tmpLst=Utility.isKeyPoint(pointsList, p, e, minp); if(tmpLst!=null)resultList.add(tmpLst);int length=resultList.size();/ System.out.println(length=+length);for(int i=0;ilength;+i)for(int j=0;jlength;+j)if(i!=j)if(Utility.mergeList(resultList.get(i), resultList.get(j) resultList.get(j).clear();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号