set_cluster_layer Subroutine

public subroutine set_cluster_layer(kohonen_map, seed)

Subroutine to initialize the cluster layer of a Two Level Self-Organizing Map

Type Bound

two_level_self_organizing_map

Arguments

Type IntentOptional Attributes Name
class(two_level_self_organizing_map) :: kohonen_map

A two_level_self_organizing_map object

integer :: seed

An integer variable with the random seed


Calls

proc~~set_cluster_layer~~CallsGraph proc~set_cluster_layer two_level_self_organizing_map%set_cluster_layer none~create_distance factory_distance%create_distance proc~set_cluster_layer->none~create_distance none~create~3 rkiss05_generator%create proc~set_cluster_layer->none~create~3 proc~create_random_sample~2 two_level_self_organizing_map%create_random_sample proc~set_cluster_layer->proc~create_random_sample~2 error_stop error_stop none~create_distance->error_stop none~generate rkiss05_generator%generate proc~create_random_sample~2->none~generate

Variables

Type Visibility Attributes Name Initial
integer, public :: ix
integer, public :: number_clusters
integer, public :: ierr
real(kind=wp), public, allocatable :: input(:,:)

Source Code

   subroutine set_cluster_layer(kohonen_map,seed)
   !========================================================================================  
!!   Subroutine to initialize the cluster layer of a Two Level Self-Organizing Map
   class(two_level_self_organizing_map) :: kohonen_map
!! A `two_level_self_organizing_map` object
   integer :: seed
!! An integer variable with the random seed
   integer :: ix,number_clusters,ierr
   real(kind=wp),allocatable :: input(:,:)
!
      number_clusters=kohonen_map%parameters(2)%number_nodes_nx*&
      kohonen_map%parameters(2)%number_nodes_ny*&
      kohonen_map%parameters(2)%number_nodes_nz;
      write(*,*) 'nc=', number_clusters
      allocate(input(kohonen_map%number_variables1,kohonen_map%number_variables2),stat=ierr)
      write(*,*) 'nc1= ',size(input,1),size(input,2)
   !
      seed=kohonen_map%parameters(2)%random_seed_(1);
      allocate(kohonen_map%cluster_layer(number_clusters),stat=ierr);
      write(*,*) seed
      call kohonen_map%rnumber_grator(2)%create(seed);
      !call sgrnd(seed);
      do ix=1,number_clusters
         !call grnd_array(input);
         call kohonen_map%create_random_sample(input);
         write(*,*) ix,input
         write(*,*) size(kohonen_map%cluster_layer)
         call kohonen_map%cluster_layer(ix)%create(input);
      enddo
   !
      call kohonen_map%factory%create_distance(kohonen_map%parameters(2)%distance_type,kohonen_map%distance_function);
   !
      deallocate(input);
   !
   end subroutine set_cluster_layer