Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • F FEDOT
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 87
    • Issues 87
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • ITMO-NSS-team
  • FEDOT
  • Issues
  • #91

Closed
Open
Created May 10, 2020 by Rosneft rosneft@rosneft_userDeveloper

Реализовать базовый класс для Chain в рамках композера

Описание предлагаемой реализации:

В FEDOT.Algs мы реализуем именно алгоритмы оптимизации деревьев (символьных, gp, ast - можем как угодно их называть. Соответственно, для удобства нужен интерфейс типа GPTree (в котором есть все нужные методы для работы с узлами).

В ядре остается композеры и его реализации, в частности, GPComposer. Их единственная ответственность - композировать цепочки(copose_chain).

Внутри GPComposer::compose_chain импортируется GPOptimizer. Для того, чтобы его использовать, мы сначала конвертируем Chain в GPTree, и оптимизируем его. Результат конвертируется обратно в Chain. В Jav-е есть идеально подходящая штука для таких вещей - анонимные классы. Т.е. мы могли бы объявить анонимный класс, в котором реализовать методы класса GPTree: add_node, root_node и т.д. (частично делегируя вызовы методов GPTree методам Chain). В питоне, к сожалению, я знаю, как это сделать дешево и по аналогии. Да, при таком подходе ядро явно завязывается на FEDOT.Algs, но, имхо, это нормально, т.к. алгоритмы сами по себе - вещь более абстрактная, чем сборка цепочек из моделей ML. Зато сами алгоритмы оптимизации цепочек теперь можно использовать, совершенно не привязываясь к композеру и т.д.

image

Assignee
Assign to
Time tracking