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

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить визуализированную очередь элементов, когда емкость хранилища заполнена?

Сообщение Anonymous »

В модуле Python Salabim у меня есть хранилище, которое я буду называть «Желтым».
Емкость желтого хранилища равна 5 (в иллюстративных целях оно установлено на бесконечность). Товары постоянно добавляются в магазин через систему маршрутизации. Как только элемент достигнет желтого раздела, его следует удалить из системы через пять секунд. Если вместимость магазина достигнута, товары за пределами желтой секции должны ждать в очереди, пока вместимость снова не освободится. Затем один элемент переместится в желтый раздел и так далее. Этот процесс должен продолжаться до тех пор, пока все элементы не будут обработаны.
Вот базовый пример кода того, как элементы перемещаются по маршруту в желтый цвет, сохраняя при этом там:

Код: Выделить всё

import salabim as sim

class Route(sim.Component):
def setup(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.line = sim.AnimateLine(
spec=(x1, y1, x2, y2),
linewidth=30,
linecolor='white'
)

class ConnectionPoint(sim.Component):
def setup(self, x, y, color, layer):
self.x = x
self.y = y
sim.AnimateRectangle(
spec=(-15, -15, 15, 15),
x=x,
y=y,
fillcolor=color,
layer=layer
)

class Item(sim.Component):
nr = 0
def setup(self, routes):
self.routes = routes
self.current_route_index = 0
self.has_been_stored = False
self.x, self.y = routes[0].x1, routes[0].y1
sim.AnimateRectangle(
spec=lambda: (self.x - 12, self.y - 12, self.x + 12, self.y + 12),
fillcolor="green"
)
Item.nr += 1
self.id = Item.nr

def process(self):

# route 0
if self.current_route_index == 0:
while self.x != routes[0].x2:
self.hold(0.1)
self.x += (routes[0].x2 - routes[0].x1) / abs(routes[0].x2 - routes[0].x1) * 2
self.current_route_index += 1
if self not in yellow:
self.enter(yellow)

env = sim.Environment()
env.background_color('20%gray')

yellow = sim.Store("yellow", capacity=float('inf'))

# Define list of routes
routes = [
Route(x1=0, y1=700, x2=800, y2=700),     #
]

connection_points = [
ConnectionPoint(x=800, y=700, color='yellow', layer=0),
]

# generates the item output
items = sim.ComponentGenerator(Item, routes=routes, iat=2, number=20)

env.animate(True)
env.run(till=200)

yellow.print_info()
Я пытался реализовать очередь, используя встроенную функцию в Salabim, но это оказалось безуспешным. Я также попытался реализовать функцию ожидания перед желтым, но у меня не было необходимого опыта программирования для настройки свойств очереди.
.
Цель состоит в том, чтобы создать визуально присутствующую очередь и гарантировать, что элементы будут помещены в очередь. линия и переход на желтый цвет, когда он свободен. Кроме того, когда место, выделенное желтым цветом, становится доступным, следующий элемент должен плавно перейти в желтый цвет, пока текущая линия очереди адаптируется.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ge-unit-is
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»