示例#1
0
    def _og_equality(self, prob, obj):
        """ define the equality conditions to be met. in theory the user should be able to provide/modify this"""

        result = Condition()

        for i in range(5):
            result.equal(prob.states_all_section(i)[0], obj.s_0[i]), #r, v, m = [r,v,m](0)

        for i in range(4):
            result.equal(prob.states_all_section(i)[-1], 0.) #r, v = 0

        return result()
def equality(prob, obj):
    R = prob.states_all_section(0)
    v = prob.states_all_section(1)
    m = prob.states_all_section(2)
    T = prob.controls_all_section(0)
    tf = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(R[0], obj.Re)
    result.equal(v[0], 0.0)
    result.equal(m[0], obj.M0)
    result.equal(v[-1], 0.0)
    result.equal(m[-1], obj.M0 * obj.Mc)

    return result()
def equality(prob, obj):
    h = prob.states_all_section(0)
    v = prob.states_all_section(1)
    m = prob.states_all_section(2)
    T = prob.controls_all_section(0)
    tf = prob.time_final(-1)

    ts0 = prob.time_final(0)
    T1 = prob.controls(0, 1)

    result = Condition()

    # event condition
    result.equal(h[0], obj.H0)
    result.equal(v[0], obj.V0)
    result.equal(m[0], obj.M0)
    result.equal(v[-1], 0.0)
    result.equal(m[-1], obj.Mf)

    result.equal(ts0, 0.075)

    return result()
def equality(prob, obj):
    x = prob.states_all_section(0)
    y = prob.states_all_section(1)
    v = prob.states_all_section(2)
    theta = prob.controls_all_section(0)
    tf = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(x[0], 0.0)
    result.equal(y[0], 0.0)
    result.equal(v[0], 0.0)
    result.equal(x[-1], obj.l)
    result.equal(y[-1], 0.0)
    # result.equal(v[-1], 0.0)

    return result()
def equality(prob, obj):
    u = prob.states_all_section(0)
    v = prob.states_all_section(1)
    x = prob.states_all_section(2)
    y = prob.states_all_section(3)
    beta = prob.controls_all_section(0)
    tf = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(u[0], 0.0)
    result.equal(v[0], 0.0)
    result.equal(x[0], 0.0)
    result.equal(y[0], 0.0)
    result.equal(u[-1], 1.0)
    result.equal(v[-1], 0.0)
    result.equal(y[-1], 1.0)

    return result()
def equality(prob, obj):
    r   = prob.states_all_section(0)
    vr  = prob.states_all_section(1)
    vt  = prob.states_all_section(2)
    ur1 = prob.controls_all_section(0)
    ur2 = prob.controls_all_section(1)
    ut1 = prob.controls_all_section(2)
    ut2 = prob.controls_all_section(3)
    tf  = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(r[0], obj.r0)
    result.equal(vr[0], obj.vr0)
    result.equal(vt[0], obj.vt0)
    result.equal(r[-1], obj.rf)
    result.equal(vr[-1], obj.vrf)
    result.equal(vt[-1], obj.vtf)

    return result()
def equality(prob, obj):
    R = prob.states_all_section(0)
    v = prob.states_all_section(1)
    m = prob.states_all_section(2)
    T = prob.controls_all_section(0)
    tf = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(R[0], obj.Re)
    result.equal(v[0], 0.0)
    result.equal(m[0], obj.M0)
    result.equal(v[-1], 0.0)
    result.equal(m[-1], obj.M0_2nd * obj.Mc)

    # knotting condition
    R1 = prob.states(0, 0)
    v1 = prob.states(1, 0)
    m1 = prob.states(2, 0)
    R2 = prob.states(0, 1)
    v2 = prob.states(1, 1)
    m2 = prob.states(2, 1)
    result.equal(R1[-1], R2[0])
    result.equal(v1[-1], v2[0])
    result.equal(m1[-1], m2[0] - 1200)

    return result()
示例#8
0
def equality(prob, obj):
    R = prob.states_all_section(0)
    theta = prob.states_all_section(1)
    Vr = prob.states_all_section(2)
    Vt = prob.states_all_section(3)
    m = prob.states_all_section(4)
    Tr = prob.controls_all_section(0)
    Tt = prob.controls_all_section(1)
    tf = prob.time_final(-1)

    R0 = prob.states(0, 0)
    R1 = prob.states(0, 1)
    theta0 = prob.states(1, 0)
    theta1 = prob.states(1, 1)
    Vr0 = prob.states(2, 0)
    Vr1 = prob.states(2, 1)
    Vt0 = prob.states(3, 0)
    Vt1 = prob.states(3, 1)
    m0 = prob.states(4, 0)
    m1 = prob.states(4, 1)
    Tr0 = prob.controls(0, 0)
    Tr1 = prob.controls(0, 1)
    Tt0 = prob.controls(1, 0)
    Tt1 = prob.controls(1, 1)

    unit_R = prob.unit_states[0][0]
    unit_V = prob.unit_states[0][2]
    unit_m = prob.unit_states[0][4]

    result = Condition()

    # event condition
    result.equal(R0[0], obj.Re + obj.H0, unit=unit_R)  # 初期地表
    result.equal(theta0[0], 0.0)
    result.equal(Vr0[0], 0.0, unit=unit_V)
    result.equal(Vt0[0], obj.V0, unit=unit_V)
    result.equal(m0[0], obj.Minit,
                 unit=unit_m)  # (1st stage and 2nd stage and Payload) initial

    # knotting condition
    result.equal(m1[0], obj.M0[1],
                 unit=unit_m)  # (2nd stage + Payload) initial
    result.equal(R1[0], R0[-1], unit=unit_R)
    result.equal(theta1[0], theta0[-1])
    result.equal(Vr1[0], Vr0[-1], unit=unit_V)
    result.equal(Vt1[0], Vt0[-1], unit=unit_V)

    # Target Condition
    result.equal(R1[-1], obj.Rtarget, unit=unit_R)  # Radius
    result.equal(Vr[-1], 0.0, unit=unit_V)  # Radius Velocity
    result.equal(Vt[-1], obj.Vtarget, unit=unit_V)

    return result()
def equality(prob, obj):
    R = prob.states_all_section(0)
    theta = prob.states_all_section(1)
    Vr = prob.states_all_section(2)
    Vt = prob.states_all_section(3)
    m = prob.states_all_section(4)
    Tr = prob.controls_all_section(0)
    Tt = prob.controls_all_section(1)
    tf = prob.time_final(-1)

    result = Condition()

    # event condition
    result.equal(R[0], obj.Re, unit=prob.unit_states[0][0])
    result.equal(theta[0], 0.0, unit=prob.unit_states[0][1])
    result.equal(Vr[0], 0.0, unit=prob.unit_states[0][2])
    result.equal(Vt[0], 0.0, unit=prob.unit_states[0][3])
    result.equal(m[0], obj.M0, unit=prob.unit_states[0][4])
    result.equal(R[-1], obj.Rtarget, unit=prob.unit_states[0][1])
    result.equal(Vr[-1], 0.0, unit=prob.unit_states[0][2])
    result.equal(Vt[-1], obj.Vtarget, unit=prob.unit_states[0][3])

    return result()