Giter Club home page Giter Club logo

jevo's People

Contributors

mekhovov avatar rkxtd1 avatar tmptrash avatar ttohin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jevo's Issues

Add support of distributed servers/managers

Поддержка нескольких инстансов/процессов. Они должны общаться между собой с помощью Client/Server модулей в "быстром" режиме.

Organisms killing optimization

  • попробовать создавать сразу все организмы и хранить их в массиве вместе с тасками (OrganismTask тип). При удалении просто помечать их, как удаленные и хранить индексы освободившихся в отдельном стеке.
  • словарь ManagerData.organisms заменить на массив организмов. Их id - это индекс.
  • Сделать _killOrganism() с удалением таски внутри (splice!()). После этого istaskdone() проверки уже не будут нужны. Еще нужно будет поменять главный цикл по организмам в _updateOrganisms() на обратный. Как в _updateOrganismsEnergy() чтобы удаление работало. Еще нужно останавливать таск организма после вызова _killOrganism() где это нужно. Например в _onGrab(). (этот пункт еще актуален?)

Manager and Config modules optimization

Перестать использовать глобальный Manager.xxx. Передавать его как параметр в функции. То же самое с Config._data. Нужно передавать его первым параметром.

Find my old notes (photo) with ideas

Смотри фотку с свойствами орг-ма. Это фотография идей, записанных на песке в Тайланде :). Нужно найти её и внести забытые пункты сюда.

Low probability of some atomic code elements

Почему я не вижу скажем команду getEnergy() в коде организмов? Это случайность или там что-то поломалось?

Closures and anonymous functions optimization

Проверить что тормозит - замыкание либо анонимные фу-ии. Если второе, то нужно глянуть на FastAnonymous пакет. Вроде, как в v0.5 анонимные функции - быстрые.

Smooth organisms moving

Добавить produce() в метод _onDot(), чтобы движение организмов было плавное. Зависит от фикса баги: #15017. При включении этой фичи появляется проблема неправильного подсчета ips, так как код всех организмов не выполняется за один раз полностью.

Organisms personal counters for mutations, energy decrease, etc...

У каждого организма должен быть собственный counter на основе которого делаются мутации, уменьшение энергии, клонирование и т.д. Это поспособствует более плавному распределению в выполнении их кода. Сейчас все "тяжелые" операции, такие как мутации или удаление "самых слабых" производятся сразу для всех организмов. В этот момент вся система "подвисает".

Sex and crossover before baby borning

Добавить рекомбинацию генов и половое размножение одновременно со случайными мутациями (как?!) Меняться функциями.

Add organisms time analog

Ввести абсолютное количество итераций, которое будет заменять организмам время. Так же ввести совокупное время, которое прошло с момента запуска популяции. Еще, должно быть время и ips с момента последней смерти популяции. Всего будет 4 параметра.

Add charts for analitycs

Добавить графики реального времени об изменении разных параметров: енергии, размера кода, частоте мутаций, всех параметров Organism типа, количество поломок (exceptions), общее кол-во энергии популяции

  • общее кол-во энергии в популяции (min,max,cur)
  • общая адаптация (мутации*енергию)
  • общее кол-во мутаций
  • общая вероятность добавл/изм/удал мутаций
  • сколько определенных кодовых конструкций сейчас в популяции (смотри CodePart тип)
  • отчего умирают организмы: старость, съедение, уменьшение энергии, альструизм
  • количество неудавшихся мутаций
  • Пройтись по всем свойствам организма и системы

Disable mutations issue

Сделать невозможным отключение всех мутаций. Как минимум одни мутации (при рождении или периодические) должны быть включены. Иначе все организмы просто вымрут. Так уже было :)

while true inside Organism.born() function

Добавить while(true) внутри Task() функции, чтобы организмы могли "помнить" свое состояние. Под вопросом.

Add "termFollowOrganism" remote command

Добавить команду termFollow(orgId, color). Она будет переключаться между менеджерами и "следить" за одним организмом. Возможно нужно будет временно менять его цвет или как-то выделять среди других.

Wrong total population amount calculation

ManagerData.totalOrganisms не сбрасывается при вымирании всей популяции. Нужно добавить еще одно свойство, которое будет показывать количество организмов с момента рождения популяции.

Anonymous functions optimization

Глянуть на FastAnonymous пакет. Нужно внедрить его в анонимные функции организмов. Как вариант, можно попробовать измерять скорость в julia v0.5.0

