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

Reactor IC2 + OpenComputers (Версия 1.6.3)

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

  • Описание: Требуется программа для автоматической замены лазуритовых конденсаторов.
  • Оборудование: Моды: IC2, OpenComputers (Версия 1.6.3), Applied Energistics 2.
  • Требования к ПО: Есть схема реактора на 19к Eu/t и она требует постоянной замены лазуритовых конденсаторов. Нужно сделать так, чтобы они заменялись автоматически на новые.
  • Связь: Discord: Sasiso4kaS#2263

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


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

Есть схема реактора на 19к Eu/t и она требует постоянной замены лазуритовых конденсаторов. Нужно сделать так, чтобы они заменялись автоматически на новые.

Понимаю, что реакторных схем с выходом энергии не менее 19 k eu/t не так много. Тем не менее, важно конкретизировать требуемую схему.

 

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

 

Для конкретных же схем составить оптимальный план замены конденсаторов заметно проще.

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


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

А не жахнет? Ну в смысле достаточно ли быстродействия ОС чтобы заменять кондеры,чтобы не было пустого слота в момент тика когда генерируется тепло?

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


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

А не жахнет? Ну в смысле достаточно ли быстродействия ОС чтобы заменять кондеры,чтобы не было пустого слота в момент тика когда генерируется тепло?

Может и жахнет, там где они играют тпс выше 3-6 не поднимается поэтому вероятность взрыва сохраняется всегда. Это надо выкручивать замену на 85% и то не всегда помогает.

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

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


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

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

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

 

30 минут назад, Asior сказал:

там где они играют тпс выше 3-6 не поднимается поэтому вероятность взрыва сохраняется всегда

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

 

Аккуратная работа:

  • Загрузили реактор топливом и конденсаторами
  • Вычислили время ближайшей замены конденсаторов, уменьшив его на половину реакторного тика.
  • Подали сигнал красной платой, находящейся в управляющем компьютере.
  • Выждали нужное количество реакторных тиков в os.sleep и убрали красный сигнал.
  • Заменили уже непригодные конденсаторы. Их даже проверять не надо, они вычислены ещё до пуска реактора.
  • Вычислили время ближайшей замены следующей партии конденсаторов и т.д. по кругу.

Так как время работы реактора уменьшено на половину реакторного тика, конденсаторы могут чуть не догореть до своего предела. Эту недоработку тоже можно исправить, но это вопрос отдельной тема с большим количеством текста и практических исследований. Если кратко: надо поддерживать синхронизацию компьютера с реакторными тиками, минимально нагружая сервер. Это трудно сделать, учитывая, что синхронизация регулярно теряется, а точно восстанавливать её на сервере с низким TPS бывает проблематично. А в это время надо не только синхронизацию поддерживать, но и параллельно выполнять замену компонентов реактора, что нелинейно усложняет алгоритм.

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


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

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

Openperipheral в помощ. Он и на старой версии имеет метод getAllStacks. Я думаю он там есть. Просто автор не указал. Ибо сервер из старой ОС и малым ТПС это только мцскил. 

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

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

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


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

Openperipheral в помощ. Он и на старой версии имеет метод getAllStacks

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

 

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

2 компа могут почти одновременно забирать и возвращать целый конценсатор в реактор. Сложность только их вместе заставить работать

Для меня эта "сложность" выглядит непреодолимым препятствием.

 

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

 

Как ты предлагаешь решать эту "сложность" хотя бы в теории?

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


Ссылка на сообщение
Поделиться на других сайтах
В 19.08.2021 в 11:27, whiskas сказал:

2 компа могут почти одновременно забирать и возвращать целый конценсатор в реактор. Сложность только их вместе заставить работать

Да поставить чтобы один пропихивал кондеры перманентно.:smile14: 

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

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

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


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

Да поставить чтобы один пропихивал кондеры перманентно.:smile14: 

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

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

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

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

 

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

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

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

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


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

Во-первых, это лагодром

Ну понятно дело,это же шутка была,даже смайлик поставил.

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

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

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

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

Да и в большинстве случаев лаг не аккумулируется.

Я говорил про накопление результатов рассинхрона - как если есть два часовых механизма,но один спешит на 0.00001сек\час. В случае с реактором,если бы замена производилась без остановки по таймеру - таймер бы постепенно дрейфовал относительно циклов реактора.Но т.к. реактор останавливается,этот дрейф сбрасывается,только кондеры в реакторе после каждого цикла с рассинхроном могут убывать в прочности,естественно если не чинить их с излишком,а пытаться максимально эффективно расходовать лазурит.

Само собой проблему непредсказуемых лагов это не решает.

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


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

