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

Микроконтроль ядерных реакторов IC2exp

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

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

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

 

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


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

тик апдейта жестко прибит к тику включения.

Что ты называешь тиком включения? Тик, на котором произошла установка реактора в мир? Тик, на который был подан редстоун-сигнал? Тик закладки первого компонента в реактор? Основные вопросы: когда реактор вообще начинает тикать? И может ли он перестать тикать не будучи демонтированным?

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


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

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

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

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


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

Зайду с другой стороны. Вот, ты пишешь:

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

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

Что ты имеешь в виду?

Не вижу смысла выравнивать, оно и так само по себе выровнено?

Не вижу смысла выравнивать, выравнивание невозможно и полностью зависит от случайностей?

Или что ещё ты подразумеваешь этой фразой?

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


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

Я устанавливаю реактор, знаю в какой тик из 20 он будет работать, со следующим аналогично.

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

 

Вообще, могу и 20 реакторов завернуть в кольцо и сжигать МОХ за 9 минут, но после рестарта придется все начинать заново. К тому же это не очень надежно (игра исправит любой сбой таймингов во время работы, но не во время запуска) и смущает нагрузка на сервер, которую я не могу адекватно посчитать.

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


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

Где-то я перестал тебя понимать:

1 минуту назад, Doob сказал:

Я устанавливаю реактор, знаю в какой тик из 20 он будет работать, со следующим аналогично.

Ну, так я же сразу спросил:

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

Ты выравнивал фазовые сдвиги тиков реакторов в кольце? Или полагался на случай?

А ты ответил "чего их выравнивать".

 

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

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

сжигать топливо в 6 раз быстрее

 

Теперь у меня новый вопрос: ты проверял, как инициализирутся фазы реакторных тиков после перезагрузки сервера? Они все имеют одинаковую фазу внутри одного чанка? Или там царит рандом?

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


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

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

 

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

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


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

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

Почему же невозможно?

Вот, например, правдоподобная хронология установки реакторов: 115.75, 118.30, 120.60, 126.15 секунд. Если предположить, что инициализация  циклов реактора происходит на том же тике, то в результате такой хронологии во время игровой секунды сначала будет отработан такт четвёртого реактора, затем второго, потом третьего, а за ним первого.

 

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

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


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

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

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

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


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

Тут еще надо разобраться как считать. У реакторов, для теплового и энергетического баланса, подходит алгоритм решения задачи на взвешивание.

 

Берем параметры тепловыделения.

 

Кол-во соседей:    |  0  |   1   |   2   |   3   |   4   |

Кол-во стержней         Выделение тепла

             1                |  4  |  12  |  24  |  40  | 60   |
             2                | 24 |  48  |  80  | 120 | 168 |
             4                | 96 | 160 | 240 | 336 | 448 |

 

Для самой эффективной сборки, придется задействовать отражатели.

Берем температуру, которую хотим получить, делим без остатка на максимально возможную температуру.

10000 // 448 = 22

Получается, надо установить 22 счетверенных стержня, с полным переотражением нейтронов.

Затем, берем остаток 10000 - ( 448 * 22 ) = 144

Самое близкое - 120, т. е. сдвоенный стержень с тремя соседями.

Отнимаем, берем остаток. 144 - 120 = 24

По табличке это одиночный стержень с двумя соседями.

 

Итого, 22 счетверенных, 1 двойной, 1 одиночный, 17 отражателей по периметру, закрывающих счетверенные стержни.

Плюс 1 одиночный и вентилятор на -5 тепла, что в сумме дает -1

Получаем 9999 тепла в секунду.

erp=C51pU0VBeaadQHbSd2GEnexptw7t2Uh9ghEHVD+NQuzZ2sNYgiMnA/XS+q2UJSwB

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


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

Тут еще надо разобраться как считать. У реакторов, для теплового и энергетического баланса, подходит алгоритм решения задачи на взвешивание.

Да, хорошая иллюстрация одного из способов оптимизации.

 

Поделюсь ещё одной интересной задачкой для ядерных экстремалов:

Какова температура корпуса реактора у первой и второй схемы, и почему?

STrjXR0.png

 

Сразу скажу, что температура отличается, хотя тепловой баланс схемы, казалось бы, одинаков: поступает 4 hu/s на корпус, и снимается с корпуса максимум 5 hu/s. В приведённых двух схемах, как и в большинстве других, это различие не оказывает решающего влияния на работу реактора, и это позволяет забыть о проблеме. Но для моего реактора, который должен был нагреться ровно до 9999 градусов, это различие оказалось фатальным.

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


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

Да, хорошая иллюстрация одного из способов оптимизации.

 

