method train example =
let radius' =
match radius_policy with
Some policy -> policy generation
| None ->radius
in
let alpha' =
match alpha_policy with
Some policy -> policy generation
| None -> alpha
in
let best = self#find_node example in
self#move_node best.x best.y alpha' example;
for distance = 1 to radius' do
let ratio = (1.0-. (float_of_int distance) /. (float_of_int radius')) **2.0in
for x = 0 to distance-1 do
self#move_node (best.x-x) (best.y-distance+x) (alpha' *. ratio) example;
self#move_node (best.x-distance+x) (best.y+x) (alpha' *. ratio) example;
self#move_node (best.x+x) (best.y+distance-x) (alpha' *. ratio) example;
self#move_node (best.x+distance-x) (best.y-x) (alpha' *. ratio) example;
done
done;
generation <- generation +1