本数据挖掘框架在这几个月的时间内,有了进一步的功能增强

一. 超大网络的画布显示虚拟化

    如前几节所述,框架采用了三级层次实现,分别是数据,抽象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数据挖掘平台介绍(四) 框架改进和新功能的更多相关文章

  1. ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成

    一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...

  2. ITTC数据挖掘平台介绍(七)强化的数据库, 虚拟化,脚本编辑器

    一. 前言 好久没有更新博客了,最近一直在忙着找工作,目前差不多尘埃落定.特别期待而且准备的都很少能成功,反而是没怎么在意的最终反而能拿到,真是神一样的人生. 言归正传,一直以来,数据挖掘系统的数据类 ...

  3. Flink1.9重大改进和新功能

    一.Flink1.9.0的里程碑意义 二.重构 Flink WebUI Flink社区讨论了现代化 Flink WebUI 的提案,决定采用 Angular 的最新稳定版来重构这个组件.从Angula ...

  4. Rafy 领域实体框架演示(2) - 新功能展示

    本文的演示需要先完成上一篇文章中的演示:<Rafy 领域实体框架示例(1) - 转换传统三层应用程序>.在完成改造传统的三层系统之后,本文将讲解使用 Rafy 实体框架后带来的一些常用功能 ...

  5. Java 16 新功能介绍

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. Ja ...

  6. Java 14 新功能介绍

    不做标题党,认认真真写个文章. 文章已经收录在 Github.com/niumoo/JavaNotes 和未读代码博客,点关注,不迷路. Java 14 早在 2019 年 9 月就已经发布,虽然不是 ...

  7. 【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. .NET平台系列14 .NET5中的新增功能

    系列目录     [已更新最新开发文章,点击查看详细] .NET5中不包含的内容 尽管 .NET5 框架中提供了一组重要 API,但它并不包括过去20年左右开发的所有 API,但是.NET Stand ...

  9. Java 17 新功能介绍(LTS)

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...

随机推荐

  1. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  2. NodeJs之log4js

    log4js log4js是一个管理,记录日志的工具. 其实与morgan的作用类似. 安装 npm install -g log4js log4js的6个日志级别 分别是:trace(蓝色).deb ...

  3. jQuery的61种选择器

    The Write Less , Do More ! jQuery选择器 1. #id : 根据给定的ID匹配一个元素 <p id="myId">这是第一个p标签< ...

  4. Java多线程

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程 ...

  5. 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断

    概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...

  6. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  7. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

  8. Ubuntu安装redis并配置远程、密码以及开启php扩展

    一.前言 redis是当前流行的nosql数据库,很多网站都用它来做缓存,今天我们来安装并配置下redis 二.安装并配置redis 1.安装redis sudo apt-get install re ...

  9. BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]

    3626: [LNOI2014]LCA Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2050  Solved: 817[Submit][Status ...

  10. POJ3693 Maximum repetition substring [后缀数组 ST表]

    Maximum repetition substring Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9458   Acc ...