View source: R/optimal_survey_scheme.R
optimal_survey_scheme | R Documentation |
Find the optimal survey scheme that maximizes value of information. This function uses the exact method for calculating the expected value of the decision given a survey scheme.
optimal_survey_scheme(
site_data,
feature_data,
site_detection_columns,
site_n_surveys_columns,
site_probability_columns,
site_management_cost_column,
site_survey_cost_column,
feature_survey_column,
feature_survey_sensitivity_column,
feature_survey_specificity_column,
feature_model_sensitivity_column,
feature_model_specificity_column,
feature_target_column,
total_budget,
survey_budget,
site_management_locked_in_column = NULL,
site_management_locked_out_column = NULL,
site_survey_locked_out_column = NULL,
prior_matrix = NULL,
n_threads = 1,
verbose = FALSE
)
site_data |
|
feature_data |
|
site_detection_columns |
|
site_n_surveys_columns |
|
site_probability_columns |
|
site_management_cost_column |
|
site_survey_cost_column |
|
feature_survey_column |
|
feature_survey_sensitivity_column |
|
feature_survey_specificity_column |
|
feature_model_sensitivity_column |
|
feature_model_specificity_column |
|
feature_target_column |
|
total_budget |
|
survey_budget |
|
site_management_locked_in_column |
|
site_management_locked_out_column |
|
site_survey_locked_out_column |
|
prior_matrix |
|
n_threads |
|
verbose |
|
The optimal survey scheme is determined using a brute-force algorithm.
Initially, all feasible (valid) survey schemes are identified given the
survey costs and the survey budget (using
feasible_survey_schemes()
. Next, the expected value of each and
every feasible survey scheme is computed
(using evdsi()
).
Finally, the greatest expected value is identified, and all survey schemes
that share this greatest expected value are returned. Due to the nature of
this algorithm, it can take a very long time to complete.
A matrix
of logical
(TRUE
/ FALSE
)
values indicating if a site is selected in the scheme or not. Columns
correspond to sites, and rows correspond to different schemes. If
there is only one optimal survey scheme then the matrix
will only
contain a single row. This matrix also has a numeric
"ev"
attribute that contains the expected value of each scheme.
Please note that this function requires the Gurobi optimization software (https://www.gurobi.com/) and the gurobi R package if different sites have different survey costs. Installation instruction are available online for Linux, Windows, and Mac OS (see https://support.gurobi.com/hc/en-us/articles/4534161999889-How-do-I-install-Gurobi-Optimizer).
# set seeds for reproducibility
set.seed(123)
# load example site data
data(sim_sites)
print(sim_sites)
# load example feature data
data(sim_features)
print(sim_features)
# set total budget for managing sites for conservation
# (i.e. 50% of the cost of managing all sites)
total_budget <- sum(sim_sites$management_cost) * 0.5
# set total budget for surveying sites for conservation
# (i.e. 40% of the cost of managing all sites)
survey_budget <- sum(sim_sites$survey_cost) * 0.4
## Not run:
# find optimal survey scheme using exact method
opt_survey <- optimal_survey_scheme(
sim_sites, sim_features,
c("f1", "f2", "f3"), c("n1", "n2", "n3"), c("p1", "p2", "p3"),
"management_cost", "survey_cost",
"survey", "survey_sensitivity", "survey_specificity",
"model_sensitivity", "model_specificity",
"target", total_budget, survey_budget)
# print result
print(opt_survey)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.