Цитата Сообщение от anthrwpos Посмотреть сообщение
Затем я настроил их параметры на наилучшее прохождение переходных процессов и получил следующую картину.
temp3.png
Можете пояснить что нарисовано на этих графиках?
По оси x, очевидно, время. А что по оси Y?

О каком воздействии на систему речь?

Цитата Сообщение от anthrwpos Посмотреть сообщение
Кто владеет java - можете поразвлекаться тоже а заодно проверить, что я не жульничаю)
Добавили бы unit-test'ы. Было бы проще на всё это смотреть.

Например, сдаётся мне, что ваш "волшебный" регулятор может выдать управляющий сигнал "больше 100%" (или меньше 0) (см https://github.com/anthrwpos1/RegTes...g.java#L48-L50 -- возвращается значение pRaw, которое, очевидно, может выходить за границы), и модель подчинится такому управлению и заставит нагреватель сгенерировать больше тепла (или вообще батарею превратит в кондиционер).

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

Как у вас работает датчик -- непонятно (я про dSense0/dSense1). Почему не идёте по своей концепции и не делаете в духе "теплопроводность датчика", "теплоёмкость датчика"?


PS. На "new PhysReg(50, 200, 300, 0.1, 20, 40, 300);" без боли смотреть невозможно. Что означают все эти цифры?
Тут нужно либо на Kotlin'е писать (там есть именованые параметры), либо в духе new PhysReg().setTimeStep(0.1).set... , либо ещё как. Но на 50, 200, 300 смотреть невозможно, и, очевидно, тут какое-то жульничество, которое даже проверять не хочется.