func main() { flag.Parse() reftest := flag.NFlag() > 0 x := floorplan(matrix.FloatWithValue(5, 1, 100.0)) if x != nil { W := x.Get(0) H := x.Get(1) xs := matrix.FloatVector(x.FloatArray()[2:7]) ys := matrix.FloatVector(x.FloatArray()[7:12]) ws := matrix.FloatVector(x.FloatArray()[12:17]) hs := matrix.FloatVector(x.FloatArray()[17:]) fmt.Printf("W = %.5f, H = %.5f\n", W, H) fmt.Printf("x = \n%v\n", xs.ToString("%.5f")) fmt.Printf("y = \n%v\n", ys.ToString("%.5f")) fmt.Printf("w = \n%v\n", ws.ToString("%.5f")) fmt.Printf("h = \n%v\n", hs.ToString("%.5f")) if reftest { check(x) } } }
func main() { Sdata := [][]float64{ []float64{ 4e-2, 6e-3, -4e-3, 0.0 }, []float64{ 6e-3, 1e-2, 0.0, 0.0 }, []float64{-4e-3, 0.0, 2.5e-3, 0.0 }, []float64{ 0.0, 0.0, 0.0, 0.0 }} pbar := matrix.FloatVector([]float64{.12, .10, .07, .03}) S := matrix.FloatMatrixStacked(Sdata) n := pbar.Rows() G := matrix.FloatDiagonal(n, -1.0) h := matrix.FloatZeros(n, 1) A := matrix.FloatWithValue(1, n, 1.0) b := matrix.FloatNew(1,1, []float64{1.0}) var solopts cvx.SolverOptions solopts.MaxIter = 30 solopts.ShowProgress = true mu := 1.0 Smu := S.Copy().Scale(mu) pbarNeg := pbar.Copy().Scale(-1.0) fmt.Printf("Smu=\n%v\n", Smu.String()) fmt.Printf("-pbar=\n%v\n", pbarNeg.String()) sol, err := cvx.Qp(Smu, pbarNeg, G, h, A, b, &solopts, nil) fmt.Printf("status: %v\n", err) if sol != nil && sol.Status == cvx.Optimal { x := sol.Result.At("x")[0] ret := blas.DotFloat(x, pbar) risk := math.Sqrt(blas.DotFloat(x, S.Times(x))) fmt.Printf("ret=%.3f, risk=%.3f\n", ret, risk) fmt.Printf("x=\n%v\n", x) } }