Graphical User Interfaces for Heterogeneous Distributed Systems
gplearn 自定义因子 -回复

gplearn 自定义因子-回复什么是gplearn ?gplearn 是一个开源的Python 库,用于自动化生成机器学习模型的特征工程。
它可以通过遗传程序设计(Genetic Programming, GP)算法来生成符号回归模型,以此来优化预测模型的性能。
通过gplearn,用户可以自定义因子,从而在机器学习模型中引入更多的特征工程,提高模型的预测能力。
什么是自定义因子?在机器学习中,特征工程是指通过对原始数据进行处理生成更有意义的特征,以提高机器学习模型的性能。
自定义因子就是用户自行定义的特征工程方法,用于描述问题的关键特征。
通过自定义因子,用户可以灵活而精确地刻画问题的特点,从而更好地指导模型的预测。
为什么需要自定义因子?自定义因子可以帮助向机器学习模型提供更多的信息,提高模型的预测能力。
在进行特征工程时,通常有一些问题的特征很难通过传统的特征提取方式得到,或者存在一些与问题紧密相关的特征。
此时,自定义因子可以帮助用户挖掘问题的内在特征,增加模型的预测能力。
如何自定义因子?自定义因子可以通过gplearn 的GP 算法来生成。
GP 算法是一种通过模拟生物进化过程来生成最佳函数解决问题的算法。
在gplearn 中,用户可以通过定义函数集、变量集和适应度函数来自定义因子。
函数集是一组用户定义的函数,用于模拟解决问题的函数。
变量集是一组用户定义的变量,用于表示问题的输入。
适应度函数是用户定义的一个函数,用于评估问题的某个解的好坏程度。
通过设置好函数集、变量集和适应度函数,用户可以在gplearn 中生成自己需要的特征工程方法。
如何使用自定义因子?使用自定义因子需要经过以下步骤:1. 定义函数集:用户需要根据问题的特点,定义一组合适的函数。
这些函数可以是数学函数、统计函数或者用户自定义的函数。
函数集的选择和定义对模型的预测能力很重要。
2. 定义变量集:用户需要根据问题的输入数据,定义一组合适的变量。
graphcast大模型的使用协议

graphcast大模型的使用协议
GraphCast是一个基于图神经网络(GNN)的天气预报模型,它可以用来预测未来天气情况。
其使用协议可能因具体应用场景和用户需求而有所不同。
一般来说,使用GraphCast大模型需要遵循以下协议:
1.遵守法律法规:在使用GraphCast大模型时,必须遵守相关法律法规和政
策规定,不得利用其进行违法活动或侵犯他人权益。
2.尊重知识产权:GraphCast大模型是经过大量数据训练得到的,具有较高
的技术含量和知识产权价值。
使用时应尊重知识产权,不得擅自复制、传播、使用模型算法或相关技术。
3.保证数据安全:在使用GraphCast大模型时,需要提供大量的数据输入。
这些数据可能包含个人隐私、商业机密等敏感信息。
因此,用户应确保数据来源合法、安全可靠,并对数据进行适当的脱敏处理。
4.正确使用模型:使用GraphCast大模型时应按照规定的操作流程和参数设
置进行操作,不得擅自修改模型参数或使用未经授权的版本。
同时,用户应自行承担使用模型产生的风险和责任。
5.遵守服务条款:如果GraphCast大模型是作为服务提供给用户的,那么用
户需要遵守服务提供商制定的服务条款。
这些条款可能包括数据保密、禁止滥用、支付费用等规定。
需要注意的是,具体的协议内容可能因GraphCast大模型的具体应用场景和用户需求而有所不同。
因此,在使用GraphCast大模型时,最好详细了解其使用协议,并与相关方面进行沟通协商,以确保合法合规地使用该模型。
latex中graphical abstract 命令 -回复

