Succesful MBH runs, with some improvements

This commit is contained in:
Connor
2021-10-12 21:49:46 -06:00
parent c7913d2944
commit bb78578d9a
19 changed files with 426 additions and 146 deletions

View File

@@ -11,53 +11,32 @@
norm_mass = (m.start_mass - prop(m)[7]) / m.start_mass
norm_C3 = ( m.launch_v∞ m.launch_v∞ ) / C3
norm_v∞ = norm(m.phases[end].v∞_in) / v∞
return 3norm_mass + norm_C3 + norm_v∞
return norm_mass + norm_C3 + norm_v∞
end
# Mission Parameters that won't change (they're very lenient)
sc, fuel = bepi, 3_600.
c3, v∞ = 100., 20.
sc, fuel = bepi, 2_000.
max_c3, max_v∞ = 100., 20.
launch_window = DateTime(2022,1,1), DateTime(2024,12,25)
latest_arrival = DateTime(2034,12,25)
# Convenience function for these tests
Thesis.mbh(fbs, lw, la, sp, dp) = mbh(fbs, sc, fuel, lw, c3, v∞, la, easy_cost,
search_patience=sp, drill_patience=dp, verbose=true)
Thesis.mbh(fbs) = mbh(fbs, sc, sc.dry_mass + fuel, launch_window, max_c3, max_v∞, latest_arrival,
easy_cost, search_patience=500, drill_patience=20, verbose=true, test=true)
function log(m::Mission, archive::Vector{Mission})
p = plot(m, title="MBH Test Solution")
savefig(p,"../plots/mbh_test_$(length(m.phases))_phase.html")
store(m, "missions/mbh_$(length(m.phases))_phase_best")
store(archive, "missions/mbh_$(length(m.phases))_phase_archive")
end
# Again, we're going to test a simple case first
# This one seems to converge really easily, so we don't search much
# For all of these, this is a test, not actual optimization, so we don't drill much either
launch_window = DateTime(1992,11,1), DateTime(1992,12,1)
latest_arrival = DateTime(1993,6,1)
planets = [ Earth, Venus ]
best, archive = mbh(planets, launch_window, latest_arrival, 10, 5)
@test typeof(best) == Mission
p = plot(best, title="MBH Test Solution")
savefig(p,"../plots/mbh_test_1_phase.html")
store(best, "missions/mbh_1_phase_best")
store(archive, "missions/mbh_1_phase_archive")
# Start simple and get more complex
tests = [Earth, Jupiter], [Earth, Mars, Jupiter], [Earth, Mars, Mars, Jupiter]
# Now for a more complicated two-phase mission, with a bigger date range
# This is known to have a solution though
planets = [Earth, Venus, Mars]
launch_window = DateTime(2021,6,1), DateTime(2022,6,1)
latest_arrival = DateTime(2024,1,1)
best, archive = mbh(planets, launch_window, latest_arrival, 20, 5)
@test typeof(best) == Mission
p = plot(best, title="MBH Test Solution")
savefig(p,"../plots/mbh_test_2_phase.html")
store(best, "missions/mbh_2_phase_best")
store(archive, "missions/mbh_2_phase_archive")
# Now for a real stress test - the old ten-year, 5-phase Jovian mission
# This is known to have a solution... tough to find though
# I'll give it a tight launch window to be nice
planets = [Earth, Venus, Earth, Mars, Earth, Jupiter]
launch_window = DateTime(2023,4,1), DateTime(2023,7,1)
latest_arrival = DateTime(2033,1,1)
best, archive = mbh(planets, launch_window, latest_arrival, 200, 10)
@test typeof(best) == Mission
p = plot(best, title="MBH Test Solution")
savefig(p,"../plots/mbh_test_5_phase.html")
store(best, "missions/mbh_5_phase_best")
store(archive, "missions/mbh_5_phase_archive")
for planets in tests
best, archive = mbh(planets)
@test typeof(best) == Mission
log(best, archive)
end
end