Поделюсь ещё одной интересной задачкой для ядерных экстремалов:

Какова температура корпуса реактора у первой и второй схемы, и почему?

STrjXR0.png

 

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

 

P.S ну как далёк, я один раз почти полностью рабочий планировщик написал.

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


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

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

 

P.S ну как далёк, я один раз почти полностью рабочий планировщик написал.

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

 

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

 

Во второй схеме сначала обсчитывается ТВЭЛ, он отдаёт на корпус 4 hu, а теплоотвод затем забирает их и рассеивает. Стабильная температура корпуса имеет нулевое значение. Здесь на промежуточной стадии корпус также имеет 4 единицы тепла, но по завершении тика тепла в корпусе нет.

 

А если ТВЭЛ'ы все вместе выдают 10004 hu/s, а теплоотвод забирает 5 hu/s, то при неудачном расположении теплоотвода реактор превысит критическую температуру на первом же тике.

 

Вывод: зеркальные копии схем не всегда равноценны оригиналам.

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


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

Вывод: зеркальные копии схем не всегда равноценны оригиналам.

Налицо нарушение P-симметрии

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


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

Любимая многими ядерщикам схема на 420 eu/t способна работать исключительно в условиях асимметрии.

OHxSaHS.png

Даже поняв основные принципы построения реакторных схем, и научившись самостоятельно проектировать реакторные схемы под свои специфические нужды, именно эту схему я долгое время не мог понять. Охлаждение шести сборок у меня не вызывало вопросов. Но охлаждение седьмой сборки (в схеме она расположена в верхнем левом углу) мне казалось какой-то магией. Улучшить эту схему вряд ли возможно. Она в некотором смысле совершенна.

 

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

 

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

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


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

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

 

В первую очередь я хотел автоматизировать изъятие теплоотвода. С этим проблем не возникло. Достаточно было лишь развернуть схему так, чтобы теплоотвод вынимался воронкой первым. Затем надо было вспомнить, что в этом случае теплоотвод начинает работать лишь на втором реакторном тике. Эта часть успешно работает.

 

Но обнаружилась другая проблема. Каменная кнопка должна выдавать сигнал длительностью 1 секунду. На практике оказалось, что 18-19 тиков. Изредка случаются и значительно меньшие значения. Бывало, что кнопка отжималась через 1 тик. Но чаще всего интервал между нажатием и отжатием составлял 18-19 тиков. Замеры проводились с помощью робота, нажимающего кнопку, и компьютера, фиксирующего изменения сигнала красного камня.

 

Подозревая, что проблема в кнопке, я дал задачу роботу аккуратно генерировать импульсы длительностью 19 тиков с помощью красной платы. Но регистрирующий компьютер получал 18-19 тиков. Меньшие интервалы не были зафиксированы. Компьютер выполнял роль кнопки заметно лучше самой кнопки.

 

Но разброс между 18 и 19 тиками всё равно оказался критичным. При 19 тиках сигнала красного камня реактор иногда успевает сделать два реакторных тика. А при 18, бывает, не делает даже одного. Джиттер в тиках красного камня и джиттер в тиках реактора делают схемы без обратной связи непредсказуемыми. Пока что я  я реализовал схему на повторителях, которая выдаёт сигнал длительностью 17-18 тиков независимо от глюков кнопки. Это хотя бы позволяет избежать перегрева реактора.

 

Предварительные выводы таковы:  без обратной связи с реактором (OpenComputers, NuclearControl) сделать схему, гарантированно нагревающую реактор за одну секунду до 9999 hu, невозможно. Лучший результат, которого мне удалось добиться: выложить схему в реакторе, нажать на кнопку, проверить температуру. Если нагрев не выполнен, вернуть из воронки в реактор вытянутые компоненты и нажать ещё раз.

 

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

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


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

Но я ведь делал, повторить могу в любое время, при хорошем пинге.

 

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

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


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

Но я ведь делал, повторить могу в любое время, при хорошем пинге.

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

 

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

 

Как сформировать импульс, гарантированно включающий реактор на один такт? Без NuclearControl и OpenComputers.

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


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

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

А почему не говоришь, что для охлаждения схемы требуется 2.667 дополнительных реакторов для охлаждения? Получится уже 2208 eu/t на реактор. И то, эффективно использовать дополнительные реакторы получится лишь при количествах, кратных 11 штукам: 3 генерирующих и 8 охлаждающих.

 

При этом в рамках одного реактора существует сбалансированная схема на 2099 eu/t, что чуть менее эффективно, на 5% меньше в пересчёте на реактор, но зато не требуется согласования работы одиннадцати реакторов друг с другом.

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


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

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

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


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

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

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

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

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

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

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

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

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


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