Только сегодня наткнулся на подобный совет о быстром удалении сообщений из Amazon SQS:
Просто установите `Message Retention period` (как долго сообщения должны храниться в очереди) равным 1 минуте.
Статья на oDesk — это ответ Stephane Kasriel (а вместе с этим и официальная позиция компании Elance-oDesk) на ультиматум Reddit своим сотрудникам. В своей записи в Twitter Stephane приводит пример, что Elance-oDesk имеет распределенную команду, PhD для машинного обучения из Греции, iOS разработчиков из Египта и все идет отлично.
@yishan@dhh We have PhDs in CS with machine learning background in Greece. And great iOS developers in Egypt. And we make it work.— Stephane Kasriel (@skasriel) 2 октября 2014
Да, это 37signals. В своем ответе на Quora CEO Yishan Wong упоминает их и говорит:
There are many organizations that do this [использование распределенной командой] effectively (37signals is a great example that I've personally long admired), and we studied them and adopted their methods and tools.
Есть много организаций которые используют распределенную команду эффективно (37signals отличный пример, которым я давно восхищаюсь), и мы изучали и адаптировали их методы и инструменты.
После прочтения подобных статей становиться страшно. Сегодня АНБ просматривает почту — завтра они будут в автоматическом режиме распознавать, что ты делаешь и куда смотришь. А послезавтра, будут «угадывать», что ты решил сделать, и принимать соответствующие меры.
кодирование битами вещественных параметров (float/double) вообще неприемлемо — эффект от мутаций да и от кроссовера будет слишком непредсказуемым/нестабильным.
очень ценное замечание. спасибо.
Хотя в принципе и любой float можно закодировать, использую код Грея. Или это будет очень ресурсоемко?
Потому что бинарными генами можно представить любые данные. Генетическому алгоритму все равно, что значат эти 0 и 1. Это важно только для фитнесс функции.
Например: первые три бита — число, следущие (14*8) бит представляют собой строку из 14 символов, и в конце еще 2 бита, которые трактуются как 2 boolean'а.
В моей реализации фитнесс функции. Каждые 8 бит составляют число, таким образом в одном лонге хранится 8 чисел.
Дифференциа́льная эволю́ция — метод многомерной математической оптимизации, относящийся к классу стохастических алгоритмов оптимизации и использующий некоторые идеи генетических алгоритмов.
Я так понял диффернциальныя эволюция это немного другой алгоритм, хотя и очень похожий на ГА.
Я использую вариант проще: есть вероятность мутации, если random.nextDouble() > процентМутации, то один бит инвертируется.
Не могли бы вы подробно описать свой вариант? Или кинуть линку на описание?
Биты в гене храняться в таком виде (в данном случае для простоты считаю, что кол-во бит, отведенных под long, равно 8):
Если нам нужно получить доступ к 15 биту, то outerOffset будет указывать в каком long'е хранится бит, а innerOffset в какой позиции в long'e стоит этот бит.
int index = 15;
outerOffset = index / LENGTH_OF_LONG; // == 15/8 == 1
innerOffset = index % LENGTH_OF_LONG - 1; // == 15 % 8 - 1 == 7 - 1 == 6 (!)нумерация начинается с 0
А бинарные сдвиги и && заменяют целочисленное деление и взятие остатка от деления, так как выполняются быстрее.
Да, без использования мутации невозможно 100% получить все возможные комбинации. Но «private boolean useMutation;» — не сильно влияет на производительность, и если вдруг нам захочется НЕ использовать мутацию, то это будет легко сделать, установив нужный флаг в false.
Круто! Я уже несколько лет жду что-то подобное. А есть в планах поддержка котлина?
Просто установите `Message Retention period` (как долго сообщения должны храниться в очереди) равным 1 минуте.
stackoverflow.com/questions/7713626/best-way-to-delete-messages-from-sqs-during-development
А у автора как раз и используется title тег перед метой.
очень ценное замечание. спасибо.
Хотя в принципе и любой float можно закодировать, использую код Грея. Или это будет очень ресурсоемко?
Например: первые три бита — число, следущие (14*8) бит представляют собой строку из 14 символов, и в конце еще 2 бита, которые трактуются как 2 boolean'а.
В моей реализации фитнесс функции. Каждые 8 бит составляют число, таким образом в одном лонге хранится 8 чисел.
Я так понял диффернциальныя эволюция это немного другой алгоритм, хотя и очень похожий на ГА.
Не могли бы вы подробно описать свой вариант? Или кинуть линку на описание?
Если нам нужно получить доступ к 15 биту, то outerOffset будет указывать в каком long'е хранится бит, а innerOffset в какой позиции в long'e стоит этот бит.
А бинарные сдвиги и && заменяют целочисленное деление и взятие остатка от деления, так как выполняются быстрее.