文档库 最新最全的文档下载
当前位置:文档库 › libsvm的原理及使用方法介绍

libsvm的原理及使用方法介绍

libsvm的原理及使用方法介绍
libsvm的原理及使用方法介绍

LibSVM学习

目录

LibSVM学习 (1)

初识LibSVM (1)

第一次体验libSvm (3)

LibSVM使用规范 (5)

1. libSVM的数据格式 (5)

2. svmscale的用法 (5)

3. svmtrain的用法 (6)

4. svmpredict 的用法 (7)

逐步深入LibSVM (7)

分界线的输出 (11)

easy.py和grid.py的使用 (13)

1. grid.py使用方法 (13)

2. easy.py使用方法 (14)

参考 (16)

LibSVM学习

初识LibSVM

LibSVM是台湾林智仁(Chih-Jen Lin's) 教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。

由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。

这套库可以从林智仁的home page上免费获得,目前已经发展到3.0版。下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。

Java ——主要是应用于java平台的源码和libsvm.jar包;

Python ——是用来参数优选的工具,稍后介绍;

svm-toy ——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;

tools ——主要包含四个python文件,用来数据集抽样(subset.py),参数优选(grid.py),集成测试(easy.py), 数据检查(checkdata.py);

windows ——包含libSVM四个exe程序包,我们所用的库和程序就是它们。

其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h 和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.cpp在svm-toy\qt 文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的README 跟FAQ 也是很好的文件,对于初学者如果E文过得去,可以看一下。

下面以svm-train为例,简单的介绍下,怎么编译:(这步很简单,也没必要,对于仅仅使用libsvm库的人来说,windows下的4个exe包已经足够了,之所以加这步,是为了那些做深入研究的人,可以按照自己的思路改变一下svm.cpp,然后编译验证)我用的是VC 6.0,新建一个控制台(win32 console application)程序,程序名叫svmtrain (这个可以随意),点击OK后,选择empty。

进入程序框架后,里面什么都没有,然后找到你的程序目录,把svm-train.c、svm.h和svm.cpp拷贝过去(.c文件是c语言的,要是你习惯了c++,你尽可以改成.cpp),然后把这3个文件添加到工程,编译。。。如果没错误,到debug下面看看,是不是有个svm-train.exe。其实windows下的svm-train.exe就是这样编译出来的。

哈哈,怎么样是不是很简单。但是,这样的程序直接运行没意义,他要在dos下运行,接收参数才行。下面开始我们的libsvm的体验之旅。

第一次体验libSvm

1. 把LibSVM包解压到相应的目录(因为我只需要里面windows文件夹中的东东,我们也可以只把windows文件夹拷到相应的目录),比如D:\libsvm。

2. 在电脑“开始”的“运行”中输入cmd,进入DOS环境。定位到D:\libsvm\windows目录下,具体命令如下:

(上面第一行是先定位到盘符d,第二行cd 是定位到相应盘符下的目录)

3. 进行libsvm训练,输入命令:(这里要注意文件的名字,2.89以前版本都是svmtrain.exe) svm-train heart_scale train.model

PS:heart_scale ——是目录下的已经存在的样本文件(此处将下载的压缩文件中的heart_scale放置入D:\libsvm\windows下即可),要换成自己的文件,只需改成自己的文件名就可以了。

PS:train.model ——是创建的结果文件,保存了训练后的结果。

#iter为迭代次数;

nu 是你选择的核函数类型的参数;

obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b;

nSV 为标准支持向量个数(0

Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)。

在目录下,还可以看到产生了一个train.model文件,可以用记事本打开,记录了训练后的结果。

svm_type c_svc //所选择的svm类型,默认为c_svc

kernel_type rbf //训练采用的核函数类型,此处为RBF核gamma 0.0769231 //RBF核的参数γ

nr_class 2 //类别数,此处为两分类问题

total_sv 132 //支持向量总个数

rho 0.424462 //判决函数的偏置项b

label 1 -1 //原始文件中的类别标识

nr_sv 64 68 //每个类的支持向量机的个数

SV //以下为各个类的权系数及相应的支持向量

到现在,第一次体验libsvm到这就基本结束了,其他的两个(svm-predict、svm-scale)的使用过程类似。怎么样,挺爽的吧。对于个别参数你还不理解,没关系,下面我们会具体讲到。

LibSVM使用规范

其实,这部分写也是多余,google一下“libsvm使用”,就会N多的资源,但是,为了让你少费点心,在这里就简单的介绍一下,有不清楚的只有动动你的mouse了。需要说明的是,2.89版本以前,都是svmscale、svmtrain和svmpredict,最新的是svm-scale、svm-train 和svm-predict,要是用不习惯,只需要把那四个exe文件名去掉中间的短横线,改成svmscale、svmtrain和svmpredict就可以了,我们还是按原来函数名的讲。

1. libSVM的数据格式

Label 1:value 2:value ….

Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15。当然,如果是回归,这是目标值,就要实事求是了。

Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开;

比如: -15 1:0.708 2:1056 3:-0.3333

需要注意的是,如果特征值为0,特征冒号前面的(姑且称做序号)可以不连续。

如:-15 1:0.708 3:-0.3333

表明第2个特征值为0,从编程的角度来说,这样做可以减少内存的使用,并提高做矩阵内积时的运算速度。我们平时在matlab中产生的数据都是没有序号的常规矩阵,所以为了方便最好编一个程序进行转化。

2. svmscale的用法

svmscale是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。

缩放的目的主要是:

1)防止某个特征过大或过小,从而在训练中起的作用不平衡;

2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

用法:

svmscale [-l lower] [-u upper][-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename

其中,[]中都是可选项:

-l:设定数据下限;lower:设定的数据下限值,缺省为-1

-u:设定数据上限;upper:设定的数据上限值,缺省为1

-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;

-s save_filename:表示将缩放的规则保存为文件save_filename;

-r restore_filename:表示将按照已经存在的规则文件restore_filename进行缩放;

filename:待缩放的数据文件,文件格式按照libsvm格式。

默认情况下,只需要输入要缩放的文件名就可以了:比如(已经存在的文件为test.txt) svmscale test.txt

这时,test.txt中的数据已经变成[-1,1]之间的数据了。但是,这样原来的数据就被覆盖了,为了让规划好的数据另存为其他的文件,我们用一个dos的重定向符> 来另存为(假设为out.txt):

svmscale test.txt > out.txt

运行后,我们就可以看到目录下多了一个out.txt文件,那就是规范后的数据。

假如,我们想设定数据范围[0,1],并把规则保存为test.range文件:

svmscale –l 0 –u 1 –s test.range test.txt > out.txt

这时,目录下又多了一个test.range文件,可以用记事本打开,下次就可以用-r test.range来载入了。

3. svmtrain的用法

svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM 模型。

用法:svmtrain [options] training_set_file [model_file]

其中,options为操作参数,可用的选项即表示的涵义如下所示:

-s 设置svm类型:

0 – C-SVC

1 – v-SVC

2 – one-class-SVM

3 –ε-SVR

4 – n - SVR

-t 设置核函数类型,默认值为2

0 -- 线性核:u'*v

1 -- 多项式核:(g*u'*v+ coef 0)degree

2 -- RBF 核:exp(-γ*||u-v||2)

3 -- sigmoid 核:tanh(γ*u'*v+ coef 0)

-d degree: 设置多项式核中degree的值,默认为3

-gγ: 设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;

-r coef 0:设置核函数中的coef 0,默认值为0;

-c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;

-n v :设置v-SVC、one-class-SVM 与n - SVR 中参数n ,默认值0.5;

-p ε:设置v-SVR的损失函数中的e ,默认值为0.1;

-m cachesize:设置cache内存大小,以MB为单位,默认值为40;

-e ε:设置终止准则中的可容忍偏差,默认值为0.001;

-h shrinking:是否使用启发式,可选值为0 或1,默认值为1;

-b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1,默认0;

-wi weight:对各类样本的惩罚系数C加权,默认值为1;

-v n:n折交叉验证模式;

model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。

默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为:

svmtrain test.txt test.model

结果说明见LibSVM学习(二)。

4. svmpredict 的用法

svmpredict 是根据训练获得的模型,对数据集合进行预测。

用法:svmpredict [options] test_file model_file output_file

其中,options为操作参数,可用的选项即表示的涵义如下所示:

-b probability_estimates——是否需要进行概率估计预测,可选值为0 或者1,默认值为0。model_file ——是由svmtrain 产生的模型文件;

test_file——是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;

output_file ——是svmpredict 的输出文件,表示预测的结果值。

至此,主要的几个接口已经讲完了,满足一般的应用不成问题。对于要做研究的,还需要深入到svm.cpp文件内部,看看都做了什么。

逐步深入LibSVM

其实,在之前上海交大模式分析与机器智能实验室对2.6版本的svm.cpp做了部分注解,(在哪里?google一下你就知道)。但是,这个注释只是针对代码而注释,整篇看下来,你会发现除了理解几个参数的含义,还是会对libsvm一头雾水。当然作为理解程序的辅助材料,还是有很大用处的。特别是,对几个结构体的说明,比较清楚。但是要清楚程序具体做了什么,还是要追踪程序中去。

由于svm涉及的数学知识比较多,我们这篇只是讲一些基本的思路,所以就从最基本的C-SVC型svm,核函数采用常用的RBF函数。LibSVM就采用2.6版本的好了,因为后续的版本作者又加了很多内容,不易理解作者最初的思路。我是做模式识别,主要从分类的角度来解析函数的调用过程,我们从svmtrain.c看起,其调用的函数过程如下:

上图是整个C-SVC的计算过程,下面对一些重要的内容进行具体说明:

1. svm_group_class

在2.6版中没有此函数的,其功能直接在svm_train实现,为了增强可读性,2.89版中设置了这个函数,其实所作的工作都是一样的。需要说明的是其重新排列后perm中只存储的是各个样本在原始位置的序号,而非数据。这样做的好处有两个:

1)不必破坏原始数据(也就是读进来的x的数据);

2)检索起来方便,只需要L维的数据检索,得到序号后,然后定位到原始数据中相应的位置就可以。

perm是中各类的排列顺序是按照原始样本中各类出现的先后顺序排列的,不一定是按照你原始样本的label序号排列,假如原始样本的label是{-1,0,1},而最先出现的label 为1的样本,那么perm中就把label为1的作为类0最先排列。而start中记录的是各类的起始序号,而这个序号是在perm中的序号。

2. 多类判别的one-against-one

svm做判别是用的分界线(面),两类之间只有一个分界线(面),因此分类器也只有1种,要么是1类要么是2类。但是对于多类,分类方式就有多种。目前,存在的方法主要有:

1)1-V-R方式

