title | layout | permalink | class |
---|---|---|---|
Run The Code |
splash |
/RunCode/ |
code |
Julia package for SDA planning and hypothesis resolution. This package contains algorithms to create and update a sensor tasking plan in order to both perform the task of catalog maintenance and resolve an operator hypothesis over an object of interest.
The code will be updated over the course of the project, so it is extemely important to update the code before you start working with the code to ensure that you have the latest version.
1. Install Julia
Download Julia by following the instructions at https://julialang.org/downloads/ . Installation, updating and testing are performed in Julia's pkg>
mode. To enter pkg>
mode, press ]
in julia. To return to normal julia execution mode from pkg>
mode, press backspace.
2. Clone SDAPOMDPs.jl
git clone https://github.com/CU-ADCL/SDAPOMDPs.jl.git
In the SDAPOMDPs.jl directory execute the following command in the command-line to initialize the project:
julia init.jl
A julia REPL can then be started by simply executing julia
in the command-line.
The experimental environment should be activated before any experiments are run with the following command being executed in the julia pkg
mode:
pkg> activate experiments
.
- Currently due to SatelliteDynamics.jl dependency on SOFA.jl, it only supports Unix systems (MacOS and Linux). In order to use SatelliteDynamics.jl on Windows systems, the Windows Subsystem for Linux (WSL) with a GCC installation is required.
julia --project=experiments experiments/demo.jl
The demo.jl file in SDAPOMDPs.jl can be used to run MC simulations with n_sim = N simulations (for a single simulation set n_sim=1). A quick analysis of the results, stored in the hist DataFrame, can be performed by the revisedPlan = analyzeHist(bmdp, hist, modelList, dir2save)
function. Where bmdp
is the belief-MDP model, hist
is the simulation history, modelList
is a vector of strings describing the different hypothesis models, and dir2save
is an optional string describing the library to save results and plots. The function returns the nominal/initial and the final/revised sensor tasking schedule, and prints the means of the cumulative reward, number of changes to the plan, steps to resolve the hypothesis, and observations to the object of interest taken before making a decision.
For some intuition into how the integer linear program (ILP) solution performs, one may execute
julia --project=experiments experiments/ilp-plan.jl
from the base SDAPOMDPs.jl directory to generate an animation illustrating the sensor tasking strategy of 3 ground-based sensors for a 12-hour period.
Unlike MATLAB, but like most other programming languages, Julia does not come bundled with an editor. People looking for a MATLAB-like experience may wish to use the Julia for VS Code IDE. A list of other editors that have Julia integration can be found by scrolling down on the Julia webpage.
A list of differences can be found here.
You can find performance tips here.
Python and Julia are capable of interoperating, however python may be too slow in some instances. Python and julia interop is supported by PythonCall