ITTC数据挖掘平台介绍(四) 框架改进和新功能
本数据挖掘框架在这几个月的时间内,有了进一步的功能增强
一. 超大网络的画布显示虚拟化
如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下:

在界面显示部分,之前并没有做过虚拟化优化,为了实现更多的功能,通过大量的事件挂接和其他操作将显示的控件与底层数据紧密耦合,因此内存回收机制几乎不起什么作用(原因见我另外一篇博客-事件的迷惑)。另外,绘图控件包含很多可视化元素。这样的恶果便是当点的数量增大时,内存占用量也急剧增大,1万点时,就会占用1GB内存,反应迟缓,性能很差。
为了解决这个问题,我们采用了虚拟化技术。其核心技术是通过WPF的Listbox内部的VirtualStackpane内置的内存回收机制,仅保存需要在界面上显示的功能。设计参考了Kael Rowan的ZoomableCanvas。有兴趣的同学可以去他的博客看下实现,此处不做赘述。我们使虚拟画布同样实现原有的接口,上层应用可以不关心具体实现的细节。
经过这项改进,我们的画布可以在1.3s内加载10W点的复杂网络模型(JSON数据经过Zip压缩),并通过虚拟化显示出来:如下图:

当视觉焦点不在该范围内时,该范围内的节点和线会自动回收,其他点会自动生成。这样做的好处是节省内存,代价是CPU占用率不低,因为反复做着内存回收和申请,以及界面重绘的工作

通常的建议是,ZoomableCanvas内部有属性:RealizationLimit="3000", RealizationRate="100",分别代表页面中最多的点的数量,以及每次刷新增加/删除的点数量。可以根据机器配置自动适配。
理论上,画布可以支持任意数量的点的显示,而不考虑内存的限制,但不能超过int32.MaxValue.
二. 复杂网络生成
我们为了研究复杂网络行为,专门添加了复杂网络生成模块,该模块可以根据用户需要生成不同大小,模型和参数的网络结构,方便用户研究和分析网络:它实现了INetworkGenerator接口。



复杂网络生成可按照“网络规模”参数和连接概率生成网络结构,内置了BA网络,复杂网络模型,WS网络模型等常用的模型。生成效果如下图:

三. 改进的布点算法和筛边策略
由于网络规模不断增大,需要更好更快的布点算法,我们经过博采众长,框架中集成了多达5种不同用途的布点算法,LargeScale算法可在半小时内处理高达50万节点的布点问题. ForceIndicate算法可在牺牲一定速度的基础上获得更好的效果,另外的一些方法可较好的处理权重网络(边强度越大,联系越紧密,位置越近)。用户可通过选择菜单,选取不同的布点算法。
同时,可勾选3D选项,布点即可在3D情况下计算实现。
下面是ForceIndicate算法计算微博传播网络时绘制的效果,1000点,用时30s:


四. “任务”工具菜单
虽然平台拥有完整的算法组装的机制,但对普通用户来说,拖拽算法并配置的操作依旧复杂。在此基础上,我们开发了针对“任务”的工作方式,如下图所示:

用户切换到任务视图,选中某个任务点击加载,系统即可自动按照任务配置,加载所有算法模块,完成组装工作并设置参数,用户点击运行即可。
同时,您也可以将某个计算列表保存成一个新的任务:

并修改任务名称和任务描述等:

这样,其他人就可方便的重用您的设置,只需选取数据源并运行即可。
五. 其他改进
1.增加MongoDB连接器界面,用户可更方便的从MongoDB中读取和检索数据。
2.改进配色,采用纯灰色调,使用户更关注于任务而非工具本身。
3. 工作流优化:一个数据链,当某个模块的配置被更改时,只有算法下游的模块才会被重新计算。这样大大减少了系统运行的时间。
4. 增加大规模聚类算法,万点处理速度仅需1秒。
欢迎您继续关注我们数据挖掘工具软件的开发情况。
ITTC数据挖掘平台介绍(四) 框架改进和新功能的更多相关文章
- ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成
一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...
- ITTC数据挖掘平台介绍(七)强化的数据库, 虚拟化,脚本编辑器
一. 前言 好久没有更新博客了,最近一直在忙着找工作,目前差不多尘埃落定.特别期待而且准备的都很少能成功,反而是没怎么在意的最终反而能拿到,真是神一样的人生. 言归正传,一直以来,数据挖掘系统的数据类 ...
- Flink1.9重大改进和新功能
一.Flink1.9.0的里程碑意义 二.重构 Flink WebUI Flink社区讨论了现代化 Flink WebUI 的提案,决定采用 Angular 的最新稳定版来重构这个组件.从Angula ...
- Rafy 领域实体框架演示(2) - 新功能展示
本文的演示需要先完成上一篇文章中的演示:<Rafy 领域实体框架示例(1) - 转换传统三层应用程序>.在完成改造传统的三层系统之后,本文将讲解使用 Rafy 实体框架后带来的一些常用功能 ...
- Java 16 新功能介绍
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. Ja ...
- Java 14 新功能介绍
不做标题党,认认真真写个文章. 文章已经收录在 Github.com/niumoo/JavaNotes 和未读代码博客,点关注,不迷路. Java 14 早在 2019 年 9 月就已经发布,虽然不是 ...
- 【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- .NET平台系列14 .NET5中的新增功能
系列目录 [已更新最新开发文章,点击查看详细] .NET5中不包含的内容 尽管 .NET5 框架中提供了一组重要 API,但它并不包括过去20年左右开发的所有 API,但是.NET Stand ...
- Java 17 新功能介绍(LTS)
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...
随机推荐
- android 使用Tabhost 发生could not create tab content because could not find view with id 错误
使用Tabhost的时候经常报:could not create tab content because could not find view with id 错误. 总结一下发生错误的原因,一般的 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(76)-微信公众平台开发-网页授权
前言 网页授权是:应用或者网站请求你用你的微信帐号登录,同意之后第三方应用可以获取你的个人信息 网上说了一大堆参数,实际很难理解和猜透,我们以实际的代码来演示比较通俗易懂 配置 实现之前我们必须配置用 ...
- 自定义搭建PHP开发环境
学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...
- JQuery 选择器
选择器是JQuery的根基,在JQuery中,对事件的处理,遍历DOM和AJAX操作都依赖于选择器.如果能够熟练地使用选择器,不仅能简化代码,而且还可以事半功倍. JQuery选择器的优势 1.简洁的 ...
- Android -- 真正的 高仿微信 打开网页的进度条效果
(本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...
- Lind.DDD.LindMQ~关于持久化到Redis的消息格式
回到目录 关于持久化到Redis的消息格式,主要是说在Broker上把消息持久化的过程中,需要存储哪些类型的消息,因为我们的消息是分topic的,而每个topic又有若干个queue组成,而我们的to ...
- springmvc SSM 多数据源 shiro redis 后台框架 整合
A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单 下载地址 ; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类 ...
- jQuery遮罩层登录对话框
用户登录是许多网站必备的功能.有一种方式就是不管在网站的哪个页面,点击登录按钮就会弹出一个遮罩层,显示用户登录的对话框.这用方式比较灵活方便.而现在扫描二维码登录的方式也是很常见,例如QQ.微信.百度 ...
- FineBI:一个简单易用的自助BI工具
过去,有关企业数据分析的重担都压在IT部门,传统BI分析更多面向的是具有IT背景的人员.但随着业务分析需求的增加,很多公司都希望为业务用户提供自助分析服务,将分析工作落实到业务人员手中.但同时,分析工 ...
- React Native环境配置之Windows版本搭建
接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...