Giter VIP home page Giter VIP logo

dynsolver's Introduction

DynamicSolver

DynamicSolver is a math system with two general features: modelling dynamic systems and minimizing functions.

Project state

Code

branch AppVeyor
master Build status

dynsolver's People

Contributors

inok avatar

Watchers

 avatar  avatar

dynsolver's Issues

Пропадает график КД

Пропадают линии на графике КД. Причина неясна, видимо, какая-то проблема именно в части рендера.
Необходимо исследование проблемы, и, возможно, замена фреймворка для работы с графиками на новый.

Интерфейс для решения разными методами одновременно

Интерфейс для системы, реализованной в #5

Возможности:

  • Результаты работы разных методов в одном представлении
  • Количество итераций
  • Показ информации об использованой цепочке (настройки, методы), для начала можно всплывашку с JSON
  • Прогресс-бары вычислений

Разработку желательно начинать после создания шаблона в Visio

Реализация графического интерфейса моделирования

Реализовать простой графический интерфейс системы моделирования. На данном этапе важнее показать возможности приложения, сложный интерфейс не требуется.

При возможности (если не займет больше часа-двух) добавить показ графиков.

Оптимизатор выражений

Реализовать оптимизатор выражений.
В рамках данной задачи - только тривиальные оптимизации: предподсчет констант, удаление незначимых членов выражения.

Реализация примитивов линейной алгебры

Реализовать следующие примитивы:

  • точка
  • вектор
  • матрица

Обеспечить следующую функциональность:

  • математические операторы над векторами и матрицами
  • матричные операции: поиск обратной матрицы
  • нормализация векторов

Реализация метода КД

Реализовать полунеявный метод КД.
На интерфейсе показывать два графика (явный Эйлер и КД).

Интерпретатор выражений

Реализовать интерпретатор для выражений. Интерпретированное выражение должно иметь возможность получать аргументы как в виде словаря, так и массивом чисел в определенном порядке.
Во втором случае порядок чисел должен соответствовать порядку имен переменных, отсортированных по имени.

Поддержать следующие функции:

  • sin
  • cos
  • tg
  • ctg
  • lg
  • ln
  • exp

Выбор решателя

Добавить возможность выбирать решатель в интерфейсе. Как для решения системы, так и бэйзлайн для оценки погрешности.

Реализация инфраструктуры и примитивных методов поиска минимума

Реализовать инфраструктуру системы минимизации функций и реализовать примитивные методы.
Заложить в архитектуру возможность построения цепочек методов, контролировать количество шагов. Подумать про контроль промежуточных результатов: не логгирование, а наблюдение в рантайме. Push-модель (желательно Rx) или events (нежелательно).

  • Методы Свенна
  • Простые методы одномерного поиска
  • Методы многомерного поиска
  • Построение цепочек методов
  • Контроль исполнения

Доработать интерфейс

Разделить список методов и настройки экстраполяции.
Уменьшить вертикальный размер панели настроек, оставить больше места для графиков.

Улучшения работы с графиками

Переработать построение графиков, выделить некоторую модель графиков результата и отдельный контрол для их вывода.

Рефакторинг UI

Рефакторинг модулей интерфейса приложения. Переработать использование ReactiveUI, рассмотреть варианты обеспечения более низкой связности элементов интерфейса.

Реализация ядра системы моделирования

Реализовать ядро системы моделирования.

  • Интерфейсы
  • Формат входных данных
  • Проработать архитектуру в отношении расширяемости
  • Реализовать простой метод моделирования для проверки корректности работы системы

Решение задачи разными методами одновременно

Реализовать вычисление минимума разными методами одновременно, с отображением результатов каждого метода и сравнением результатов разных методов.

На данном этапе предполагается хардкод методов и их настроек, но желательно заложить возможности для добавления методов в набор используемых методов, поддерживать разные наборы и т.п.

Графический интерфейс реализуется в другой задаче, здесь необходимо ядро и покрытие тестами для подтверждения работы.

Построение семантической модели

Модуль построения семантической модели. Валидация переменных, формирование метаинформации о входных и выходных данных, валидация всей модели.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.