Удалить ссылки между черепахами разных пород - PullRequest
1 голос
/ 08 марта 2020

Я хотел бы отбросить связи между одной черепахой и другой с другой породой, если условие выполнено. Я использую следующий код для этого:

ask one-of turtle1 [
if any? my-out-links with [breed = turtle2]
 [ask one-of out-link-neighbors with [breed = turtle2 and value < 0.7]  ;; value should refer to a neighbour's characteristics and it represents my condition
  [die]  
   ]
]

Но ссылки, похоже, сохранены. Ни одна ссылка не была удалена.

Не могли бы вы сказать, что не так в моем коде и как исправить это соответствующим образом?

Большое спасибо

1 Ответ

1 голос
/ 09 марта 2020

Я предполагаю, что turtle1 и turtle2 - две породы черепах. Если это так,

if any? my-out-links with [breed = turtle2]

никогда не найдет таких исходящих ссылок, которые вы проверяете, чтобы узнать, относятся ли какие-либо из my-out-links к породе turtle2 и, конечно, нет ссылок из этой породы. Вам нужно знать, принадлежит ли черепаха на другом конце линии turtle2. Поскольку это прямые ссылки, черепаха, которую вы хотите проверить, находится по адресу end2.

if any? my-out-links with [[breed] of end2 = turtle2]

, и вы узнаете, являются ли какие-либо из черепах на другом конце my-out-links породы turtle2.

Линия

ask one-of out-link-neighbors with [breed = turtle2 and value < 0.7] [die]

может сделать больше, чем вы предполагаете. Он запрашивает ссылку-соседа черепаха породы turtle2 и с value < 0.7 до d ie. Это действительно убьет и ссылку (так как она потеряла end2), но если вы хотите убить ссылку, а не черепаху на другом конце, вы можете сделать все это в одной строке

ask one-of turtle1 [
ask one-of my-out-links with [[breed = turtle2 and value < 0.7] of end2] [die]
]

Если таких исходящих ссылок нет, то вы будете спрашивать nobody, и запрос ничего не сделает.

Надеюсь, это поможет, Чарльз

...