inok / dynsolver Goto Github PK
View Code? Open in Web Editor NEWDynamicSolver
DynamicSolver
Разработать семантическую модель, упростить ее построение
Реализовать простой графический интерфейс системы моделирования. На данном этапе важнее показать возможности приложения, сложный интерфейс не требуется.
При возможности (если не займет больше часа-двух) добавить показ графиков.
Добавить исполняемые выражения на основе Expression
Рефакторинг модулей интерфейса приложения. Переработать использование ReactiveUI, рассмотреть варианты обеспечения более низкой связности элементов интерфейса.
Реализовать полунеявный метод КД.
На интерфейсе показывать два графика (явный Эйлер и КД).
Реализовать неявный метод Эйлера, затем сделать из него экстраполяционный
Реализовать инфраструктуру системы минимизации функций и реализовать примитивные методы.
Заложить в архитектуру возможность построения цепочек методов, контролировать количество шагов. Подумать про контроль промежуточных результатов: не логгирование, а наблюдение в рантайме. Push-модель (желательно Rx) или events (нежелательно).
Явная и неявная версия метода средней точки
Реализовать оптимизатор выражений.
В рамках данной задачи - только тривиальные оптимизации: предподсчет констант, удаление незначимых членов выражения.
Убрать минимизацию из программы, поскольку этот модуль больше не нужен.
Добавить возможность выбирать решатель в интерфейсе. Как для решения системы, так и бэйзлайн для оценки погрешности.
Реализовать генетический алгоритм минимизации. Не требуется конфигурируемость, можно представить примитивную рабочую реализацию.
Построение отчета для выбранных решателей, экспорт отчета
В выражении такого вида (a - (b - c)) теряются внутренние скобки, в результате выражение становится неправильным: (a - b - c)
Замерять и выводить время работы метода для возможности сравнения
Реализовать метод Дормана-Принса для возможности сравнения с ним результатов других методов
Разделить список методов и настройки экстраполяции.
Уменьшить вертикальный размер панели настроек, оставить больше места для графиков.
Реализовать генетичекий алгоритм минимизации функций
Убрать посторонние зависимости, вынести ядро в nuget-пакет
Пропадают линии на графике КД. Причина неясна, видимо, какая-то проблема именно в части рендера.
Необходимо исследование проблемы, и, возможно, замена фреймворка для работы с графиками на новый.
Реализация экстраполяционного метода на базе метода Эйлера
Убрать устаревший код и реорганизовать проекты.
При вводе первым символом цифры происходит падение программы
Реализовать следующие примитивы:
Обеспечить следующую функциональность:
Реализовать алгоритм, заменяющий алгоритм Ньютона для решателя КД-методом.
Реализовать символьный вывод формул Xn+1 (линейный метод Ньютона)
Модуль построения семантической модели. Валидация переменных, формирование метаинформации о входных и выходных данных, валидация всей модели.
Интерфейс для системы, реализованной в #5
Возможности:
Разработку желательно начинать после создания шаблона в Visio
Сделать рефакторинг парсера, добавить явную токенизацию.
Реализовать интерпретатор для выражений. Интерпретированное выражение должно иметь возможность получать аргументы как в виде словаря, так и массивом чисел в определенном порядке.
Во втором случае порядок чисел должен соответствовать порядку имен переменных, отсортированных по имени.
Поддержать следующие функции:
Реализовать ядро системы моделирования.
Реализовать символьный поиск производных (т.е. по выражению 2_x^4 получать дерево выражения 2_4*x^3
Переработать построение графиков, выделить некоторую модель графиков результата и отдельный контрол для их вывода.
Реализовать экстраполяционный метод на базе метода КД.
Реализовать вычисление минимума разными методами одновременно, с отображением результатов каждого метода и сравнением результатов разных методов.
На данном этапе предполагается хардкод методов и их настроек, но желательно заложить возможности для добавления методов в набор используемых методов, поддерживать разные наборы и т.п.
Графический интерфейс реализуется в другой задаче, здесь необходимо ядро и покрытие тестами для подтверждения работы.
Реализовать метод Нелдера-Мида
EMP, EulerCromer, IEuler, LIEuler, LIMP
Создать примитивный интерфейс системы минимизации:
Реализовать метод Розенброка
Реализовать стратегию выполнения шага, поддержать внедрение стратегии шага в решатели.
Сделать модуль преобразования синтаксической модели в семантическую. Проработать вопрос перевода переменных.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.