对于k类问题,把其中某一类的n个训练样本视为一类,所有其他类别归为另一类,因此共有k个分类器。最后预测时,判别式使用竞争方式,也就是哪个类得票多就属于那个类。

2)1-V-1方式

也就是我们所说的one-against-one方式。这种方法把其中的任意两类构造一个分类器,共有(k-1)×k/2个分类器。最后预测也采用竞争方式。

3)有向无环图(DAG-SVM)

该方法在训练阶段采用1-V-1方式,而判别阶段采用一种两向有向无环图的方式。

LibSVM采用的是1-V-1方式,因为这种方式思路简单,并且许多实践证实效果比1-V-R方式要好。

上图是一个5类1-V-1组合的示意图,红色是0类和其他类的组合,紫色是1类和剩余类的组合,绿色是2类与右端两类的组合,蓝色只有3和4的组合。因此,对于nr_class 个类的组合方式为:

for(i = 0; i < nr_class; i ++)

{

for(j = i+1; i < nr_class; j ++)

{

类i –V –类j

}

}

3. hessian矩阵的内存处理

因为svm是基于结构风险最小的,因此在分类识别方式具有较传统的基于经验风险最小的方式有优势。但是svm也有一个致命的缺陷,因为要计算hessian矩阵Qij所耗的内存巨大,不利于实践中应用。目前,怎么减小内存的使用依旧是SVM的研究的课题。LibSVM 对hessian矩阵处理的策略是定义了一个内存处理类Cache类,预先认为分配一定的内存,存储计算好的Qij,其序号的检索采用双向链表的方式,加快了检索速度。其最重要的函数为:

int Cache::get_data(const int index, Qfloat **data, int len)

//len 是data 的长度,data为返回的内存首地址,index为Qij的行。

每次都要查找链表中行为index的Qi,假如已经计算过了,就返回计算过的内存地址,并把储存首地址的链表节点插入到链表尾部。假如没计算过,就分配内存并进行计算,当剩余的内存不够时,就要回收链表头指向的内存。这里,可能有人会问,难道以前计算的就没有用了吗??其实,是因为Qij是稀疏矩阵,在训练过程中只要其对应的alpha[i]不再变动(这时alpha[i]=0或者alpha[i]=C),其对应的Qi就不会被选到来训练,因此原来计算的Qi 就没有用了。其实,链表的顺序代表了别选到的频率,最头部的是最不可能被选到,因为这时alpha[i]=0或者alpha[i]=C,而最尾部的最容易被选到。

4. 本节剩余部分省略…

详情参见:逐步深入LibSVM

分界线的输出

对于学习SVM人来说,要判断SVM效果,以图形的方式输出的分解线是最直观的。LibSVM自带了一个可视化的程序svm-toy,用来输出类之间的分界线。他是先把样本文件载入,然后进行训练,通过对每个像素点的坐标进行判断,看属于哪一类,就附上那类的颜色,从而使类与类之间形成分割线。我们这一节不讨论svm-toy怎么使用,因为这个是“傻瓜”式的,没什么好讨论的。这一节我们主要探讨怎么结合训练结果文件,自己编程输出分界线。

为什么说是分界线呢,其实严格说来是分解超平面,但是我们为了能直观用绘图工具绘(比如matlab)出图来只能输出具有二维(也就是特征数是2)的样本分界,因此也就成了线了。好了,闲话少说,进入正题。要绘分界线,就要用到训练结果,我们在第二节和第三节都讨论了,训练结果(或训练模型)文件怎么输出,但是,没怎么详细说明怎么使用训练结果,现在具体说明。下面是两个模型文件:

图5.1 两类模型文件

图5.2 三类模型文件

从图5.1和5.2比较可以看出,两类只存在一个分类器,因此每个支持向量对应的系数α(也就是SV的第一排),也只有1个(当然,截距rho也只有一个)。这种情况最简单,只要把相应的支持向量和α的值带入方程:

(5.1)

找到为0的解,就是分界点了。(式中,有些文献是+b,libSVM采用的是-b)

