inst4.0		! 17-4-89  boltzcmp.ins
!****************************************************************
!*								*
!*	Boltzman Network Generator - Completion Model		*
!*								*
!****************************************************************

!	*** check that input PE count is non-zero

?&In	1
>bge	CheckHid
@Err	"Boltzmann completion model MUST have at least one input PE"
:CheckHid
?&Hd1	1
>bge	HidOK
@Err	"Boltzmann completion model MUST have at least one hidden PE"
:HidOK

!	*** Load the Control Strategy and LRS if needed

@LdCS	"boltzcmp"		!control strategy
@LdLR	"boltzman"		!L/R schedule

=netn	"InstaNet (tm) Boltzmann Network (Completion Model) version 1.00 17-04-89"
=DLnF	0			!learn  re-display off
=DRcF	0			!recall re-display off

!	*** Build the Input Layer ***

@LLdf				!load default layer to mi_layer structure
=LDln	"In"			!layer name
=Lpes	&In			!copy # of input PEs from menu
=Ltrn	"StepFunction"		!transfer function
=x	100			!place to put layer on screen
=y	 50
#Incl	"stdnwgtf.iif"		!standard # weight fields
@LAdd				!add the input layer
=n0	LayN			!track input layer

!	*** Build the Boltzmann Layer ***

@LLdf				!start with default layer again
=LDln	"Boltzmann"		!layer name
=Lpes	&In			!desired number of PEs
+Lpes	&Hd1
=Ltrn	"Boltzmann"		!transfer function
=Llrn	"Boltzmann"		!learning rule
=Llrs	"boltzman"		!L/R schedule
=LInL	0.0			!low initialization limit
=LInH	0.0			!high initialization limit
+y	170			!up higher on display
#Incl	"stdnwgtf.iif"		!standard # weight fields
@LAdd
=n1	LayN			!track Boltzmann layer

!	*** Connect input layer to Boltzmann layer ***

=SPEl	LayN			!current layer
@SlPE
=NPEl	n0			!input layer
@NrPE
=cnwt	1.0			!unit weight
=cnsc	WRel
=cnty	WSet
@LCCr				!connect corresponding items

!	*** Connect Boltzmann layer to itself ***

=NPEl	LayN
@NrPE
=cnwt	0.0			!zero weights
=cnty	WVar			!trainable
=cnsc	WAbs
@LCFl				!fully connect (except diagonal)

!	*** Connect the bias to the Boltzmann layer ***

=NPEl	-1
@NrPE
=cnwt	0.0			!zero weights
=cnty	WVar			!trainable
=cnsc	WAbs
@LCFl				!fully connect (except diagonal)

!	*** Build the Output Layer ***

@LLdf				!start with default layer again
=LDln	"Output"		!layer name
=Lpes	&In			!desired number of PEs
=Ltrn	"StepFunction"		!transfer function
=LInL	0.0			!low initialization limit
=LInH	0.0			!high initialization limit
+y	60			!up higher on display
#Incl	"stdnwgtf.iif"		!standard # weight fields
@LAdd
=n7	LayN			!save for stdprobe
=n2	LayN			!track output layer

!	*** Connect the Boltzmann layer to the Output layer ***

=SPEl	LayN			!output layer
@SlPE
=NPEl	n1			!Boltzmann layer
@NrPE
=cnwt	1.0			!set weight to 1.0
=cnty	WFix			!fixed weight
=cnsc	WRel			!relative connections
@LCCr				!Boltzmann to output connections

@LLsl				!load super layer
=Lctl	"boltzcmp"		!control strategy
=Llnn	"boltzman"		!name of learn input
=Lrcn	"boltzman"		!name of recall output
#Incl	"stdioset.iif"		!standard I/O settings
=Lax1	10			!nominal number of accumulations
=Lax2	10			!nominal number of firings per iteration
=Lax3	20			!nominal # of iterations for collecting stats
+Lflg	LAAs			!auto-associative network
=Lscl	-1			!input  low-value
=Loff	 1			!input  high-value
=Llow	 0			!output low-value
=Lhgh	 1			!output high-value
@SVsl				!save it back
!
=n5	0.0
=n6	1.0
=n4	&In
#Incl	"stdprobe.iif"		!Standard probe include file
!
=jogl	-.1			!lower limit for jog
=jogh	+.1			!upper limit for jog
=seed	257			!starting seed number
@seed				!set the seed
@Nini				!initialize the network
@EOF
