forsys-sp / patchmax

A spatial selection optimization algorithm in ForSysR
GNU General Public License v3.0
3 stars 0 forks source link

Document and review patchmax psuedo-code #25

Open codyevers opened 1 year ago

codyevers commented 1 year ago

Here’s the pseudo code for the procedure for everyone’s reference

Create spatial adjcency network

Search function

Build function: build_func( node_i )

codyevers commented 1 year ago

On January 2nd...

I’ve added the area adjust to the objective score. The summary should still report the objective sum in its original units. There is a message when you build the project that reports the ‘objective/area’.

Sounds like we’re still not on the exact same page for whether this should be hard-coded or optional. Pedro, you suggested that the area always be taken into account, which I came around to agreeing with. Michelle, you are right that if you provide an area weighted value as the objective, patchmax will divide that value once again by area, leading to different results. Not sure how to reconcile this to make sure people use this correctly...

codyevers commented 1 year ago

From Alan on Jan 6th (for the archive):

I agree. Both spm and area adjustments should be left to a data pre-processing option that the user can do in a separate script that we provide or done with the field calculator in arc. These two adjustments are not always needed depending on the data and they should not be imbedded in the code. Its almost better if users don’t do these adjustments to understand the outputs in terms of the raw data.

For background the origins of the area adjustments and spm calculations are from the first BM study before any of you were working with forsys nor pedro. We found that when the Wallowa Whitman mapped polygons they were generally larger in the north part of the forest, and since larger polygons when treated in general produced more volume forsys chose those stands. So I used volume per acre as the objective and then reported attainment as the total volume. Reporting attainment on a per area basis is meaningless, so the objective and attainment needed to be 2 different metrics which at first seemed weird.

As for SPM, when we started using weighted objective functions we found certain combinations of variables could not be blended because one was scaled from 0-1 and the other was scaled from 0-100,000. All of the solutions were weighted to the variable with the larger maximum values. So I calculated the standardized proportion of the mean to equalize the scale of the variables.

The important point is that these adjustments are not always required. For instance raster data have equal area per cell so area adjustment is not needed. Single objective runs do not need SPM, nor do multiobjective runs when the scaling of the variables is more or less the same. This is the case with the he accell data google is using where the data are raster and the objectives are standardized pillars so they might not need either of these adjustments and having them in the code just confuses their programmers.

Hopefully this can all get resolved so we can get the google people a clean version of forsys and then we can explain how to pre-process Data when needed.

codyevers commented 1 year ago

Based on the message above and after talking with @michelledayusfs, I've removed area weight from patchmax.