对于三类或多类时,情况就比较复杂。我们原来讨论过,对于类数k>2的情况,分类器个数为k×(k-1)/2个,那么对应的b值(也就是rho)应该也是k×(k-1)/2个。那么每个支持向量对应的系数α是多少呢?是k-1个,因为每个支持向量(sv)与其他每个类都有一个系数相对应。当然,和有的类对应时可能不是标准支持向量(0

从表中,可以看出,每个支持向量(SV)都有相应的k-1(这里的k为3)个α,后面就是

向量的数据。因此,输出分界线时,只要认清系数的位置就可以了。如要输出类0和类2之间的分界线,就要带入类0的第二列和类2的第1列中的α。

这里需要重点说明的是:文件输出的不是单纯的α,实际上是αiyi(这里的yi是在训练时的+1或-1,而不是原始样本的label),因此在带入5.1式时,不需要判断yi的值了。

了解了数据结构以后,就是求解方程。5.1式是个多元方程(这和x的维数有关,这里讨论的是2维的,因此是二元方程),而只有一个等式,因此要对其中一个参数做定常处理。先求出其中一个参数的范围,不妨设为x[0](在绘图时相当于x坐标轴)x_max和x_min,然后分成100等分,对每一个节点处

x[0]i = i×(x_max- x_min)/100+ x_min

这样,x[0]就相当于固定了,然后代入5.1式求x[1](也就是y)。这就转化成了一元方程,可以采用传统的数学解法,这里,我采用的是网络遍历法。也就是对x[1]也分成100分进行遍历,把节点处的x[1]:

x[1]j = j×(y_max- y_min)/100+ y_min

代入5.1式,看是否接近于0,如果接近0,说明此点是边界点,然后输出坐标就可以了。for(i = 0; i < 100; i ++) {

for(j = 0; j < 100; j ++) {

X[0] = x[0]i;

X[1] = x[1]j;

if( )

cout << X[0] << “ “ << X[1] <

}

}

分界点坐标输出以后,就可以用matlab把分界线绘制出来了。

easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。

这两个文件都要用python(可以在https://www.wendangku.net/doc/6410023155.html,上下载到,需要安装)和绘图工具gnuplot(可以在ftp://https://www.wendangku.net/doc/6410023155.html,/pub/gnuplot/上下载,不需要安装)。假设python 安装在d:\libsvm\tools\python26下,而gnuplot解压到d:\libsvm\tools\gnuplot,libsvm放在了d:\libsvm\program中(这时easy.py和grid.py文件的目录为d:\libsvm\program\tools)。另外,需要注意的是版本,我的是python 2.6、gnuplot 4.2 和libsvm 2.89,操作系统是WINXP。

1. grid.py使用方法

文件grid.py是对C-SVC的参数c和γ做优选的,原理也是网格遍历,假设我们要对目录d:\libsvm\program\tools下的样本文件heart_scale做优选,其具体用法为:

第一步:打开d:\libsvm\program下的tools文件夹,找到grid.py文件。用python打开(不能双击,而要右键选择“Edit with IDLE”),修改svmtrain_exe和gnuplot_exe的路径。svmtrain_exe = r"D:\libSVM\program\svm-train.exe"

gnuplot_exe = r"D:\libSVM\gnuplot\pgnuplot.exe"

(这里面有一个是对非win32的,可以不用改,只改# example for windows下的就可以了)

第二步:运行cmd,进入dos环境,定位到d:\libsvm\program\tools文件夹,这里是放置grid.py的地方。怎么定位可以参看第一节。

第三步:输入以下命令:

d:\libsvm\python26\python grid.py heart_scale

你就会看到dos窗口中飞速乱串的[local]数据,以及一个gnuplot的动态绘图窗口。大约过10秒钟,就会停止。Dos窗口中的[local]数据时局部最优值,这个不用管,直接看最后一行:

2048.0 0.0001220703125 84.0741

其意义表示:C = 2048.0;γ=0.0001220703125(γ是哪个参数?参看LibSVM学习(三)中svmtrain的参数说明);交叉验证精度CV Rate = 84.0741%,这就是最优结果。

第四步:打开目录d:\libsvm\program\tools,我们可以看到新生成了两个文件:heart_scale.out和heart_scale.png,第一个文件就是搜索过程中的[local]和最优数据,第二文件就是gnuplot图像。

现在,grid.py已经运行完了,你可以把最优参数输入到svmtrain中进行训练了。当然了,你在当中某一步很可能出现问题,不过不要紧,我也不是一下子成功的,摸索了半天才成功。下面就需要注意的问题说明一下:

1)grid.py和svm-train的版本要统一,也就是说你不能用2.6的grid.py去调用2.89的svm-train。

2)你的目录中如果有空格,比如d:\program files\ libsvm\...,那么无论是在第一步还是第二步,请把目录改成d:\progra~1\ libsvm\...

3) 第三步的命令问题。首先要看你定位到哪个目录,那么其下的文件就不需要带路径,否则就要带。像我们上面的命令,我当前的目录是d:\libsvm\program\tools,那么其下的easy.py和heart_scale文件就不需要加路径,而python.exe是在d:\libsvm\python26\下,因此不在当前目录下,所以要加路径。比如,当我首先用dos定位到d:\libsvm\python26时,其命令就可以改成:

python d:\libsvm\program\tools\grid.py d:\libsvm\program\tools\heart_scale

总起来说,命令为python 目标文件样本文件,其原则是要让系统找得到文件。假如系统提示你“不是内部或外部命令”,说明你python的路径错误,而如果是‘not found file’的提示,很可能是其他两个文件路径错误。

4)假如,你仍旧出现问题,那么请换一下python或者gnuplot的版本,目前python 最新版本是3.1,但是好像会出问题,老一点的版本2.4或2.5的兼容性会更好。

2. easy.py使用方法

文件easy.py对样本文件做了“一条龙服务”,从参数优选,到文件预测。因此,其对grid.py、svm-train、svm-scale和svm-predict都进行了调用(当然还有必须的python和gnuplot)。

因此,运行easy.py需要保证这些文件的路径都要正确。当然还需要样本文件和预测文件,这里样本文件还是用heart_scale,预测文件我们复制一份然后改名heart_test,下面说一下使用方法:

第一步:打开easy.py,修改# example for windows下的几个路径:

第二步:运行cmd,进入dos环境,定位到放置easy.py的目录d:\libsvm\program\tools。

第三步:输入命令:

d:\libsvm\python26\python easy.py heart_scale heat_test

你就会看到一个gnuplot的动态绘图窗口。大约20s以后停止,dos窗口显示为:Scaling training data...

Cross validation...

Best c=2048.0, g=0.0001220703125 CV rate=84.0741

Training...

Output model: heart_scale.model

Scaling testing data...

Testing...

Accuracy = 85.1852% (230/270) (classification)

Output prediction: heart_test.predict

这就是最终预测结果,可以看到第三行就是调用grid.py的结果。在d:\libsvm\program\tools下你会看到又多了7个文件,都是以前我们碰到的过程文件,都可以用记事本打开。

3. 常见的问题解析:

1)

Scaling training data...

Cross validation...

Traceback (most recent call last):

File "easy.py", line 61, in ?

c,g,rate = map(float,last_line.split())

ValueError: need more than 0 values to unpack

[解析] 说明你的grid.py运行出现错误,你可以参照第一部分“grid.py使用方法”运行一下就会发现问题。另外,有的说是相对路径的问题,建议找到easy.py的以下部分:cmd = "%s -svmtrain %s -gnuplot %s %s" % (grid_py, svmtrain_exe, gnuplot_exe, scaled_file)

改成

cmd = "%s %s -svmtrain %s -gnuplot %s %s" % (python_path, grid_py, svmtrain_exe, gnuplot_exe, scaled_file)

2)

Traceback (most recent call last)

File "grid.py", line 349, in ?

main()

File "grid.py", line 344, in main

redraw(db)

File "grid.py", line 132, in redraw

gnuplot.write("set term windows\n")

IOError [Errno 22] Invalid argument

[解析] 说明你的gnuplot.exe在调用过程中出现问题,要么是你的路径不对,要么是你的版本不对,请检查。

3)

Traceback (most recent call last):

File "C:\Python24\lib\threading.py", line 442, in __bootstrap

self.run()

File "c:\libsvm\tools\gridregression.py", line 212, in run

self.job_queue.put((cexp,gexp,pexp))

File "C:\Python24\lib\Queue.py", line 88, in put

self._put(item)

File "c:\libsvm\tools\gridregression.py", line 268, in _put

self.queue.insert(0,item)

AttributeError: 'collections.deque' object has no attribute 'insert

[解析] 很显然,你调用的是gridregression.py,其是用来做回归用的。如果你调用easy.py也出现这种问题按照原作者的说法,这里是因为你的python调用出现错误,很可能是版本不对,如果是2.4的版本,请把easy.py中的

self.queue.insert(0,item)

改成

if sys.hexversion >= 0x020400A1:

self.queue.appendleft(item)

else

self.queue.insert(0,item)

参考

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/20/4466023.aspx

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/20/4466059.aspx

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/21/4468995.aspx

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/21/4470121.aspx

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/21/4469617.aspx

https://www.wendangku.net/doc/6410023155.html,/flydreamGG/archive/2009/08/21/4470477.aspx

备自投工作原理

微机备自投装置的基本原理及应用 本文介绍了微机线路备自投保护装置特性和应用中的供电方式,阐述其应用于母联备自投工作和线路备自投的工作原理及备自投保护装置运行条件及动作条件。 备自投保护供电方式技术条件 1.引言 随着我国人民生产生活的现代化程度日益提高,人们对电力的需求和依赖程度也在倍增,对电能质量的要求也更加严格,供配电在各个领域也不断向自动化、无人值守、远程控制、不间断供电的目标迈进。有些电力用户尤其对不间断供电的要求显得更加突出。我国的电力供应主要还是依靠国家电网供电,电力缺口也在不断增大,尤其在用电高峰期缺电现象严重,为此很多大型企业便自建电厂或配备发电机,因此各种电源的相互切换,保证电源的不间断供电和供电的高可靠性成了现代配电工程中保护和控制回路的重要部分。在GB50062 《电力装置的继电保护和自动装置设计规范》中的第十一章也明确规定了备用电源和备用设备的自动投入的具体要求。 微机线路备自投保护装置使系统自动装置与继电保护装置相结合,是一种对用户提供不间断供电的经济而又有效的技术措施,它在现代供电系统中得到了广泛的应用。在此只对微机线路备自投保护装置在电力系统中两种备自投方式和基本原理进行探讨。

