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()
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()