本文整理汇总了Python中PyKEP.planet_ss方法的典型用法代码示例。如果您正苦于以下问题:Python PyKEP.planet_ss方法的具体用法?Python PyKEP.planet_ss怎么用?Python PyKEP.planet_ss使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyKEP
的用法示例。
在下文中一共展示了PyKEP.planet_ss方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: import PyKEP [as 别名]
# 或者: from PyKEP import planet_ss [as 别名]
def __init__(
self,
mass=1000,
Tmax=0.05,
Isp=2500,
Vinf_0=3,
Vinf_f=1e-12,
nseg=10,
departure=None,
target=None,
optimise4mass=False):
"""
Constructs a low-thrust transfer between a departure planet and a target planet (Constrained Continuous Single-Objective)
NOTE: An impulsive transcription is used to transform into an NLP the Optimal Control Problem
USAGE: problem.py_pl2pl(self,mass=1000,Tmax=0.05,Isp=2500,Vinf_0=3,Vinf_f=0,nseg=10,departure = PyKEP.planet_ss('earth'), target = PyKEP.planet_ss('mars'))
* mass: spacecraft mass at departure [kg]
* Tmax: maximum allowed thrust [N]
* Isp: spacecarft engine specific impulse [Isp]
* Vinf_0: allowed maximum starting velocity [km/s]
* Vinf_f: allowed maximum arrival velocity [km/s]
(if negative it is interpreted as a minimum arrival velocity)
* nseg: number of segments used for the impulsive transcription
* departure: departure planet (a PyKEP planet)
* target: arrival planet (a PyKEP planet)
"""
try:
import PyKEP
except ImportError:
raise ImportError(
"Error while trying 'import PyKEP': is PyKEP installed?")
if departure is None:
departure = PyKEP.planet_ss('earth')
if target is None:
target = mars = PyKEP.planet_ss('mars')
super(py_pl2pl, self).__init__(
9 + nseg * 3, 0, 1, 9 + nseg, nseg + 2, 1e-5)
self.__departure = departure
self.__target = target
self.__sc = PyKEP.sims_flanagan.spacecraft(mass, Tmax, Isp)
self.__Vinf_0 = Vinf_0 * 1000
self.__Vinf_f = Vinf_f * 1000
self.__leg = PyKEP.sims_flanagan.leg()
self.__leg.set_mu(departure.mu_central_body)
self.__leg.set_spacecraft(self.__sc)
self.__nseg = nseg
self.set_bounds(
[0, 10, self.__sc.mass / 10, -abs(self.__Vinf_0),
-abs(self.__Vinf_0), -abs(self.__Vinf_0), -abs(self.__Vinf_f),
-abs(self.__Vinf_f), -abs(self.__Vinf_f)] + [-1] * 3 * nseg,
[3000, 1500, self.__sc.mass, abs(self.__Vinf_0),
abs(self.__Vinf_0), abs(self.__Vinf_0), abs(self.__Vinf_f),
abs(self.__Vinf_f), abs(self.__Vinf_f)] + [1] * 3 * nseg)
self.__optimise4mass = optimise4mass
示例2: __init__
# 需要导入模块: import PyKEP [as 别名]
# 或者: from PyKEP import planet_ss [as 别名]
def __init__(self,mass=1000,Tmax=0.05,Isp=2500,Vinf_0=3,Vinf_f=0,nseg=10,departure = None, target = None, optimise4mass = False):
"""__init__(self,mass=1000,Tmax=0.05,Isp=2500,Vinf_0=3,Vinf_f=0,nseg=10,departure = erath, target = mars)"""
try:
import PyKEP
except ImportError:
print("Error while trying 'import PyKEP': is PyKEP installed?")
raise
if departure is None:
departure = PyKEP.planet_ss('earth')
if target is None:
target = mars = PyKEP.planet_ss('mars')
super(py_pl2pl,self).__init__(9 + nseg*3,0,1,9 + nseg,nseg+2,1e-5)
self.__departure = departure
self.__target = target
self.__sc = PyKEP.sims_flanagan.spacecraft(mass,Tmax,Isp)
self.__Vinf_0 = Vinf_0*1000
self.__Vinf_f = Vinf_f*1000
self.__leg = PyKEP.sims_flanagan.leg()
self.__leg.set_mu(PyKEP.MU_SUN)
self.__leg.set_spacecraft(self.__sc)
self.__nseg = nseg
self.set_bounds([0,10,self.__sc.mass/10,-abs(self.__Vinf_0),-abs(self.__Vinf_0),-abs(self.__Vinf_0),-abs(self.__Vinf_f),-abs(self.__Vinf_f),-abs(self.__Vinf_f)] + [-1] * 3 *nseg,[3000,1500,self.__sc.mass,abs(self.__Vinf_0),abs(self.__Vinf_0),abs(self.__Vinf_0),abs(self.__Vinf_f),abs(self.__Vinf_f),abs(self.__Vinf_f)] + [1] * 3 * nseg)
self.__optimise4mass = optimise4mass
示例3: jde_mga_1dsm
# 需要导入模块: import PyKEP [as 别名]
# 或者: from PyKEP import planet_ss [as 别名]
def jde_mga_1dsm(seq, t0, tof, slack=5, pop_size=50, n_evolve=10, dv_launch=6127., verbose=False):
"""Runs jDE with mga_1dsm problem."""
from PyGMO.problem import mga_1dsm_tof
from PyGMO.algorithm import jde
from PyGMO import population
prob = mga_1dsm_tof(seq=[kep.planet_ss(name) for name in seq],
t0=[kep.epoch(t0-slack), kep.epoch(t0+slack)],
tof=[[t-slack, t+slack] for t in tof],
vinf=[0., dv_launch/1000.],
add_vinf_arr=False)
algo = jde(gen=500, memory=True)
pop = population(prob, pop_size)
if verbose:
print pop.champion.f[0]
for i in xrange(n_evolve):
pop = algo.evolve(pop)
if verbose:
print pop.champion.f
示例4: list
# 需要导入模块: import PyKEP [as 别名]
# 或者: from PyKEP import planet_ss [as 别名]
((377861107.98154724, 186406866.4808699, 283715.7154025446),
(-7615.668664758434, 15593.895465832084, -3.281760584438344))
-- Luís F. Simões, 2012-09-11
"""
# CHECK: the values were obtained by copy-paste from the PDF; this process isn't flawless,
# sometimes wrong values appear upon pasting. I matched the pasted values copied from 2
# different PDF readers, but someone should look more closely into the values to make sure
# we aren't bringing stupid errors into the process just through this.
# CHECK: I'm loading the values into fields of type np.float64. Is there any significant accuracy loss?
# getting Jupiter's orbital parameters
_jupiter = pk.planet_ss('jupiter')
_jupiter_op = [ _jupiter.ref_epoch.mjd ] + list(_jupiter.orbital_elements)
_jupiter_op[1] /= 1000. # convert m -> km
for i in xrange(3,7): # convert radians -> degrees
_jupiter_op[i] = degrees( _jupiter_op[i] )
# Values from gtoc6_problem_stmt.pdf
# Table 4: Keplerian orbit elements of the Galilean Satellites at Epoch = 58849.0 MJD
# Table 5: Satellite physical constants
# Table 6: Other constants and conversions
body = np.array( [
# UID Epoch a (km) e i (deg) Node (deg) w (deg) M (deg) R (km) mu (km^3/s^2)
[ 0. ] + _jupiter_op + [ 71492.0, 126686534.92180 ],
[ 1., 58849., 422029.68714001, 4.308524661773E-03, 40.11548686966E-03, -79.640061742992, 37.991267683987, 286.85240405645, 1826.5, 5959.916 ],