latex中graphical abstract 命令-回复如何在LaTeX中使用graphical abstract命令。
第一步:了解graphical abstract命令graphical abstract命令是在文章前几页的摘要部分添加一张图像,用于概括整篇文章的主题和内容。
它可以帮助读者迅速了解文章的重点,提高吸引力和可读性。
graphical abstract命令的语法如下:\begin{graphicalabstract}[width=\textwidth]{image_file} 这里插入图像的标题这里插入图像的其他相关信息,如作者、机构等\end{graphicalabstract}其中,[width=\textwidth]用于设置图像的宽度,可根据需要进行调整。
{image_file}是图像文件的路径和名称。
第二步:导入必要的宏包和设置文档类在使用graphical abstract命令之前,需要导入相应的宏包和设置文档类,以确保图像正常显示。
首先,在导言区(preamble)中导入graphicx宏包,它提供了处理图像的命令。
使用\usepackage{graphicx}命令导入即可。
其次,设置文档类为“article”或其他适合的类,例如:\documentclass{article}第三步:插入graphical abstract在正文部分,按照上述graphical abstract命令的语法,插入自己的图像。
以下是一个示例:\begin{document}\begin{graphicalabstract}[width=\textwidth]{example_image.jpg} \textbf{图1:示例图像的标题}这是一张示例图像,用于演示如何在LaTeX中使用graphical abstract命令。
图像可以包含各种信息,如作者、机构、关键词等。
图像的颜色、大小和格式可以根据需要进行调整。
graphical model解释

图形模型1. 介绍图形模型(Graphical Model)是一种用于描述随机变量之间依赖关系的工具。
它可以表示为一个图结构,其中节点表示随机变量,边表示变量之间的依赖关系。
图形模型在统计学、人工智能和机器学习等领域中得到广泛应用。
图形模型分为两大类:有向图模型(Directed Graphical Model)和无向图模型(Undirected Graphical Model)。
有向图模型也称为贝叶斯网络(Bayesian Network)或信念网络(Belief Network),无向图模型也称为马尔可夫随机场(Markov Random Field)。
2. 有向图模型有向图模型使用有向边来表示变量之间的因果关系。
节点表示随机变量,边表示变量之间的依赖关系。
每个节点都与其父节点相连,父节点的取值影响子节点的取值。
贝叶斯网络是一种常见的有向图模型。
它通过条件概率表来描述各个节点之间的依赖关系。
条件概率表定义了给定父节点取值时子节点取值的概率分布。
例如,假设我们要建立一个天气预测系统,其中包括三个变量:天气(Weather)、湿度(Humidity)和降雨(Rainfall)。
天气节点是根节点,湿度和降雨节点是其子节点。
贝叶斯网络可以表示为以下图结构:Weather -> HumidityWeather -> Rainfall其中,天气节点对湿度和降雨节点有直接影响。
我们可以通过条件概率表来描述这种影响关系。
3. 无向图模型无向图模型使用无向边来表示变量之间的相关关系。
边表示变量之间的相互作用,没有方向性。
每个节点都与其他节点相连,表示它们之间存在依赖关系。
马尔可夫随机场是一种常见的无向图模型。
它通过势函数来描述各个节点之间的依赖关系。
势函数定义了变量取值的联合概率分布。
例如,假设我们要建立一个人脸识别系统,其中包括三个变量:人脸(Face)、眼睛(Eyes)和嘴巴(Mouth)。
人脸节点是中心节点,眼睛和嘴巴节点与人脸节点相连。
graphic abstract 综述可以引用

图形摘要(Graphic abstract)1. 引言在20世纪90年代以来,随着计算机技术的飞速发展和数码技术的普及,图形学作为一门跨学科的学科,取得了长足的发展。
图形学在各行各业都有着广泛的应用,包括娱乐、教育、医疗、制造业等领域。
本文将对图形学的发展历程、主要应用领域、技术发展趋势等方面进行综述。
2. 图形学的发展历程图形学作为一门学科,起源于计算机科学与技术,在其发展过程中融合了数学、物理学、工程学等多个学科的理论和方法。
20世纪60年代,图形学开始萌芽,主要应用于计算机辅助设计(CAD)等领域。
而今,在物理学建模、渲染、图像处理、虚拟现实等方面都取得了长足的发展。
3. 图形学的主要应用领域3.1 娱乐产业随着电脑和游戏机的普及,图形学在游戏、电影等方面得到了广泛的应用。
游戏行业的开发商对图形学技术的需求不断增加,包括三维建模、动画制作、特效渲染等方面。
电影工业也离不开图形学技术的支持,例如许多好莱坞大片中的特效场景都是借助图形学技术制作的。
3.2 教育领域在教育领域,图形学技术已经成为了一种重要的教学手段。
通过计算机辅助设计软件,学生可以更直观地了解各种复杂的知识点,例如解剖学、建筑学等领域。
3.3 医疗领域图形学技术在医疗领域也有着广泛的应用。
医学影像学中的数字化技术、图像处理技术,都是图形学技术的重要应用。
通过图形学技术,医生可以更准确地诊断疾病,为病患提供更好的治疗方案。
3.4 制造业在制造业中,图形学技术也为产品设计与制造提供了便利。
通过计算机辅助设计软件,工程师可以更快速地完成产品设计,并且通过虚拟仿真技术,可以在产品制造之前进行全方位的模拟测试,提高了产品的质量和效率。
4. 图形学的技术发展趋势4.1 三维技术随着VR、AR等技术的飞速发展,对三维技术的需求也越来越大。
未来,三维技术将更加广泛地应用于游戏、影视、建筑等领域。
4.2 深度学习与图形学的结合深度学习技术的兴起,为图形学技术的提升提供了新的机会。
latex中graphical abstract 命令 -回复

