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 ...
随机推荐
- win7安装时,避免产生100m系统保留分区的办法
在通过光盘或者U盘安装Win7操作系统时,在对新硬盘进行分区时,会自动产生100m的系统保留分区.对于有洁癖的人来说,这个不可见又删不掉的分区是个苦恼.下面介绍通过diskpart消灭保留分区的办法: ...
- 探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- [笔记]HAproxy reload config file with uninterrupt session
HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great op ...
- 【centos7常用技巧】RPM打包
一.RPM打包的目的 1.当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可. 2.当需要在目标机中安装多个软件或者增加多个文件时,可以将 ...
- 算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!
算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!
- 了解 ARDUINO 101* 平台
原文链接 简介 作为一名物联网 (IoT) 开发人员,您需要根据项目的不同需求,选择最适合的平台来构建应用. 了解不同平台的功能至关重要. 本文第一部分比较了 Arduino 101 平台和 Ardu ...
- 使用MonoTouch.Dialog简化iOS界面开发
MonoTouch.Dialog简称MT.D,是Xamarin.iOS的一个RAD工具包.它提供易于使用的声明式API,不需要使用导航控制器.表格等ViewController来定义复杂的应用程序UI ...
- 绿色版的Linux.NET——“Jws.Mono”(续)
在前一篇文章中,我们简略的介绍了jws.mono的安装使用,以及我们如何自己动手做一个jws.mono出来. 在文章发表之后的几天里,我一直觉得有点不妥之处,直到后来猛然的意识到:我们自己动手做的jw ...
- 从Unity3D编译器升级聊起Mono
接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...
- 轻量级通信引擎StriveEngine —— C/S通信demo(附源码)
前段时间,有几个研究ESFramework的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关系.也不 ...