Подтвердить что ты не робот

Вы когда-нибудь получали программное решение от природы?

Когда вы отступаете и смотрите...

  • природа животных, насекомых, растений и проблемы, которые они органично решили.
  • возможно, даже природа и равновесие Вселенной

Вы когда-нибудь могли решить проблему, получив подход от природы?

Я слышал о Ant Алгоритмы колоний, которые могут оптимизировать цепочку поставок среди других вещей. Кроме того, Fractal является "геометрией природы" применительно к широкому кругу проблем.

Теперь, когда spring снова здесь, и мир возвращается к жизни, мне интересно, есть ли у кого-нибудь опыт, который они могут поделиться.

Спасибо

PS Я бы рекомендовал посмотреть "" Охота на скрытое измерение "" Нова-эпизод на фракталах".

4b9b3361

Ответ 1

Я помню, как читал математическую книгу о математике, и он упомянул пример от природы. Его пример с натуры помог мне улучшить дизайн, над которым я работал.

Его пример был таким: он ехал, и он увидел птиц на телефонном проводе. Птицы располагались равномерно. Это произошло не потому, что была какая-то птица, которая все говорила, где сидеть. Скорее, каждая птица имела в себе определенный "алгоритм" для решения, что делать, когда пришла другая птица. Птицы предпочитают максимизировать свое свободное пространство, я думаю.

Это помогло мне в такой момент, когда я был довольно знаком с OO. Я продолжал делать что-то процедурным и иметь централизованный интеллект в "божественных объектах". Я прочитал это и понял, что отдельные объекты могут сосредоточиться только на вещах, которые им нужно знать и заботиться, и все же результат на большом уровне изображения все равно может быть тем, что вы хотите. То, что правильный результат может "появиться", не будучи "контролируемым".

Ответ 2

Я лично никогда не решал проблему, применяя идеи от природы. Однако я решил проблемы, применяя решения других людей, вдохновленные природой.

Многие алгоритмы компоновки графов и алгоритмы компоновки в целом основаны на механизме (пружины, резиновые ленты, гравитация) или простое поведение, подобное насекомым (следуйте за лидером, максимизируйте/минимизируйте расстояние).

И, конечно, мне нравится объектно-ориентированное программирование, которое было разработано Nygaard и Dahl для моделирования физических объектов реального мира, и был усовершенствован Аланом Кей, микробиологом, который смоделировал OO явно после того, как простые клетки могут образуют сложные организмы, способные к сложному поведению. Итак, в некотором смысле, каждый, кто делает OO, косвенно получает свою программу от природы.

Ответ 3

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

Я хотел улучшить этот алгоритм, и, как немного туристов, я нашел себя в озере, глядя на панораму, нарезая пальцы моими холмами и долинами (к большому смущению моей второй половины). Мне также известно, что он встречает тех же пешеходов с такими вопросами, как "где заканчивается этот холм и следующий?" Почему? И почему вы не посчитали этот холм? "

Я пока не зашел так далеко, чтобы вытащить свой ноутбук со мной.:)

Ответ 4

Каким бы ни было понятие в природе, где мы можем сделать математическую модель (дифференциальное уравнение), мы можем применить их к программированию, поскольку последние основаны на логике и математической основе, более чем на других.

Я думаю, что мы тоже можем думать об этом, например, в шаблоне наблюдателей, существует множество видов, которые также реализуют этот шаблон, цепочку ответственности и т.д.

Его интересный способ думать...

Хороший приятель!

Ответ 5

Мы создали программный код "ошибка"... один раз...

Ответ 6

Очень часто.

Я иногда отправлялся на прогулку в форрест, размышляя о проблеме. И чаще всего решения, с которыми я сталкиваюсь, имеют какое-то отношение к деревьям.

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

Я также однажды услышал интересный разговор о SOA, верьте или нет. Центральная идея разговора заключалась в том, что различные подсистемы в архитектуре SOA должны взаимодействовать в виде ячеек в биологической системе. Субъект был очень хорошо осведомлен о том, как сложная система может действительно работать, даже если она построена из слабо связанных компонентов.

Ответ 8

Мое музыкальное программное обеспечение (см. мой профиль) использует эволюционный процесс для создания музыки, что несколько похоже на "Слепой часовщик" Ричарда Докинса (который создавал образы вместо музыки).

Ответ 9

