首页 > 其他分享 >【仿真建模-anylogic】Path代码解析

【仿真建模-anylogic】Path代码解析

时间:2024-06-24 09:00:20浏览次数:20  
标签:circularCurve target 建模 private anylogic source Path public

Author:赵志乾
Date:2024-06-24
Declaration:All Right Reserved!!!

1. 类图

2. 代码解析

//**************************核心字段**************************
// Path起点
private Node source;
// Path终点
private Node target;
// Path各段描述
private final CircularCurve circularCurve;
// Path是否为双向
private boolean bidirectional;
// 限速和最大速度
private boolean limitSpeed;
private double maxSpeed;
// Path是否限制运输设备数量
private boolean limitNumberOfTransporters;
// Path上最大运输设备数量
private int maxNumberOfTransporters;
// Path的descriptor,Anylogic用于代码桥接
private IPathDescriptor<Agent> descriptor;

//*************************构造函数****************************
// 构造函数,指定Path的owner,即空间坐标基准;并设置默认最大速度10m/s,最大运输设备数量10个;
public Path(Agent owner) {
	super(owner);
	this.limitSpeed = false;
	this.maxSpeed = 10.0;
	this.limitNumberOfTransporters = false;
	this.maxNumberOfTransporters = 10;
	this.descriptor = (IPathDescriptor)IMaterialLibraryDescriptorFactory.create(IPathDescriptor.class, true);
}

//***********************Path上实时运输设备********************************
// 获取当前运输设备数量
public int getNumberOfTransporters() {
	return this.descriptor.getNumberOfTransporters();
}
// 获取第index个运输设备
public Agent getTransporter(int index) {
	return this.descriptor.getTransporter(index);
}

//***********************Path起止点****************************************
// 设置起始点
public void setSource(Node source) {
	// Path只有一个起始点,重新设置时会将原有设置清除
	if (this.source != source) {
		if (this.source != null) {
			// 解除原有起始点与Path的关系
			this.source.removeConnection(this);
		}
		// 重新设置Path起始点,且Path的起点、终点不能为同一点
		this.source = source;
		if (this.source != null) {
			if (this.source == this.target) {
				error("source is the same as target");
			}
			// 从Node角度建立与Path的关系
			this.source.addConnection(this, PathEndType.BEGIN);
		}
	}
}
// 设置终止点
public void setTarget(Node target) {
	// Path只有一个终止点,重新设置时会将原有设置清除
	if (this.target != target) {
		if (this.target != null) {
			this.target.removeConnection(this);
		}
		// 重新设置Path终止点,且Path的起点、终点不能为同一点
		this.target = target;
		if (this.target != null) {
			if (this.target == this.source) {
				error("source is the same as target");
			}
			this.target.addConnection(this, PathEndType.END);
		}
	}
}
// 获取Path的起点
public Point getStartPoint() {
	Point startPoint = this.circularCurve.getStartPoint();
	this.refreshZ(startPoint);
	return startPoint;
}
// 获取Path的终点
public Point getEndPoint() {
	Point endPoint = this.circularCurve.getEndPoint();
	this.refreshZ(endPoint);
	return endPoint;
}


//*******************************定义Path各段******************************
// 设定Path的起点
public void startDrawing(double x, double y, double z) {
	this.circularCurve.startDrawing(x, y, z);
}
// 从Path最后一点直线连至新点
public void lineTo(double x, double y, double z) {
	this.circularCurve.lineTo(x, y, z);
}
// 添加Segment至Path
public void addSegment(MarkupSegment segment) {
	this.circularCurve.addSegment(segment);
}
// 获取Path的Segment数量
public int getSegmentCount() {
	return this.circularCurve.getSegmentCount();
}
// 获取Paht的第index条Segment
public MarkupSegment getSegment(int index) {
	return (MarkupSegment)this.circularCurve.getSegment(index);
}


//****************************Path长度***************************************
// 获取Path的长度
public final double length(LengthUnits units) {
	// 需要Path已有owner才能进行长度单位的换算
	return this.getSpace().toLengthUnits(this.circularCurve.length(), units);
}

