В модели на основе агента, скажем, у меня есть 10 мест, и в каждом месте у меня есть случайное количество людей (10 ~ 20). Кроме того, у меня есть 5 мест установки. Теперь я могу отправить всех людей из каждого местоположения людей в ближайшее учреждение, используя getNearestAgent(). Но я хочу отправить 70% людей в ближайший, 20% во второй ближайший и 10% в 3-й ближайший объект. Как я могу это сделать?
Я поместил все местоположения в карту ГИС. И успешно отправить людей в ближайший объект.
Создайте функцию, которая принимает в качестве аргумента человека и возвращает местоположение:
Location nearest=person.getNearestAgent(locations);
if (randomTrue(0.7)){
return nearest;
}else{
List <Location> otherLocations=findAll(locations,l->!l.equals(nearest));
Location secondNearest=person.getNearestAgent(otherLocations);
if (randomTrue(2.0/3.0){
return secondNearest;
}else{
List <Location> otherLocations2=findAll(otherLocations,l->!l.equals(secondNearest));
return person.getNearestAgent(otherLocations2);
}
}
если вы используете people.getNearestAgent, вы не используете мой код, поэтому я не могу помочь, если вы решите сделать что-то совершенно другое и проигнорируете мое предложение
Фелипе – Извините, я неправильно понял. Когда я получал ошибку, я пробовал разные комбинации. Ваши коды очень помогли. Я действительно ценю вас. Я сделал следующим образом, и теперь он работает. Номер аптеки = this.getNearestAgent(main.pharmas); если (randomTrue(0.7)){ вернуть номер; }else{ List <Pharma> other = findAll(main.pharmas, l->!l.equals(nr)); Pharma sec = this.getNearestAgent(other); если (randomTrue(0.1)){ вернуть сек; }else{ List <Pharma> other2 = findAll(other, l->!l.equals(sec)); вернуть this.getNearestAgent(other2); } }
Фелипе - большое спасибо. Для меня Person (в основном - люди) является агентом, и их местоположение основано на экспортируемых данных (широта и логарифм). В каждой локации по несколько человек. Получение ошибки в первой строке кода. Я пробовал: Ближайший человек = people.getNearestAgent(pharmas);. Ошибка говорит: метод getNearestAgent(Main._pharmas_Population) не определен для типа Main._people_Population. Я должен создать эту функцию в основном, верно?