【步进的节点】LBG演算法流程与演…

2023-10-10 04:59

本文主要是介绍【步进的节点】LBG演算法流程与演…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

简介

LBG演算法是一种在多传感器节点网络之中常用的一种演算法,LBG算法通过训练矢量集和一定的 迭代算法来逼近最优的分组数据,在这里,使用C#来实现对该演算法步骤的演示,并绘图表示。

 

本程序的流程图如下:

 

 

【步进的节点】LBG演算法流程与演示程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

在C#语言VisualStudio环境下的实现

VisualStudio是微软推出的集成编程开发环境,对多种语言具有较高的支持度,且具备界面设计功能,环境稳定,适合进行各类型的编程,这里使用2015版本。

C#是一种高级编程语言,由微软推出并提供长久的支持,其拥有优秀的内存管理,是目前编程上常用的高级语言之一。

 

程序界面

程序共有两个窗口,主要窗口负责控制整体流程,副窗口对图片进行显示并提供简单的基于鼠标api的测距功能(像素点)

 【步进的节点】LBG演算法流程与演示程序

主窗口介绍

主窗口为WPF窗口,具有结构清晰,易于使用的特点

《1》V1.72 为当前的版本号,每次较大修改将提升十分位版本号,细节纠正提高百分位版本号

《2》初始节点数量为当前设定开始下第0次随机产生的实节点数目,

《3》分组数目为将节点按照中心节点进行分组的数量

《4》失真值为当前失真度减去上一次失真度后除以当前失真度所得到的数值,与临界失真数值进行比较,小于临界数值时软件判断已达到收敛度从而停止继续计算。

《5》长度宽度代表随机节点XY坐标数的产生范畴,也是绘图的凭据之一

《6》只显示最终结果勾选后,点击下一步将不再按步生成而是直接生成结果

《7》数据重置按钮会重置所有的数据,使得软件可以重新进行演示

《8》每次点击下一步将按步进行数据的演算与生成

 

 

 

副窗口介绍

副窗口显示绘制的节点图形,节点按照分组会被以不同的颜色进行标出。

其中实心圆形点为实节点,空心圆点为在演算过程中生成的虚节点,带有外圈同心圆的为最终演算得到的中心虚节点。

 

 【步进的节点】LBG演算法流程与演示程序

【步进的节点】LBG演算法流程与演示程序

 

 

窗口下方的Weight会显示鼠标在点击后拖动的距离。

 

 

程序的主要用途与功能

该程序对LBG演算法进行直接演示,并能够实时的显示演算结果,按步骤显示数据,并且可以将数据以图形方式进行显示,图像保存在软件目录下。

 

功能有以下四点:

1.具备保存结果的能力

2.备测距验证的功能

3.具备图形化显示的功能

4.完整的操作界面

5.随机节点生成

 

 

 

 

 【步进的节点】LBG演算法流程与演示程序

 

 

程序会将过程中的语句输出到窗口的textbox中,提供给用户进行参考

 

文字可以被复制

 

程序流程与技术说明

1.生成节点

在该程序中,会通过随机数方式产生节点,而随机数实际上是一种伪随机数,依据系统执行时间进行生成,在LBG DEMO程序中,利用Thread.sleep函数让线程在随机产生一个随机数后短暂休眠,保证了随机数产生的不同。随机数的坐标生成还与限定范围相关,保证随机数不超出区域大小。

2.选择节点

                   在初始步骤0下,因为暂未有节点提供分组数据,所以由节点随机选择,这里用一个随机数生成函数来执行,用以产生小于生成节点之总数的随机数,按照分组数目随机选择,并且通过循环方式保证分组中心节点不相同。如果相同,则会重新产生随机数。

3.分组

分组通过计算节点到中心节点距离来进行,通过轮回计算单个节点和主节点之间距离,并进行比对,就可以记录最小距离,通过该最小距离就能对节点的归属进行分类。

 

4.计算新的中心节点

通过对单个组内节点的坐标进行重新平均,可以得到下一次的该组的中心节点,需要注意的是,只有在第0次分组时候会加入主要节点作为参照,其他时候虚节点并不作为在计算新的虚节点所参照的节点数之一。

 

5.计算并比对临界值

通过计算收敛程度,我们可以得到当前计算与上一次计算相差,并通过百分比与临界值进行比较,当小于临界值的时候将结束本次计算,并绘制图形(实际上程序的图形是每轮都绘制的),如果未达到初始设定的临界值,则返回到第2步继续执行计算。

 

 

 

 

 

Github地址:

https://github.com/arenascats/LBG_Algorithm_Demo

 

 

这篇关于【步进的节点】LBG演算法流程与演…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178139

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service