【问题标题】:Is there a method to randomly generate agents created from a database?有没有一种方法可以随机生成从数据库创建的代理?
【发布时间】:2021-08-26 01:05:29
【问题描述】:

Example of packages我目前正在生成代理,其参数从源节点的数据库读取。模型中的这些代理是不同类型的包(因此基本上这些包具有相同的参数名称列表,如包名称、体积等,但具有不同的参数值)。问题是我需要随机生成这些包,但它目前是按照包在 DB 中列出的顺序生成的。有什么方法可以修改代码以达到需要的效果吗?

当前代码片段:

{
DbPackages _result_xjal = new DbPackages(); 
_result_xjal.setParametersToDefaultValues();
_result_xjal.packageDb = self.databaseTable.getValue( "package_db", String.class );
_result_xjal.tester = self.databaseTable.getValue( "tester", String.class );
_result_xjal.handler = self.databaseTable.getValue( "handler", String.class );
...
return _result_xjal;
}

【问题讨论】:

  • 你能分享一张包含这些包的表格中的一些记录的屏幕截图吗?另外,当您说 random 时,您的意思是在某些事件中(例如每分钟一次),模拟只是随机选择一条记录并为其创建一个包?
  • @ArtemP。嗨,我已经在图片中添加了链接。希望你能看到它。是的,对于随机我希望在每个间隔生成一个随机包。这可能吗?

标签: anylogic


【解决方案1】:

您可以使用代码从数据库中读取,然后将列表打乱以随机化,然后生成具有其特征的代理。

List <Tuple> x=selectFrom(db).list();
Collections.shuffle(x);
for(Tuple t : x)
    add_agents(t.get(db.whatever));

【讨论】:

  • 我尝试使用您提供的代码,但遇到以下错误:1) x 无法解析为变量 2) 列表无法解析为变量 3) 元组无法解析被解析为变量 4) 标记“=”上的语法错误,
【解决方案2】:

这可以使用以下代码来实现。此示例适用于具有 3 条记录的表:

List<Tuple> vals = 
    selectFrom(db_table)
        .offset(uniform_discr(0, 2)) // <- this randomly offsets the output
        .orderBy(db_table.db_name.asc())
        .list();

Tuple t = vals.get(0); // <- this line picks the first record in result
traceln("Got value: {%s, %s, %d}", 
    t.get(db_table.db_name),
    t.get(db_table.db_value1),
    t.get(db_table.db_value2)
    );

所以假设输入 db_table 如下所示:

db_name db_value1 db_value2
a foo1 1
b bar10 10
c foo100 100

那么上面的代码就会产生这样的输出:

Got value: {c, foo100, 100}
Got value: {b, bar10, 10}
Got value: {a, foo1, 1}
Got value: {a, foo1, 1}
Got value: {c, foo100, 100}
Got value: {a, foo1, 1}
Got value: {c, foo100, 100}
Got value: {c, foo100, 100}
Got value: {c, foo100, 100}
Got value: {c, foo100, 100}
Got value: {b, bar10, 10}
Got value: {b, bar10, 10}
Got value: {a, foo1, 1}

显然,它从数据库中的 3 中随机选择一条记录并打印其内容。

【讨论】:

  • 非常感谢!你建议的方法就像一个魅力!使用您的 Java 代码成功地在 Anylogic 中随机生成的代理中建模:)
  • 很高兴它成功了,您能否将问题标记为已回答?
猜你喜欢
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2020-10-18
  • 2013-05-13
  • 2020-12-18
  • 2019-04-20
相关资源
最近更新 更多