本文整理汇总了C#中Landis.Landscape.ActiveSite.GetNeighbor方法的典型用法代码示例。如果您正苦于以下问题:C# ActiveSite.GetNeighbor方法的具体用法?C# ActiveSite.GetNeighbor怎么用?C# ActiveSite.GetNeighbor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Landis.Landscape.ActiveSite
的用法示例。
在下文中一共展示了ActiveSite.GetNeighbor方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Seeds
//---------------------------------------------------------------------
public bool Seeds(ISpecies species,
ActiveSite site)
{
if (! Reproduction.SufficientLight(species, site) ||
! Reproduction.Establish(species, site))
return false;
double randomNum = Random.GenerateUniform();
foreach (RelativeLocation relLoc in neighborhoods[species.Index]) {
ActiveSite neighbor = site.GetNeighbor(relLoc) as ActiveSite;
if (neighbor != null) {
float probability = seedDispersalMethod(species, neighbor, site);
if (randomNum < probability)
return true;
}
}
return false;
}
示例2: Algorithm
//---------------------------------------------------------------------
public static void Algorithm(//ISpecies species,
ActiveSite site)
{
foreach (RelativeLocationWeighted reloc in Seeding.MaxSeedQuarterNeighborhood)
{
double distance = reloc.Weight;
foreach(ISpecies species in Model.Core.Species)
{
if (species.EffectiveSeedDist == EffectiveSeedDist.Universal)
if(Reproduction.SufficientLight(species, site) &&
Reproduction.Establish(species, site))
{
Reproduction.AddNewCohort(species, site);
break;
}
int EffD = species.EffectiveSeedDist;
int MaxD = species.MaxSeedDist;
if(distance > MaxD) break; //Check no further
double dispersalProb = 0.0;
if(reloc.Location.Row == 0 && reloc.Location.Column == 0) //Check seeds on site
{
if(Reproduction.SufficientLight(species, site) &&
Reproduction.Establish(species, site) &&
Reproduction.MaturePresent(species, site))
{
Reproduction.AddNewCohort(species, site);
break;
}
}
else
{
dispersalProb = GetDispersalProbability(EffD, MaxD, distance);
//First check the Southeast quadrant:
Site neighbor = site.GetNeighbor(reloc.Location);
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Reproduction.AddNewCohort(species, site);
break;
}
//Next, check all other quadrants:
neighbor = site.GetNeighbor(new RelativeLocation(reloc.Location.Row * -1, reloc.Location.Column));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Reproduction.AddNewCohort(species, site);
break;
}
neighbor = site.GetNeighbor(new RelativeLocation(reloc.Location.Row, reloc.Location.Column * -1));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Reproduction.AddNewCohort(species, site);
break;
}
neighbor = site.GetNeighbor(new RelativeLocation(reloc.Location.Row * -1, reloc.Location.Column * -1));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Reproduction.AddNewCohort(species, site);
break;
}
}
} //end species loop
} // end foreach relativelocation
return;
}
示例3: Algorithm
//---------------------------------------------------------------------
public static bool Algorithm(ISpecies species,
ActiveSite site)
{
if (species.EffectiveSeedDist == EffectiveSeedDist.Universal)
return UniversalDispersal.Algorithm(species, site);
if (! Reproduction.SufficientLight(species, site)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} not seeded: insufficient light",
site.Location, species.Name);
return false;
}
if (! Reproduction.Establish(species, site)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} not seeded: cannot establish",
site.Location, species.Name);
return false;
}
if (Reproduction.MaturePresent(species, site)) {
if (isDebugEnabled)
log.DebugFormat("site {0}: {1} seeded on site",
site.Location, species.Name);
return true;
}
if (isDebugEnabled)
log.DebugFormat("site {0}: search neighbors for {1}",
site.Location, species.Name);
//UI.WriteLine(" Ward seed disersal. Spp={0}, site={1},{2}.", species.Name, site.Location.Row, site.Location.Column);
foreach (RelativeLocationWeighted reloc in Seeding.MaxSeedQuarterNeighborhood)
{
double distance = reloc.Weight;
int rRow = (int) reloc.Location.Row;
int rCol = (int) reloc.Location.Column;
double EffD = (double) species.EffectiveSeedDist;
double MaxD = (double) species.MaxSeedDist;
if(distance > MaxD + ((double) Model.Core.CellLength / 2.0 * 1.414))
return false; //Check no further
double dispersalProb = GetDispersalProbability(EffD, MaxD, distance);
//UI.WriteLine(" DispersalProb={0}, EffD={1}, MaxD={2}, distance={3}.", dispersalProb, EffD, MaxD, distance);
//First check the Southeast quadrant:
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Site neighbor = site.GetNeighbor(reloc.Location);
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
return true;
}
//Next, check all other quadrants:
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow * -1, rCol));
if(rCol == 0)
neighbor = site.GetNeighbor(new RelativeLocation(0, rRow));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
return true;
}
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow * -1, rCol * -1));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
return true;
}
if (dispersalProb > Landis.Util.Random.GenerateUniform())
{
Site neighbor = site.GetNeighbor(new RelativeLocation(rRow, rCol * -1));
if(rCol == 0)
neighbor = site.GetNeighbor(new RelativeLocation(0, rRow * -1));
if (neighbor != null && neighbor.IsActive)
if (Reproduction.MaturePresent(species, neighbor))
return true;
}
} // end foreach relativelocation
return false;
}
示例4: Algorithm
//---------------------------------------------------------------------
public static bool Algorithm(ISpecies species,
ActiveSite site)
{
if (! Reproduction.SufficientLight(species, site) ||
! Reproduction.Establish(species, site))
return false;
foreach (NeighborInfo neighborInfo in neighborhoods[species.Index]) {
ActiveSite neighbor = site.GetNeighbor(neighborInfo.RelativeLocation) as ActiveSite;
if (neighbor != null) {
if (Util.Random.GenerateUniform() < neighborInfo.DistanceProbability)
return true;
}
}
return false;
}