func PFdata(problem string) (dat [][]float64) { dat, err := io.ReadMatrix(io.Sf("$GOPATH/src/github.com/cpmech/goga/examples/mulobj-cec09/cec09/pf_data/%s.dat", problem)) if err != nil { chk.Panic("cannot load data for %q\n%v", problem, err) } return }
func Test_igd01(tst *testing.T) { //verbose() chk.PrintTitle("igd. igd metric with star equal to trial => igd=0") // load star values prob := "UF1" fStar, err := io.ReadMatrix(io.Sf("./examples/mulobj-cec09/cec09/pf_data/%s.dat", prob)) if err != nil { tst.Errorf("cannot read fStar matrix:\n%v", err) return } npts := len(fStar) // optimiser var opt Optimiser opt.Default() opt.Nsol = npts opt.Ncpu = 1 opt.FltMin = []float64{0, 0} // used to store fStar opt.FltMax = []float64{1, 1} // used to store fStar nf, ng, nh := 2, 0, 0 // generator (store fStar into Flt) gen := func(sols []*Solution, prms *Parameters) { for i, sol := range sols { sol.Flt[0], sol.Flt[1] = fStar[i][0], fStar[i][1] } } // objective function (copy fStar from Flt into Ova) obj := func(f, g, h, x []float64, ξ []int, cpu int) { f[0], f[1] = x[0], x[1] } // initialise optimiser opt.Init(gen, nil, obj, nf, ng, nh) // compute igd igd := StatIgd(&opt, fStar) io.Pforan("igd = %v\n", igd) chk.Scalar(tst, "igd", 1e-15, igd, 0) // plot if chk.Verbose { fmt := &plt.Fmt{C: "red", M: ".", Ms: 1, Ls: "None", L: "solutions"} fS0 := utl.DblsGetColumn(0, fStar) fS1 := utl.DblsGetColumn(1, fStar) io.Pforan("len(fS0) = %v\n", len(fS0)) plt.SetForEps(0.75, 300) opt.PlotAddOvaOva(0, 1, opt.Solutions, true, fmt) plt.Plot(fS0, fS1, io.Sf("'b.', ms=2, label='star(%s)', clip_on=0", prob)) plt.Gll("$f_0$", "$f_1$", "") plt.SaveD("/tmp/goga", "igd01.eps") } }