294-8851683-用lingo实现带约束条件的聚类分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用LINGO实现 带约束条件的聚类分析
徐州空军学院 袁新生 刘信斌


在研究应用课题时可能会遇到带约束条件的 聚类分析。用 SPSS 等软件能够方便地进行聚类 分析,但是无法附加其他约束条件,只能考虑用 编程方法来实现。先将此类问题转化为 0-1 规划 模型,然后用优化软件 LINGO 进行求解,并且 以一个带约束条件的网络节点分组问题为实例, 编写了LINGO程序,求出了最优结果。
聚类分析的方法主要有层次聚类法和快速聚 类法。层次聚类分析法又称系统聚类法,是目 前使用最多的一种聚类方法,它使具有共同特 点的样本(或变量)聚集在一起,根据观测值 或变量之间的亲疏程度,将最相似的对象结合 在一起,以逐次聚合(或分解)的方式将观测 值或变量分类。 快速聚类法也称划分法,又称动态聚类法。 该方法需要事先确定分类的数目k,然后将样本 空间(即所有对象)划分为k分,每个划分代表 一个类,所形成的分类状态使得一个客观标准 达到最优,实际上是逐步迭代寻优过程。
在一些与图论和网络优化相关的应用课题中, 常常需要对网络节点作聚类分析,下面通过一个 实例介绍如何用 LINGO 实现带约束条件的网络节 点聚类分析。 某县邮政局管辖 16 个支局,已知县局到各支局 的距离和 16 个支局之间的距离矩阵(限于篇幅, 省略具体数据,详见文献[2])。寄达各支局以及各 支局收寄的邮件数量(单位:袋)为:
2.2 用LINGO求解模型
2 用LINGO实现带约束条件的聚类分析
LINGO是求解最优化问题的专业软件,它在求 解各种大型线性、非线性和整数规划方面具有明 显的优势[1]。动态聚类分析算法的实质是迭代优化 过程,有明确的目标函数,当实际问题有附加的 约束条件时,可以把此类问题看成是规划问题。 求 解 规 划 问 题 是 LINGO 的 强 项 , 因 而 可 以 用 LINGO来实现带约束条件的聚类分析。
当需要进行聚类分析时,通常可以采用具有 聚类分析功能的软件来实现,例如统计分析软 件 SPSS 具有强大的聚类分析功能,能够实现快 速聚类分析和层次聚类分析,对聚类方法和距 离的计算方法提供多种选项给用户选择,可以 满足大多数用户的需要。但是,当研究人员所 面临的课题有额外的附加约束条件时, SPSS 就 无能为力了,此时只能采取编程计算的办法, 例如用Matlab或C语言来编程实现,这需要用户 既熟悉聚类分析的算法原理和步骤,又要有较 强的Matlab或C语言编程能力及功底,对一般研 究人员,不一定人人都能够做到,能否找到其 他解决办法?
这是带约束条件的聚类分析的具体应用,实 质是在满足约束条件的前提下,将 16 个支局聚 成3类,使类内各支局相互之间的距离最短。
2.1 建立0-1规划模型
用i=1,2,…,16表示16个支局,k=1,2,3表示3个 组, Pi 表示寄达支局 Zi 的邮件量, Qi 表示从支 局Zi收寄的邮件量,引入0-1型决策变量Xik表示 支局 i 是否分在第 k 组, Xik=1 表示支局 i分在第 k 组,Xik=0表示否。每两个支局之间均存在最短 路(有些支局之间没有直接通路,但存在经过 其它支局的间接路径),用Cij表示支局i与支局 j之间的最短路。约束条件如下:
优化分组的目标是使

3
k 1
Lk mk
达到最小。
综上所述,建立该问题的0-1规划模型如下:
min

3
k 1
Lk m k
3 X ik 1 , i 1 , 2 , , 16 k 1 16 m k X ik , k 1 , 2 , 3 i1 16 P i X ik 65 , k 1 , 2 , 3 i1 16 Q i X ik 65 , k 1 , 2 , 3 i1 15 16 L k C ij X ik X jk , k 1 , 2 , 3 i1 j i X 0 或 1 ik
寄达各支局以及各支局收寄的邮件袋数
支局 Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8
寄达
收寄 支局 寄达
10
9 Z9 13
15
14 Z10 17
6
5 Z11 11
9
10 Z12 2百度文库
13
9 Z13 11
6
10 Z14 21
11
13 Z15 13
4
9 Z16 14
收寄
15
9
6
7
13
15
10
16
试把这16个支局分成3组,组内各支局之间的 相互距离尽可能近,且每组内寄达各支局以及 从各支局收寄的邮件总数都不超过65袋。
最 常 用 也 是 最 知 名 的 动 态 聚 类 方 法 有 Kmeans(K-均值)算法和K-medoids(K-中心点)算法, 这两种算法以事先确定的分类数目 k为参数,按 照某种初始点选取原则选定 k个初始聚点(聚点 是一组具有代表性的点,是形成类的中心)。 然后将其他个体归类于距离最近的聚点,重新 计算每个类的平均值, K- 均值算法以这些均值 作为新的聚点, K- 中心点算法以最靠近均值的 样本点作为新的聚点,对样本进行重新分类。 求出类内个体离差的平方和 Si,通常把各类 Si的 总和作为目标函数,当目标函数的值不再明显 变化时结束迭代。
1 问题的提出
聚类分析通过分析数据,根据它们之间的相 似程度,合理地划分数据集合,使同一类别内 的个体差别尽量小,而不同类别上的个体差别 尽量大。聚类分析是寻求数据(样本)的自然 聚集结构的重要方法,经常被作为其他研究任 务的前奏和准备工作,在利用聚类分析将整个 数据集合分成不同的子集之后,其他研究就更 容易在聚类结果的基础上深入进行下去。
(1) 每个支局必须分到某一组,且只能分到一 组。 第k组内两两支局之间最短路经的总和为
L C X k i j i k X jk
i 1 j i 1 51 6
(3) 各组寄达和收寄的邮件总量都不超过65袋。
组内支局数量为
m k X ik 组内平均距离为Lk /m k
i 1 16
相关文档
最新文档