repast-simphony - 在 Repast Simphony 中制作圆柱形空间?
问题描述
我正在尝试对上皮空间的内部进行建模,并且被困在围绕圆柱形空间的内部边缘的运动中。基本上,我正在尝试实现 StickyBorders 并将代理保持在我正在创建的圆柱形空间中的这些边界上。
有没有办法在 Repast Simphony 中使用柱坐标?我发现了这个例子(https://www.researchgate.net/publication/259695792_An_Agent-Based_Model_of_Vascular_Disease_Remodeling_in_Pulmonary_Arterial_Hypertension)他们似乎做了类似的事情,但这篇论文没有深入解释方法,我不相信这是过去的交响乐模型中的一个例子。
目前,我有一类上皮细胞,它们被设置成一个圆柱体,而其他药剂则从该圆柱体内开始。为了移动,他们选择最想要的位置(类似于僵尸代码),然后在原始位置的一个方格内指向所需位置的方向上的新位置。他们在移动到新点之前检查它,并确保在紧邻的摩尔附近至少有两个其他上皮细胞,以确保它们靠在墙上。
GridPoint intendedpt = new GridPoint((int)Math.rint(alongX),(int)Math.rint(alongY),(int)Math.rint(alongZ));
GridCellNgh<EpithelialCell> nearEpithelium = new GridCellNgh<EpithelialCell>(mac_grid, intendedpt, EpithelialCell.class, 1,1,1);
List<GridCell<EpithelialCell>> EpiCells = nearEpithelium.getNeighborhood(false);
int nearbyEpiCellsCount=0;
for (GridCell<EpithelialCell> cell: EpiCells) {
nearbyEpiCellsCount++;
}
if (nearbyEpiCellsCount<2) {
System.out.println(this + " leaving epithelial wall /r");
RunEnvironment.getInstance().pauseRun();
//TODO: where to go if false
}
我想知道是否有一种方法可以将空间的边界设置为圆柱体,或者检查代理的哪一侧靠墙并限制其在该方向上的移动。
解决方案
粘性边界代码 ( StickyBorders.java ) 本质上只是检查代理移动到的点是否超出空间的任何维度,如果是,则该点被限制到该维度。因此,例如,如果空间是 3x4,并且代理的移动会将其带到 4,2,那么该点将变为 3,2,并且代理被放置在那里。在这种情况下你能做这样的事情吗?如果没有,您能否编辑您的问题以解释为什么不这样做,也许这将有助于我们更好地理解。
推荐阅读
- php - Oracle 11 和 PHP 的求和列 - 有什么问题?
- vue.js - 每当状态更改时,Vuex 数组 getter 都不会被触发?纽斯特
- swift - 无法将“MenuView”类型的值分配给“某些视图”
- symfony - 为 LexikJwt 保护了我的注释路由
- google-apps-script - 在 Google App 脚本中循环以检索数据
- php - 如何将变量从控制器传递到 CodeIgniter 3 中的视图
- sql-server - 查找字符串值相似的记录
- python - 访问 matplotlib 直方图轴中的数据
- ios - 将数据从 Collection View Cell 传递到 View Controller
- javascript - 根据可编辑 DevExpress 表中的其他值设置单元格值