• 大小: 15KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: GA-SVM  

资源简介

安装相关语言环境,可以读取相关程序,在程序这中可以对比与普通遗传算法优化的支持向量机区别

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “svm.h“
int libsvm_version = LIBSVM_VERSION;
typedef float Qfloat;
typedef signed char schar;
#ifndef min
template  inline T min(T xT y) { return (x#endif
#ifndef max
template  inline T max(T xT y) { return (x>y)?x:y; }
#endif
template  inline void swap(T& x T& y) { T t=x; x=y; y=t; }
template  inline void clone(T*& dst S* src int n)
{
dst = new T[n];
memcpy((void *)dst(void *)srcsizeof(T)*n);
}
inline double powi(double base int times)
{
double tmp = base ret = 1.0;

for(int t=times; t>0; t/=2)
{
if(t%2==1) ret*=tmp;
tmp = tmp * tmp;
}
return ret;
}
#define INF HUGE_VAL
#define TAU 1e-12
#define Malloc(typen) (type *)malloc((n)*sizeof(type))

static void print_string_stdout(const char *s)
{
fputs(sstdout);
fflush(stdout);
}
void (*svm_print_string) (const char *) = &print_string_stdout;
#if 1
static void info(const char *fmt...)
{
char buf[BUFSIZ];
va_list ap;
va_start(apfmt);
vsprintf(buffmtap);
va_end(ap);
(*svm_print_string)(buf);
}
#else
static void info(const char *fmt...) {}
#endif

//
// Kernel Cache
//
// l is the number of total data items
// size is the cache size limit in bytes
//
class Cache
{
public:
Cache(int llong int size);
~Cache();

// request data [0len)
// return some position p where [plen) need to be filled
// (p >= len if nothing needs to be filled)
int get_data(const int index Qfloat **data int len);
void swap_index(int i int j);
private:
int l;
long int size;
struct head_t
{
head_t *prev *next; // a circular list
Qfloat *data;
int len; // data[0len) is cached in this entry
};

head_t *head;
head_t lru_head;
void lru_delete(head_t *h);
void lru_insert(head_t *h);
};

Cache::Cache(int l_long int size_):l(l_)size(size_)
{
head = (head_t *)calloc(lsizeof(head_t)); // initialized to 0
size /= sizeof(Qfloat);
size -= l * sizeof(head_t) / sizeof(Qfloat);
size = max(size 2 * (long int) l); // cache must be large enough for two columns
lru_head.next = lru_head.prev = &lru_head;
}

Cache::~Cache()
{
for(head_t *h = lru_head.next; h != &lru_head; h=h->next)
free(h->data);
free(head);
}

void Cache::lru_delete(head_t *h)
{
// delete from current location
h->prev->next = h->next;
h->next->prev = h->prev;
}

void Cache::lru_insert(head_t *h)
{
// insert to last position
h->next = &lru_head;
h->prev = lru_head.prev;
h->prev->next = h;
h->next->prev = h;
}

int Cache::get_data(const int index Qfloat **data int len)
{
head_t *h = &head[index];
if(h->len) lru_delete(h);
int more = len - h->len;

if(more > 0)
{
// free old space
while(size < more)
{
head_t *old = lru_head.next;
lru_delete(old);
free(old->data);
size += old->len;
old->data = 0;
old->len = 0;
}

// allocate new space
h->data = (Qfloat *)realloc(h->datasiz

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      62422  2011-01-05 09:45  svm.cpp

----------- ---------  ---------- -----  ----

                62422                    1


评论

共有 条评论

相关资源