- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Anylogic 中的 Mojave 在我的 Macbook 上创建一个场景,这是使用许多不同工具的基于代理的模拟的一部分。我的想法是通过Java接口(interface)将Anylogic连接到Eclipse。主要问题是,Anylogic 不知何故没有响应。
我已经尝试了许多不同的套接字代码,但找不到一个适用于 Anylogic 的代码。我正在使用 Anylogic 的免费版本,并在我的主项目下创建了一个 Java 接口(interface)。要运行 Java 界面,我右键单击该文件并选择“使用 Java 编辑器运行”
相比之下,我在 Eclipse 中创建了两个文件,一个是服务器,一个是客户端,它工作了。
所以这是我的 Eclipse,我想应该没问题 https://www.minpic.de/i/7wbk/nv00b
这是我在 Anylogic 中的主要模型 https://www.minpic.de/i/7wbn/pzuut
还有 Java 接口(interface),其中包含服务器代码。 https://www.minpic.de/i/7wbo/1mxsl4
我对编码还很陌生,希望你们能帮助我。
public class server{
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(4995);
Socket s = ss.accept();
System.out.println("Client connected");
DataInputStream dout = new DataInputStream(s.getInputStream());
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
while(true) {
String yoo = dout.readUTF();
System.out.println("client" + yoo);
if(yoo.equalsIgnoreCase("exit"));
break;
}
ss.close();
}
}
public class client{
public static void main(String[] args) throws IOException {
Socket s = new Socket("localhost",4995);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
while (true)
{
String so= br.readLine();
dout.writeUTF(so);
System.out.println("client" + so);
if(so.equalsIgnoreCase("exit"));
break;
}
s.close();
}
}
我希望这两个程序的控制台都能向我显示我通过控制台发送的消息,但是这两个程序都没有向我显示我在另一个程序中编写的消息。
最佳答案
Java 代码本身很好,至少对于创建一个简单的连接来说是这样。对于 Eclipse 中的服务器端,您可以这样保留。
但是对于 AnyLogic 中的客户端,存在一个问题:您不能像这样直接运行代码,因为其中有一个 main 方法。 AnyLogic 不是像 Eclipse 那样的“普通”Java IDE,它是一个非常具体的 IDE。它会自动为您创建一个项目,并将运行该项目所需的所有内容放入其中,包括一个主要方法。这意味着您不需要第二个主要方法。您宁愿让您的客户成为 AnyLogic 为您构建的更大程序的“一部分”。当您单击“使用 Java 编辑器打开”时,只显示代码,您无法在 AnyLogic 中运行任何类似的代码!
因此我们执行以下步骤:
Client
Client
创建一个实例已包含该函数的类代码如下:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Client implements Serializable {
public Client() {
}
public void activate() {
try {
Socket s = new Socket("localhost",4995);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
while (true)
{
String so= br.readLine();
dout.writeUTF(so);
System.out.println("client" + so);
if(so.equalsIgnoreCase("exit"));
break;
}
s.close();
}
catch(IOException e) {
System.out.println(e);
}
}
/**
* This number is here for model snapshot storing purpose<br>
* It needs to be changed when this class gets changed
*/
private static final long serialVersionUID = 1L;
}
创建实例并激活客户端可以使用此代码完成,例如将其添加到按钮或 AnyLogic 主代理的 OnStartup 代码中:
Client client = new Client();
client.activate();
关于java - 如何修复: Anylogic does not connect to Eclipse over Socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497535/
如何从其中一个 Java 代码输入窗口获取路径 - 字符串 - 文件引用,以指向 Anylogic 模型在磁盘中的位置? 我担心这可能是不可能的,因为执行是从包含 AL 生成的类的生成的 BUILD
我想为用户提供一个按钮,允许他们在模拟中向前跳过 1 小时,然后在单击“播放”时继续运行模型。下面的代码允许用户向前跳过一个小时,但是当单击“播放”时他们无法恢复模拟。 double nextHour
我想为用户提供一个按钮,允许他们在模拟中向前跳过 1 小时,然后在单击“播放”时继续运行模型。下面的代码允许用户向前跳过一个小时,但是当单击“播放”时他们无法恢复模拟。 double nextHour
Anylogic Process Modeling Library 中很少有像“Source”这样的 block 具有“On exit”和“On at exit”这样的操作。两者有什么区别? 我试图创
我不想计算队列的大小,而是想识别每个队列中的不同对象,以便将它们与平均处理时间相乘,然后获得队列中的时间。 我试图通过使用 queue.get(index) 函数来识别队列中的不同对象,但我无法确定该
我正在为生产线构建仿真模型。每天有两个类次(早类和夜类,各 12 小时)。在每个类次内, worker 被分成 4 组,每组在交错的时间休息(例如,4 名 worker 在早类,第一名 worker
我正在使用 Anylogic 行人库中的 PedGoTo block 将行人引导至最近的导出 (TargetLine)。但是由于行人和导出之间有墙,我不能只计算直线距离。在 PedGoTo Anylo
我有一个问题,我想在我的模型中向运输车队添加电池信息。想想当电池电量低于 30% 时,AGV 在完成任务后移动到最近的充电站并停留在那里,直到电池电量高于一定水平。 所以我想在运输车队的代理类型中添加
我是 AnyLogic 的新手...但它让我发疯!!! 这是非常基本的...在 AB 模型中,我希望一定比例的代理从一种状态转到另一种状态...但它发生了一些我无法理解的事情:S 我有 1000 个代
我正在构建一个超市模拟,其中客户(代理人)步行到不同的地点(目标行),然后使用步行图书馆去结账(Ped 服务)。 当代理被发送到 Ped 服务时,他们将根据设置选择服务的队列行之一,例如。最近的队列。
有什么方法可以获取 AnyLogic 模型的时间消耗曲线? 我看到了this question来自 Dylan,他在那里做了某种方法分析:它是来自 AnyLogic 实习生工具还是来自外部?如何为我的
我正在从 Arena 迁移到 AnyLogic,并且对发行版有疑问。我需要根据某些代理参数使用不同的分布。我在这里看到了建议,但是分布的数量太多了,我不想对它们进行硬编码。 How to associ
我有一个在生产线末端创建的库存代理。我的产品以其模型为特征。我正在尝试创建一种逻辑,以便在将产品交付给客户时从该库存代理中取出产品。此交付由 excel 表控制,我通过 SQL 代码获取信息。但是,我
对于托盘架系统的模拟,我想用代理预填充该系统(例如,给定 80% 的填充等级)。在预填充之后,盒子应该由不同的源 block 产生。 我认为理论上我可以使用命令 palletrack.put(int
我在工作中继承了一个任意逻辑模型。这是我第一次接触anylogic。几乎没有文档,所以我尝试剖析生成的代码以了解发生了什么。 有一件事一直出现:_xjal 它出现在变量、成员和方法名称中 - 如 _r
我在 AnyLogic 资源方面遇到了另一个小问题。 我希望能够从资源池中释放特定资源 - 而不仅仅是池中的任何资源。原因是我偶尔会从资源池中获取多个资源(一次一个),然后希望一次一次再次释放这些资源
我有一个基于代理的模拟,其中有一个名为 collection_dailyInfection 的集合其中每天都会出现新感染的数量。该集合看起来有点像这样: 第 1 天:0 第 2 天:3 第 4 天:3
祝大家平安 假设我有以下流程:2个不同的源、队列、延迟和接收器。我有一个名为“患者”的代理人。 我的目标:为来自第一来源的患者(使用百分比)提供不同的服务率(延迟时间)。换句话说,我想要例如; 10%
我有一个服务 block ,可以从两个资源池之一获取资源。在该 block 中操作的“抢占单元”部分,我想确定代理来自哪个资源池。 我尝试为资源池创建一个定制代理类型,该类型可以附加一个变量,然后我可
可以在等待 block 中更改内部队列行为吗? 该元素不是将代理保存在标准队列中,而是保存在 HashMap 中,以便事件处理程序中的代码可以以较低的代码复杂性执行搜索? 我发现的解决方案是使用迭代器
我是一名优秀的程序员,十分优秀!