Написание скрипта для более ускорен обмена данными между двумя прогами
Две программы работают в связке.
1. Первая программа (Flownex) проводит расчет. Результаты расчета (Output) сохраняются в текстовый файл ASCII с названием Output.txt.
2. Вторая программа оптимизатор (modeFRONTIER) считывает переменные изэтого файла ASCII, анализирует их. Наосновании своих внутренних алгоритмов «придумывает» новые Input данные для нового расчета для первой программы Flownex.
3. Дальше вторая программа (modeFRONTIER) сохраняет эти«придуманные» новые Input данные в текстовый файл ASCII с названием Input.txt .
4. Теперь снова первая программа (Flownex) вступает в действие - считывает Input.txt. И проводит расчет.
И так в цикле много тысяч раз.
Проблема. В оптимизаторе (modeFRONTIER) написаны прямые интерфейсысо многими программами. В этом случае расчеты и обмены данными происходят
практически мгновенно.
Но к сожалению для Flownex нет прямого интерфейса. Сам расчет во Flownex (Solver Time) от 5 до 10 миллисекунд (то есть 0,05 – 0,1 секунды).Расчет в modeFRONTIER еще меньше. При универсальномстандартном способе обмена через ASCII файл (без прямогоинтерфейса) идет каждый раз перезапуск, то есть новый старт Flownex. А это пару минут.
Мой коллега (не программист – инженер) написалсам небольшой макрос, и теперь эта связка работает без перезапуска Flownex. Время расчета сократилось с 2 минут до 30-40секунд. Но это все равно очень много.
Мы увидели следующее:
1. Сам расчет во Flownex (Solver Time) от 5 до 10 миллисекунд (то есть 0,05 – 0,1 секунды).Это я писал выше.
2. Практически мгновенно эти результатыпоявляются в окошке Flownex. Эти результаты сразудоступны. Можно выделить их мышкой, а также Ctrl+C и Ctrl+V. То есть можно сразу работать с этими данными.
3. Дальше Flownex начинает чтото сканировать. Показывать количество итераций. Можетпоказывать предупреждения или просто информацию.
4. В общем затягивает время. И пока modeFRONTIER считает Output.txt пройде 30 секунд.
Нужно написать макрос, чтобы ждал окончаниярасчета Flownex (5-10 милисекунд), считывалбы результаты расчета и также быстро бы передавал эти данные в modeFRONTIER. Какие образом? Как быстрее– или тоже через ASCII файл или напрямую черезоболочку modeFRONTIER или может быть можноорганизовать, как-то непрерывными «потоками».
Языки программирования:
Во Flownex можно программироватьпомощью: CSharp (C#) и Python.
В modeFRONTIER можно программировать спомощью Java
Или же альтернатива внешнее программирование:«Быстрые языки» типа С++, может что-то типа Assembler или в этом направлении.
( сами программы modeFRONTIER Flownex достать не сложно. Как этовсе конкретно взаимодействует и туториал я предоставлю и покажу).