Add "termStop" remote command

  • Добавить остановку сервера с консоли. При остановке процесс должен вернуть 0.
  • Так же, добавить реконнект клиентов к серверу, если он перезагрузился

yield() call optimization

Если нет активных соединений нужно не вызывать yield() в главном цикле. Она забирает очень много ресурсов. Как вариант, можно проверять если ли на одном из сокетов данные, если нет, то не вызывать yield(). Если есть, вызывать. Но этот подход нужно проверить. Возможно он не так быстр, как мне кажется...

Organisms coloring modes

Сделать два режима раскраски организмов: по родству и по кол-ву энергии. По родству на данный момент уже реализовано.

Organisms code access for other organisms

Подумать про доступ к коду организма другими организмами, но только находясь рядом. Под вопросом.

Smart system parameters

Подумать о динамическом изменении параметров системы, если она не эволюционирует (если совокупное кол-во энергии у организмов не увеличивается или уменьшается). Например, можно увеличить число мутаций или изменить вероятностные коэфициенты.

Add unit tests

Написать тесты (функ. юнит) для всех модулей. В первую очередь: Mutator, Code

Add small-change mutation

Добавить smallchange мутацию. Смотри Mutator._onSmallChange(). Думаю универсального способа сделать не выйдет. Лучше делать для каждого метода свой личный small mutator. Он будет знать формат выражения и добавить мутации без ошибок.

Backup file extension

Добавить сохранение конфигурации в бэкап. Сейчас конфигурация берется из модуля Config в том виде, в котором она есть при запуске. То есть, можно менять её между запусками программы.

Add copy mutation

Добавить функцию мутирования: 'копирование' помимо add/change/del...

ProfileView.jl and ips based optimization

  • Оптимизация с помощью ProfileView.
  • Нужно протестировать приложение на статических организмах. Не должен вызываться eval(). Так будет реально видно что в организмах или системе тормозит. Сейчас eval() скрывает эту информацию.
  • Еще, можно тестировать скорость по ips, отключая разные ее части и смотреть на сколько быстрее стало.
  • Так же попробовать тестировать с уже сохраненными и сложными организмами в бакап файле чтобы понять сколько занимают коды организмов, а сколько сама система

Minimize errors during mutation

Минимизировать ошибки: удаление переменных/фу-ий, которые используются, замена объявления переменной на ее вызов,...

Comments and project documentation

Переписать комменты на julia docile. Нужно разобраться где это может использоваться. Может нам нужна обычная документация?

Partial code compilation

Сделать частичную компиляцию кода. Например можно компилировать отдельные смутировавшие функции, а не весь код.

Optimization of probability array

В _updateOrganisms() нужно создавать массив probs один раз и просто заполнять его. Так же, нужно указывать его длину и передавать её как параметр в getProbIndex()

counter variable issue

counter переменная в _updateOrganisms() не должна быть равна нулю. После maxtype() присваивать 1. Это может вызвать ошибку деления.

Add different world object types (stones, holes,...)

Добавить разные типы объектов мира: стены, ямы, подумать что еще. Возможно какие-то динамические штуки вроде дня и ночи, холода и жары, двигающейся энергии и т.д.

Expand atomic organism code elements

Расширить атомарные элементы кода организмов на основе которых герерируются мутации. Сейчас список поддерживаемых команд очень короткий. Смотри тип CODE_PARTS в модуле Code.
Идеи:

  • функции eatXXX() должны возвращать количество съеденной энергии
  • функции stepXXX() должны возвращать статус (Bool) получилось ли стать в то место

Y axis flip

Продумать систему координат. В двух местах я все переварачиваю: в массиве и в opengl визуализаторе.

Possible streaming mode waiting issue

Строка "if Manager._cons.streamInit::Bool return counter end" должна быть в начале цикла. Просто сделай это...

Total optimization

Оптимизация: fn(a, ...), types, маленькие фу-ии по типу аргументов, одинаковый return функций, "$(...)" -> string("..", ".."). Нигде не должны создаваться массивы. Нужно создавать их раз в начале и просто переприсваивать элементы. Cмотри эту статью для деталей

Organisms speaking

Добавить примитивы для общения: say(var::Int8), listen(pos)::Int8. say() должен ложить число в свой локальный буфер. listen() забирать из этого буфера. При забирании число остается в буфере. Буфер должен быть цикличным.

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.