func NewInnovationForLink(nodeInId, nodeOutId int, innovationNum int64, weight float64, traitId int) *Innovation {
	return &Innovation{
		innovationType: newLinkInnType,
		InNodeId:       nodeInId,
		OutNodeId:      nodeOutId,
		InnovationNum:  innovationNum,
		NewWeight:      weight,
		NewTraitNum:    traitId,
	}
}
NewInnovationForLink is a constructor for new link case
package genetics
type InnovationsObserver interface {
	StoreInnovation(innovation Innovation)
	Innovations() []Innovation
	NextInnovationNumber() int64
}
type Innovation struct {
	InNodeId  int
	OutNodeId int
	InnovationNum int64
	InnovationNum2 int64
	NewWeight float64
	NewTraitNum int
	NewNodeId int
	OldInnovNum int64
	IsRecurrent bool
	innovationType innovationType
}
func NewInnovationForNode(nodeInId, nodeOutId int, innovationNum1, innovationNum2 int64, newNodeId int, oldInnovNum int64) *Innovation {
	return &Innovation{
		innovationType: newNodeInnType,
		InNodeId:       nodeInId,
		OutNodeId:      nodeOutId,
		InnovationNum:  innovationNum1,
		InnovationNum2: innovationNum2,
		NewNodeId:      newNodeId,
		OldInnovNum:    oldInnovNum,
	}
}