Найти тему

'Сшивка'. Замороженный геном

Т-1000 в жидком азоте из к/ф «Терминатор 2»
Т-1000 в жидком азоте из к/ф «Терминатор 2»

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

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

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

Плюс ко всему на текущий момент могут быть банальные ограничения в тех или иных ресурсах (изменился Функциональный Базис).

Поэтому в 'Сшивке' имеется функция "заморозки схемы". Неизменяемая часть загружается из отдельного файла. Затем проводится поиск решения, учитывая, что некоторые функции и связи между ними нельзя менять даже если существует более оптимальные решения.

Схемы схемами, а система "в железе" имеет более высокую ценность.

Как это выглядит на практике?

Из файла "schem.lst" (или из того, что задается в командной строке) загружается список соединений. Его формат можно узнать в репозитории. Проводится сопоставление функций по их параметрам, а так же по названию, используя расстояние Левенштейна (можно делать очепятки). Далее проводится поиск решения.

Ниже схема, в которой левая функция имеет price=100, хотя есть её функциональные аналоги с price=2 и price=20. "Заморозка" хромосом, поискового гена не дает их изменять алгоритму.

"Замороженная" полностью схема. Не меняется даже при высокой "стоимости" функции
"Замороженная" полностью схема. Не меняется даже при высокой "стоимости" функции

Если из "schem.lst" убрать связи любых блоков (в данном случае левого), то 'сшивка' найдет им достойную замену с price=2.

"Замороженная" частично схема. Функция меняется на оптимальную
"Замороженная" частично схема. Функция меняется на оптимальную

Если в строке только одна пара скобок [ФункцияЗаморожена], то именно функция я с таким именем, а не ее параметры (соединения), считается "замороженной" и используется в схеме в любом случае.

Так же можно в файлах базиса db*.txt к имени функции добавить {з}, тогда она так же считается "замороженной" и используется в схеме в любом случае.

Обратите внимание! "Замороженные" функции и их параметры становятся частью целевой функции (ЦФ), поэтому 'Сшивка' при автопроектировании ориентируется на них равно как и на параметры функции Target.

Ознакомится с деталями проекта и попробовать его в деле можно в репозитории.