latex中graphical abstract 命令-回复引言:在科学研究领域,图形摘要(graphical abstract)广泛应用于科学论文中,用于简明扼要地展示论文的主题和重要结论。
本文将介绍在LaTeX 中创建图形摘要的命令,并详细解释每一步的操作。
第一步:安装必要的宏包在LaTeX 中创建图形摘要需要使用一些特定的宏包。
首先,确保已安装`graphicx` 宏包,它提供了插入图片的功能。
使用以下命令检查该宏包是否已安装:latex\usepackage{graphicx}如果提示未找到该宏包,可以通过在LaTeX 发行版的包管理器中搜索并安装该宏包。
第二步:创建图形摘要环境要在LaTeX 中创建图形摘要,需要定义一个新的环境。
可以使用以下命令在文档的导言区定义一个名为`graphicalabstract` 的环境:latex\newenvironment{graphicalabstract}{\par\smallskip\noindent\textbf{Graphical Abstract:}\par\noindent} {\par\smallskip}这个命令定义了一个新的环境`graphicalabstract`,在摘要之前和之后增加了适当的空白行,并以粗体字形式显示“Graphical Abstract:”字样。
第三步:插入图形摘要在定义了图形摘要环境后,可以在文档的适当位置插入图形摘要。
以下是一个示例,展示如何插入一个图片作为图形摘要:latex\begin{graphicalabstract}\includegraphics[width=\textwidth]{graphical_abstract.jpg}\end{graphicalabstract}在这个示例中,使用`includegraphics` 命令插入了名为`graphical_abstract.jpg` 的图片。
作为极限建筑空间设计依据的人体运动包络体研究

