Как разбить задачу лин. программирования на две?
Есть данные по заводу, нужно уменьшить сложность вычислений
И софт какой
> Как разбить задачу лин. программирования на две?
В общем случае - никак. Нужно знать подробности.
> Есть данные по заводу, нужно уменьшить сложность вычислений.
Каким методом они выполняются сейчас? Одно дело, если там симплекс-метод, его обогнать по асимптотике несложно. Другое дело, если там уже полиномиальный алгоритм.
> И софт какой.
Такое впечатление, что ты сюда один в один скопировал постановку задачи, которую тебе дали с целью, чтобы ты всё выяснил, а ты ничего выяснять не стал. Беда в том, что мы не в курсе ни твоего завода, ни твоих данных, ни твоего нынешнего алгоритма. Можешь вникнуть в матчасть и искать алгоритм или его реализацию с открытыми глазами, зная, что делаешь: https://ru.wikipedia.org/wiki/Линейное_программирование
А можешь дальше бомбить Интернет мутными вопросами в надежде, что кто-то наугад выдаст тебе волшебную пилюлю. Но я думаю, в этом случае мало шансов её найти до увольнения. Всё-таки, это не задача из школьной олимпиады, которую можно нагуглить по ключевым словам.
Линейная программа настолько прекрасно написана, что встала проблема сложности вычислений? Я как-то слабо себе это представляю в современном мире, наваять столько линейного кода - это просто выше человеческих сил.
Так что либо у тебя там код не линейный, либо ты не знаешь, что такое сложность вычислений, либо мы говорим о PLC, который не успевает в realtime. В последнем случае можно сделать следующее:
Поставить более мощный процессор. PLC бывают модульными.
Поставить несколько процессоров и разделить задачу между ними. Могут понадобиться дополнительные коммуникации между процессорами. Программу придется переписать чуть менее чем полностью.
Поискать в коде явные циклы и переписать эти места таким образом, чтобы циклы выполнялись как часть глобального цикла.
Добавить в код интерлоки, если это возможно.
>И софт какой
У каждого производителя PLC свой софт.