最近我们一直在开发基于Java的软件组件集合的土地使用领域
交通建模。该系统被设计用于集成各种开源工具对于未来城市的快速评估。我们利用广泛的面向对象技术实施的总体框架和数据交换的环境,有潜力像GIS,仿真模型,管理工具,数据库和其他外部嵌入常见的子系统数据源。
在这篇文章中,我将介绍如何在Java平台上使用运行空间相互作用模型基本库,我们已经开发的背景下,拟。该库定义了一组类代表一组可能行为的空间交互模型基于威尔逊(1972)。
可能是从设计的角度来看这个库的更有趣的部分之一是利用策略模式来实现空间互动模式的家庭。这些行为应该是柔性的,以被插入到一个应用程序,改变在飞行的功能。 UML类 图如下所示:
基于UML类图上,有四种方式来执行空间相互作用的运行模型(重力,生产约束,吸引力约束和双约束)和两个的方式来执行该行程成本矩阵的一般化(反幂函数和负指数函数)。
SpatialInteractionModel - 这是将使用不同的策略来运行的类模型。它使一个参考ISpatialInterationModel实例。该类使用setTypeOfSpatialInteractionModel方法,以取代目前的策略与其他策略。还将使用不同的策略使用该方法来计算广义的旅行费用setTypeOfDistanceFunction。
ISpatialInteractionModel - 该接口定义了所有可用的方法SpatialInteractionModel使用。 GravityModel
,
ProductionConstrainedModel
,和
AttractionConstrainedModel
ProductionAttractionConstrainedModel - 这些类实现ISpatialInteractionModel接口使用特定的一组的每个calculateInteractions方法的规则。
InversePowerFunction和NegativeExponentialFunction - 这些类实现使用特定的规则对每个calculateDistanceFuntion IDistanceFunction接口方法。
从哪里开始?
本快速指南介绍了在Eclipse中我们的空间相互作用模型库的使用作为JavaIDE。
为实现本教程是必要熟悉空间的基本概念交互模式和与Java面向对象编程和使用的Eclipse IDE中。如果你不熟悉的空间相互作用的模型,我会建议你先阅读本文章艾伦·威尔逊爵士教授。如果你不熟悉的Eclipse IDE,我会建议你先试试这个教程由拉尔斯沃格尔。 二手库
本教程的发展将需要以下工具对于空间相互作用的模型,我们会从我们的谷歌使用最新的jar文件代码项目主页CASA-拟。
第1步:定义问题
为了解释如何运行空间相互作用的模型与我们的图书馆,我们会考虑的问题预测流四区城市之间的购物支出。 购物支出数据为四区城市将是: 每周的购物支出(GBP) 纬向零售楼面(平方米) 区域之间的旅行费用
第2步:导入项目到Eclipse中
首先,你需要下载我们已经准备了本指南从这里开始的Eclipse项目。
启动Eclipse后,从菜单中选择文件 - >导入。
在导入向导中选择“现有项目到工作区”,然后单击下一步。 选择“选择存档文件”选项,并点击浏览选择你刚下载文件。 选择文件后单击Finish项目导入到工作区。一个新的项目创建并显示在Project Explorer视图中的文件夹。打开相应的文件夹在“uk.ac.ucl.casa.simulacra.first”项目。
选择文件夹SRC,选择包“uk.ac.ucl.casa.simulacra.first”,然后打开类MyFirstSpatialInteractionModel。这个类应该是这样的:
包uk.ac.ucl.casa.simulacra.first;
公共类MyFirst空间交互模型{
/**
* @参数的args */
公共静态无效的主要(字串[] args){ // TODO自动生成方法存根
双[] shoppingExpenditure={}355455255570; 双[] retailFloorspace={}720376930321;
双[] [] travelCost={{3,11,18,22},{12,3,13,19},{15,13,5,7},{24,18,8,5}}; } }
注意,在第1步类已经宣布该问题的定义相关的变量。
步骤3.创建一个空间相互作用的模型对象要创建空间相互作用模型中,我们只需要在以下行后添加几行
双[] [] travelCost={{3,11,18,22},{12,3,13,19},{15,13,5,7},{24,18,8,5}}; 该行是
SpatialInteractionModel模式=新SpatialInteractionModel(shoppingExpenditure,retailFloorspace); model.setTypeSpatialInteractionModelAttractionConstrainedModel());
(
新
model.setTypeDistanceFunction(新NegativeExponentialFunction());
第4步:运行模型并打印结果
要获得预测的行程矩阵购物支出流向了四圈的城市,我们只是需要用下面的代码行运行模式
双[] [] tripMatrix= model.calculateInteractions(travelCost,0.1);需要注意的是运行模式,calculateInteractions()方法需要的参数,travelCost它已被定义以及摩擦参数。对于本教程的目的,我们将使用一个天真的方式来分配摩擦参数的值,我们将简单的猜测值。
在下面的文章中,我们将讨论不同的方法实现计算更好估计摩擦参数。
现在,我们只需要打印的购物支出流量增加的预测行程矩阵下面几行
System.out.println(\for (int i = 0; i < shoppingExpenditure.length; i++) { for (int j = 0; j < retailFloorspace.length; j++) { System.out.println(i + \} }
Finally, to see the results you just need to run the application by right click on the