Отдел CS в моем старом университете имел исторический интерес к алгоритмам, вдохновленным природой с семидесятых (я думаю, что правильный академический термин Естественное вычисление Так как я вступил в контакт с некоторыми из этих алгоритмов, особенно Стратегии эволюции, широко известные нейронные сети и экзотические искусство Мембранные вычисления. Я также занимался классом по интеллектуальному анализу данных, где мы изучили некоторые алгоритмы, позволяющие компьютерной системе учиться из набора данных.

Я бы сказал, что всякий алгоритм, который делает компьютер "learn" , попадает в категорию, полученную от природы. Поэтому даже довольно простые альгосы, такие как наивные байесов, попадают в эту категорию, и мы, вероятно, все так или иначе используем их, например. для фильтрации спам-сообщений.

Лично я только реализовал такие алгоритмы в университетских классах или в своих личных экспериментах по программированию. Я думаю, что их обычно учили, что они мощные, хотя во многих случаях менее эффективны, чем "классические" детерминированные алгоритмы. Поэтому всегда должен быть выбран детерминированный алгоритм - если есть проблема, решающая проблему! Только когда проблема слишком сложна для решения с использованием детерминированных алгоритмов, естественное вычисление может предложить лучшее решение. Из моего личного опыта это действительно так. Один маленький пример: стратегия эволюции, которую я реализовал для решения головоломок Sudoku, заняла у меня полдня, чтобы реализовать ее и проработала несколько часов, чтобы найти то же самое решение, что и классический алгоритм возврата назад в течение секунды (мне потребовалось меньше тридцати минут для написания; -))

Я просто помню, что студент-студент использовал эволюционные стратегии для решения проблемы оптимального распределения набора файлов на несколько DVD-дисков для архивирования, что, я думаю, является применением проблемы с рюкзаком или проблемой упаковки бутылок, и это работал неплохо. По-видимому, для этого также можно использовать алгоритмы колонии ant. В любом случае, спасибо за этот интересный вопрос.

Ответ 10

Я еще не решил проблему, но я думаю, что окончательное решение для репутации, "кармы" или любых вариантов нахождения консенсуса среди группы людей заключается в работе Мейнарда Смита, описанной в "Эволюции" и "Теории игр". В частности, он разрабатывает концепцию Эволюционно стабильной стратегии (ESS), которая является моделью поведения, которая устойчива к внешним плохим актерам.

Если предположить, что все альтруисты, то все просто. То, что Мейнард Смит называет стратегией "Голубь", всегда откладывает на других, является эффективной стратегией в том смысле, что никто не тратит время на борьбу. Но это не ESS, потому что его могут вторгаться извне эгоистичными актерами. Это будет аналогично сайту, у которого есть только обороты. Это потерпит неудачу, потому что любой может проголосовать за что-то наверху.

Более сложные системы, такие как Qaru и Slashdot, в первую очередь поощряют upvotes, но позволяют использовать downvotes. Они более надежны против людей, которые не "сотрудничают", но они все еще уязвимы для "игр". В обоих случаях легко быстро запустить репутацию, став первым, опубликовать что-то смешное, а не полезное, и подобные действия.

Ответ 11

Я использовал Генетические алгоритмы, основанный на эволюционной биологии для обнаружения ошибок в интегральных схемах с очень большой шкалой

Следующие ссылки дадут вам общее объяснение генетического алгоритма и библиотеки С++ Генетического алгоритма.

Введение в Генетические алгоритмы

Библиотека библиотек генетических алгоритмов С++

Ответ 12

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

Ответ 13

Одна вещь, которую я хорошо понял из закона природы сохранения энергии, "Общее количество ошибок в продукте постоянное. никогда не фиксируется. Он просто превращается в другую ошибку"!!: -)

Анекдоты разные, я очень благодарен за использование таких языков, как С++, в моей работе, где понятия (например, наследование, друг) происходят из социальной системы.

Ответ 14

Чрезвычайно простая концепция "обработки исключений" - это самое мощное и прямолинейное приложение природы в любом программном обеспечении.

Любой живой организм делает свой уровень лучше, чтобы адаптироваться к изменяющимся обстоятельствам вокруг него, и продвигать в жизни достижение своей цели выживания. Множество исключительных обстоятельств происходит между ними, чтобы удержать его от цели, но организмы изо всех сил стараются найти оптимальный способ справиться с этой задачей. Наша повседневная жизнь полна таких переживаний.

Обработка исключений также помогает любому программному обеспечению работать для достижения своей цели в обход любых возникающих трудностей.

Но одна вещь, которая отсутствует в программном обеспечении, - это то, чего я действительно хочу. Это происходит следующим образом:

Люди продолжают учиться на своих ошибках, сохраняя все, с чем они сталкиваются в своих головах, а в следующий раз, когда возникает такая проблема, они знают, как избежать/решить ее. Но в первый раз, когда это происходит, они знают, чтобы избежать этого из своих нормальных привычек (обработка исключения с использованием общего базового класса Exception), но после этого они узнают, что есть специализированный способ его обработки (специализированный класс исключений, такой как FileDoesNotExistException). Они не ходят в ремонтную мастерскую, чтобы обновляться, хотя они советуют друзьям. Надеюсь, вы, люди, получаете суть того, что я пытаюсь сказать.

Программное обеспечение также должно продолжать учиться, не показывая своим пользователям сообщение "Сайт под обновлением" и обрабатывая неизвестные проблемы, используя простой класс исключений. Но новые версии опубликованы, но я хочу, чтобы мы разработали все время работы и самообучающееся программное обеспечение, которое обновляет себя, не сбиваясь с ума.

Ответ 15

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

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