Example #1
0
File: ilpso.c Project: jpzm/clann
clann_real_type
ilpso_compute_probability_of_mutation(struct ilpso *s)
{
    clann_real_type v = 0,
               f_avg = 0,
               f_max = 0,
               f[s->number_of_particles];
    unsigned int i;

    for (i = 0; i < s->number_of_particles; i++)
    {
        f[i] = s->f_fitness(s->problem,
                            clann_matrix_value(&s->positions, i, 0));
        f_avg += f[i];
    }

    f_avg /= s->number_of_particles;

    for (i = 0; i < s->number_of_particles; i++)
        f_max = (abs(f[i] - f_avg) > f_max) ? abs(f[i] - f_avg) : 1;

    for (i = 0; i < s->number_of_particles; i++)
        v += CLANN_POW((f[i] - f_avg) / f_max, 2);

    return v / s->number_of_particles;
}
Example #2
0
File: som.c Project: dsimba/clann
void
som_initialize(struct som *ann,
               som_grid_type grid_type,
               clann_size_type input_size,
               clann_size_type width)
{
    ann->input_size = input_size;
    ann->grid.width = width;
    ann->learning_rate = 0.1;
    ann->const_1 = 1000 / CLANN_LOG(ann->grid.width);
    ann->const_2 = 1000;
    ann->step = 1;
    ann->epoch = 1;
    ann->grid.type = grid_type;

    switch (ann->grid.type)
    {
        case SOM_GRID_LINE:
            ann->grid.dimension = SOM_GRID_1D;
            break;
        case SOM_GRID_SQUARE:
            ann->grid.dimension = SOM_GRID_2D;
            break;
        case SOM_GRID_CUBE:
            ann->grid.dimension = SOM_GRID_3D;
    }

    /*
     * Compute the number of neurons and initialize weights
     */
    ann->grid.n_neurons = CLANN_POW(ann->grid.width, ann->grid.dimension);

    matrix_initialize(&ann->grid.indexes,
                      ann->grid.n_neurons,
                      ann->grid.dimension);

    matrix_initialize(&ann->grid.weights,
                      ann->grid.n_neurons,
                      ann->input_size);

    matrix_fill_rand(&ann->grid.weights, -1, 1);

    /*
     * Generate the indexes
     */
    clann_size_type count = 0;
    clann_real_type *buffer;
    
    buffer = malloc(sizeof(clann_real_type) * ann->grid.dimension);

    som_grid_indexes(ann, 0, buffer, &count);

    free(buffer);
}
Example #3
0
clann_real_type
metric_norm(const clann_real_type *a,
            const unsigned int length)
{
    clann_real_type sum = 0;

    unsigned int i;
    for (i = 0; i < length; i++)
        sum += CLANN_POW(a[i], 2);

    return CLANN_SQRT(sum);
}