Netlogo:单个代理的补丁程序的代理集

时间:2020-05-01 14:39:02

标签: netlogo

我有一个正试图用go方法缩小范围的乌龟(载体)列表。

这是我的程序:

Element *insert_Element(Element **phead, Element *pos)
{
    Element *newElement = malloc(sizeof(Element));
    if (newElement == NULL)
    {
        return NULL;
    }
    newElement->right = pos;
    if (pos != NULL)
    {
        /* insert before pos */
        newElement->left = pos->left;
        pos->left = newElement;
    }
    else if (*phead != NULL)
    {
        /* add to end of list */
        Element *current = *phead;
        while (current->right != NULL)
        {
            current = current->right;
        }
        newElement->left = current;
        current->right = newElement;
    }
    else
    {
        /* add to empty list */
        newElement->left = NULL;
    }
    if (pos == *phead)
    {
        /* make it the start of the list */
        *phead = newElement;
    }
    return newElement;
}

我在行globals [ metal-sheets cut-sheets standard-skeleton finished-standard-skeleton prestige-skeleton finished-prestige-skeleton ] breed[carriers carrier] turtles-own [ on-job? ] patches-own [ processing-time machine-type ;;cutter, standard-welder, prestige-welder, riveter status ;;import, export, pending ] to setup clear-all set-default-shape carriers "circle" create-carriers number-of-carriers ;;number-of-carriers is a slider [set color grey set on-job? false setxy random-xcor random-ycor] setup-patches reset-ticks end to setup-patches ask patches [ if pxcor = 1 and pycor = 1 [set machine-type "cutter"] if pxcor = 1 and pycor = 5 [set machine-type "standard-welder"] if pxcor = 5 and pycor = 1 [set machine-type "prestige-welder"] if pxcor = 5 and pycor = 5 [set machine-type "riveter"] if machine-type = "cutter" [set pcolor red set status "import"] if machine-type = "standard-welder" [set pcolor green set status "import"] if machine-type = "prestige-welder" [set pcolor blue set status "import"] if machine-type = "riveter" [set pcolor yellow set status "import"] ] end to Go let cutter patches with [machine-type = "cutter"] let standard-welder patches with [machine-type = "standard-welder"] let prestige-welder patches with [machine-type = "prestige-welder"] let riveter patches with [machine-type = "riveter"] let free-carriers carriers with [on-job? = false] let closest-carrier min-one-of free-carriers [distance cutter] ;;Distance expects agent, got agentset ask closest-carrier [ set color green ] end 上遇到一个错误,说距离期望一个座席,但是得到了一个座席集,尽管集合中只有一个座席。

完整的错误消息是: let closest-carrier min-one-of free-carriers [distance cutter]

如何将补丁缩小到一个补丁?

1 个答案:

答案 0 :(得分:1)

在座席集中是否只有一个座席并不重要,它仍然是座席集。将one-of放在前面,这会从代理集中选择一个代理,因此会更改代码解释代码的方式