Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何找到由数据库填充的MoveTo目的地?_Database_Search_Collections_Anylogic_Population - Fatal编程技术网

Database 如何找到由数据库填充的MoveTo目的地?

Database 如何找到由数据库填充的MoveTo目的地?,database,search,collections,anylogic,population,Database,Search,Collections,Anylogic,Population,我需要一些关于Anylogic模型的帮助 模型(简称):订单在单个路线中移动的制造场景。工作空间(WP)是通过模拟启动动态创建的。它们的名称、数量和其他参数存储在数据库中(excel导入)。此外,还将根据导入创建订单。代理填充“顺序”有一个收集路由,其中包含它必须按特定顺序停止的工作区 目标:我想在main中找到一个moveTo块,它可以找到代理订单的下一个目的地。 问题和解决方案路径: 我将目标类型设置为agent,并在agent字段中键入一个函数agent.getDestination()。

我需要一些关于Anylogic模型的帮助

模型(简称):订单在单个路线中移动的制造场景。工作空间(WP)是通过模拟启动动态创建的。它们的名称、数量和其他参数存储在数据库中(excel导入)。此外,还将根据导入创建订单。代理填充“顺序”有一个收集路由,其中包含它必须按特定顺序停止的工作区

目标:我想在main中找到一个moveTo块,它可以找到代理订单的下一个目的地。 问题和解决方案路径:

  • 我将目标类型设置为agent,并在agent字段中键入一个函数
    agent.getDestination()
    。此函数按顺序返回集合的下一项
    WP destinationName=routing.get(i)
    。有了这个,我得到了一个数据类型错误(在运行而不是编译时)。我怀疑这是因为数据库没有将条目保存为WP类型,而只保存字符串。 是否可以使用Excel中的代理创建集合?

  • 在此之后,我尝试使用与字符串相同的getDestination,通过findFirst查找与返回名称匹配的WP,并将其作为WP返回<代码>WP targetWP=findFirst(wps,w->w.name==destinationName) 找不到corse wps的数量(工作场所的数量)。 如何搜索人口? 也许是通过代理链接

  • 我认为这并不难,但找不到答案或解决办法。你可以看出我是个初学者。。。希望描述是好的,有人可以帮助我或给我一个提示:)
    谢谢

    欢迎使用堆栈溢出:)要通过Excel导入创建填充,您必须创建一个方法并调用如下代码。你还需要一个空的人口
    int n=excelFile.getLastRowNum(您的工作表名称);
    对于(int i=第一行;i w.name.equals(destinationName));
    如果(WorkplaceTofId!=null){
    //你想干什么就干什么
    }

    是否可以使用Excel中的代理创建集合

    不直接使用集合的属性,并且正如您所看到的,您不能有代理类型的数据库(DB)列类型。1

    但直接通过Java代码实现这一点相对简单(您可以使用插入数据库查询向导来为您构建框架代码)

    在此之后,我尝试使用与字符串相同的getDestination,通过findFirst查找与返回名称匹配的WP,并将其作为WP返回

    是的,这是一种方法。如果您的订单详细信息在Excel/数据库中,则它们可能通过某个字符串ID(这将是您从单独的Excel工作表/数据库表中创建的工作场所代理的参数)引用工作场所。但是,您需要使用Java
    equals
    方法来比较字符串,而不是
    =
    (用于比较数字或两个对象是否为同一对象)

    我想在main中找到一个moveTo块,它可以找到代理订单的下一个目的地

    因此,总体解决方案是

    • 从数据库中创建一个
      Workplace
      代理的总体(主要称为
      workplaces
      ),每个代理都有一个字符串参数
      id
      或从数据库列映射的类似参数

    • 从数据库中创建一个
      Order
      代理群体(比如说,主要称为
      orders
      ),然后在其启动操作中,使用另一个数据库表中的数据设置其工作场所ID集合(type
      ArrayList
      ,element class
      String
      ;比方说被称为
      workaceidslist

    • Order
      可能还需要一个工作变量来存储列表中它需要去的下一个索引(比如说一个
      int
      变量
      nextWorkplaceIndex
      ,从0开始)

    • 在Main中编写一个名为
      getWorkplaceByID
      的函数,该函数有一个
      字符串
      参数
      id
      ,并返回一个
      Workplace
      。这将从与ID匹配的人群中获取工作场所;与您类似的单行方式是
      findFirst(workplaces,w->w.id.equals(id))

    • MoveTo块(我假定它在Main中)需要将
      顺序
      移动到由
      getWorkplaceByID(agent.workplacedList.get(nextWorkplaceIndex++)定义的代理。(计算表达式后,
      ++
      位会增加索引,以便下一个工作区可以使用。)

    为了填充集合,您有两个表,如下所示(假设使用字符串作为工作场所和订单的ID):

    • 订单
      表:用于订单参数的列(包括一些字符串
      id
      列),而不是工作区列表。(每行创建一个
      订单
      代理。)

    • order\u workplaces
      表:列
      order\u id
      sequence\u num
      workplace\u id
      (因此,多行指定订单id的工作场所id顺序)

    Order
    启动时操作中,通过插入数据库查询向导设置骨架查询代码,如下所示(在这里,我们希望循环遍历此订单ID的所有行并执行一些操作——我们将更改骨架代码以向集合中添加条目,而不是像骨架代码那样仅通过
    traceln
    打印内容)

    然后,我们编辑骨架代码,如下所示。(注意,我们在初始查询中添加了一个
    orderBy
    子句,以确保按升序顺序获取行。)

    List rows=selectFrom(订单工作区)
    .其中(订单工作场所订单id等式(id))
    .orderBy(order\u workplaces.sequence\u num.asc())
    .list();
    for(元组行:行){
    工作场所
    
    List<Tuple> rows = selectFrom(order_workplaces)
        .where(order_workplaces.order_id.eq(id))
        .orderBy(order_workplaces.sequence_num.asc())
        .list();
    
    for (Tuple row : rows) {
        workplaceIDsList.add(row.get(order_workplaces.workplace_id));
    }