Перейти к содержимому
eu_tomat

Cистема хранения с использованием MFU

Рекомендуемые сообщения

Эти посты были перенесены из темы про мод OpenComputers, идея зародилась в этом посте:

В 20.05.2019 в 13:00, eu_tomat сказал:

Ограничение на количество MFU в одном адаптере легко преодолимо: транспозер + сундуки с кучей MFU ограничивают количество периферийных устройств лишь размером инвентарей, находящихся в непосредственной близости от транспозера. А если задержки не критичны, то и вообще ограничений нет. Плюс такого подхода ещё и в том, что он снимает ограничение и на количество периферии, задаваемое процессором или серверными шинами. 

 

В 20.05.2019 в 13:40, Alex сказал:

Отличное решение. Но все равно это костылик. Это надо как-то перебирать в сундуках мфу-шки нужные, чтобы вызвать методы и обратится к тем блокам, на которые они прилинкованы. МФУ-шки могут перемешиваться в сундуке и прочие неописуемые беды могут происходить. Да и как их искать там? Как понять, к чему они прилинкованы? nbt-хеши как-то брать и запоминать? или как? Это сильно хлопотно и много кода писать.

Кому не не лень писать много кода, рассказываю:

 

Робот способен не только устанавливать блоки, но и сразу линковать MFU на них. И если робот размещает линкованные MFU в определённом порядке в своём инвентаре и в определённом порядке переносит их в определённые же сундуки, то порядок MFU в слотах сундуков всегда определён. И если алгоритм работы с массивом сундуков всегда возвращает MFU в те же самые слоты, где они были ранее, то порядок не нарушается никогда. И если игроки с шаловливыми руками лишены доступа к этим сервисным сундукам, то и порядку MFU в сундуках ничто не угрожает.

 

Дистанция 3 для MFU – это много или мало? Попытаюсь придумать, например, систему хранения на одном адаптере, облепленном сундуками. Максимальное количество сундуков = 5^3-8+6-4. Это куб 5x5x5 с отрезанными блоками в каждой из 8 вершин и добавленными в центре каждой из 6 граней. Ещё 4 блока потрачено на адаптер и кабель до него. Выходит 119 сундуков. Но для компактности я бы пожертвовал всеми сундуками, выступающими за грани. Получится 114 сундуков. Такая схема легко масштабируется, и два адаптера обеспечат систему хранения из 228 сундуков.

 

Часть слотов в сундуках, непосредственно контактирующих с адаптером, будет занята MFU. Если сильно захотеть, то от части MFU можно избавиться, так как прямой доступ к некоторым из сундуков не обязателен, и к ним можно обращаться через соседние сундуки. Для этого потребуется аккуратно реализовать энергонезависимое хранение информации о содержимом сундуков с учётом того, что последняя операция переноса может и не завершиться успехом. Впрочем, кеширование полезно в любом случае.

 

Вот, как-то так и обходятся ограничения. Но этот путь, возможно, не для всех.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К одному транспозеру можно поставить 5 сундуков. К серверу подключить 56 транспозеров. Итого, можно организовать сеть хранения на 5*53*56 = 14840 предметов. И это ванильные сундуки/бочки, никаких ограничений я не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Doob сказал:

К одному транспозеру можно поставить 5 сундуков. К серверу подключить 56 транспозеров. Итого, можно организовать сеть хранения на 5*53*56 = 14840 предметов. И это ванильные сундуки/бочки, никаких ограничений я не вижу.

Если речь зашла о максимальных значениях, то описанная сеть на MFU имеет ёмкость в 5.5 раз больше. С ванильными сундучками, правда, результат скромнее, ёмкость отличается примерно в 3.3 раза. Кроме того, сеть на MFU имеет меньшие габариты за счёт более плотного размещения сундуков, и это, думаю, основное достоинство схемы. Недостатками схемы являются дорогой крафт MFU, низкая скорости работы (до 3х раз в худшем случае) и более сложная логика как при постройке, так и в процессе эксплуатации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет, плотность повысить невозможно, так как обвязка будет занимать где-то в полтора раза больше места при той же емкости. Строить и программировать такую систему, довольно безумное занятие. На транспозерах сеть легко самоорганизуется, поэтому ее можно строить как угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Doob сказал:

Нет, плотность повысить невозможно, так как обвязка будет занимать где-то в полтора раза больше места при той же емкости. Строить и программировать такую систему, довольно безумное занятие. На транспозерах сеть легко самоорганизуется, поэтому ее можно строить как угодно.

Ну, если безумство в данном случае является не психиатрической категорией, а показателем мотивации, то пусть так и будет.

 

А плотность у нас достигается так: есть кубик из сундуков IronChest размером 5x5x5 с адаптером внутри, угловые сундуки отсутствуют. Кабель от адаптера выходит наружу, съедая ещё два сундука. Из обвязки там только кабель, соединяющий все блоки + сервер с монитором и конвертер с энергохранителем.

 

