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=20 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_8(j,i) {input matrix of initial population values, in persons} limit pop >= 0 init pop[begin..end,begin..end] = #import_pop_8(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]Y8 #import_CC_8?@@@?@E A A@ A A A@@ A A@E889#import_pop_8?@@@?zDzDzD@zDzDzD@@zDzDzD1:m:y;:;@rk4DT{Gzd? MbP?MbP?MbP?Iu >?333??TIMEqCCpop Outmig9Ya"OutMigrationValue dPOPdt=E  iM0yEMU m u}"$& (!*5,I.]0=<]@eBDF %- 5&6 :B=fjn 2&>,TQ.Fjnr z u88;va8Q8=8;8 8$B&B(B*B,;.;B