微机线路备自投保护装置(以下简称备自投)核心部分采用高性能单片机,包括CPU模块、继电器模块、交流电源模块、人机对话模块等构成,具有抗干扰性强、稳定可靠、使用方便等优点。其液晶数显屏和备自投面板上所带的按键使得操作简单方便,也可通过RS485通讯接口实现远程控制。装置采用交流不间断采样方式采集到信号后实时进行傅立叶法计算,能精确判断电源状态,并实施延时切换电源。备自投具有在线运行状态监视功能,可观察各输入电气量、开关量、定值等信息,其有可靠的软硬件看门狗功能和事件记录功能。 产品在不同的电压等级如110kV、10kV、0.4kV系统的供配电回路中使用时需要设定不同的电气参数,在订货时必须注明。在选择备自投功能时则一定不可以投入低电压保护,以免冲突引起拒动或误动。 变配电站备自投有两种基本的供电方式。第一种如图1所示母联分段供电方式,母联开关断开,两个工作电源分别供电,两个电源互为备用,此方式称为母联备自投方式。第二种如图2所示双进线向单母线供电方式,即由一个工作电源供电,另一个电源为备用,此方式称为线路备自投方式。

MATALB中SVM工具箱快速入手简易教程(常出现的错误解决办法)

MATALB中SVM工具箱快速入手简易教程(常出现的错误解决办法) ——胡matlab 自带的函数(matlab帮助文件里的例子)[只 有较新版本的matlab中有这两个SVM的函数] (本人使用的是2012版本) svmtrain svmclassify =====简要语法规则==== svmtrain Train support vector machine classifier Syntax SVMStruct = svmtrain(Training, Group) SVMStruct = svmtrain(..., 'Kernel_Function', Kernel_FunctionValue, ...) SVMStruct = svmtrain(..., 'RBF_Sigma', RBFSigmaValue, ...) SVMStruct = svmtrain(..., 'Polyorder', PolyorderValue, ...) SVMStruct = svmtrain(..., 'Mlp_Params', Mlp_ParamsValue, ...) SVMStruct = svmtrain(..., 'Method', MethodValue, ...) SVMStruct = svmtrain(..., 'QuadProg_Opts', QuadProg_OptsValue, ...) SVMStruct = svmtrain(..., 'SMO_Opts', SMO_OptsValue, ...) SVMStruct = svmtrain(..., 'BoxConstraint', BoxConstraintValue, ...) SVMStruct = svmtrain(..., 'Autoscale', AutoscaleValue, ...) SVMStruct = svmtrain(..., 'Showplot', ShowplotValue, ...) --------------------- svmclassify Classify data using support vector machine Syntax Group = svmclassify(SVMStruct, Sample) Group = svmclassify(SVMStruct, Sample, 'Showplot', ShowplotValue)

浅谈隔离式安全栅的使用(通用版)

( 安全管理 ) 单位:_________________________ 姓名:_________________________ 日期:_________________________ 精品文档 / Word文档 / 文字可改 浅谈隔离式安全栅的使用(通用 版) Safety management is an important part of production management. Safety and production are in the implementation process

浅谈隔离式安全栅的使用(通用版) 隔离式安全栅的使用 1.隔离式安全栅应安装在非危险场所。 2.隔离式安全栅通往现场(危险场所)的软铜导线截面积必须大于0.5mm2。 3.连接导线的绝缘强度大于500V。 4.隔离式安全栅本安端(有蓝色标记)和非本安端电路配线,不得接错和混淆。本安导线宜选用蓝色作为本安标记。本安导线和非本安导线在汇线槽中应分开铺设,采用各自保护套管。隔离式安全栅的本安侧,不允许混淆有其它电源,包括其它本安电路的电源。 5.凡与隔离式安全栅相连接的现场仪表,均应为有关防爆部门进行防爆试验并取得防爆合格证的仪表。 6.如隔离式安全栅内部模块损坏需要维修或更换时,原则上应由制造厂承担。用户自行维修时,应按照有关的注意事项,具体方

法请按照维修的章节进行(本质安全型仪表的维修仅限于所述的范围进行,其外的维修应与制造厂商量)。经检修后方能重新投入运行。 7.隔离式安全栅的安装、使用和维护应严格遵照。GB3836.15-2000《爆炸性气体环境用电气设备第15部分:危险场所电气安装(煤矿除外)》的有关条款进行。 8.隔离式安全栅与一次仪表组成本安安全防爆系统时,必须经国家指定的防爆检验机构检验认可。帕罗肯科技PRG-1100系列隔离式安全栅由国家防爆电气监督检验中心,给出的Co,Lo分布参数是相对与ⅡC级(氢气级)的最大允许值对于ⅡB级环境可把该参数乘以3,对于ⅡA级环境可把该参数乘以8。传输线选用不同规格的电缆时,其本身的电缆参数应予高度重视,不得超过规定值。 9.对隔离式安全栅进行单独通电调试时,必须注意隔离式安全栅的型号(帕罗肯科技的PRG-1000,PRG-1100,PRG-1101,PRG-1200,PRG1400等)、电源极性、电压等级及隔离式安全栅外壳接线端上的标号。 10.严禁用兆欧表测试隔离安全栅端子之间的绝缘性。若要检

备自投保护工作的原理

备自投保护工作的原理 一、备自投保护工作的原理 A、进线备自投及自恢复原理 进线1为本说明中的主回路来安变AH1柜,进线2为本说明中马2线AH10柜。以下按照进线1和进线2作说明。 1、进线备自投:(进线1合位,进线2分位) 备自投充电的条件如下(只有备自投充电完成后备自投才能动作) a、进线1电源正常,且开关在合位; b、进线2开关分位; c、备自投检测到进线1合位信号(常开接点接入开入量3); d、备自投检没有测到进线2合位信号(常开接点接入开入量4); e、备自投没有被闭锁(入开入量7没有信号接入); 满足以上五个条件时,备自投充电15秒后充电完成,保护液晶屏上显示“充电1”,;当母线失压时,则延时跳开进线1开关,经延时后合上进线2开关。 2、自恢复:(进线1分位,进线2合位) 自恢复的条件是: a、进线1开关分位; b、进线2开关合位; c、备自投没有检测到进线1合位信号(常开接点接入开入量3); d、备自投检测到进线2合位信号(常开接点接入开入量4); 满足以上四个条件后,当进线1恢复有压时,“自恢复”动作,则

延时后跳开进线2开关,经延时后合上进线1开关。 本次工厂停电时的系统工作状态正好符合系统自恢复工作条件,导致本次停电事件的发生。 二、其他情况 1、停电后,公司设备管理人员对设备进行了几次手动操作实验,发现手动分进线1开关,备自投自动合进线2开关。 针对手动操作时,备自投出现合进线2开关的情况,我部门仔细询问了综保生产厂家技术支持后得知,本综保出厂参数在调试过程中有改动,定值中的“合断路器延时”1S改为了0秒,造成备自投对“手动操作”与“自投发出分闸信号”无法加以判断。在此也表述一下手动操作的判断逻辑,具体如下: 手动操作判断逻辑:-----手动分进线1开关-----进线1开关状态信号转换-----开入量由合到分-----备自投装置延时(0.5~1S)判断-----进线1开关状态信号转换时间是否在备自投发出分闸信号前-----是-----备自投不充电------程序运行终止-----不发出合进线2信号。 回路故障动作判断逻辑:----回路故障----进线柜保护综保发出分进线断路器信号-------进线开关状态信号转换-----开入量由合到分-----备自投装置延时(0.5~1S)判断-----进线开关状态信号转换时间是否在备自投发出分闸信号前-----是-----备自投不充电------程序运行终止-----不发出合另一进线命令信号。 从以上“手动操作”和“回路故障动”逻辑很清楚可以看出,备自投装置延时(0.5~1S)判断这个值很关键,如果没有这个判断时间节点,