Я говорил про накопление результатов рассинхрона - как если есть два часовых механизма,но один спешит на 0.00001сек\час.

Это рассуждение применимо только по отношению к дрейфу тиков Майнкрафта относительно времени сервера. Такты же времени OpenComputers относительно тактов реактора не дрейфуют. По крайней мере, я такого поведения никогда не наблюдал, и предпосылок для него не вижу. Зато регулярно можно наблюдать внезапные задержки отдельных операций, не требующих дополнительной синхронизации. И значительно реже требуется вычисление новой задержки, которая будет актуальна до следующего сбоя синхронизации.

 

Что такое рассинхрон? Это непредсказуемое изменение величины лага. Потому что если лаг постоянный, его можно учесть в управлении реактором. По сути именно учёт лага в планировании действий и позволяет сделать управление синхронным. А неучтённое изменение лага ведёт к сбою синхронизации.

 

50 минут назад, Disc2 сказал:

бывают баги когда сигналы редстоуна на реакторе зависают

Что значит "зависают"? Реактор становится невосприимчивым к отключению сигнала редстоуна? Как долго сохраняется зависание? В какой схеме? Что является источником сигнала?

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


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

 

5 часов назад, eu_tomat сказал:

Что значит "зависают"? Реактор становится невосприимчивым к отключению сигнала редстоуна? Как долго сохраняется зависание? В какой схеме? Что является источником сигнала?

Да это могли быть плагины или моды какие-то,которые так портачили(а могли быть и не они). Это не сильно важно,я просто к слову вспомнил.

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

 

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

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

 

 

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


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

Эх послушав ваши рассуждения. Я понял, что сделать по факту можно, но работать будет очень нестабильно. Спасибо, что помогли и объяснили )

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


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

но работать будет очень нестабильно

Можна просто при заменне офать реактор. И тогда все работать будет

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


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

Эх послушав ваши рассуждения. Я понял, что сделать по факту можно, но работать будет очень нестабильно.

Я бы сказал иначе: не очень стабильно. Огромная разница.

 

По факту сделать можно. Я даже предложил простой вариант более-менее стабильного алгоритма в этом посте:

В 18.08.2021 в 23:14, eu_tomat сказал:

Аккуратная работа:

  • Загрузили реактор топливом и конденсаторами
  • Вычислили время ближайшей замены конденсаторов, уменьшив его на половину реакторного тика.
  • Подали сигнал красной платой, находящейся в управляющем компьютере.
  • Выждали нужное количество реакторных тиков в os.sleep и убрали красный сигнал.
  • Заменили уже непригодные конденсаторы. Их даже проверять не надо, они вычислены ещё до пуска реактора.
  • Вычислили время ближайшей замены следующей партии конденсаторов и т.д. по кругу.

 

Также возможно более-менее стабильное обслуживание реактора без его останова даже на перегруженном сервере и даже на OpenComputers версии 1.6.3. Но стабильность этого решения сильно зависит от предсказуемости сервера. Всегда существует лаг такого размера, который окажется фатальным для того или иного алгоритма.

 

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

 

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

 

 

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


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

Переписал прогу под OpenPeripheral, теперь при наличии мода работает и на старом OpenComputers

https://computercraft.ru/topic/2604-programma-ochen-mnogo-elektrichestva/?do=findComment&comment=38154

 

@Sasiso4kaS твоя предложенная схема не эффективная, рекомендую использовать эту

SXbeOu8.png

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 27.08.2021 в 21:44, serafim сказал:

Переписал прогу под OpenPeripheral, теперь при наличии мода работает и на старом OpenComputers

https://computercraft.ru/topic/2604-programma-ochen-mnogo-elektrichestva/?do=findComment&comment=38154

Извиняюсь,там на гифке кондеры чинятся целым блоком лазурита - на каких-то версиях\сборках IC2 нельзя чинить лазуритом поштучно? И в таком случае также нет и впрыскивателя реакторного хладагента?

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

 

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


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

на 1.7.10 чинятся блоком лазурита, если крафт не изменён

на 1.12.2 чинятся поштучно

робот для автокрафта конденсаторов умеет чинить и так и так

 

5 минут назад, Disc2 сказал:

также нет и впрыскивателя реакторного хладагента?

без понятия, ссылку или скрин в студию

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


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

на 1.7.10 чинятся блоком лазурита, если крафт не изменён

на 1.12.2 чинятся поштучно

робот для автокрафта конденсаторов умеет чинить и так и так

 

без понятия, ссылку или скрин в студию

Спасибо за разъяснение.

 

https://wiki.industrial-craft.net/index.php?title=Reactor_Coolant_Injector

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


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

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

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

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

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

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

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

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

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


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