摘要城市化进程不断的发展导致了城市中心的地块不停的被分隔,因此出现了许多在空间极为局促、环境极为苛刻或使用者行为活动受到一定限制的条件下的极限建筑空间。
在此情况下,根据行为建筑学相关理论及设计方法,计算出满足使用者功能需求的最小建筑空间,显得十分重要。
然而现有的极限建筑空间的设计数据主要是根据人体百分位参数进行建筑空间以及空间中固定物的设计。
这样的设计方式,在很大程度上存在着缺少设计针对性、空间尺寸不合理、空间使用效率低、建筑能耗大等问题。
针对这一现象,本研究将首先详细阐述通过计算机编程方式模拟人体运动方式,并通过运动轨迹计算得出人体运动包络体。
人体运动包络体模拟是行为建筑学理论研究推理过程中所采用的一种模拟法。
从而克服了传统实验法存在的样本人体尺度从二维平面研究转化为三维立体空间研究。
在此基础之上,该论文将探讨现存极限建筑存在的问题以及如何在实际建筑设计中,通过计算空间使用者运动包络体得到他们的详细数据,并以此确定使用者在空间中的活动范围,作为极限建筑空间设计的重要参考依据。
这样的设计方式,可以计算出可以满足使用需求的极限建筑空间形态与体积,从而保证建筑空间可以满足使用者对使用功能的基本需求,提高建筑空间使用效率。
另一方面,人体运动包络体可以用于优化极限空间中固定物的位置与尺寸、形状,根据具体使用者的实际测量参数的进行个性化的私人定制,并保证了固定物的基本使用功能。
关键词:运动包络体;极限建筑空间;行为建筑学;模拟法;空间效率AbstractThe land in the center of the city is constantly divided for the sake of urbanization development. As a result, an increasing number of limited architectural space was designed and built. The environment of such kind of space is usually cramped. And the users’ behavior is also limited. In this case, it is of great importance to calculate the minimum size of space which can meet the basic functional needs of the users. However, the existing data for limited architectural extent, leads to an increasing number serious issues, such as lacking pertinence, unreasonable space size, low space efficiency and high energy consumption.In order to solve this issue, this essay will first simulate the movement of human body by computer programming. After that, enveloping solid will be calculated by the trail of human body. Enveloping solid simulation is a basic simulating method in the inference procedure of behavioral architecture. Compared with traditional experiments, there will be no sample quantity limitation and anthropogenic factor in simulating process. And the 2-dimensional human parameter comes to 3 dimensional.Based on which, this essay will explore the existing problems on limited architectural space design and how to use enveloping solid simulation in architecture design. In the first stage, the design data of users can be get from the process of enveloping solid simulation. And the users’ parameter shows the range of activity, which is important reference frame in design procedure. By this method, the functional needs of users can be meet. And space efficiency can also be improved. What’s more, enveloping solid can be used in optimizing the shape and location of fixtures in building as well.Keywords:enveloping solid, limited architectural space,behavioral architecture, simulation, space efficiency目录摘要 (1)Abstract (2)第1章绪论 (1)1.1课题背景及研究的目的和意义 (1)1.1.1 课题的研究背景 (1)1.1.2 课题的研究目的和意义 (2)1.2相关概念概述 (3)1.2.1 极限建筑空间的概念 (3)1.2.2 “包络体”的概念及构成概述 (3)1.3国内外研究现状及分析 (4)1.3.1 行为建筑学 (4)1.3.2 极限建筑空间 (4)1.3.3 包络体的应用及计算方式 (6)1.4研究内容、方法与框架 (11)1.4.1 课题的研究内容 (11)1.4.2 研究方法 (12)1.4.3 课题的研究框架 (14)第2章研究基础 (15)2.1人体运动学、运动解剖学 (15)2.1.1 人体运动形式 (15)2.1.2 人体运动的特性与坐标系建立 (15)2.2人体测量学与程序人体基本参数设定 (17)2.2.1 人体上肢静态尺寸测量 (17)2.2.2 程序人体基本参数设定 (18)2.3计算机编程 (19)2.3.1 模拟软件 (19)2.3.2 Toxiclibs类库引用与运动轨迹的向量表示 (19)2.3.3 HE_Mesh类库引用与包络曲面生成 (20)2.4本章小结 (20)第3章程序模拟 (21)3.1程序逻辑 (21)3.1.1 程序参数设定 (21)3.1.2 上肢运动轨迹模拟 (22)3.1.3 上肢运动包络体生成 (30)3.2不同人体参数对模拟结果的影响 (30)3.2.1 儿童(四肢长度对模拟结果的影响) (30)3.2.2 老年人(活动角度对模拟结果的影响) (33)3.2.3 残疾人(残肢对模拟结果的影响) (34)3.2.4 数据对比 (35)3.3“人体运动包络体”程序对行为建筑学研究方法的扩展 (36)3.3.1 行为建筑学研究的一般方法以及主要存在问题 (36)3.3.2 “人体运动包络体”模拟对行为建筑学研究方法的贡献 (37)3.4本章小结 (39)第4章 (40)4.1计算满足使用需求的极限建筑空间形态与体积 (40)4.1.1 满足功能需求,提高空间使用效率 (40)4.1.2 根据运动轨迹预测使用者所需的三维建筑空间 (45)4.1.3 节约能源 (49)4.2优化极限空间中固定物的位置与尺寸、形状 (50)4.2.1 包络体与极限空间中固定物的位置 (51)4.2.2 包络体与极限空间中固定物的尺寸 (55)4.2.3 包络体与固定物的三维空间组合 (57)4.3本章小结 (58)结论 (59)参考文献 (60)附录 (63) (74)致谢 (75)第1章绪论1.1 课题背景及研究的目的和意义1.1.1 课题的研究背景古代有蜗居的说法,用“蜗舍”比喻“圆舍”“蜗”字描述的是空间的形状,后来逐渐演变为居住空间狭小的意思。
GraphHopper R Interface 说明书

