Added minimum priority limit

merge-requests/35/head
cgbsat 2019-07-14 10:23:15 +00:00
parent 15d6b17739
commit d1d950717a
2 changed files with 27 additions and 8 deletions

View File

@ -84,12 +84,12 @@ def main():
default=datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")) default=datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S"))
parser.add_argument("-d", parser.add_argument("-d",
"--duration", "--duration",
help="Duration to schedule [hours; default 1.0]", help="Duration to schedule [hours; default: 1.0]",
type=float, type=float,
default=1.0) default=1.0)
parser.add_argument("-m", parser.add_argument("-m",
"--min-horizon", "--min-horizon",
help="Minimum horizon [default 0.0]", help="Minimum horizon [degrees; default: 0, maximum: 90]",
type=float, type=float,
default=0.) default=0.)
parser.add_argument("-z", parser.add_argument("-z",
@ -105,7 +105,7 @@ def main():
parser.add_argument("-w", parser.add_argument("-w",
"--wait", "--wait",
help="Wait time between consecutive observations (for setup and slewing)" + help="Wait time between consecutive observations (for setup and slewing)" +
" [seconds; default: 0, max 3600]", " [seconds; default: 0, maximum: 3600]",
type=int, type=int,
default=0) default=0)
parser.add_argument("-n", parser.add_argument("-n",
@ -119,6 +119,12 @@ def main():
" KgazZMKEa74VnquqXLwAvD|. Priority is fractional, one transmitter " + " KgazZMKEa74VnquqXLwAvD|. Priority is fractional, one transmitter " +
"per line.", "per line.",
default=None) default=None)
parser.add_argument("-M",
"--min-priority",
help="Minimum priority. Only schedule passes with a priority higher" +
"than this limit [default: 0.0, maximum: 1.0]",
type=float,
default=0.)
parser.add_argument("-l", parser.add_argument("-l",
"--log-level", "--log-level",
default="INFO", default="INFO",
@ -152,7 +158,18 @@ def main():
wait_time_seconds = args.wait wait_time_seconds = args.wait
else: else:
wait_time_seconds = 3600 wait_time_seconds = 3600
min_horizon_arg = args.min_horizon if args.min_priority < 0.0:
min_priority = 0.0
elif args.min_priority > 1.0:
min_priority = 1.0
else:
min_priority = args.min_priority
if args.min_horizon < 0.0:
min_horizon_arg = 0.0
elif args.min_horizon > 90.0:
min_horizon_arg = 90.0
else:
min_horizon_arg = args.min_horizon
cache_dir = "/tmp/cache" cache_dir = "/tmp/cache"
schedule = not args.dryrun schedule = not args.dryrun
search_transmitters = args.search_transmitters search_transmitters = args.search_transmitters
@ -271,7 +288,7 @@ def main():
# Get passes of priority objects # Get passes of priority objects
prioritypasses, normalpasses = get_priority_passes(passes, priorities, favorite_transmitters, prioritypasses, normalpasses = get_priority_passes(passes, priorities, favorite_transmitters,
search_transmitters) search_transmitters, min_priority)
# Priority scheduler # Priority scheduler
prioritypasses = sorted(prioritypasses, key=lambda satpass: -satpass['priority']) prioritypasses = sorted(prioritypasses, key=lambda satpass: -satpass['priority'])

View File

@ -305,7 +305,7 @@ def find_passes(satellites, observer, tmin, tmax, minimum_altitude, min_pass_dur
return passes return passes
def get_priority_passes(passes, priorities, favorite_transmitters, search): def get_priority_passes(passes, priorities, favorite_transmitters, search, min_priority):
priority = [] priority = []
normal = [] normal = []
for satpass in passes: for satpass in passes:
@ -325,9 +325,11 @@ def get_priority_passes(passes, priorities, favorite_transmitters, search):
* float(satpass['good_count']) / max_good_count * float(satpass['good_count']) / max_good_count
else: else:
satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate'] satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate']
normal.append(satpass)
return (priority, normal)
# Add if priority is high enough
if satpass['priority'] >= min_priority:
normal.append(satpass)
return (priority, normal)
def get_groundstation_info(ground_station_id): def get_groundstation_info(ground_station_id):