func main() { flag.Parse() if len(spPath) > 0 { checkpnt.Reset(spPath) checkpnt.Activate() checkpnt.Verbose(spVerbose) checkpnt.Format("%.17f") } A := matrix.FloatNew(2, 3, []float64{1.0, -1.0, 0.0, 1.0, 0.0, 1.0}) b := matrix.FloatNew(2, 1, []float64{1.0, 0.0}) c := matrix.FloatNew(3, 1, []float64{0.0, 1.0, 0.0}) G := matrix.FloatNew(1, 3, []float64{0.0, -1.0, 1.0}) h := matrix.FloatNew(1, 1, []float64{0.0}) //dims := sets.NewDimensionSet("l", "q", "s") //dims.Set("l", []int{1}) fmt.Printf("A=\n%v\n", A) fmt.Printf("b=\n%v\n", b) fmt.Printf("G=\n%v\n", G) fmt.Printf("h=\n%v\n", h) fmt.Printf("c=\n%v\n", c) var solopts cvx.SolverOptions solopts.MaxIter = 30 solopts.ShowProgress = true if maxIter > -1 { solopts.MaxIter = maxIter } if len(solver) > 0 { solopts.KKTSolverName = solver } sol, err := cvx.Lp(c, G, h, A, b, &solopts, nil, nil) if sol != nil && sol.Status == cvx.Optimal { x := sol.Result.At("x")[0] s := sol.Result.At("s")[0] z := sol.Result.At("z")[0] fmt.Printf("x=\n%v\n", x.ToString("%.9f")) fmt.Printf("s=\n%v\n", s.ToString("%.9f")) fmt.Printf("z=\n%v\n", z.ToString("%.9f")) check(x, s, z) } else { fmt.Printf("status: %v\n", err) } }
func main() { flag.Parse() if len(spPath) > 0 { checkpnt.Reset(spPath) checkpnt.Activate() checkpnt.Verbose(spVerbose) checkpnt.Format("%.17f") } gdata := [][]float64{ []float64{2.0, 1.0, -1.0, 0.0}, []float64{1.0, 2.0, 0.0, -1.0}} c := matrix.FloatVector([]float64{-4.0, -5.0}) G := matrix.FloatMatrixFromTable(gdata, matrix.ColumnOrder) h := matrix.FloatVector([]float64{3.0, 3.0, 0.0, 0.0}) var solopts cvx.SolverOptions solopts.MaxIter = 30 solopts.ShowProgress = true if maxIter > -1 { solopts.MaxIter = maxIter } if len(solver) > 0 { solopts.KKTSolverName = solver } sol, err := cvx.Lp(c, G, h, nil, nil, &solopts, nil, nil) if sol != nil && sol.Status == cvx.Optimal { x := sol.Result.At("x")[0] s := sol.Result.At("s")[0] z := sol.Result.At("z")[0] fmt.Printf("x=\n%v\n", x.ToString("%.9f")) fmt.Printf("s=\n%v\n", s.ToString("%.9f")) fmt.Printf("z=\n%v\n", z.ToString("%.9f")) check(x, s, z) } else { fmt.Printf("status: %v\n", err) } }