Package‘graphhopper’October13,2022Title An R Interface to the'GraphHopper'Directions APIVersion0.1.2Date2021-02-06Maintainer Stefan Kuethe<***********************>Description Provides a quick and easy access to the'GraphHopper'Directions API.'GraphHopper'<https:///>itself is a routing engine based on'OpenStreetMap'data.API responses can be converted to simple feature(sf)objects in a convenient way.License MIT+file LICENSEEncoding UTF-8LazyData trueImports magrittr,httr,googlePolylines,jsonlite,tibble,dplyrSuggests sf,geojsonsf,ggplot2,testthatRoxygenNote6.1.1URL https:///crazycapivara/graphhopper-rBugReports https:///crazycapivara/graphhopper-r/issues NeedsCompilation noAuthor Stefan Kuethe[aut,cre]Repository CRANDate/Publication2021-02-0616:50:02UTCR topics documented:gh_as_sf (2)gh_available_spt_columns (3)gh_bbox (3)gh_get_info (4)gh_get_isochrone (4)gh_get_route (5)gh_get_routes (6)12gh_as_sf gh_get_spt (7)gh_instructions (8)gh_points (8)gh_set_api_url (9)gh_spt_as_linestrings_sf (9)gh_spt_columns (10)gh_time_distance (11)Index12 gh_as_sf Convert a gh object into an sf objectDescriptionConvert a gh object into an sf objectUsagegh_as_sf(data,...)##S3method for class gh_routegh_as_sf(data,...,geom_type=c("linestring","point"))##S3method for class gh_sptgh_as_sf(data,...)##S3method for class gh_isochronegh_as_sf(data,...)Argumentsdata A gh_route or gh_spt object....ignoredgeom_type Use geom_type=point to return the points of the route with ids corresponding to the instruction ids.Examplesif(FALSE){start_point<-c(52.592204,13.414307)end_point<-c(52.539614,13.364868)route_sf<-gh_get_route(list(start_point,end_point))%>%gh_as_sf()}gh_available_spt_columns3 gh_available_spt_columnsGet a vector with available columns of the spt endpointDescriptionGet a vector with available columns of the spt endpointUsagegh_available_spt_columns()gh_bbox Extract the bounding box from a gh objectDescriptionExtract the bounding box from a gh objectUsagegh_bbox(data)##S3method for class gh_routegh_bbox(data)##S3method for class gh_infogh_bbox(data)Argumentsdata A gh_route or gh_info object.4gh_get_isochrone gh_get_info Get information about the GraphHopper instanceDescriptionGet information about the GraphHopper instanceUsagegh_get_info()Examplesif(FALSE){info<-gh_get_info()message(info$version)message(info$data_date)print(gh_bbox(info))}gh_get_isochrone Get isochrones for a given start pointDescriptionGet isochrones for a given start pointUsagegh_get_isochrone(start_point,time_limit=180,distance_limit=-1,...)Argumentsstart_point The start point as(lat,lon)pair.time_limit The travel time limit in seconds.Ignored if distance_limit>0.distance_limit The distance limit in meters....Additonal parameters.See https:///#operation/ getIsochrone.Examplesif(FALSE){start_point<-c(52.53961,13.36487)isochrone_sf<-gh_get_isochrone(start_point,time_limit=180)%>%gh_as_sf()}gh_get_route Get a route for a given set of pointsDescriptionGet a route for a given set of pointsUsagegh_get_route(points,...,response_only=FALSE)Argumentspoints A list of2or more points as(lat,lon)pairs....Optional parameters that are passed to the query.response_only Whether to return the raw response object instead of just its content. See Alsohttps:///#tag/Routing-API for optional parameters. Examplesif(FALSE){start_point<-c(52.592204,13.414307)end_point<-c(52.539614,13.364868)route_sf<-gh_get_route(list(start_point,end_point))%>%gh_as_sf()}gh_get_routes Get multiple routesDescriptionInternally it just calls gh_get_route sevaral times.See also gh_get_spt.Usagegh_get_routes(x,y,...,callback=NULL)Argumentsx A single start point as(lat,lon)pairy A matrix or a data frame containing columns with latitudes and longitudes that are used as endpoints.Needs(lat,lon)order....Parameters that are passed to gh_get_route.callback A callback function that is applied to every calculated route.Examplesif(FALSE){start_point<-c(52.519772,13.392334)end_points<-rbind(c(52.564665,13.42083),c(52.564456,13.342724),c(52.489261,13.324871),c(52.48738,13.454647))time_distance_table<-gh_get_routes(start_point,end_points,calc_points=FALSE,callback=gh_time_distance)%>%dplyr::bind_rows()routes_sf<-gh_get_routes(start_point,end_points,callback=gh_as_sf)%>%do.call(rbind,.)}gh_get_spt7 gh_get_spt Get the shortest path tree for a given start pointDescriptionGet the shortest path tree for a given start pointUsagegh_get_spt(start_point,time_limit=600,distance_limit=-1,columns=gh_spt_columns(),reverse_flow=FALSE,profile="car") Argumentsstart_point The start point as(lat,lon)pair.time_limit The travel time limit in seconds.Ignored if distance_limit>0.distance_limit The distance limit in meters.columns The columns to be returned.See gh_spt_columns and gh_available_spt_columns for available columns.reverse_flow Use reverse_flow=TRUE to change theflow direction.profile The profile for which the spt should be calculated.Examplesif(FALSE){start_point<-c(52.53961,13.36487)columns<-gh_spt_columns(prev_longitude=TRUE,prev_latitude=TRUE,prev_time=TRUE)points_sf<-gh_get_spt(start_point,time_limit=180,columns=columns)%>%gh_as_sf()}8gh_points gh_instructions Extract the instructions from a gh route objectDescriptionExtract the instructions from a gh route objectUsagegh_instructions(data,instructions_only=FALSE)Argumentsdata A gh_route object.instructions_onlyWhether to return the instructions without the corresponding points.See Alsogh_get_routegh_points Extract the points from a gh route objectDescriptionExtract the points from a gh route objectUsagegh_points(data)Argumentsdata A gh_route object.gh_set_api_url9 gh_set_api_url Set gh API base urlDescriptionSet gh API base urlUsagegh_set_api_url(api_url)Argumentsapi_url API base urlNoteInternally it calls Sys.setenv to store the API url in an environment variable called GH_API_URL.Examplesgh_set_api_url("http://localhost:8989")gh_spt_as_linestrings_sfBuild lines from a gh spt objectDescriptionBuild lines from a gh spt objectUsagegh_spt_as_linestrings_sf(data)Argumentsdata A gh_spt object.10gh_spt_columnsExamplesif(FALSE){start_point<-c(52.53961,13.36487)columns<-gh_spt_columns(prev_longitude=TRUE,prev_latitude=TRUE,prev_time=TRUE)lines_sf<-gh_get_spt(start_point,time_limit=180,columns=columns)%>%gh_spt_as_linestrings_sf()}gh_spt_columns Select the columns to be returned by a spt requestDescriptionTimes are returned in milliseconds and distances in meters.Usagegh_spt_columns(longitude=TRUE,latitude=TRUE,time=TRUE,distance=TRUE,prev_longitude=FALSE,prev_latitude=FALSE,prev_time=FALSE,prev_distance=FALSE,node_id=FALSE,prev_node_id=FALSE,edge_id=FALSE,prev_edge_id=FALSE)Argumentslongitude,latitudeThe longitude,latitude of the node.time,distance The travel time,distance to the node.prev_longitude,prev_latitudeThe longitude,latitude of the previous node.prev_time,prev_distanceThe travel time,distance to the previous node.node_id,prev_node_idThe ID of the node,previous node.edge_id,prev_edge_idThe ID of the edge,previous edge.gh_time_distance11 gh_time_distance Extract time and distance from a gh route objectDescriptionExtract time and distance from a gh route objectUsagegh_time_distance(data)Argumentsdata A gh_route object.Indexgh_as_sf,2gh_available_spt_columns,3,7gh_bbox,3gh_get_info,4gh_get_isochrone,4gh_get_route,5,6,8gh_get_routes,6gh_get_spt,6,7gh_instructions,8gh_points,8gh_set_api_url,9gh_spt_as_linestrings_sf,9gh_spt_columns,7,10gh_time_distance,1112。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Graphical user interfaces for heterogeneous distributed systemsUwe Brinkschulte,Marios Siormanolakis,Holger V ogelsangInstitute for Microcomputer and Automation,University of KarlsruheHaid-und-Neu-Str.7,76131Karlsruhe,GermanyE-mail:brinks sior vogelsang@a.deABSTRACTIn modern object-oriented computer systems the internal state of the entire system consists of the internal states of many objects,probably distributed over a heterogeneous network of computers.The man machine interaction in such an application is based on the visualization of states on one hand and the modification of states in combination with event generation on the other hand.This paper describes concept and realization of a reusable service for general man machine communication.Keywords:graphical user interface,data visualization,service,object-oriented service1OVERVIEWThis research arises from a cooperation with the IEEE task force on ECBS and has two main goals:First,tofind a common standard for the process of creating large computer systems and second to define standards for reusable software components,the”services”.A service is designed to solve a given problem by processing tasks and results.With a given communication platform it is possible to place the services on different hardware systems independent of the specification. This is realized by distributed objects for heterogeneous systems(Figure1).Three basic types of services can be distinguished:The system services are needed for communication and process scheduling.The basic services are located above the system service.At this point of time,there are a layer for man machine interaction,for measurement and control and a database system for persistent data.The third type of service is application dependent,which means,that these services are build for a special solution,whereas the other ones only have to be configured for a given task.One of the most important services is the man machine interaction.The task of any man machine service(MMS)is to inform a human user of a system’s state and to allow modifications of this state.Due to the fact that man can perceive and handle information fastest in a visual way,this is the best channel to inform about complex system states.The optical channel is also a good choice to support human interaction.This is achieved in feeding back the user’s actions.A MMS has to provide two general functions:accesson different system platforms (via communicationon the same systemFigure1:Physical structure of a service-oriented systemthe visualization andthe modificationof structured information.Based upon these functions any communication between user and machine can be realized.This paper presents the concept and an implementation of a man machine service,usable as a server in a heterogeneous network of computers.2SYMBOLSThe basic idea of the man machine service is the introduction of symbols as state-pictures of structured objects of an application,e.g.process variables of a control unit.The user can define symbols and their behavior on events veryflexible with an interactive tool,the symbol-editor.Symbols are composed of base-symbols,such as lines,circles...and other user-defined symbols.As a result,symbols may contain a hierarchy of components.These are stored in a configuration database for usage within the application.After the configuration or construction,the symbols are available in the application.To use them,they have to be connected with an object.Changing a value of this object leads to a different graphical representation. Changing the graphical representation(e.g.the user moves a symbol interactive)leads to a different object value.The relations between object values and the resulting images can be defined.This relation is either continuous,where linear or logarithmic functions are provided,or discrete.Figure2shows an example of a complex symbol.The structured information is the position,direction,speed,altitude and theflight number of an airplane.This infor-mation plus its types is displayed on the left.The right side shows the hierarchical structure of the airplane symbol.The dashed arrows represent the influence of the information on the symbol.E.g.the direction influences the orientation of the airplane and the speed vector.The length of the speed vector depends on the ground speed and the position of the whole symbol is set according to the airplane position.related symbolFigure2:Example of a complex symbolAll symbols are arranged and positioned in planes.Each plane defines a unit of measurement respectively a scale.One symbol can only be assigned to one plane.Planes with all their symbols are displayed in windows,using a user defined scaling.It is possible to display multiple planes in one window at the same time,using a stack of planes.On the other hand it is possible to visualize a plane in more than one window at the same time.Symbols are constructed either by using an interactive symbol-editor or by applying the internal API.3PRESENTATION OBJECTSSymbols are used to visualize a big amount of user defined data types.The presentation object is introduced to offer the developer the facility to group symbols together and to create images of complex data type with a special semantic.3.1Predefined presentation objectsThere are different types of presentation objects predefined:A picture is a set of symbols.This is used as an image for a set of application objects.There are no restrictionsconcerning the object types.The picture is the basis for all other presentation objects.Figure3:Typical maskA menu is an image for an object component of an enumeration type,each button shows a selectable value.Any kindof symbol with a boolean state value is usable as a button.A mask is an image for an object or a structure of an application:Modifiable components of the object can be changedby the manipulation of the corresponding symbols(sliders,buttons,textfields,...).A table is an image of an array of objects or structures.A text-document is a picture with a special semantic and behavior.A help-document is a set of text-documents,connected together.A hierarchical graph is a set of pictures with a predefined behavior.Some presentation objects can be build automatically by the service if the type of the corresponding object is known at runtime.3.2ExampleFigure3is a mask-object,defined for the given data type”EngineControl”.The components”Speed”and”Temp”are shown twice:First,using simple text-symbols and second with a graphical symbol.In this example,they are only used for output,although it can be made possible,to change a value by modifying the corresponding symbol,if this is useful in an application.struct EngineControl{char Name[20],State[20];short Speed,Temp;};4EVENTS AND BINDINGS FOR DISTRIBUTED SYSTEMS Presentations objects themself are useful for the manipulation and visualization of objects.But to allow the user a communication with an application,he must be able to interact with the entire system by creating events.In traditional user interfaces,the application needs an event-loop to recognize such events.The system is build”around”this loop.This design is not very practicable in service-oriented applications due to the fact,that a service can be composed of many light-weight processes.To overcome this problem,a new mechanism,the binding,is introduced.A binding is defined as a connection between an operation and an event on a component of the user interface.The execution of the bounded operation is triggered by the event.The main properties of this approach are:Many internal operations of the man machine service can be bound to events,so that typical user interactions with the system are definable by an interactive GUI tool(see below)without writing any line of code in the application.Presentation objects can be bound together to create hierarchical menus,masks and tables.User defined operations can be connected to events to create callback functions or methods(in C++).An application is able to catch an event using this technique.The interaction with the application is event-driven without the need of an event-loop.The mechanism is not limited to a local computer,it is available system-wide.This contains global call-back functions(or methods in C++)to remote systems.The bindings are changeable during runtime with the goal to allow permanent runtime-modifications of the GUI behavior.The dynamic behavior model is a portably described for different hardware architectures without the need of recom-pilation.The handling of all unbound events is simplified by applying default-bindings for these kinds of events.These means,that bindings are definable on more than one type of event or on every unbound event.Furthermore,unbound components of the user interface can be connected by bindings to implement a default-handler.Presentation objects with a predefined behavior on events are implemented using bindings.Objects of a higher level, which are using presentation objects like pictures,must supply their components with task-specific binding functions to have control over the event responding.An interactive GUI editor allows the developer to create user interfaces,consisting of presentation objects and windows together with bindings in a comfortable way.For runtime or application defined interfaces a GUI creation or modification by the service API is possible.5REALIZATIONMMS is written in C++language for manipulating symbols,planes and windows.The platform dependent parts of the MMS are based upon an uniform interface provided by a window service.The functions of this service are grouped in two parts:window manipulations and graphical drawing primitives in windows.This is implemented using distributed objects. The new defined standard for distributed objects”Corba”is not used due to its requirement for a TCP/IP layer.This is not possible in some kind of automation applications.Figure4:Internal MMS structureGUI’s are stored in a database,using persistent objects,to ensure reuseability in different projects and to allow the unmodified use on other hardware platforms.Figure4presents the internal structure of the service without the persistent object layer.6CONCLUSIONThe resulting environment allows pleasant and comfortable development of user interfaces for distributed systems.This has been verified in different applications e.g.a railway control system,the control of a production cell,a traffic control system and a project management tool.Free definable symbols have reduced the need for an additional implementation in the application.Bindings are a powerful mechanism to implement a user controlled behavior and reduces the programming overhead.7ACKNOWLEDGMENTThis paper is based on research done at the Institute for Microcomputers and Automation—Prof.Schweizer and Prof. Brinkschulte.8REFERENCES[1]Len Bass,Joelle Coutaz,”Developing Software for the User Interface”,Addison-Wesley Publishing Company,1990[2]Steve Churchill,”Fresco Reference Manual”,Fujitsu Ltd.,1995[3]Steve Churchill,”Programming Fresco—A hands-on tutorial to the Fresco user interface system”,Fujitsu Ltd.,1995[4]Uwe Brinkschulte,Marios Siormanolakis,Holger V ogelsang,”Visualization and Manipulation of Structured Informa-tion”,In proceedings of the First International Conference on Visual Information Systems Visual’96,February1996, Melbourne,Australia[5]Ralf Danzer,”An Object-Oriented Architecture for User Interface Management in Distributed Applications”,Univer-sity of Kaiserslautern,Fachbereich Informatik,1992[6]Richard P.Gabriel,”Persistence in a Programming Environment”,Dr.Dobb’s Journal12/1992[7]Gunnar Johannsen,”Mensch-Maschine-Systeme”,Springer,1993[8]C.Lewerentz,T.Lindner,”Case Study’Production Cell’.A Comparative Study in Formal Software Development”,Forschungszentrum Informatik,Karlsruhe,FZI-Publication1/94[9]John K.Ousterhout,”Tcl and Tk Toolkit”,Computer Science Division,Department of Electrical Engineering andComputer Sciences,University of California,Berkeley,CA94720,Draft8/12/93,1993[10]Kapp,K.-H.and Siormanolakis,M.:”EGF–Elementary Graphical Functions”,Institute for Microcomputers andAutomation,Internal Report,University of Karlsruhe,1994[11]Julian Smart,”Reference Manual for wxWindows1.60:a portable C++GUI toolkit”,Artificial Intelligence Applica-tions Institute,University of Edingburgh,1994[12]Al Stevens,”Persistent Objects in C++”,Dr.Dobb’s Journal,12/1992[13]Holger V ogelsang,Uwe Brinkschulte,”Persistent Objects In A Relational Database”,submitted paper to ECOOP’96,1996[14]Holger V ogelsang,”Archiving System States by Persistent Objects”,In proceedings of the International IEEE Work-shop and Symposium on Engineering of Computer Based Systems ECBS’96,March1996,Friedrichshafen,Germany。