open-AIMS / ADRIA_matlab

Repository for the development of ADRIA: Adaptive Dynamic Reef Intervention Algorithms. ADRIA is a multi-criteria decision support tool set particularly useful for informing reef restoration and adaptation interventions.
1 stars 0 forks source link

Making RCI continuous #97

Closed ConnectedSystems closed 2 years ago

ConnectedSystems commented 2 years ago

@Rosejoycrocker @ryanheneghan

A simple approach would be to use a linear interpolation between the expert-knowledge defined criteria scores:

% Original criteria points
% columns are in order of TC, E, SV, Juveniles
rci_crit = [...
    0.45    0.45    0.45    0.35;
    0.35    0.35    0.35    0.25;
    0.25    0.25    0.30    0.25;
    0.15    0.25    0.30    0.25;
    0.05    0.15    0.18    0.15];

% Mapping points above to their scores
TC_func = @(x) interp1([0, 0.05, 0.15, 0.25, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0], x);
E_func = @(x) interp1([0, 0.15, 0.25, 0.25, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0], x);
SV_func = @(x) interp1([0, 0.18, 0.30, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.9, 1.0], x);
juv_func = @(x) interp1([0, 0.15, 0.25, 0.35, 1.0], [0, 0.1, 0.5, 0.9, 1.0], x);

% Usage, converting TC scores into intermediate reef condition scores:
TC_func([0.05, 0.15, 0.25, 0.35, 0.45])

% Result:    0.1000    0.3000    0.5000    0.7000    0.9000

% Another example:
TC_func([0.03, 0.1, 0.2, 0.3, 0.4, 0.45, 0.55, 0.8])

%Result:    0.0600    0.2000    0.4000    0.6000    0.8000    0.9000    0.9182    0.9636
ryanheneghan commented 2 years ago

This would be my exact approach Takuya. Nice job!

On 15 Feb 2022, at 20:44, Takuya Iwanaga @.***> wrote:

@Rosejoycrocker https://github.com/Rosejoycrocker @ryanheneghan https://github.com/ryanheneghan A simple approach would be to use a linear interpolation between expert-knowledge informed criteria points:

% Original criteria points % columns are in order of TC, E, SV, Juveniles rci_crit = [... 0.45 0.45 0.45 0.35; 0.35 0.35 0.35 0.25; 0.25 0.25 0.30 0.25; 0.15 0.25 0.30 0.25; 0.05 0.15 0.18 0.15];

% Mapping points above to their scores TC_func = @(x) interp1([0, 0.05, 0.15, 0.25, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0], x); E_func = @(x) interp1([0, 0.15, 0.25, 0.25, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0], x); SV_func = @(x) interp1([0, 0.18, 0.30, 0.35, 0.45, 1.0], [0, 0.1, 0.3, 0.5, 0.9, 1.0], x); juv_func = @(x) interp1([0, 0.15, 0.25, 0.35, 1.0], [0, 0.1, 0.5, 0.9, 1.0], x);

% Usage: TC_func([0.05, 0.15, 0.25, 0.35, 0.45])

% Result: 0.1000 0.3000 0.5000 0.7000 0.9000

% Another example: TC_func([0.03, 0.1, 0.2, 0.3, 0.4, 0.45, 0.55, 0.8])

%Result: 0.0600 0.2000 0.4000 0.6000 0.8000 0.9000 0.9182 0.9636 — Reply to this email directly, view it on GitHub https://github.com/open-AIMS/ADRIA_repo/issues/97, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMUXJVEOCKUDL22PC2UXGLTU3IVCNANCNFSM5OOD4EIA. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub. You are receiving this because you were mentioned.

ConnectedSystems commented 2 years ago

Addressed with commits from 3233de35c0bf6f08fe8e15a2cacc3d53579fd785 and earlier set of commits alongside changes in 64f79f770dda3643adcecdb07ae58e367b978d5c

image