class OOL::Conmin::Minimizer

Public Class Methods

alloc(*args) click to toggle source
static VALUE rb_ool_conmin_minimizer_alloc(int argc, VALUE *argv, VALUE klass)
{
        ool_conmin_minimizer *m;
        VALUE obj;
        if (argc < 2) rb_raise(rb_eArgError, "Too few arguments (%d for >= 2)", argc);
        m = ool_conmin_minimizer_alloc(get_minimizer_type(argv[0]), FIX2INT(argv[1]));
        obj = Data_Wrap_Struct(klass, 0, ool_conmin_minimizer_free, m);
        if (argc > 2) rb_ool_conmin_minimizer_set(argc-2, argv+2, obj);
        return obj;
}

Public Instance Methods

dx() click to toggle source
static VALUE rb_ool_conmin_minimizer_dx(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->dx);
}
f() click to toggle source
static VALUE rb_ool_conmin_minimizer_f(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return rb_float_new(m->f);
}
fcount() click to toggle source
static VALUE rb_ool_conmin_minimizer_fcount(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_minimizer_fcount(m));
}
gcount() click to toggle source
static VALUE rb_ool_conmin_minimizer_gcount(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_minimizer_gcount(m));
}
gradient() click to toggle source
static VALUE rb_ool_conmin_minimizer_gradient(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->gradient);
}
hcount() click to toggle source
static VALUE rb_ool_conmin_minimizer_hcount(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_minimizer_hcount(m));
}
is_optimal() click to toggle source
static VALUE rb_ool_conmin_minimizer_is_optimal(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_is_optimal(m));
}
is_optimal?() click to toggle source
static VALUE rb_ool_conmin_minimizer_is_optimal2(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        if (ool_conmin_is_optimal(m)) return Qtrue;
        else return Qfalse;
}
iterate() click to toggle source
static VALUE rb_ool_conmin_minimizer_iterate(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_minimizer_iterate(m));
}
minimum() click to toggle source
static VALUE rb_ool_conmin_minimizer_minimum(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return rb_float_new(ool_conmin_minimizer_minimum(m));
}
name() click to toggle source
static VALUE rb_ool_conmin_minimizer_name(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return rb_str_new2(ool_conmin_minimizer_name(m));
}
parameters_default() click to toggle source
static VALUE rb_ool_conmin_minimizer_parameters_default(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        if (m->type == ool_conmin_minimizer_spg) {
                        return rb_ool_conmin_spg_parameters_default(cool_conmin_spg);
        } else if (m->type == ool_conmin_minimizer_pgrad) {
                        return rb_ool_conmin_pgrad_parameters_default(cool_conmin_pgrad);            
        } else if (m->type == ool_conmin_minimizer_gencan) {
                        return rb_ool_conmin_gencan_parameters_default(cool_conmin_gencan);          
        } else {
                        rb_raise(rb_eRuntimeError, "Unkowm minimizer type.");
        }      
        return Qnil;   /* never reaches here */
}
parameters_get() click to toggle source
static VALUE rb_ool_conmin_minimizer_parameters_get(VALUE obj)
{
        ool_conmin_minimizer *m;       
        ool_conmin_pgrad_parameters *Pp;
        ool_conmin_spg_parameters *Ps;
        ool_conmin_gencan_parameters *Pg;      
        void *P;
        VALUE ary;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
  ool_conmin_parameters_get(m, P);
        if (m->type ==         ool_conmin_minimizer_pgrad) {
                Pp = (ool_conmin_pgrad_parameters*) P;
                ary = create_parameters_ary_pgrad(Pp);
        } else if (m->type == ool_conmin_minimizer_spg) {
                Ps = (ool_conmin_spg_parameters*) P;
                ary = create_parameters_ary_spg(Ps);                                          
        } else {
                Pg = (ool_conmin_gencan_parameters*) P;
                ary = create_parameters_ary_gencan(Pg);                                               
        }
        return ary;
}
parameters_set(p1) click to toggle source
static VALUE rb_ool_conmin_minimizer_parameters_set(VALUE obj, VALUE params)
{
        ool_conmin_minimizer *m;
        ool_conmin_pgrad_parameters *Pp;
        ool_conmin_spg_parameters *Ps;
        ool_conmin_gencan_parameters *Pg;
        void *P;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        P = get_parameter(m->type, Pp, Ps, Pg, params);
        ool_conmin_parameters_set(m, P);
        return params;
}
restart() click to toggle source
static VALUE rb_ool_conmin_minimizer_restart(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return INT2FIX((int) ool_conmin_minimizer_restart(m));
}
set(*args) click to toggle source
static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj)
{
        ool_conmin_minimizer *m;
        ool_conmin_function *F;
        ool_conmin_constraint *C;
        gsl_vector *v;
        ool_conmin_pgrad_parameters Pp;
        ool_conmin_spg_parameters Ps;
  ool_conmin_gencan_parameters Pg;
  void *P;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        switch (argc) {
        case 3:
                if (CLASS_OF(argv[0]) != cool_conmin_function) 
                        rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
                if (CLASS_OF(argv[1]) != cool_conmin_constraint) 
                        rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
                if (!VECTOR_P(argv[2]))
                        rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");     
                Data_Get_Struct(argv[0], ool_conmin_function, F);
                Data_Get_Struct(argv[1], ool_conmin_constraint, C);
                Data_Get_Struct(argv[2], gsl_vector, v);
                P = get_parameter(m->type, &Pp, &Ps, &Pg, Qnil);                      
                ool_conmin_minimizer_set(m, F, C, v, P);                                              
                break;
        case 4:
                if (CLASS_OF(argv[0]) != cool_conmin_function) 
                        rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
                if (CLASS_OF(argv[1]) != cool_conmin_constraint) 
                        rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
                if (!VECTOR_P(argv[2]))
                        rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");     
                if (!rb_obj_is_kind_of(argv[3], rb_cArray) && argv[3] != Qnil)
                        rb_raise(rb_eTypeError, "Wrong argument type 3 (Array expected)");   
                Data_Get_Struct(argv[0], ool_conmin_function, F);
                Data_Get_Struct(argv[1], ool_conmin_constraint, C);
                Data_Get_Struct(argv[2], gsl_vector, v);
                P = get_parameter(m->type, &Pp, &Ps, &Pg, argv[3]);                   
                ool_conmin_minimizer_set(m, F, C, v, P);                                      
                break;
        default:
                rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
        }
        return obj;    
}
size() click to toggle source
static VALUE rb_ool_conmin_minimizer_size(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return rb_float_new(ool_conmin_minimizer_size(m));
}
x() click to toggle source
static VALUE rb_ool_conmin_minimizer_x(VALUE obj)
{
        ool_conmin_minimizer *m;
        Data_Get_Struct(obj, ool_conmin_minimizer, m);
        return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->x);
}