func Test_mtdeb01(tst *testing.T) { //verbose() chk.PrintTitle("mtdeb01. Deb's mutation") var ops OpsData ops.SetDefault() ops.Pm = 1.0 ops.Xrange = [][]float64{{-3, 3}, {-4, 4}} ops.EnfRange = true rnd.Init(0) A := []float64{-1, 1} io.Pforan("before: A = %v\n", A) FltMutationDeb(A, 10, &ops) io.Pforan("after: A = %v\n", A) ha0 := rnd.Histogram{Stations: utl.LinSpace(-3, 3, 11)} nsamples := 1000 aa := make([]float64, len(A)) a0s := make([]float64, nsamples) for _, t := range []int{0, 50, 100} { for i := 0; i < nsamples; i++ { copy(aa, A) FltMutationDeb(aa, t, &ops) a0s[i] = aa[0] } ha0.Count(a0s, true) io.Pf("\ntime = %d\n", t) io.Pf("%s", rnd.TextHist(ha0.GenLabels("%.1f"), ha0.Counts, 60)) } }
func Test_cxdeb01(tst *testing.T) { //verbose() chk.PrintTitle("cxdeb01. Deb's crossover") var ops OpsData ops.SetDefault() ops.Pc = 1.0 ops.Xrange = [][]float64{{-3, 3}, {-4, 4}} ops.EnfRange = true rnd.Init(0) A := []float64{-1, 1} B := []float64{1, 2} a := make([]float64, len(A)) b := make([]float64, len(A)) FltCrossoverDeb(a, b, A, B, 0, &ops) io.Pforan("A = %v\n", A) io.Pforan("B = %v\n", B) io.Pfcyan("a = %.6f\n", a) io.Pfcyan("b = %.6f\n", b) nsamples := 1000 a0s, a1s := make([]float64, nsamples), make([]float64, nsamples) b0s, b1s := make([]float64, nsamples), make([]float64, nsamples) for i := 0; i < nsamples; i++ { FltCrossoverDeb(a, b, B, A, 0, &ops) a0s[i], a1s[i] = a[0], a[1] b0s[i], b1s[i] = b[0], b[1] } ha0 := rnd.Histogram{Stations: []float64{-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1}} hb0 := rnd.Histogram{Stations: []float64{0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 5, 5.5, 6}} ha1 := rnd.Histogram{Stations: utl.LinSpace(-4, 4, 11)} hb1 := rnd.Histogram{Stations: utl.LinSpace(-4, 4, 11)} ha0.Count(a0s, true) hb0.Count(b0s, true) ha1.Count(a1s, true) hb1.Count(b1s, true) io.Pforan("\na0s\n") io.Pf("%s", rnd.TextHist(ha0.GenLabels("%.1f"), ha0.Counts, 60)) io.Pforan("b0s\n") io.Pf("%s", rnd.TextHist(hb0.GenLabels("%.1f"), hb0.Counts, 60)) io.Pforan("\na1s\n") io.Pf("%s", rnd.TextHist(ha1.GenLabels("%.1f"), ha1.Counts, 60)) io.Pforan("b1s\n") io.Pf("%s", rnd.TextHist(hb1.GenLabels("%.1f"), hb1.Counts, 60)) }
func Test_flt03(tst *testing.T) { //verbose() chk.PrintTitle("flt03. sin⁶(5 π x) multimodal") // configuration C := NewConfParams() C.Nova = 1 C.Noor = 2 C.Nisl = 4 C.Ninds = 24 C.GAtype = "crowd" C.DiffEvol = true C.CrowdSize = 3 C.ParetoPhi = 0.01 C.CompProb = true C.Tf = 100 C.Dtmig = 60 C.RangeFlt = [][]float64{{0, 0.9999999999999}} C.PopFltGen = PopFltGen C.CalcDerived() rnd.Init(C.Seed) // post-processing function values := utl.Deep3alloc(C.Tf/10, C.Nisl, C.Ninds) C.PostProc = func(idIsland, time int, pop Population) { if time%10 == 0 { k := time / 10 for i, ind := range pop { values[k][idIsland][i] = ind.GetFloat(0) } } } // functions yfcn := func(x float64) float64 { return math.Pow(math.Sin(5.0*math.Pi*x), 6.0) } fcn := func(f, g, h []float64, x []float64) { f[0] = -yfcn(x[0]) } // simple problem sim := NewSimpleFltProb(fcn, 1, 0, 0, C) sim.Run(chk.Verbose) // write histograms and plot if chk.Verbose { // write histograms var buf bytes.Buffer hist := rnd.Histogram{Stations: utl.LinSpace(0, 1, 13)} for k := 0; k < C.Tf/10; k++ { for i := 0; i < C.Nisl; i++ { clear := false if i == 0 { clear = true } hist.Count(values[k][i], clear) } io.Ff(&buf, "\ntime=%d\n%v", k*10, rnd.TextHist(hist.GenLabels("%4.2f"), hist.Counts, 60)) } io.WriteFileVD("/tmp/goga", "test_flt03_hist.txt", &buf) // plot plt.SetForEps(0.8, 300) xmin := sim.Evo.Islands[0].Pop[0].GetFloat(0) xmax := xmin for k := 0; k < C.Nisl; k++ { for _, ind := range sim.Evo.Islands[k].Pop { x := ind.GetFloat(0) y := yfcn(x) xmin = utl.Min(xmin, x) xmax = utl.Max(xmax, x) plt.PlotOne(x, y, "'r.',clip_on=0,zorder=20") } } np := 401 X := utl.LinSpace(0, 1, np) Y := make([]float64, np) for i := 0; i < np; i++ { Y[i] = yfcn(X[i]) } plt.Plot(X, Y, "'b-',clip_on=0,zorder=10") plt.Gll("$x$", "$y$", "") plt.SaveD("/tmp/goga", "test_flt03_func.eps") } }