Libsvm-FarutoGUI版本介绍与使用(《Learn SVM Step by Step》by faruto2011系列视频-应用篇)

——打造最优秀、专业和权威的MATLAB技术交流平台! https://www.wendangku.net/doc/6410023155.html, MATLAB技术论坛| Simulink仿真论坛| 专业MATLAB技术交流平台! 网址:https://www.wendangku.net/doc/6410023155.html, 邮箱:matlabsky@https://www.wendangku.net/doc/6410023155.html, 客服:1341692017(QQ) 技术论坛:https://www.wendangku.net/doc/6410023155.html, 函数百科:https://www.wendangku.net/doc/6410023155.html, 电子期刊:https://www.wendangku.net/doc/6410023155.html, 官方博客:https://www.wendangku.net/doc/6410023155.html, 读书频道:https://www.wendangku.net/doc/6410023155.html, 视频教程:https://www.wendangku.net/doc/6410023155.html, 有偿编程:https://www.wendangku.net/doc/6410023155.html, 软件汉化:https://www.wendangku.net/doc/6410023155.html,

——打造最优秀、专业和权威的MATLAB技术交流平台! https://www.wendangku.net/doc/6410023155.html, MATLAB技术论坛视频教学 内容:《Learn SVM Step by Step 》系列视频 作者:faruto 时间:2011.6-9 版权:All Rights Preserved By https://www.wendangku.net/doc/6410023155.html, 声明:严厉谴责和鄙夷一切利用本论坛资源进行任何牟利或盗版的行为! 更多MATLAB精彩视频详见https://www.wendangku.net/doc/6410023155.html,/forum-5-1.html

——打造最优秀、专业和权威的MATLAB技术交流平台! https://www.wendangku.net/doc/6410023155.html, 《Learn SVM Step by Step 》系列视频目录 –《Learn SVM Step by Step 》应用篇 ?Libsvm的下载、安装和使用 ?https://www.wendangku.net/doc/6410023155.html,/thread-18080-1-1.html ?Libsvm参数实例详解 ?https://www.wendangku.net/doc/6410023155.html,/thread-18457-1-1.html ?一个实例搞定libsvm分类 ?https://www.wendangku.net/doc/6410023155.html,/thread-18521-1-1.html ?一个实例搞定libsvm回归 ?https://www.wendangku.net/doc/6410023155.html,/thread-18552-1-1.html ?Libsvm-FarutoUltimate版本介绍与使用 ?https://www.wendangku.net/doc/6410023155.html,/thread-18594-1-1.html ?Libsvm-FarutoGUI版本介绍与使用 ?https://www.wendangku.net/doc/6410023155.html,/thread-18606-1-1.html ?…… ?Lssvm的下载、安装和使用 ?一个实例搞定lssvm分类 ?一个实例搞定lssvm回归 ?…… –《Learn SVM Step by Step 》理论篇 ?具体内容待定。

隔离式安全栅的工作原理

隔离式安全栅的工作原理 姓名:XXX 部门:XXX 日期:XXX

隔离式安全栅的工作原理 安全栅的主要功能就是限制安全场所的危险能量进入危险场所,及限制送往危险场所的电压和电流。齐纳管Z用于限制电压。当回路电压接近安全限压值时,齐纳管导通,使齐纳管两端的电压始终保持在安全限压值以下。电阻R用于限制电流。当电压被限制后,适当选择电阻值,可将回路电流限制在安全限流值以下。 与齐纳安全栅相比,隔离式安全栅除具有限压与限流的作用之外,还带有电流隔离的功能。隔离栅通常由回路限能单元、电流隔离单元和信号处理单元三部分组成,基本功能电路如图2所示。回路限能单元为安全栅的核心部分。此外,辅助有用于驱动现场仪表的回路供电电路和用于仪表信号采集的检测电路。信号处理单元则根据安全栅的功能要求进行信号处理。 工业现场一般需要采用两线制传输方式的配电器,既要为诸如压力变送器等一次仪表提供24V配电电源,同时又要对输入的电流信号进行采集、放大、运算、和进行抗干扰处理后,再输出隔离的电流和电压信号,供后面的二次仪表或其它仪表使用。但一些特殊的工业现场不但需要两线制传输,既提供配电电源又有信号隔离功能,同时还需要具有安全火花型防爆的性能,可靠地防止电源高压与信号之间的混触,利用电流、电压双重化限制回路,把进入危险场所的能量限制在安全定额以下的具有特殊功能的配电器安全栅。 隔离式安全栅,基本有检测端安全栅和操作端安全栅两种类型。检测端安全栅与两线制变送器配套使用;操作端安全栅与电气转换器或电气阀门配套使用。也有信号输入等类型隔离式安全栅。 第 2 页共 4 页

由于隔离式安全栅采用了限压、限流、隔离等措施,不仅能防止危险能量从本安端子进入危险现场,提高系统的本安防爆性能,而且还增加了系统的抗干扰能力,大大提高了系统运行的可靠性。24VDC电源经DC-AC-DC变换后,输出模块电路所需要的多种电压。 检测端隔离式安全栅的原理是:模块电路将通过本安能量限制电路输入的电流或电压信号转变为0.2-1VDC后,送入模块内进行采集、放大、运算和进行抗干扰处理后,再经变压器调制成输出隔离的电流和电压信号,供后面的二次仪表或其它仪表使用。模块还需输出一个隔离的18.5∽28.5VDC电压,通过本安能量限制电路做为供给两线制变送器的工作电压。本安能量限制电路能限制大电流或高电压的危险信号窜入危险现场。 操作端隔离式安全栅的原理是:将调节器或操作器输出的4-20mADC 信号隔离后再输出4-20mADC的信号,通过本安能量限制电路供给电气转换器或现场的电气阀门定位器使用。 第 3 页共 4 页

安全栅的主要功能有哪些

