Перейти к содержимому
  • 0
Teen_Romance

Замена конденсаторов в реакторе

Вопрос

Решил я тут попробовать написать программу для авто замены лазуритовых конденсаторов в реакторе. Выходит пока что не очень. Пока конденсаторы меняются, реактор успевает нагреться на 600 единиц. Я пролистал тему про "Очень много электричества" тут на форуме и не нашел ничего значительного. Я пробовал просто с транспозером в один сундук выкладывать конденсаторы, а из второго брать. Собственно вопрос: есть ли возможность менять их, не выключая реактор? Может какие то методы быстрее других? Может методы транспозера медленнее работает, чем например методы сундука для трансфера вещей или еще какие то тонкости есть? Или это вовсе невозможно?

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


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

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

10 минут назад, Teen_Romance сказал:

Конденсаторы ломаются от 0 до 10000, где 10000 это уже сломанный конденсатор и он пропадает. 1000 указана для теста, чтобы долго не ждать.

Я так понимаю, ты неосознанно намекаешь на многопоточность, но к сожалению нормальной многопоточности, в прямом понимании этого термина в OC вроде как нет.

Почему неосознанно? Второй компьютер позволит превозмочь ограничения ОС? Т.е. две отдельные системы из контроллера и транспозера, которые мониторят каждая свою половину.

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


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

Т.е. две отдельные системы из контроллера и транспозера, которые мониторят каждая свою половину.

В этом нет никакого смысла, исходя из информации, предоставленной @eu_tomat, если во время замены конденсаторов, происходит реакторный тик, то нагрев все равно произойдет

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


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

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

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

image.pngimage.png

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

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


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

два стержня убрать

Одного хватит в любой схеме. Пофиг что он используется на 1/1000 за ту секунду что будет около 1 стержня

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


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

Блин. Два лучших ответа тут нельзя выбрать)

3 минуты назад, whiskas сказал:

И в конце замены можеш стержень назад возвращать)

Еще и стержень можно вернуть. Звучит отлично. Пока что самый оптимальный вариант. Вечером попробую провернуть

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


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

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

18 часов назад, Teen_Romance сказал:

В этом нет никакого смысла, исходя из информации, предоставленной @eu_tomat, если во время замены конденсаторов, происходит реакторный тик, то нагрев все равно произойдет

В этом нет смысла потому, что эту задачу можно решать постепенно, а не одним большим куском. Но если очень хочется пойти экстенсивным путём, то можно и второй компьютер подцепить. У меня есть положительный опыт разгрузки алмазного сундука на 108 слотов за три такта (тика). То есть,  теоретически ничто не мешает полностью пересобрать реакторную схему между реакторными тактами. Практически же схема является более требовательной к вычислительным мощностям и устойчиво работает только при отсутствии лагов. Да и сама она на слабом сервере становится лагодромом. Но на тестовом сервере результаты впечатляют.

 

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

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

Второй способ вынимать стержни урана (моха) которые охлаждает данный конденсатор. В этом случае отключение реактора будет точечное и не сильно будет влиять на общую прыбыль. 

Интересное компромиссное решение. Хорошо, что останавливается лишь часть реактора. Но плохо, что увеличивается количество операций. Это является критичным на лагающих серверах.

 

Можешь объяснить в каких случаях такой способ замены предпочтительнее полного останова реактора?

 

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

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


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

Можешь объяснить в каких случаях такой способ замены предпочтительнее полного останова реактора?

 

Чесно говоря я не хочу сейчас считать сколько оно выиграет. Но уверен что намного быстрее будет работать ибо конденсаторы и так нужно менять в различное время (они ломаются все поразному). И проблема полной остановки в том что ты офаеш фул реактор что б заменить 1 тепловод. Количество инцедентов этот способ не увеличит (или увеличит не на много). Но 1 инцедент вместо 4х операций будет делать около 6-8

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

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


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

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

Я и пытаюсь понять, на чём основана твоя уверенность. Да, конденсаторы меняем в разное время. Причём, намеренно в разное, чтобы повысить шанс вписаться в размер такта реактора.

 

Работать быстрее будет лишь в одном случае, и то ценой снижения мощности реактора:

  • Для замены одного конденсатора с использованием отключения реактора требуется 4 операции.
  • При использовании свободного слота требуется выполнить всего 3 операции. Но заплатить за это придётся снижением мощности реактора.
  • Поэтому слот освобождаем лишь по необходимости, но тогда для замены одного конденсатора потребуется уже 5 операций.
  • Если извлекать смежные с к конденсатором ТВЭЛ'ы, то возникают варианты. Если ТВЭЛ всего один, то требуются 4 операции. Но, как правило, ТВЭЛ'ов больше одного. Если их 2, потребуется уже 6 операций, а если их 4, то операций требуется 10.

Для ненагруженного сервера такое увеличение нагрузки не критично, но там и защита от лагов не требуется. Редкие микролаги не сильно мешают. Зато на перегруженном сервере каждая дополнительная операция в серии увеличивает шанс не закончить её в отведённое время.

 

Что мы имеем в итоге:

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

Каждый из этих способов имеет свои недостатки, и у меня нет уверенности в абсолютном преимуществе одного из них.

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


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

