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); }