1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
/********************************
Author: Sravanthi Kota Venkata
********************************/
#include "svm.h"
int examineExample(int i, F2D* a, float* b, float C, F2D* e, F2D* X, F2D* Y, float tolerance, int N, float eps, int dim)
{
int ret, j, k, m, n;
float E, r1, randVal;
float maxDiff, temp;
if( ( asubsref(a,i) > 0) && ( asubsref(a,i) <C) )
E = asubsref(e,i);
else
E = cal_learned_func(i, a, b, N, Y, X, dim) - asubsref(Y,i);
r1 = subsref(Y,i,0) * E;
if( ((r1 < (-1*tolerance)) && ( asubsref(a,i) < C)) || ((r1 >tolerance) && ( asubsref(a,i) > 0)) )
{
maxDiff = 0;
j = i;
for(k=0; k<N; k++)
{
if( ( asubsref(a,k) > 0) && ( asubsref(a,k) < C) )
{
temp = fabsf( E - asubsref(e,k));
if (temp > maxDiff)
j = k;
}
}
if ( i!=j)
{
ret = takeStep(i, j, a, C, e, Y, X, eps, b, N, dim);
if(ret == 1)
return ret;
}
randVal = 1.0;
for( k= (randVal*(N-2)); k<N; k++)
{
if( ( asubsref(a,k) > 0) && ( asubsref(a,k) <C) )
{
ret = takeStep(i, k, a, C, e, Y, X, eps, b, N, dim);
if (ret == 1)
return ret;
}
}
for(k=0; k<N; k++)
{
ret = takeStep(i, k, a, C, e, Y, X, eps, b, N, dim);
if(ret == 1)
return ret;
}
}
ret = 0;
return ret;
}
|