コード例 #1
0
ファイル: cbp.py プロジェクト: voidoutpost/qcml
          norm(u,v) <= radii*c

          # rctheta is going to be a diagonal matrix
          # rctheta[i]*c[i] <= u[i] implemented with rctheta a diag matrix
          rctheta*c <= u
    """)

    # More natural formulation would be:
    # minimize 1/(sqrt(2)*noisesigma) * (data - (dictc*c + dictu(u + dictv*v)) + lambda'*c)
    # subject to
    #   sqrt(u.^2 + v.^2) <= radii.*c
    #   radii.*cos(theta) <= u

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate code....")
    if m and n: p.dims = {'m': m, 'n': n}
    p.codegen(args.codegen)

    raw_input("press ENTER for raw code....")
    p.printsource()

    #socp_data = p.prob2socp(params=locals())
    #import ecos
    #sol = ecos.ecos(**socp_data)
    #my_vars = p.socp2prob(sol['x'])
    #pr.disable()
    #ps = pstats.Stats(pr)
    #ps.sort_stats('cumulative').print_stats(.5)
コード例 #2
0
ファイル: svm.py プロジェクト: chinasaur/qcml
    # a QCML model is specified by strings
    #   the parser parses each model line by line and builds an internal
    #   representation of an SOCP
    s = """
    dimensions m n
    variable a(n)
    variable b
    parameter X(m,n)      # positive samples
    parameter Y(m,n)      # negative samples
    parameter gamma positive
    minimize (norm(a) + gamma*sum(pos(1 - X*a + b) + pos(1 + Y*a - b)))
    """
    print s

    raw_input("press ENTER to parse....")
    p = QCML(debug=True)
    p.parse(s)

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate code....")
    p.dims = {'n': n, 'm': m}
    p.codegen("python")

    raw_input("press ENTER to solve with ECOS....")
    socp_data = p.prob2socp(params=locals())
    import ecos
    sol = ecos.solve(**socp_data)
コード例 #3
0
for i in range(m):
    a = np.random.randn(n)
    a = a / np.linalg.norm(a)
    bi = 1 + np.random.rand(1)

    A[i, :] = a
    b[i] = bi

q = QCML()
q.parse('''
        dimensions m n
        variables x(n) r
        parameters A(m,n) b(m)
        maximize r
        A*x + r <= b
        ''')
q.canonicalize()
q.dims = {'m': m, 'n': n}
q.codegen("python")
socp_data = q.prob2socp(locals())

# stuffed variable size
n = socp_data['G'].shape[1]

ecos_sol = ecos.solve(**socp_data)
socp_sol = ecos_sol['x']

prob_sol_x = q.socp2prob(ecos_sol['x'])['x']
prob_sol_r = q.socp2prob(ecos_sol['x'])['r']
コード例 #4
0
    for i in xrange(T):
        objective += ["square(norm(Q*x%i)) + square(norm(R*u%i))" % (i,i)]

    #objective += ["square(norm(Q*x%i))" % T]
    problem += ["minimize (1/2)*(" + ' + '.join(objective) + ")"]

    s = '\n'.join(map(lambda x:'    ' + x, problem))
    print s

    raw_input("press ENTER to parse....")
    p = QCML(debug=True)
    p.parse(s)

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate code....")
    p.dims = {'n': n, 'm': m}
    p.codegen("python")

    raw_input("press ENTER to solve with ECOS....")
    socp_data = p.prob2socp(params=locals())
    import ecos
    sol = ecos.solve(**socp_data)






コード例 #5
0
ファイル: qcml_example.py プロジェクト: nkhuyu/qcml
        #     # matrix X
        #     # A*X is map(A*x, X)
        #     # X*A
        minimize (norm(a) + gamma*sum(pos(1 - X*a + b) + pos(1 + Y*a - b)))
        # minimize c'*a
        #    norm(X*a,Y*a,Z*a, W*a) <= 1
    """
    )

    # TODO: sum(norms(X))
    # A*x
    #
    p.solve()

    pr = cProfile.Profile()
    pr.enable()

    p.canonicalize()
    p.dims = {"n": n, "m": m}
    p.codegen("python")
    print p.prob2socp.source
    socp_data = p.prob2socp(params=locals())
    import ecos

    sol = ecos.solve(**socp_data)
    my_vars = p.socp2prob(sol["x"])

    pr.disable()
    ps = pstats.Stats(pr)
    ps.sort_stats("cumulative").print_stats(0.5)
コード例 #6
0
ファイル: fir_lowpass.py プロジェクト: voidoutpost/qcml
            Ap*r >= Lp
            Ap*r <= Up
            A*r >= 0
    """
    print s

    raw_input("press ENTER to parse....")
    p = QCML(debug=True)
    p.parse(s)

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate python code....")

    p.dims = {'m': m, 'n': n, 'pb': pb, 'sb': sb}
    p.codegen("python")

    raw_input("press ENTER to solve with ECOS....")
    socp_data = p.prob2socp(params=locals())
    import ecos
    sol = ecos.solve(**socp_data)

    optval = sol.get("info").get("pcost")
    print "The minimum attenuation in the stop band is " + str(
        10 * log10(optval)) + " dB."
    vars = p.socp2prob(sol['x'])
    r = transpose(asmatrix(vars['r']))

    # Spectral Factorization
    jay = complex(0, 1)
コード例 #7
0
ファイル: fir_lowpass.py プロジェクト: chinasaur/qcml
            Ap*r >= Lp
            Ap*r <= Up
            A*r >= 0
    """
    print s

    raw_input("press ENTER to parse....")
    p = QCML(debug=True)
    p.parse(s)

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate python code....")
    
    p.dims = {'m': m, 'n': n, 'pb': pb, 'sb': sb}
    p.codegen("python")

    raw_input("press ENTER to solve with ECOS....")
    socp_data = p.prob2socp(params=locals())
    import ecos
    sol = ecos.solve(**socp_data)

    optval = sol.get("info").get("pcost")
    print "The minimum attenuation in the stop band is " + str(10*log10(optval)) + " dB."
    vars = p.socp2prob(sol['x'])
    r = transpose(asmatrix(vars['r']))
    
    # Spectral Factorization
    jay = complex(0,1)
    mult_factor = 100
コード例 #8
0
ファイル: cbp.py プロジェクト: alexvoronov/qcml
          norm(u,v) <= radii*c

          # rctheta is going to be a diagonal matrix
          # rctheta[i]*c[i] <= u[i] implemented with rctheta a diag matrix
          rctheta*c <= u
    """)

    # More natural formulation would be:
    # minimize 1/(sqrt(2)*noisesigma) * (data - (dictc*c + dictu(u + dictv*v)) + lambda'*c)
    # subject to
    #   sqrt(u.^2 + v.^2) <= radii.*c
    #   radii.*cos(theta) <= u

    raw_input("press ENTER to canonicalize....")
    p.canonicalize()

    raw_input("press ENTER to generate code....")
    if m and n: p.dims = {'m': m, 'n': n}
    p.codegen(args.codegen)

    raw_input("press ENTER for raw code....")
    p.printsource()

    #socp_data = p.prob2socp(params=locals())
    #import ecos
    #sol = ecos.ecos(**socp_data)
    #my_vars = p.socp2prob(sol['x'])
    #pr.disable()
    #ps = pstats.Stats(pr)
    #ps.sort_stats('cumulative').print_stats(.5)