Для ненагруженного сервера такое увеличение нагрузки не критично, но там и защита от лагов не требуется. Редкие микролаги не сильно мешают. Зато на перегруженном сервере каждая дополнительная операция в серии увеличивает шанс не закончить её в отведённое время.

А при чем тут перегруженость сервера? Если ТПС сервера 10 тогда и реактор работает в 2 раза медленее и комп также.

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

Хай будет N количество стержней.

Выходит если заменять с отключением тогда ты теряеш енергию с всего реактора (R) на протяжение 4 тиков = 4R

А если менять с освобождением 1 клетки от стержня получается 5 тиков (забрать, поставить новый теплово, поменять местами, забрать поломаный, поставить назад стержень). И мы теряем на протяжение замены всего 1/N * 5R. Что в много раз меньше чем предедущий вариант.

А если менять с освобожением от всех стержней задействуваных тогда +- (точно считать не хочу) (буду считать что нужно 3 стержня убрать. 8 тиков. 

И мы теряем 3/N * 5R (даж немного меньше ибо на 1 тике ток 1 стрежня нету, на втором ток 2х, на третем всех 3х)

 

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


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

А при чем тут перегруженость сервера? Если ТПС сервера 10 тогда и реактор работает в 2 раза медленее и комп также.

Это не совсем так. Да, компьютер регистрирует ровно те такты, которые действуют для всего Майнкрафта. В этом расхождений нет независимо от величины TPS. Но OpenComputers исполняет пользовательский код в потоке с низким приоритетом. Поэтому на перегруженном сервере компьютер, ожидая получить ответ от периферии в следующем такте, может получить результат, например, через 5 тактов. В этом случае возможно выполнить лишь 4 операции за один реакторный такт. Для качественной оценки можно пользоваться правилом: чем ниже TPS на сервере, тем чаще и продолжительнее случаются лаги компьютеров относительно игровых процессов. Для количественной же оценки требуются дополнительные исследования, как минимум.

 

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

 

Я рассмотрю вариант с отключением всего реактора. Предположим, от начала первой операции, отключающей реактор, и до конца последней, включающей операции проходит 4 такта. Если все операции выполнены вовремя, то фактически реактор находится выключенным 3 такта. Если мы выполняем эту серию операций, не синхронизируясь на границу реакторного такта, то с шансом 3/20 есть возможность потерять мощность, вырабатываемую реактором за реакторный такт. Или за 20 майнкрафтовских тактов. Если мы используем схему автора темы, то она требует примерно одну замену конденсатора каждые 10 секунд. Соответственно, ожидаемые потери мощности = 1/10 * 3/20 = 1.5%. На перегруженном сервере за счёт увеличения длительности операций потери увеличатся.

 

Если же начало серии операций выравнивать на границу реакторного такта, то шанс пропустить его равен шансу того, что вся серия выполнится более чем за 20 тактов. Например, для серии из 4 операций в среднем по 5 тактов на отдельную операцию. Существует ли простой способ вычислить этот шанс в общем случае, я пока не знаю. Но его можно вычислить экспериментально на конкретном сервере и в конкретное время. И если сервер лагает не на столько, что отдельная операция выполняется более чем за 5 тактов, то реактор вообще не снижает свою мощность при его временном отключении. Даже когда операция длится ровно 5 тактов, ожидаемые потери всё ещё нулевые. На практике же длительность операций отклоняется от среднего значения, поэтому шанс потери мощности всё-таки не нулевой.

 

Но сейчас для простоты рассуждений предположим, что отдельная операция выполняется ровно за 5 тактов, что позволяет успешно работать варианту с отключением реактора без снижения мощности. И если мы вдруг вдруг решили гасить не весь реактор, а отдельный ТВЭЛ, то в этом случае серия операций потребует уже не 20 тактов, а 25, что гарантированно приводит к потере мощности одного изъятого ТВЭЛ'а и его соседей. В примере схемы автора темы это 1/10 * 100/3840 = 0.26%. Потери небольшие, но они имеются. Плюс ко всему создаётся дополнительная нагрузка на сервер. На первый взгляд, вариант не впечатляет в сравнении с предыдущим.

 

Но всё может поменяться, если средняя длительность отдельной операции составит 6 тактов. В этом случае синхронизация никак не поможет защититься от потери мощности. Потери варианта с полным отключением реактора будут составлять 10%. Зато потери варианта с заменой одного ТВЭЛ составят стабильные 0.26%. Правда, в этом случае план должен учитывать, что замена должна выполняться не чаще одного раза в два реакторных такта. Или в зависимости от возможностей сервера ещё реже.

 

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

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


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

Как на счет запилить репродуцируемый эксперимент, чтобы обсуждение поконкретнее было?
Создается мир с фиксированными версиями IC2 и OC, строиться модель, проводятся замеры.

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


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

Создается мир с фиксированными версиями IC2 и OC, строиться модель, проводятся замеры.

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

Хотя могу ошибатся и ктото всетаки захочет сделать такое.

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

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


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

Как на счет запилить репродуцируемый эксперимент, чтобы обсуждение поконкретнее было?

Говоря о конкретике, конкретизируй. Ты сам хочешь запилить эксперимент, или просишь других его запилить?

И если просишь других, то конкретизируй, какая именно конкретика тебя интересует. Какую гипотезу хочешь подтвердить или опровергнуть?

 

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


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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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


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