示例#1
0
    # add nonlinear constraint
    ocp.constrain(thrust4, '<=', posvel4_2**2)

    # fix objective and setup solver
    obj = sum([ocp('thrust',timestep=k)**2
               for k in range(ocp.nk)])
    ocp.setObjective(obj)
#    ocp.setObjective(ocp.lookup('integral vel*vel',timestep=-1))

    callback = rawe.telemetry.startTelemetry(
        ocp, callbacks=[
            (rawe.telemetry.trajectoryCallback(toProto, Trajectory), 'rocket trajectory')
        ])

    solverOptions = [ ("tol",1e-9) ]
    ocp.setupSolver(solverOpts=solverOptions,
                    callback=callback)

#    ocp.interpolateInitialGuess("data/rocket_opt.dat",force=True,quiet=True,numLoops=1)
    traj = ocp.solve()


    print "final position: "+str(traj.lookup('pos',-1))

    # save trajectory
    traj.save("data/rocket_opt.dat")

    # plot results
#    traj.plot('pos')
    traj.plot(['pos','vel'])
    traj.plot('thrust')
#    traj.subplot([['pos','vel'],['thrust']])
示例#2
0
    ocp.constrain(    pos, '<=', abspos)
    ocp.constrain(-abspos, '<=',    pos)

    # fix objective and setup solver
    # L1 parts
    obj = 0
    for k in range(N):
        for j in range(ocp.deg+1):
            obj += ocp('abspos',timestep=k,degIdx=j)
    obj += ocp('abspos',timestep=N,degIdx=0)

    # L2 parts
    for k in range(N):
        obj += ocp('force',timestep=k)**2

    ocp.setObjective(obj)

    solverOptions = [ ("expand_f",True)
                    , ("expand_g",True)
                    , ("generate_hessian",True)
                    , ("tol",1e-9)
                    ]
    ocp.setupSolver(solverOpts=solverOptions)

    traj = ocp.solve()

    # plot results
    traj.subplot([['pos','vel'],['force'],['force_over_pos']])
    traj.plot(['pos','abspos'])
    plt.show()
示例#3
0
    ocp.constrain(    pos, '<=', abspos)
    ocp.constrain(-abspos, '<=',    pos)

    # fix objective and setup solver
    # L1 parts
    obj = 0
    for k in range(N):
        for j in range(ocp.deg+1):
            obj += ocp('abspos',timestep=k,degIdx=j)
    obj += ocp('abspos',timestep=N,degIdx=0)

    # L2 parts
    for k in range(N):
        obj += ocp('force',timestep=k)**2

    ocp.setObjective(obj)

    solverOptions = [ ("expand_f",True)
                    , ("expand_g",True)
                    , ("generate_hessian",True)
                    , ("tol",1e-9)
                    ]
    ocp.setupSolver(solverOpts=solverOptions)

    traj = ocp.solve()

    # plot results
    traj.subplot([['pos','vel'],['force'],['force_over_pos']])
    traj.plot(['pos','abspos'])
    plt.show()