Исключение во время выполнения дискретного события:
root.storageRooms[0].storePalletinRoom.moveToBayT.freeSpaceSendTo:
Путь не найден! {agent=11, source={level=level, pos=(10.0, 265.0, 0.0)}, target={level=v_level, pos=(25.0, -35.0, 0.0)}}.
Справочная информация о моей модели. В моей основной модели настроен склад, а хранилище настроено в качестве агента. У меня есть поддоны, доставленные моим основным агентом. Затем этот поддон транспортируется на узел, расположенный рядом с моим местом хранения.
Я создаю свои агенты хранения, нажав кнопку: создать складское помещение с помощью следующего кода:
Код: Выделить всё
int numberofroomscreated = storageRooms.size();
traceln("number of rooms = "+ numberofroomscreated);
List storageroomtable = selectFrom(storageroomsetup).list();
if(storageroomtable.size()>0){
for (int i = 0; i < storageroomtable.size(); i++){
// Check if the current row index (i) matches the population size
// Note: 'i' is 0-based, so for the 4th row, i = 3
if (i == numberofroomscreated) { // populationSize = 4, target row is index 3
Tuple row = storageroomtable.get(i);
// 4. Extract information from the matching row
traceln("Starting assignment from table");
int p_racks = (int) row.get(storageroomsetup.p_racks);
int p_bays = (int) row.get(storageroomsetup.p_bays);
int p_shelves = (int) row.get(storageroomsetup.p_shelves);
double p_coolingcap = (double) row.get(storageroomsetup.p_room_cooling_cap);
double setpointtemp = (double) row.get(storageroomsetup.set_point_temperature);
double roomvol = (double) row.get(storageroomsetup.p_room_vol);
//PointNode accessroom = c_storageroompoints.get(index);
//LevelGate connectedLG = c_levelGates.get(index);
double initialtemp = (double) row.get(storageroomsetup.initial_current_room_temp);
//double LGlength = p_racks*1 + 1*floor(p_racks/2);
StorageRooms aroom = add_storageRooms(p_racks, p_bays, p_shelves, i,
p_coolingcap,setpointtemp, HoldingRoomStatic , roomvol, forklifts ,
c_storageroompoints.get(i), c_levelGates.get(i), initialtemp);
aroom.levelGate.setPairedPort(c_levelGates.get(i));
c_levelGates.get(i).setPairedPort(aroom.levelGate);
traceln("levelgate is " + c_levelGates.get(i));
traceln("accessnode is " + c_storageroompoints.get(i));
traceln("the new storage has x coordinate of " + aroom.v_Storage.getX() + ", Y of "+
aroom.v_Storage.getY() + " length of storage is " +
(aroom.v_Storage.getNumberOfRacks()*aroom.v_Storage.getRackDepth(METER)+
aroom.v_Storage.getAisleWidth(METER)*floor(aroom.v_Storage.getNumberOfRacks()/2))
);
// Optional: break the loop if you only need the first match
break;
}
}
}
У меня есть шлюз уровня и узел доступа в моем главном агенте. Они находятся в коллекциях c_levelgates и c_storageroompoints. В моем агенте StorageRooms я создаю свое хранилище по мере создания агента, используя три переменные: v_Storage типа Storage, v_n1 типа RectangularNode и v_Level типа Level. Начальное значение v_Level вызывает функцию f_createnetwork(). Эта функция возвращает уровень.
Код в f_createnetwork:
Код: Выделить всё
// build storage
v_Storage = new Storage();
v_Storage.setOwner(this);
v_Storage.setX(10);
v_Storage.setY(-40);//225);
v_Storage.setZ(0);
v_Storage.setRotation(0);//PI);
v_Storage.setNumberOfRacks(p_racks);
v_Storage.setNumberOfBays(p_bays);
v_Storage.setNumberOfCellsPerSlot(1);
v_Storage.setNumberOfShelves(p_shelves);
v_Storage.setShelfHeight(3, METER);
v_Storage.setCellWidth(1, METER);
v_Storage.setRackDepth(1, METER);
v_Storage.setAisleWidth(2, METER);
v_Storage.setPlaceSingleRacksAtSides(true);
v_Storage.setRackType(RACK_TYPE_SELECTIVE);
v_Storage.setRackPlacement(RACK_PLACEMENT_BACK_TO_BACK);
v_Storage.setSimplifiedAgentAnimation(false);
v_Storage.setObstacle(true);
levelGate.setOwner(this);
levelGate.setPairedPort(connectedLG);
v_n1 = new RectangularNode();
v_n1.setPos(-50,-50,0);
((RectangularNode) v_n1).setSize(350, 350.0);
((RectangularNode) v_n1).setLineWidth(1.0);
// build level
Level level = new Level(this,"v_level", SHAPE_DRAW_2D3D,0);
level.addAll(v_Storage,v_n1);
level.initialize();
return level;
У меня также есть levelGate в агенте хранилища, и он связан с параметром linkedLG, который установлен для levelgate из коллекции в main.
Палета входит из main в блок enterStorage: введите здесь описание изображения. Поддон поступает в магазинPalletinRoom нормально. Вот свойства storePalletinRoom: введите здесь описание изображения. Отслеживание захвата транспортера, начала загрузки и завершения загрузки. Я также попробовал прокомментированный код в пунктах выдачи X и Y, он не сработал. Поэтому я подозреваю, что перевозчик нормально забирает поддон, но потом путается с местом, куда его нужно доставить. Буду признателен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/798 ... ther-agent
Мобильная версия