Но можно пойти на принцип, и обвязку тоже впихнуть внутрь, оформив всю систему в виде параллелепипеда. Пусть будет кишка, по центру которой проходит кабель, с адаптерами в центре узлов, облепленными сундуками. Тогда в кубике будут потеряны не только 8 угловых сундуков, но и ещё 5 на адаптер и кабели. Останется 112 сундуков на каждый узел.

 

С лицевой стороны один кусок кабеля заменяем сервером, один сундук – монитором, второй – конвертером энергии, а третий – энергохранителем. Три сундука потеряны. Но с хвостовой стороны можно два блока кабеля, идущего в никуда, заменить на сундуки. В итоге потерян лишь один сундук из всей схемы.

 

В твоей схеме было 56 транспозеров. Сейчас я не буду проверять, не знаю, сколько там реально доступных устройств на сервере после вычета необходимых, но пусть будет 56. К каждому адаптеру прилегают 4 сундука. Не буду сейчас выкраивать крохи (хотя этим тоже можно будет потом упороться), и буду считать, что в каждом адаптере всегда лежит MFU, связанный с сундуком. Получается 5 устройств на адаптер. 11 узлов в кишке как раз и дают 55 устройств + 1 сундук в конце прилепился прямо к адаптеру. Удачное совпадение.

 

Теперь считаем. Объём конструкции = 5x5x5x11 блоков. Полезный объём 112x11-1 сундуков. Ну, хорошо, даже зарезервируем ещё два сундука: один для входящих, а другой для исходящих ресурсов. Получится 1229 сундуков на 1375 блоков занятого объёма. Эффективность использования пространства: 1229/1375=0.893. MFU занимают в сундуках 1229-56=1173 слота. Ещё 1229 слотов остаются в резерве для сохранения возможности обмена. Сундуки наверняка будут алмазными, т.к. основную стоимость крафта создают MFU. Итого выходит (108x1229-1229-1229+56)/(5x5x5x11) = 94.785 слотов на каждый занятый блок, а потери составляют не более 13% в сравнении с голым алмазным сундуком.

 

Для ванильных сундуков вычисления будут чуть отличаться. Один узел даёт 4 одновременно подключенных двойных (на 54 слота) сундука. Получается 14 узлов по 70 сундуков в каждом. Узел будет чуть шире: 5x5x6. Формула выводится аналогично. У меня получилось ((54-2)x(14x70-4)+14x4)/(5x5x6x14) = 24.194 слота на каждый занятый блок с потерями чуть более 10% от голого ванильного сундука. По занятому объёму это даже более выгодно, чем на сундуках IronChest. Правда, не так выгодно по затратам на MFU.

 

А какова плотность твоей сети хранения на транспозерах?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, eu_tomat сказал:

Получится 1229 сундуков на 1375 блоков занятого объёма. Эффективность использования пространства: 1229/1375=0.893.

а что вы делаете? Что это будет? что за сеть хранения? хранения чего? Что эти сундуки делают?

я в жизни не видел 1229 сундуков:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Alex сказал:

что за сеть хранения? хранения чего?

Скрытый текст

zc03L5n.png

k976aIM.png

CZ0QriE.png

Они пытаются создать что то похожее. Короче аналог МЭ только на ОС. Писал такое когда то, у кого то на сервере такая установка работающая стояла. А рассчеты щас ведут сколько кто сможет захватить сундуков и на чем выгоднее. На адаптере с МФЭ или на куче транспозеров.

Изменено пользователем Asior

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Asior сказал:

Они пытаются создать что то похожее

ааа, понял. А то есть похожее? а на скринах, это не их система?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
26 минут назад, Alex сказал:

ааа, понял. А то есть похожее? а на скринах, это не их система?

На скринах что-то похожее на систему, о которой говорит Doob, он скажет точнее. Моя система вообще существует лишь в фантазиях, да в этих постах. Идея родилась сегодня утром в попытке проиллюстрировать, что можно сотворить, имея лишь один слот в адаптере и ограниченный радиус действия MFU.

1 час назад, Alex сказал:

я в жизни не видел 1229 сундуков

Сами по себе эти циферки смысла не несут. Они важны лишь для сравнения двух систем в предельном случае и в равных условиях.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat 
если не ошибаюсь, но MFU можно привязывать к другому адаптеру. Тем самым делая цепочку из удаленно связанных адаптеров.
Если соединять таким способом, какова тогда плотность?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, Appo сказал:

@eu_tomat 
если не ошибаюсь, но MFU можно привязывать к другому адаптеру. Тем самым делая цепочку из удаленно связанных адаптеров.
Если соединять таким способом, какова тогда плотность?