安全栅的主要功能有哪些? 安全栅的主要功能就是限制安全场所的危险能量进入危险场所,及限制送往危险场所的电压和电流。齐纳管Z用于限制电压。当回路电压接近安全限压值时,齐纳管导通,使齐纳管两端的电压始终保持在安全限压值以下。电阻R 用于限制电流。当电压被限制后,适当选择电阻值,可将回路电流限制在安全限流值以下。 与齐纳安全栅相比,隔离式安全栅除具有限压与限流的作用之外,还带有电流隔离的功能。隔离栅通常由回路限能单元、电流隔离单元和信号处理单元三部分组成,回路限能单元为安全栅的核心部分。此外,辅助有用于驱动现场仪表的回路供电电路和用于仪表信号采集的检测电路。信号处理单元则根据安全栅的功能要求进行信号处理。 工业现场一般需要采用两线制传输方式的配电器,既要为诸如压力变送器等一次仪表提供24V配电电源,同时又要对输入的电流信号进行采集、放大、运算、和进行抗干扰处理后,再输出隔离的电流和电压信号,供后面的二次仪表或其它仪表使用。但一些特殊的工业现场不但需要两线制传输,既提供配电电源又有信号隔离功能,同时还需要具有安全火花型防爆的性能,可靠地防止电源高压与信号之间的混触,利用电流、电压双重化限制回路,把进入危险场所的能量限制在安全定额以下的具有特殊功能的配电器—安全栅。 隔离式安全栅,基本有检测端安全栅和操作端安全栅两种类型。检测端安全栅与两线制变送器配套使用;操作端安全栅与电气转换器或电气阀门配套使用。也有信号输入等类型隔离式安全栅。 由于隔离式安全栅采用了限压、限流、隔离等措施,不仅能防止危险能量从本安端子进入危险现场,提高系统的本安防爆性能,而且还增加了系统的抗干扰能力,大大提高了系统运行的可靠性。24VDC 电源经DC-AC-DC变换后,输出模块电路所需要的多种电压。 检测端隔离式安全栅的原理是:模块电路将通过本安能量限制电路输入的电流或电压信号转变为0.2~1VDC后,送入模块内进行采集、放大、运算和进行抗干扰处理后,再经变压器调制成输出隔离的电流和电压信号,供后面的二次仪表或其它仪表使用。模块还需输出一个隔离的18.5~28.5VDC电压,通过本安能量限制电路做为供给两线制变送器的工作电压。本安能量限制电路能限制大电流或高电压的危险信号窜入危险现场。 操作端隔离式安全栅的原理是:将调节器或操作器输出的4~20mA DC信号隔离后再输出4~20mA DC的信号,通过本安能量限制电路供给电气转换器或现场的电气阀门定位器使用。 安全栅的作用 在许多工业过程中,需要处理或使用一些易燃材料,如原油和它的衍生物,酒精,天然气,粉末,飞扬物,任何渗漏或溅出都有可能形成一个爆炸环境(危险场所,具体分类方法见下文)。为了工厂和人员的安全,必须确保这个环境不会被点燃引起爆炸。 而在生产过程中大量使用电气设备,各种磨擦的电火花、静电火花、高温等不可避免,尤其当设备发生故障时,都有可能会点燃爆炸环境。为了防止爆炸的发生,至今已开发了8中不同的防爆技术,其中本质安全是一种低成本而高有效的防爆技术。 本质安全(IS)是系统防爆的技术,如下图,安全场所的控制室设备通过安全栅与危险场所的本安设备相连,传递信号或能量。安全栅利用限流和限压电路,限制了从安全场所传递到危险场所的能量;处于危险场所的本安设备在这样的能量下能够正常工作,但这样的能量不足以引燃爆炸环境,即使本安设备自身发生故障,也不会产生任何足以引燃的电火花或发热表面。因此,无论是安全场所的控制室设备还是危险场所的本安设备发生故障,只要安全栅的限流限压电路正常工作,整个系统都会处于安全状态,不会产生爆炸。 安全栅作为控制室的非本安设备与危险场所的本安设备之间的关联设备,是本安防爆系统中的重要组成部分。常见的安全栅包括齐纳式安全栅、晶体管式安全栅、变压器隔离式安全栅。 齐纳式安全栅电路原理如下图所示,稳压二极管Z限制了从非本安端传到本安端的电压,电阻R则限制了从非本安端传到本安端的电流,快速熔断器F用于保护稳压二极管Z不被过大的电流烧坏。由于电路的限压和限流,输出到危险区的能量被限制在安全值以内。齐纳式安全栅的特点是电路所用的元器件极少、故障率低、成本低、回路信号保真性好;但由于必须加限能电阻和智能变送器的采样电阻,过大的电压降低往往会导致回路供电不足;而且在工程应用中必须可靠接地,否则便会失去防爆安全保护功能。 齐纳式安全栅是本安防爆系统中的一种非常重要的关联设备。当出现故障时,齐纳安全栅会确保现场安全。齐纳式安全栅起保护作用后它内部的熔丝就要烧断,由于防爆上的特殊要求:齐纳式安全栅要用环氧树脂灌封,因而烧断熔丝的齐纳安全栅也就损坏了,必须更换新的齐纳式安全栅。MSB500系列齐纳安全栅是一种新颖的熔丝可更换式齐纳安全栅,系我公司新开发的齐纳式安全栅。产品系列齐全,适用于各种变送器、电气阀门定位器、各类开关、电磁阀、流量仪表、热电阻、热电偶及一些特殊的现场仪表。同时可与各种 DCS 系统连接对智能变送器实现双向数字通讯。

备自投原理

主所33KV自投原理 批准: 审核: 初核: 编制: 广州地铁四号线供变电 2012年02月

主要内容 1、什么是备用电源自动投入装置? 2、备自投装置应满足哪些基本要求? 3、分段自投原理。 4、备用电源自动投入条件。 5、运行中应注意的几个问题。 一.什么是备用电源自动投入装置? 备用电源自动投入装置是当工作电源因故障断开以后,能自动而迅速地将备用电源投入到工作或将用户切换到备用电源上去,从而使用户不至于被停电的一种自动装置,简称备自投装置。 二、备自投装置应满足哪些基本要求? 1、工作电源断开后,备用电源才能投入; 2、备自投装置投入备用电源断路器必须经过延时,延时时限应大于最长的外部故障切除时间. 3、在手动跳开工作电源时,备自投不应动作。 4、应具备闭锁备自投装置的逻辑功能,以防止备用电源投到故障的元件上,造成事故扩大的严重后果。 5、备用电源无压时,BZT不应动作; 6、BZT在电压互感器(PT)二次熔断器熔断时不应误动,故应设置PT短线告警; 7、BZT只能动作一次,防止系统受到多次冲击而扩大事故; 三、备自投原理 备自投的主要形式有: 桥备投、分段备投、母联备投、线路备投、变压器备投。

单母线分段 1、备自投的主要形式有: (1)若正常运行时,一台主变带两段母线并列运行,另一台主变作为明备用,采用进线(变压器)备自投;若正常运行时,两段母线分列运行,每台主变各带一段母线,两段母线互为暗备用,采用分段备自投。 (2)若正常运行时,一条进线带两段母线并列运行,另一条进线作为明备用。采用进线备自投;若正常运行时,每条进线各带一段母线,两条进线互为暗备用,采用分段备自投。 2、模拟量输入 外部电流及电压输入经隔离互感器隔离变换后,由低通滤波器输入模数变换器。

电力系统备自投的原理说明

电力系统备自投的原理说明 九十年代初期,厂用电系统的综合保护逐步受到重视,在一些工程中使用了进口的电动机综合保护装置。后来国内一些厂家仿进口装置开发了模拟式电动机综合保护装置,但普遍存在着零漂影响大,误动作多等缺点,到目前为止微机型厂用电系统综合保护装置已普遍取代了过去传统的继电器和模拟式装置。 随着计算机技术的不断发展,控制现场对控制装置的自动化水平要求越来越高。现场DCS的普遍应用,使得将保护、控制、测量及通讯功能集于一体成为可能,且为现场所急需。为了适应现场的需要,我们在MPW-1、2系列厂用电系统微机综合保护装置的基础上进行了极大的改进与发展,开发出集保护、控制、测量及通讯功能于一体的第三代微机型厂用电系统综合保护及控制装置。 MPW-4系列厂用电系统综合保护及控制装置应用先进的保护原理,软、硬件采用模块化体系结构和高抗干扰设计,操作简单、实用,运行可靠。产品包括电动机综合保护及控制装置、电动机差动保护、低压变压器综合保护及控制装置、线路综合保护及控制装置、分支综合保护及控制装置、备用电源自投装置及SC-9000保护通讯控制器(电气工程师站),适用于电力、石油、化工、冶金、煤炭等领域的保护、控制及综合自动化系统。 MPW-4系列装置具有如下特点:

1.采用高性能的高速DSP(TMS320DSP243)单片数字信号处理控制器作为主控单元。 2.采用高速14位AD,极大提高测量精度。保护通道误差小于0.5%,时间误差小于20ms。量测通道误差小于0.2%。 3.用大容量串行EEPROM存放保护定值、运行参数、统计值、事件记录及故障记录,保证数据安全可靠。 4.采用全交流采样,软件数字滤波,彻底消除了硬件电路零漂的影响。 5.全中文液晶显示,操作界面直观简便。 6.装置具有完善的自检功能;三级Watchdog及电源监视功能,保证装置可靠运行。 7.所有定值和参数均可在面板上直接操作或通过网络在电气工程师站操作。 8.具有故障录波及电动机启动过程自动录波功能,可记录出口动作时刻的运行参数及电机启动过程的电流最大值,实现故障波形及启动过程波形的再现。 9.独有电动机自启动过程的自动识别功能,可有效防止电动机自启动过程的保护误动。 10.电动机保护(综合保护及差动保护)的定值,采用启动过程的定值与正常运行时的定值独立设置的方式,既可以保证启动时不误动,

LIBSVM使用方法

