как получить доступ к значению другой переменной агентов через ссылки в netlogo

#netlogo

#netlogo

Вопрос:

я пытаюсь создать модель с двумя наборами агентов. розничный торговец и клиентский набор. агенты по работе с клиентами должны получить доступ к цене ближайшего участника розничного набора и сравнить его цену со своей собственной предпочтительной ценой и совершить покупку, если предлагаемая розничным продавцом цена ниже предпочтительной цены. я попытался определить переменную price-здесь для клиентов, чтобы я мог передать значение price ближайшего розничного продавца клиенту и провести сравнение. интересно, какой синтаксис я должен использовать для выполнения этой передачи? я создал здесь простую модель, чтобы я мог освоиться с процессом.

 breed [ retailers retailer]
breed [ customers customer]

directed-link-breed [info-links info-link]
directed-link-breed [purchase-links purchase-link]

retailers-own [
       price
       inventory
]


customers-own [
         price-here
         prefered-price
]


to setup
  
  create-retailers 10 [ setxy random-pxcor random-pycor
                        set color blue
                        set price random 10
                        set inventory 10
  ]

create-customers 20 [ setxy  random-pxcor random-pycor 
                      set color red
                      set prefered-price random 7 ]
end


to go
  
  foreach sort customers [x -> ask x[
    create-info-link-from  min-one-of retailers [ distance myself ]
  ]]
end

  

Ответ №1:

Это не тестировалось, поэтому может содержать синтаксические ошибки. Я думаю, вы хотите проверить цену только у ближайшего продавца, а затем купить, если цена достаточно низкая. Вам не нужно создавать ссылку только для получения информации, вам просто нужно указать агента с нужной информацией и использовать ее of . Итак, вы можете сделать что-то вроде этого:

 to go
  ask customers
  [ let closest min-one-of retailers [ distance myself ]
    let closest-price [price] of closest
    if closest-price <= preferred-price
    [ ...
  

Я построил его в виде отдельных строк, чтобы вы могли видеть, что происходит. (1) Определите ближайшего продавца и присвоите этой черепахе переменную с именем «ближайший». (2) Узнайте цену у этого продавца. (3) Проведите сравнение, а затем примите меры.

Вы можете сделать это в одной строке. Это выглядело бы как:

 to go
  ask customers
  [ if closest-price <= [price] of min-one-of retailers [ distance myself ]
    [ ...