Ого! Градус безумия растёт. Промежуточные адаптеры можно даже не запитывать энергией. Теперь можно динамически подключать не только отдельные сундуки, но и целые сегменты. При неаккуратном использовании этой возможности процессор крашится, не в силах переварить прорву новых компонентов.

 

Про плотность точно пока не скажу, т.к. мозг ещё не привык к этой новой идее. Первой мыслью в голову приходит сетка 3x3x3, чтобы адаптеры дотягивались друг до друга. Возможно, она не оптимальна. Навскидку потери составляют около 4.5% для алмазных сундуков, для уточнения требуется продумать схему доступа, т.к. при такой сетке появляется возможность дотянуться до одного сундука с разных адаптеров. И тут надо подумать, даст ли эта избыточность какие-либо преимущества, например, в виде повышения пропускной способности сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подключение адаптеров через MFU ничего не даст, в отличии от транспозера он непрозрачный и сундук под ним работать не будет.

И вообще, система на адаптерах работать не будет, потому что для получения функционала контроллера инвентаря, в адаптер надобно вставить сам контроллер инвентаря. А с контроллером инвентаря, у адаптера точно такой функционал, как у транспозера, только еще сундук снизу не открывается.

Вообще не понял, как оно должно работать кубами x5. Для транспозера нужен только сундук и кабель, там все очевидно, хотя я еще не пробовал просчитать самую компактную конструкцию на ванильных сундуках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Doob сказал:

Подключение адаптеров через MFU ничего не даст, в отличии от транспозера он непрозрачный и сундук под ним работать не будет.

Под кем не будет работать сундук? Сундук работает, установленный как под, так и над адаптером. Сквозь адаптер, ясное дело, предмет не передать, и сундуки, стоящие строго между адаптерами являются "застойными" в соответствующих направлениях. Проблему придётся решать более сложной логикой движения предметов внутри системы, и об этом недостатке я упоминал выше.

1 час назад, Doob сказал:

И вообще, система на адаптерах работать не будет, потому что для получения функционала контроллера инвентаря, в адаптер надобно вставить сам контроллер инвентаря.

Да, важное уточнение. Без OpenPeripheral работать не будет. Следует отнести этот факт к недостаткам системы. Но с OpеnPeripheral работает.

1 час назад, Doob сказал:

Вообще не понял, как оно должно работать кубами x5.

Ставим куб 5x5x5 из алмазных сундуков IronChest, сундуки по всем 8 углам куба удаляем, т.к. MFU до них не дотягивается. В центр обрезанного куба ставим адаптер, в прилегающие сундуки кладём MFU, слинкованные с остальными сундуками, к адаптеру цепляем кабель. К кабелю цепляем комп, монитор и прочую обвязку. Для эстетики можем всё это заглубить внутрь массива сундуков.

 

Ванильные сундуки ставятся двойными, получается конструкция 5x5x6.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А, ну тогда понятно. OpenPeripheral есть только на 1.7.10. В современном OpenComputers избавились от повального дублирования функционала, поэтому там можно использовать только те механики, которые логично исходят из их функционала.

С OpenPeripheral я могу АЕшку подключить к сундуку (в новых версиях напрямую к игроку) и не страдать фигней. Но я как-то не видел серверов, где есть OpenPeripheral, поэтому весь функционал стратегически важных программ (и неважных тоже) я реализую на ванильных опенкомпах и всем доволен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
39 минут назад, Doob сказал:

С OpenPeripheral я могу АЕшку подключить к сундуку (в новых версиях напрямую к игроку) и не страдать фигней.

Страдание фигнёй – это осознанный выбор программиста в Майнкрафт. Тут любая задача необязательна.

 

Кстати, ты так и не ответил на вопрос:

12 часа назад, eu_tomat сказал:

А какова плотность твоей сети хранения на транспозерах?

Ну, или покажи, как она выглядит, а я хотя бы приблизительно посчитаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Doob 
Разве нельзя сделать цепочку из адаптеров, но с присоединенными транспозерами? Т.е. без кабелей вообще

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat Плотность надо вычислять полным перебором, при максимальном количестве сундуков на транспозер.

Тестовый полигон выглядит так

Скрытый текст

vvmqxxS.png

Тут плотность в разных частях разная, в центре большая избыточность.

 

@Appo можно, работать будет так же, но такая система немного сложнее в постройке.

Изменено пользователем Alex
Установка спойлера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Doob сказал:

@eu_tomat Плотность надо вычислять полным перебором, при максимальном количестве сундуков на транспозер.

Тестовый полигон выглядит так...

Не могу по рисунку понять всех деталей. Можешь описать алгоритм постройки? Ты же не вручную это строил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, Doob сказал:

Тестовый полигон выглядит так...
...Никакого алгоритма, просто натыкал транспозеров и сундуков

эпическая лепёшка. Выглядит внушительно:D

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...