LIBSVM 1 LIBSVM简介 LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross -SVM回归等问题,包括基于一对一算法的多类模式识别问题。SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。ν-SVM回归和ε-SVM分类、νValidation)的功能。该软件包可以在https://www.wendangku.net/doc/6410023155.html,.tw/~cjlin/免费获得。该软件可以解决C-SVM分类、-SVM回归等问题,包括基于一对一算法的多类模式识别问题。SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。 2 LIBSVM使用方法 LibSVM是以源代码和可执行文件两种方式给出的。如果是Windows系列操作系统,可以直接使用软件包提供的程序,也可以进行修改编译;如果是Unix类系统,必须自己编译,软件包中提供了编译格式文件,我们在SGI工作站(操作系统IRIX6.5)上,使用免费编译器GNU C++3.3编译通过。 2.1 LIBSVM 使用的一般步骤: 1) 按照LIBSVM软件包所要求的格式准备数据集; 2) 对数据进行简单的缩放操作; 3) 考虑选用RBF 核函数; 4) 采用交叉验证选择最佳参数C与g; 5) 采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型; 6) 利用获取的模型进行测试与预测。 2.2 LIBSVM使用的数据格式 该软件使用的训练数据和检验数据文件格式如下:

隔离式安全栅的工作原理

编号:SY-AQ-09365 ( 安全管理) 单位:_____________________ 审批:_____________________ 日期:_____________________ WORD文档/ A4打印/ 可编辑 隔离式安全栅的工作原理 Working principle of isolated safety barrier

隔离式安全栅的工作原理 导语:进行安全管理的目的是预防、消灭事故,防止或消除事故伤害,保护劳动者的安全与健康。在安全管理的四项主要内容中,虽然都是为了达到安全管理的目的,但是对生产因素状态的控制,与安全管理目的关系更直接,显得更为突出。 安全栅的主要功能就是限制安全场所的危险能量进入危险场所,及限制送往危险场所的电压和电流。齐纳管Z用于限制电压。当回路电压接近安全限压值时,齐纳管导通,使齐纳管两端的电压始终保持在安全限压值以下。电阻R用于限制电流。当电压被限制后,适当选择电阻值,可将回路电流限制在安全限流值以下。 与齐纳安全栅相比,隔离式安全栅除具有限压与限流的作用之外,还带有电流隔离的功能。隔离栅通常由回路限能单元、电流隔离单元和信号处理单元三部分组成,基本功能电路如图2所示。回路限能单元为安全栅的核心部分。此外,辅助有用于驱动现场仪表的回路供电电路和用于仪表信号采集的检测电路。信号处理单元则根据安全栅的功能要求进行信号处理。 工业现场一般需要采用两线制传输方式的配电器,既要为诸如压力变送器等一次仪表提供24V配电电源,同时又要对输入的电流

信号进行采集、放大、运算、和进行抗干扰处理后,再输出隔离的电流和电压信号,供后面的二次仪表或其它仪表使用。但一些特殊的工业现场不但需要两线制传输,既提供配电电源又有信号隔离功能,同时还需要具有安全火花型防爆的性能,可靠地防止电源高压与信号之间的混触,利用电流、电压双重化限制回路,把进入危险场所的能量限制在安全定额以下的具有特殊功能的配电器—安全栅。 隔离式安全栅,基本有检测端安全栅和操作端安全栅两种类型。检测端安全栅与两线制变送器配套使用;操作端安全栅与电气转换器或电气阀门配套使用。也有信号输入等类型隔离式安全栅。 由于隔离式安全栅采用了限压、限流、隔离等措施,不仅能防止危险能量从本安端子进入危险现场,提高系统的本安防爆性能,而且还增加了系统的抗干扰能力,大大提高了系统运行的可靠性。24VDC电源经DC-AC-DC变换后,输出模块电路所需要的多种电压。 检测端隔离式安全栅的原理是:模块电路将通过本安能量限制

libsvm-mat-加强工具箱介绍

libsvm-mat-加强工具箱介绍 由于libsvm的matlab版本的工具箱libsvm-mat并没有给出寻参的函数模块,而无论利用libsvm工具箱进行分类还是回归,参数的选取是十分重要的,鉴于此libsvm-mat-加强工具箱在libsvm-mat-2.89-3的基础上给出相应的辅助函数插件,方便用户来选取最佳的参数,该加强工具箱可以在MATLAB中文论坛上下载,现对该加强工具箱里主要的辅助函数插件的接口进行介绍,所有的源代码可以到MATLAB中文论坛下载并查看。 ====================================================== ==== 归一化函数:scaleForSVM [train_scale,test_scale,ps]= scaleForSVM(train_data,test_data,ymin,ymax) 输入: train_data:训练集,格式要求与svmtrain相同。 test_data:测试集,格式要求与svmtrain相同。 ymin,ymax:归一化的范围,即将训练集和测试都归一化到[ymin,ymax],这两个参数可不输入,默认值为ymin=0,ymax=1,即默认将训练集和测试都归一化到[0,1]。 输出: train_scale:归一化后的训练集。 test_scale:归一化后的测试集。 ps:归一化过程中的映射(方便反归一化使用)。 ====================================================== ==== pca降维预处理函数:pcaForSVM

安全栅简介

随着石油、化工、煤炭、冶金等工业的迅速发展,一些易燃材料的处理引起了社会各界的重视。这些场合通常含有如天然气、合成气、金属屑、碳尘、粉末、浆料、晶粒、纤维、飞扬物等这些材料,任何渗漏或溅出都可能形成一个爆炸性危险场所,为了工厂和人员的安全,必须确保这个环境的安全。因此世界许多国家和地区对防爆电气产品实施防爆认证制度,防爆产品必须取得防爆认证,才允许在爆炸危险场所使用。 一、本质安全防爆技术 1、仪表防爆的基本原理 防止爆炸,就是要避免爆炸的发生的三个条件同时存在,即点火源(电火花、热表面等)、爆炸性物质(可燃性气体或粉尘等)、空气(氧气)。 如图1所示,当上述三个条件同时存在,而且当爆炸性物质与空气的混合浓度处于爆炸范围内(即处于爆炸下限和爆炸上限之间)时,将不可避免地产生爆炸。 因此,在实践中为了有效地防止爆炸事故的发生,人们总是设法避免上述三个条件同时存在,以达到防爆的目的。常见的三种防爆原理: (1)控制易爆气体 人为地在危险场所(同时具备发生爆炸所需的三个条件的工业现场)营造出一个没有易爆气体的空间,将仪表安装在其中,典型代表为正压型防爆方法Exp。工作原理是:在一个密封的箱体内,充满不含爆炸气体的洁净气体或惰性气体,并保持箱内气压略高于箱外气体,将仪表安装在箱内。常用于在线分析仪表的防爆和将计算机、PLC、操作站或其他仪表置于现场的正压型爆炸仪表柜。 (2)控制爆炸范围 人为地将爆炸限制在一个有限的局部范围内,使该范围的爆炸不至于引起更大范围的爆炸。典型代表为隔爆型防爆方法Exd。工作原理是:为仪表设计一个足够坚固的壳体,按标准严格地设计、制造和安装所有的界面,使在壳体内发生的爆炸不至于引发壳体外危险气体(易爆气体)的爆炸。隔爆防爆方法的设计与制造规范极其严格而且安装、接线和维修的操作规程也非常严格。该方法决定了隔爆的电气设备、仪表往往非常笨重,操作须断电等。

备自投工作原理之令狐文艳创作

微机备自投装置的基本原理及应用 令狐文艳 本文介绍了微机线路备自投保护装置特性和应用中的供电方式,阐述其应用于母联备自投工作和线路备自投的工作原理及备自投保护装置运行条件及动作条件。 备自投保护供电方式技术条件 1.引言 随着我国人民生产生活的现代化程度日益提高,人们对电力的需求和依赖程度也在倍增,对电能质量的要求也更加严格,供配电在各个领域也不断向自动化、无人值守、远程控制、不间断供电的目标迈进。有些电力用户尤其对不间断供电的要求显得更加突出。我国的电力供应主要还是依靠国家电网供电,电力缺口也在不断增大,尤其在用电高峰期缺电现象严重,为此很多大型企业便自建电厂或配备发电机,因此各种电源的相互切换,保证电源的不间断供电和供电的高可靠性成了现代配电工程中保护和控制回路的重要部分。在GB50062 《电力装置的继电保护和自动装置设计规范》中的第十一章也明确规定了备用电源和备用设备的自动投入的具体要求。

