{"id":31021457,"url":"https://github.com/sisl/mineralexploration","last_synced_at":"2025-10-30T18:46:34.796Z","repository":{"id":39646551,"uuid":"411075599","full_name":"sisl/MineralExploration","owner":"sisl","description":null,"archived":false,"fork":false,"pushed_at":"2024-02-14T09:48:55.000Z","size":625,"stargazers_count":15,"open_issues_count":3,"forks_count":4,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-09-13T12:27:47.624Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sisl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-27T23:45:10.000Z","updated_at":"2025-06-30T10:53:03.000Z","dependencies_parsed_at":"2025-09-13T11:26:53.977Z","dependency_job_id":"5823bb44-ad1c-4376-b8b6-86c08ba9ca02","html_url":"https://github.com/sisl/MineralExploration","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sisl/MineralExploration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisl%2FMineralExploration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisl%2FMineralExploration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisl%2FMineralExploration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisl%2FMineralExploration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sisl","download_url":"https://codeload.github.com/sisl/MineralExploration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisl%2FMineralExploration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281862814,"owners_count":26574703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-13T11:21:50.691Z","updated_at":"2025-10-30T18:46:34.738Z","avatar_url":"https://github.com/sisl.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MineralExploration\nThis is the code for the intelligent prospector mineral exploration work conducted at Stanford University in a collaboration with SISL and SCERF. The source code provides a simulated mineral exploration problem and an implementation of the proposed sequential solution framework. The scripts needed to run the published experiments and additional trials are included in the `scripts` directory. All experiments were run in Julia 1.6.x. The specific versions of the required support packages are listed in the `project.toml`. \n\n## Installation \nThe package can be installed using the standard Julia package manager utility `add` function. To add the package from a local source, simply run the command (from within the package manager environment) \n\n```\n] add /PATH_TO_SOURCE\n```\n alternatively, you may navigate to the home directory of the source and run \n ```\n ] add . \n ```\n If you would like to develop within the code base, we recommend building the source directly within a virtual environment. The requireed packages can be installed using the Julia `build` command from the source home directory. \n\n## Code Organization\nAll of the source code is in the `src` directory. The `MineralExploration.jl` file defines the main module strucutre. In this file, the source for all of the exposed structures and functions can be located. The `parameters` directory contains the data used to fit the variograms in the published experiments. The `scripts` directory contains the scripts to run the expeirments and tests. \n\n## Example Use\nThe `solve_pomcpow.jl` script provides the best example of how to use this codebase. Key snippets are provided here.\n```\nusing POMDPs\n...\n\nusing MineralExploration\n\n# 1) Build problem model\nmainbody = SingleFixedNode()\nm = MineralExplorationPOMDP(max_bores=MAX_BORES, delta=GRID_SPACING+1, grid_spacing=GRID_SPACING,\n                            mainbody_gen=mainbody, max_movement=MAX_MOVEMENT)\n                            # , geodist_type=GSLIBDistribution)\ninitialize_data!(m, N_INITIAL)\nds0 = POMDPs.initialstate_distribution(m)\n\n# 2) Sample initial state\ns0 = rand(ds0)\n\n# 3) Create belief\nup = MEBeliefUpdater(m, 1000, 2.0)\nprintln(\"Initializing belief...\")\nb0 = POMDPs.initialize_belief(up, ds0)\nprintln(\"Belief Initialized!\")\n\n\nore_maps = [p.ore_map for p in b0.particles];\n\n# 4) Create POMCPOW instance\nnext_action = NextActionSampler() \nsolver = POMCPOWSolver(tree_queries=10000,\n                       check_repeat_obs=true,\n                       check_repeat_act=true,\n                       next_action=next_action,\n                       k_action=2.0,\n                       alpha_action=0.25,\n                       k_observation=2.0,\n                       alpha_observation=0.1,\n                       criterion=POMCPOW.MaxUCB(100.0),\n                       final_criterion=POMCPOW.MaxQ(),\n                       # final_criterion=POMCPOW.MaxTries(),\n                       estimate_value=0.0\n                       # estimate_value=leaf_estimation\n                       )\nplanner = POMDPs.solve(solver, m)\n\n# 5) Run simulation\nb_new = nothing\na_new = nothing\ndiscounted_return = 0.0\nB = [b0]\nAE = Float64[]\nME = Float64[]\nprintln(\"Entering Simulation...\")\nfor (sp, a, r, bp, t) in stepthrough(m, planner, up, b0, s0, \"sp,a,r,bp,t\", max_steps=50)\n    ...\n    \n    @show t\n    @show a.type\n    @show a.coords\n    @show r\n    @show sp.stopped\n    @show bp.stopped\n    volumes = [sum(p.ore_map .\u003e= m.massive_threshold) for p in bp.particles]\n    mean_volume = mean(volumes)\n    std_volume = std(volumes)\n    volume_lcb = mean_volume - 1.0*std_volume\n    push!(B, bp)\n    @show mean_volume\n    @show std_volume\n    @show volume_lcb\n\n    ...\n    \n    discounted_return += POMDPs.discount(m)^(t - 1)*r\nend\n```\nIn the above code, `...` denotes code from the original script that was omitted for brevity here. \n\nNote: To save data, the defalut location is a `data` folder in the source code home directory. To change this, change the file path strings referenced in the script. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisl%2Fmineralexploration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsisl%2Fmineralexploration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisl%2Fmineralexploration/lists"}