MadonnaModel Arial!D(.2> B 6: 7{Simple net population model with migration as an exponential function of density/carrying capacity} {simulation control information} METHOD RK4 STARTTIME = 0 STOPTIME=50 DT = 0.02 {model parameters} C = .30 {proportion of the population migrating at carrying capacity} R=.10 {net reproduction proportion in an unlimited resource environment} begin = 1 end = 3 {input matrix of carrying capacity values, in persons} CC[begin..end,begin..end] = #import_CC(j,i) {input matrix of initial population values, in persons} limit pop >= 0 init pop[begin..end,begin..end] = #import_pop(j,i) {core model} {population at time two as a function of net population at time one, and out-migration} d/dt(pop[begin..end,begin..end]) = dPOPdt[i,j] - Outmig[i,j] {outmigration is the smaller of current population or an exponential function of the ratio of current population to carrying capacity} Outmig[begin..end,begin..end] = MIN(pop[i,j],(C*pop[i,j]*((pop[i,j]/CC[i,j])^2))) {This will hold the value of each population that will be dispersed to other cells. Since the outmigration is dispersed evenely amoung neighbors. So if the cell has 3 neighbors, then divide its outmigration by 3} OutMigrationValue[begin..end,begin..end] = IF ((i = begin) AND (j = begin)) THEN Outmig[i,j]/3 ELSE IF ((i = begin) AND (j = end)) THEN Outmig[i,j]/3 ELSE IF ((i = end) AND (j = end)) THEN Outmig[i,j]/3 ELSE IF ((i = end) AND (j = begin)) THEN Outmig[i,j]/3 ELSE IF (i-1 < begin) THEN Outmig[i,j]/5 ELSE IF (i+1 > end) THEN Outmig[i,j]/5 ELSE IF (j-1 < begin) THEN Outmig[i,j]/5 ELSE IF (j+1 > end) THEN Outmig[i,j]/5 ELSE Outmig[i,j]/8 {net population change is a logistic function of currrent population and carrying capacity, plus in-migration from adjacent cells} dPOPdt[begin..end,begin..end] = IF ((i = begin) AND (j = begin)) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j+1] + OutMigrationValue[i+1,j] + OutMigrationValue[i+1,j+1] ELSE IF ((i = begin) AND (j = end)) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j-1] + OutMigrationValue[i+1,j] + OutMigrationValue[i+1,j-1] ELSE IF ((i = end) AND (j = end)) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j-1] + OutMigrationValue[i-1,j] + OutMigrationValue[i-1,j-1] ELSE IF ((i = end) AND (j = begin)) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j+1] + OutMigrationValue[i-1,j] + OutMigrationValue[i-1,j+1] ELSE IF (i-1 < begin) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j+1] + OutMigrationValue[i,j-1] + OutMigrationValue[i+1,j] + OutMigrationValue[i+1,j+1] + OutMigrationValue[i+1,j-1] ELSE IF (i+1 > end) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i,j+1] + OutMigrationValue[i,j-1] + OutMigrationValue[i-1,j] + OutMigrationValue[i-1,j+1] + OutMigrationValue[i-1,j-1] ELSE IF (j-1 < begin) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i+1,j] + OutMigrationValue[i-1,j] + OutMigrationValue[i,j+1] + OutMigrationValue[i+1,j+1] + OutMigrationValue[i-1,j+1] ELSE IF (j+1 > end) THEN R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i+1,j] + OutMigrationValue[i-1,j] + OutMigrationValue[i,j-1] + OutMigrationValue[i+1,j-1] + OutMigrationValue[i-1,j-1] ELSE R*pop[i,j]*(1-(pop[i,j]/CC[i,j]))+OutMigrationValue[i+1,j] + OutMigrationValue[i-1,j] + OutMigrationValue[i,j+1] + OutMigrationValue[i,j-1] + OutMigrationValue[i+1,j+1] + OutMigrationValue[i+1,j-1] + OutMigrationValue[i-1,j+1] +OutMigrationValue[i-1,j-1]I8 #import_CC?@@@?zDzDzD@zDzDzD@@zDzDzD889#import_pop?@@@?@D@@:M:Y;9a;@rk4MbP?MbP?MbP?9 q >?333??TIME-CCYiqpop Outmig"OutMigrationValueQ dPOPdt y% 0E5  ) 19AIQ"$&(*,.0|<@!BaDuFYy ^pt x   DHL &,2.Fjnr z e8y8;vQ8A8-8;8 8$UB&]B(eB*mB,;.;uB