标签:circularCurve,target,建模,private,anylogic,source,Path,public
From: https://blog.csdn.net/zhaoyaxuan001/article/details/139882299

相关文章

  • 爬取同样内容,xpath方法会比bs4要慢很多吗?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【沐子山树】问了一个Python网络爬虫的问题,问题如下:爬取同样内容,xpath方法会比bs4要慢很多吗?二、实现过程这里【Kimi】给了个思路如下:爬取网页内容时,使用XPath和BeautifulSoup(bs4)这两种方法的速度差异通常不会特别......
  • Michael M. Tiller《Modelica多领域物理系统建模入门与提高》Chapter 4学习笔记
    文章目录第四章组件重用4.1概述4.2公共代码开发4.2.1识别和定义公共代码4.2.2使用公共代码定义模型4.3构建可重用的块4.3.1建立控制器模型4.3.2传递信息4.3.3小结4.4允许替换的组件4.4.1通用控制器接口4.4.2特定控制器模型4.4.3使用可替换组件4.4.4小结......
  • 解决unable to find valid certification path to requested target
    昨天访问供应商提供的接口还是正常的,今天早上上班却被告知系统功能总是提示错误,完全用不了,查询系统日志以及本地重新测试发现,调用供应商提供的接口提示unabletofindvalidcertificationpathtorequestedtargetjavax.net.ssl.SSLHandshakeException:GeneralOpenSslEngine......
  • 速通数学建模 —— 查找数据
    目录百度搜索技巧完全匹配搜索:查询词的外边加上双引号“”标题必含关键词:查询词前加上intitle:搜索文档:空格再输入filetype:文件格式去掉不想要的:查询词后面加空格后加减号与关键字 知网查文献先看知网的硕博士论文高级检索:想了解神经网络在信贷策略中的应用,想找一些......
  • 【仿真建模-anylogic】Network代码解析
    Author:赵志乾Date:2024-06-22Declaration:AllRightReserved!!!1.类图2.代码解析//************************核心字段*************************//Network所属的levelprivatetransientLevellevel;//Network的绘制模式privateShapeDrawModedrawMode;//Network......
  • 【仿真建模-anylogic】INetwork相关接口说明
    Author:赵志乾Date:2024-06-22Declaration:AllRightReserved!!!1.类图2.说明    INetwork为辊道网络、路线网路的顶层接口,其组成元素有节点和路径两种,对应的接口为INode、IPath;2.1INetworkMarkupElement核心方法如下://获取标记元素所在的网络INetworkgetNetwo......
  • SWAT模型【建模方法、实例应用、高级进阶技能】
                 第一部分:SWAT模型实践部分一SWAT模型及应用介绍1.1面源污染概要            1.2SWAT模型及应用1.3SWAT模型原理       1.4SWAT模型输入文件1.5 ArcGIS与SWAT关系二SWAT模型中GIS必备技术......
  • c#中path.combine的用法是什么
    原文链接:https://www.yisu.com/ask/29579392.html在C#中,Path.Combine()方法用于将两个或多个字符串路径组合成一个有效的路径。它接受多个字符串参数作为路径的组成部分,并返回一个字符串,表示有效的路径。语法如下:publicstaticstringCombine(paramsstring[]paths);参数pa......
  • 在使用InputStream templateStream = this.getClass().getClassLoader().getResourceA
    在使用 this.getClass().getClassLoader().getResourceAsStream()读取项目目录路径下的文件需要注意在pom.xml文件中加入<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • 【仿真建模-anylogic】ConveyorCustomStation原理解析
    Author:赵志乾Date:2024-06-19Declaration:AllRightReserved!!!1.类图2.原理解析2.1核心函数函数功能ConveyorCustomStation()无参构造函数;该类另有两个有参构造函数,但已标注为废弃;voidaddVertex(doublex,doubley)为2D多边形添加坐标点;voidonEnter(Tagent)物料进入......