コード例 #1
0
ファイル: agent.go プロジェクト: ziutek/de
func newAgent(min, width *matrix.Dense, cost Cost) *Agent {
	a := new(Agent)
	a.X = matrix.DenseZero(min.Size())
	a.x = a.X.Hvec() // crossover operates on vectorized matrix
	a.in = make(chan args, 1)
	a.out = make(chan float64, 1)
	a.rnd = rand.New(rand.NewSource(time.Now().UnixNano()))
	a.cost = cost
	// Place this agent in random place on the initial area
	a.x.Rand(0, 1)
	a.X.MulBy(width)
	a.X.AddTo(min, 1)
	// Run crossover loop
	go a.crossoverLoop()
	return a
}