Я пытаюсь реализовать концепцию аукциона в netlogo - она похожа на программу dining philosophers problem.Реализация аукциона аналогична столовой Философы
В моей программе рассматриваются компьютеры и процессоры, которые соответствуют философам и вилкам в программе обеденного философа. В программе философов пользователю требуется 2 вилки, но в компьютерах и процессорах для одного компьютера требуется один процессор.
Состояния, определенные в моей программе IDLE
, NEED
, USING
, что соответствует THINKING
, HUNGRY
, EATING
в программе философа.
В настоящее время моя программа переходит к пункту, в котором все компьютеры сообщают об изменениях NEED
. У меня возникают проблемы с приобретением сервера для компьютеров.
Фрагмент кода -
// ... lines of code for declaration etc
.
.
.
to update
if state = "IDLE" [
if random-float 1.0 < hungry-chance [
set state "NEED"
]
stop
]
if state = "USING" [
set total-used (total-used + 1)
if random-float 1.0 < full-chance
[ release-servers ]
set state "IDLE"
stop
]
if state = "NEED"
[ acquire-servers ]
if we've got both forks, eat.
if got? servers
[ set state "USING" ]
stop
end
//lines of code in between
.
.
to acquire-servers ;; philosopher procedure
ask servers [
if [owner] of servers = nobody[
set owner myself
move-to owner
set heading [heading] of owner
]
]
end
// lines of code at end
Добро пожаловать в переполнение стека! Я немного изменил ваш вопрос, чтобы сделать его немного легче читать. Я немного смущен, как ваша проблема связана с обеденными философами. Эта проблема специально связана с тем, что один пользователь нуждается в 2 ресурсах и имеет возможность «блокировать», если у каждого есть один ресурс, но никто не может заставить их «разблокировать» ситуацию. Это соответствовало бы всем в состоянии «НУЖНО», а затем вы пытаетесь предотвратить такую блокировку. Но для вашей ситуации (1 ресурс для 1 компьютера) я не понимаю, как помогают стратегии столового философа. Вы можете уточнить? –
В моей программе количество процессоров всегда будет меньше количества компьютеров. Я не рассматриваю дела о сотрудничестве здесь. Эта программа проще для начинающего философа. Мне просто нужны способы распределения процессора на компьютере, а когда компьютер завершен, он освобождает процессор, чтобы он мог быть назначен другому компьютеру. Можете ли вы помочь в реализации этого? Как я уже говорил в своем сообщении, в настоящее время программа идет до того момента, когда компьютеры находятся в состоянии нужды. –
@RichardSnape не могли бы вы помочь –