Версия 4-4 1) Совмещены неявный и явный решатели в одной ветке кода 2) Графический интерфейс - пока только для процедуры подбора параметров Версия 4 1) Улучшено разбинение на классы 2) Дообавлен кластерный анализ: метод главных компонент (на основе данных массивногомассивный анализа чувствительности), расчет коэффициентов корреляции для многоотликового эксперимента (с нелинейной относительно параметров моделью), ранжирование параметров ортогональным методом и методом корреляций. Расчет локальных доверительных интервалов на основе матрицы Якоби (метод Бонферони), глобальных доверитительных интервалов (точных, многостартовым поиском). 3) Новые алгоритмы термодинамической непротиворечивости. Версия 3-N 1) cstrsolver без Cantera, все решается внутри mech_optimiz, используется, так же как и в Cantera, SSA Newton integration of surface coverages over dt until convergence (SSA, own solver, no Cantera) Then explicit step for gas species 2) для простой кинетики (3 р-ции асдорбции) - расчет аналоичен 3-expl,impl !!! 3) для NO+CO/Pt не работает. Версия 3_2_noSSA 1) Интегрируется во времени в каждом реакторе одновременно (!!!) как поверхностная кинетика, так и конвективный перенос газа. Не дало сколь-нибудь рабочих результатов для NO+CO/Pt. Версия 3_2 1) cstrsolver без Cantera, все решается внутри mech_optimiz, используется, так же как и в Cantera, SSA Explicit integration of surface coverages over dt until convergence - relaxation method (рус. - метод установления) (SSA, own solver, no Cantera) Then explicit step for gas species 2) для простой кинетики (3 р-ции асдорбции) - расчет аналоичен 3-expl,impl !!! 3) для NO+CO/Pt не работает. Версия 3_RK 1) Метод РК-4 для интегрирования течения газа внутри каскада РИС. (!!!) Указано НЕ решать этим решателем, поскольку из-за использования коэффициента релаксации (который необходим при использования Cantera) он дает неверные результаты. Версия 3-expl,impl 1) Добавлена возможность использования bulk 2) Анализ чувствительности и степеней контроля скорости для первого реактора (дифференциальный) cstrsolver дополнен анализом для каждого реактора, а также интегральным анализом на основе итоговой конверсии. 3) Анализ степеней контрол яза селективностью аналогично п.2 (по методике Stegelmann, Andreasen). 4) RPA = reaction path analysis для первого реактора (используется встроенный функционал Cantera с генерацией графиков для dot). Версия 3-expl Решение осуществляется без подбора текущей концентрации в каждом РИС, реакционный член вычисляется на основе входных концентраций единократно для РИС. Версия 3-impl 1) Добавлен класс "пул хромосом", теперь не каждая хромосома хранит кучу информации (например, массив QSharedPointer'ов на DataPoint), а только пул, к которому она принадлежит 2) Добавлен базовый решатель "каскад решателей идеального смешения" cstrsolver. Кинетика на поверхности решается в Cantera. Решение осуществляется подбором текущей концентрации в каждом РИС последовательно от начала до конца каскада. При этом, подбор осуществляется с коэффициентом релаксации, поскольку реакционный член может быть очень велик, что приведет к отрицательным концентрациям и вылету интегратора cvode, используемого Cantera. 3) Добавлена установка генов непосредственно в механизм (стало очень удобно генерировать механизмы в файлах). Это используется в cstrsolver, в fsolver по-прежнему используется считывание кинетических параметров из report'a report.sum case-файла. 4) Добавлена возможность генерации cti-файлов. 5) Анализ чувствительности и степеней контроля скорости для первого реактора cstrsolver Версия 2.1 - 1) Добавлена возможность подбирать порозность по экспериментальным данным (сделано для статьи Зейгарник по пористости насыпного каталитического слоя и ВПЯМ) 2) Добавлена возможность проводить оптимизацию функции Растригина ак тестовую задачу работы ГА 3) Добавлено считывание термодинамический характеристик веществ из термодинамических файлов или механизма 4) В файле настроек, как и в сохраненных итерациях, можно хранить/задавать параметры ГА 5) Убрано sigemptyset(&sig_act.sa_mask) - поскольку при работе программы она иногда внезапно стопорилась, подозревалось это место; 6) Энергия активации в файле настроек можеть быть задана в Дж/кмоль или кДж/моль 7) Добавлена возможность подбора A, b, E (THERMOCONAE) с помощью ГА таких, чтобы они удовлетворяли подобранным термодинамическим функциям 8) Используется не только однородный кроссовер, но и многоточечный и одноточечный (по 20% вероятности применения обоих последние) Версия 2.01-thermo_qd_real - расчет термодинамической совместности на базе МНК (алгоритм Deutschmann) 17 августа 2013. Четверная точность выполнения операций. Версия 2.01 1) Гены теперь хранятся непосредственно как уровни! 2) Убрана генерация случайных генов для всех особей, кроме первой выбранной, в случае, если после 25 попыток не выпала иная особь на скрещивание (выпадала только одна особь). 3) Появилась возможность вкл/выкл отладочные сообщения через #define FDEBUG Версия 1.22 (corr_version) - консольная. С термодинамической совместностью (на основе ГА, как и в 1.20) вышла 5 августа 2013 Добавлено sigemptyset(&sig_act.sa_mask) - поскольку при компибяции говорилось о том, что параметр не задан; Версия 1.21c Консольная версия с классами + анализ параметрической чувствительности с графическим выводом + чтение-запись механизмов в формате Chemkin + проверка термодинамической совместности + 1) Исправлен оператор инверсии в chromosome::breed для учета различной длины генов. 2) Другие мелкие исправления. Версия 1.21 1) Устранены неправильные удаления памяти после QSharedPointer (savestream в chromosome.cpp:94) и инициализирована sigact sa_mask в sigemptyset. 2) Другие мелкие исправления. Версия 1.20c - консольная 1) Удалены все GUI классы и вызовы, утечек памяти 0/0/0/n n- still reachable из-за неправильной реализации QTextStream в Qt4 (4.7.4, 4.8.1) - нет освобождения памяти для QMutex. Версия 1.20 Thermodynamic consistency without memory big leaks Ключевая, поворотная версия в истории развития mech_optimiz 1) Внедрена структура классов с хранением веществ и их свойств в классе substBase. 2) Каждый решатель выделен в собственный класс, наследуемый от asolver. 3) В классе tsolver релизована проверка термодинамической совместности. 4) Исправлена неверная конвертация единиц измерения. Считывание и запись кинетических механизмов в формате CHEMKIN-II. 5) Исправлена ошибка с утечкой памяти (был закомментирован виртуальный деструктор базового класса). 6) Добавление различных операторов кроссинговера (пока выбор только в коде) Версия 1.CLASSES-2 22.07.2013 Рабочая - выделение классов. Версия 1.CLASSES-1 17.07.2013 - выделение некоторых классов. Выделены класс механизм mech и параметры для его переноса MechTransferParam, также аррениусовские параметры, COVERAGE и STICK умеют считываться из файла формата CHEMKIN-II и храниться в классе reaction, механизм может быть записан в файл. Неверная конвертация единиц измерения. Версия 1.19 от 08.07.2013 Недостатки (= что можно улучшить): +++РЕШЕНО (1.20) 1) Не проработана структура классов (ГА плохо отделен), как следствие любое дополнение в функциональности занимает много времени. Требуется отделение решателей в отдельный класс. +++РЕШЕНО (1.20) 2) Нет сохранения Chemkin-механизма на каждой итерации (в т.ч. - не работает MechTransferParam::ReadMechFromCase для этого случая из-за отсутствия парсинга coverages и порядков, для случая параметрической чувствительности работает). +++РЕШЕНО (1.20) 3) Отсутствие реализации проверки термодинамической совместности механизмов. 4) PThreads-статическая планировка. Лучше - динамическая планировка с worker'ами, т.к. все расчеты хромосом можно считать параллельно. 5) Число PThreads в системе ограничено (стандартно на поток резервируется 8 мб памяти, это число можно уменьшить, если ты столько не хранишь, конечно). +++ЧАСТИЧНО РЕШЕНО (1.21) 6) Отсутствие различных операторов ГА - кроссинговера и т.п. и их сравнения. 7) Отсутствие многократных запусков / параллельных запусков ГА (островной ГА, метод дифференциальных эволюций...) для обеспечения попадания в глобальный экстремум с большей вероятностью на многоэкстремальных задачах. 8) OpenFOAM-решатель на базе CatalyticFOAM (Politechnico di Milano - Cuoci, Maestri) Значимость (важность) проработки пунктов - 3,1,2,8,4,7,5,6. Для снятия пункта 3 крайне желательно разрешение пункта 1. Январь 2013 1) Анализ параметрической чувствительности кинетических механизмов 2) Графический вывод - построение графиков чувствительности в gnuplot Октябрь-ноябрь 2012 1) Выделение графического интерфейса в отдельный поток 2) Отдельная консольная версия Версия от 11.09.2012 23:00:53 4 июля - 11 сентября - написание программы, отладка 1) Отрисовка приспособленности популяции в gnuplot