微机线路备自投保护装置使系统自动装置与继电保护装置相结合,是一种对用户提供不间断供电的经济而又有效的技术措施,它在现代供电系统中得到了广泛的应用。在此只对微机线路备自投保护装置在电力系统中两种备自投方式和基本原理进行探讨。 微机线路备自投保护装置(以下简称备自投)核心部分采用高性能单片机,包括CPU模块、继电器模块、交流电源模块、人机对话模块等构成,具有抗干扰性强、稳定可靠、使用方便等优点。其液晶数显屏和备自投面板上所带的按键使得操作简单方便,也可通过RS485通讯接口实现远程控制。装置采用交流不间断采样方式采集到信号后实时进行傅立叶法计算,能精确判断电源状态,并实施延时切换电源。备自投具有在线运行状态监视功能,可观察各输入电气量、开关量、定值等信息,其有可靠的软硬件看门狗功能和事件记录功能。 产品在不同的电压等级如110kV、10kV、0.4kV系统的供配电回路中使用时需要设定不同的电气参数,在订货时必须注明。在选择备自投功能时则一定不可以投入低电压保护,以免冲突引起拒动或误动。 变配电站备自投有两种基本的供电方式。第一种如图1所示母联分段供电方式,母联开关断开,两个工作电源分别供电,两个电源互为备用,此方式称为母联备自投方

安全栅的基本知识

安全栅的基本知识 推荐本安型安全栅介绍 本安型安全栅应用在本安防爆系统的设计中,它是安装于安全场所并含有本安电路和非本安电路的装置,电路中通过限流和限压电路限制了送往现场本安回路的能量,从而防止非本安电路的危险能量串入本安电路,它在本安防爆系统中称为关联设备[见术语解释],是本安系统的重要组成部分。 由于安全栅被设计为介于现场设备与控制室设备之间的一个限制能量的接口,因此无论控制室设备处于正常或故障状态,安全栅都能确保通过它传送给现场设备的能量是本质安全的。 中国国家仪器仪表防爆安全监督站是中华人民共和国地区监督生产安全防爆产品的权威机构,对本安型安全栅产品有着严格、科学、详细的规定,只有通过该监督站认证的企业及其所开发生产的产品才具备符合标准的安全性能,否则可能会给使用方的设备、人员和生产造成无可估量的损害。 术语解释:关联设备 一种安装在安全场所,本安电气设备与非本安电气设备之间的相连的电气设备。安装位置安全栅安装于安全场所,接收来自危险区的信号,输出安全信号到安全区或危险区。安全栅的结构形式常见的安全栅结构形式分为齐纳式和隔离式。 齐纳式安全栅结构原理 电路中采用快速熔断器、限流电阻或限压二极管以对输入的电能量进行限

制,从而保证输出到危险区的能量。它的原理简单、电路实现容易,价格低廉,但因由于其自身原理的缺陷使其应用中的可靠性受到很大影响,并限制了其应用范围,其原因如下: 1、安装位置必须有非常可靠的接地系统,并且该齐纳式安全栅的接地电 阻必须小于 1Ω,否则便失去防爆安全保护性能,显然这样的要求是十分苛刻并在实际工程应用中难以保证。 2、要求来自危险区的现场仪表必须是隔离型,否则通过齐纳式安全栅的 接地端子与大地相接后信号无法正确传送,并且由于信号接地,直接降低信号抗干扰能力,影响系统稳定性。 3、齐纳式安全栅对电源影响较大,同时也易因电源的波动而造成齐纳式 安全栅的损坏。 隔离式安全栅 采用了将输入、输出以及电源三方之间相互电气隔离的电路结构,同时符合本安型限制能量的要求。与齐纳式安全相比,虽然价格略高,但它其它方面的突出优点却为用户应用带来了更大的受益: 1.由于采用了三方隔离方式,因此无需系统接地线路,给设计及现场施工带来极大方便。 2.对危险区的仪表要求大幅度降低,现场无需采用隔离式的仪表。 3.由于信号线路无需共地,使得检测和控制回路信号的稳定性和抗干扰能力大大增强,从而提高了整个系统的可靠性。 4.隔离式安全栅具备更强的输入信号处理能力,能够接受并处理热电偶、热电阻、频率等信号,这是齐纳式安全栅所无法做到的。 5.隔离式安全栅可输出两路相互隔离的信号,以提供给使用同一信号源的 两台设备使用,并保证两设备信号不互相干扰,同时提高所连接设备相互之间的电气安全绝缘性能。

libsvm的原理及使用方法介绍

LibSVM学习 目录 LibSVM学习 (1) 初识LibSVM (1) 第一次体验libSvm (3) LibSVM使用规范 (5) 1. libSVM的数据格式 (5) 2. svmscale的用法 (5) 3. svmtrain的用法 (6) 4. svmpredict 的用法 (7) 逐步深入LibSVM (7) 分界线的输出 (11) easy.py和grid.py的使用 (13) 1. grid.py使用方法 (13) 2. easy.py使用方法 (14) 参考 (16) LibSVM学习 初识LibSVM LibSVM是台湾林智仁(Chih-Jen Lin's) 教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。 由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。 这套库可以从林智仁的home page上免费获得,目前已经发展到3.0版。下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。 Java ——主要是应用于java平台的源码和libsvm.jar包;

Python ——是用来参数优选的工具,稍后介绍; svm-toy ——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下; tools ——主要包含四个python文件,用来数据集抽样(subset.py),参数优选(grid.py),集成测试(easy.py), 数据检查(checkdata.py); windows ——包含libSVM四个exe程序包,我们所用的库和程序就是它们。 其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h 和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.cpp在svm-toy\qt 文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的README 跟FAQ 也是很好的文件,对于初学者如果E文过得去,可以看一下。 下面以svm-train为例,简单的介绍下,怎么编译:(这步很简单,也没必要,对于仅仅使用libsvm库的人来说,windows下的4个exe包已经足够了,之所以加这步,是为了那些做深入研究的人,可以按照自己的思路改变一下svm.cpp,然后编译验证)我用的是VC 6.0,新建一个控制台(win32 console application)程序,程序名叫svmtrain (这个可以随意),点击OK后,选择empty。 进入程序框架后,里面什么都没有,然后找到你的程序目录,把svm-train.c、svm.h和svm.cpp拷贝过去(.c文件是c语言的,要是你习惯了c++,你尽可以改成.cpp),然后把这3个文件添加到工程,编译。。。如果没错误,到debug下面看看,是不是有个svm-train.exe。其实windows下的svm-train.exe就是这样编译出来的。 哈哈,怎么样是不是很简单。但是,这样的程序直接运行没意义,他要在dos下运行,接收参数才行。下面开始我们的libsvm的体验之旅。

电力备自投装置基本原理

《备自投装置》 备自投装置由主变备自投、母联备自投和进线备自投组成。 ①若正常运行时,一台主变带两段母线并列运行,另一台主变作为明备用,采用主变备自投。 ②若正常运行时,每台主变各带一段母线,两主变互为暗备用,采用母联开关备自投。 ③若正常运行时,主变带母线运行,两路电源进线作为明备用,两段母线均失压投两路电源进线,采用进线备自投。 一、#2主变备自投 #1主变运行,#2主变备用,即1DL、2DL、5DL在合位,3DL、4DL在分位,当#1主变电源因故障或其它原因断开,2#变备用电源自动投入,且只允许动作一次。

1、充电条件:a. 66千伏Ⅰ母、Ⅱ母均三相有压; b. 2DL、5DL在合位,4DL在分位; c.当检备用主变高压侧控制字投入时,高压侧220kV母线任意侧有压。以上条件均满足,经备自投充电时间后充电完成。 2、放电条件:a.#2主变检修状态投入; b.4DL在合位; c.当检备用主变高压侧控制字投入时,220kV两段母线均无压, 经延时放电; d.手跳2DL或5DL; e. 5DL偷跳,母联5DL跳位未启动备自投时,且66kV Ⅱ母无压; f.其它外部闭锁信号(主变过流保护动作、母差保护动作); g.2DL、4DL位置异常; h.I母或II母TV异常,经10s延时放电; i.#1主变拒跳; j.#2主变自投动作; k.主变互投硬压板退出; l.主变互投软压板退出。 上述任一条件满足立即放电。 3、动作过程:充电完成后,Ⅰ母、Ⅱ母均无压,高压侧任意母线有压,#1变低压侧无流,延时跳开#1变高、低压侧开关1DL和2DL,联切低压侧小电源线路。确认2DL跳开后,经延时合上#2变高压侧开关3DL,再经延时合#2变低压侧开

相关文档