Ameisenalgorithmus – Schwarmintelligenz in Matlab

Hab für die Uni ein kleines objektorientiertes Skript in Matlab geschrieben welches sich um den Ameisenalgorithmus handelt.

Was ist der Ameisenalgorithmus?

Dieser simuliert mehrere Ameisen und deren Fähigkeit zur bildung einer kollektiven Intelligenz. Das nennt man Schwarmverhalten. Dieses Verhalten kann man auf Probleme des Menschen anwenden. Zum Beispiel in der Transportlogistik. (siehe auch Travelling Salesman Problem). Wie kann man möglichst viele Städte bzw. Ziele mit der geringsten Route abfahren? Die Lösung für diese Frage steigt mit jedem zusätzlichen Ziel stark an. Darum gibt es heuristische Verfahren wie den Ameisenalgorithmus.

Wie denkt eine Ameise?

Eigentlich ist ein einzelnes Individuum nicht sehr intelligent. Es geht in zufällige Richtungen bis es Futter findet. Dabei schüttet es einen Stoff aus der als Pheromon bezeichnet wird. Findet die Ameise dann Futter, so kehrt sie zum Nest zurück. Dadurch hinterlässt sie eine Pheromonspur welcher wiederum andere Ameisen folgen. Es bildet sich nach der Zeit ein Ameisenpfad aus und die Ameisen haben eine gute Route gemeinsam gefunden.

Hier noch das Video. Der Code wurde objektorientiert in Matlab geschrieben

Flattr this

Semantische Netze – Die Bedeutung von Wörtern

Als erstes muss man verstehen was Semantik bedeuted. Semantik ist griechisch und bedeuted „bezeichnen“. Es steht für die Bedeutung hinter einem Wort. Diese Bedeutung kann man verküpfen mit anderen Bedetuungen. z.B. das Wort Baum kann man mit Blatt oder Stamm verbinden weil ein Baum aus eben diesen Teilen besteht. Somit kann man sich eine Mindmap aufbauen die mit einem Graph darstellbar ist. Solche Graphen verwendet man bei der Sprachanalyse in Übersetzungsprogrammen um den Sinn hinter dem Satz gleich zu lassen, und den Satz besser zu übersetzen, denn eine 1 zu 1 Übersetzung der Worte geht sehr schnell schief.

Klassisches Beispiel: „Your english is not the yellow from the egg“ von „Dein Englisch ist nicht das gelbe vom Ei.“ Im Englischen macht dieser Satz somit null Sinn 😀 Vielmehr muss man die Bedeutung hinter dem Satz verstehen um es richtig übersetzen zu können. Bei solchen Sprichwörtern ist das natürlich besonders schwer, da es sich um ganze Sätze und nicht nur um einzelne Worte handelt.

Ich will aber nur zeigen wie es mit einzelnen Wörtern ist. Im folgenden habe ich ein sehr einfaches Modell eines solchen semantischen Netzwerks aufgezeichnet:

semantischesNetz

Ich werde in Zukunft vielleicht eine solche Graphstruktur mit einigen Einträgen in einer Datenbank abbilden  und dann ein paar coole Sachen damit testen. (In der Zwischenzeit evtl. auch interessant: Baumstruktur in Datenbank speichern)

Wie man ganze Sätze damit verbindet und abspeichern kann wäre noch interessant damit aber es gibt sicher gute Lösungen dafür.

 

Weiterführende Links:

Flattr this

Bilderkennung und OCR mit OpenCV (Emgu) unter .NET

Servus Leute!

Erstmal wünsche ich euch ein gutes neues Jahr 2016 und viel Erfolg bei dem was ihr vorhabt.

Da ich wiedermal etwas Freizeit genießen konnte, fand ich etwas Zeit um ein bisschen mit OpenCV zu spielen. Ich habe hauptsächlich die optische Ziffern- und Buchstabenerkennung getestet und muss sagen, dass es ein echt cooles Werkzeug ist um Informationen aus Bildern zu gewinnen. Das ganze wurde von Google unter dem Projektnamen Tesseract gefördert. Die Software ist frei. Mehr Information gibt es auf Wikipedia.

Die Erkennung erfolgt zuverlässig bei gut lesbaren Fonts und einer Schriftgröße, welche mindestens 10px hoch ist (eigene Erfahrung).

Ich habe für die Implementierung OpenCV von Emgu verwendet welche die Bibliotheken für VB.NET und C# bereitstellt. Mehr Information sowie Download findet ihr auf http://emgu.com

Auf Youtube gibt es auch ein oder mehrere sehr nützliche Videos zu dem Thema. Dadurch fällt die Implementation nicht schwer und kann schnell in euer Projekt übernommen werden.

Eventuell lade ich noch ein Beispielprojekt mit Sourcecode hoch, damit ihr euch die Tipparbeit erspart 😉

Flattr this

Datenvisualisierung, Infographics, Statistiken, Imformationsvisualisierung

Jeder sieht sich gerne Infografiken an und analysiert gerne Statistiken. Vorraussetzung ist, das sie schön und einfach zu verstehen sind. Daten und Informationen werden immer wichtiger für uns und täglich wächst die Menge an Information im Internet.

Wie sollen alle diese Daten überhaupt beherrscht werden, bzw. wie kommt man mit diesen riesigen Datenmengen überhaupt klar? Es entstehen neue Studiengänge an den Universitäten wie zum Beispiel Datenanlyse oder DataMining. Es sollen also aus den Unmengen an erzeugten Daten neue Erkenntnisse gewonnen werden.

Welche coolen Möglichkeiten es in der Darstellung von Daten gibt, welche Prinzipien man beachten sollte beim Visualisieren und wie man die Informationen möglichst einfach zum Betrachter kommuniziert erklärt Jörn Loviscach sehr anschaulich in dem folgenden Youtube Video:

Ich bin gespannt wie die Informationsgrafiken und Datenvisualisierungen der Zukunft aussehen. Das Potenzial für einfachere Darstellungen ist meiner Meinung nach enorm und könnte ein wichtiger Zukunftstrend werden.

Denn in Wahrheit hilft es jedem wenn man wichtige Informationen möglichst schnell und barrierefrei und vor allem verständlich bekommt.

Flattr this

Dreidimensional ins Web – WebGL mit Three.Js

WebGL und Three.js wird in Zukunft immer beliebter. Three.js ist eine offene Javascript Umgebung die auf WebGL basiert und welche es ermöglicht einfach 3D Modelle zu erstellen, laden oder sogar zu manipulieren.

Um die Bibliothek zu testen wurde von mir eine kleine Testseite erstellt, welche das aktuelle Wetter in Salzburg mit einfachen 3D Modellen wie Wolken, Sonne und Regentropfen visualisiert. Natürlich gibt es unendlich weitere Möglichkeiten was man alles mit dieser Bibliothek machen kann.

Weiters ist es relativ einfach möglich mit Blender ein Modell zu exportieren, um es dann über Three.js und ein paar Zeilen Code laden und z.B. rotieren lassen kann.

07091531_MpCa

3D im Browser

Es ist sogar möglich Spiele oder interaktive Musikvideos zu gestalten und damit ganz neue Wege des Webs zu erschaffen. Interessant wird wie sich diese neue Dimension in den nächsten paar Jahren weiter entwickeln wird.

Zukünftig könnte man ja dann auch Augmented Reality Anwendungen dafür erstellen, wie z.B. bei einem Optiker wo eine dreidimensionale Betrachtung des Produktes am Kopf des Kunden möglich wäre.

Flattr this

3D Musik- und Soundvisualisierung mit Blender

Die meisten meiner Youtube Videos sind 3D Soundvisualisierungen, welche ich mit dem kostenlosen open-source Tool Blender erstellt habe. Mit Blender ist es möglich, die Musik oder den Sound im MP3 Format bequem hinein zu laden. Die Musik oder Sounds werden dann als Kurven dargestellt. Es ist sogar möglich beim laden den Frequenzbereich einzustellen. Damit kann man alle möglichen Werte eines Objektes wie z.B.: Skalierung, Rotation, Farbe usw. mit einem bestimmten Frequenzbereich animieren. Es lassen sich somit alle möglichen Eigenschaften mit den Musikdaten kombinieren.

Hier ein paar Beispiele, welche ich selbst mit Blender erstellt habe:




Flattr this

WebDAV unter Apache und Windows7 einrichten

Da ich unbedingt eine Alternative zu Dropbox suchte (fast schon selber programmieren wollte), bin ich über ownCloud auf die WebDAV-Anbindung gekommen. Da mir aber ownCloud nicht zugesagt hat, hab ich dann entdeckt, dass man sich auf einem Apache Server auch einen reinen WebDAV Zugang ohne extra PHP Skripte o. ä. einrichten kann.

Das ist natürlich optimal, da es simpel ist und das Protokoll von so ziemlich jedem Gerät (Smartphones) und Betriebssystem (Windows, Linux, iOS) unterstützt wird. Das Protokoll ist ähnlich wie HTTP aufgebaut, jedoch hat es noch zusätzliche Features.

Leider ist es etwas komplizierter, den WebDAV Zugang zu konfigurieren. Zu beachten zum Beispiel ist, dass Windows7 bei dem AuthType Basic Probleme macht, jedoch beim AuthType Digest nicht.

Man muss das Modul mod_dav im config-File aktivieren.

Links
WebDAV einrichten auf heise.de

Flattr this

Binaurale beats und Mindmachines

Bin vor kurzem über binaurale Wellen bzw. binaurale Beats bei Wikipedia gestoßen und fand das ziemlich interessant. Da werden einem zwei unterschiedliche, niederfrequente Töne auf beiden Ohren eingeschleust die eine leicht unterschiedliche Frequenz haben. Dadurch entsteht eine sehr niederfrequente Schwingung im Gehirn, welche die Hirnwellen stimulieren sollen. Wissenschaftlich ist das Ganze eher umstrittenen und man weis nicht ob man damit wirklich eine Wirkung erzielen kann.

binauralbeats

Das Prinzip hat mich an das Programm iDoser erinnert, mit dem man bestimmte Wirkungen mancher Drogen auf ähnlich Art und Weise simulieren konnte. Allerdings fand ich das damals schon ziemlich unglaubwürdig. Interessant ist es aber auf jeden Fall. Mindmachines sind nichts anderes als Kopfhörer mit diesen binauralen Wellen und dazu noch eine spezielle Brille, welche stroboskopartig Blitze bzw. Lichtimpulse passend zur Schwebungsfrequenz aussendet und die Augen stimuliert.

Selber hab ich bis jetzt nur die binauralen Beats getestet, allerdings funktionierten diese nicht wirklich bei mir.

Links & Videos:

http://de.wikipedia.org/wiki/Binaurale_Beats

Flattr this

Keine selbst-hostbare simple Alternative zu Dropbox?

Viele werden jetzt gleich an ownCloud denken… doch ich finde das Teil total unpraktisch und langsam. Ich wollte einfach eine einfache Synchronisation meiner Daten, ähnlich wie Dropbox. Jedoch geht das überhaupt nicht gut mit owncloud, da für jeden Benutzer eigene Ordnerstrukturen auf dem Server erstellt werden. Weiters funktioniert es nicht wenn man dann über den Windows Explorer Dateien oder Ordner anlegt, da dass die Datenbank nicht automatisch mit dem Dateisystem synchonisiert wird, was ein großer Nachteil ist finde ich.

Darum werde ich jetzt auch mein eigenes Sync-Programm schreiben, wenn es schon keine richtige Alternative gibt. Vor allem bei owncloud funktioniert das Client Programm richtig schrottmäßig, weiters muss man für die App zahlen, was man eigentlich elegant über resonsive Webdesign und guten Smartphonesupport lösen hätte können. Jedoch kann man nicht mal ein Photo vom Smartphone in die ownCloud übertragen etc.

Werd mal weiterprogrammieren und sehen was daraus wird.
cu

Flattr this

Ist die Matrix real? – Leben wir in einer Computersimulation?

Der Film Matrix hat mein gesamtes Weltbild verändert. Ich wäre selbst nie auf die Idee gekommen, dass die gesamte Realität eine Simulation in einem Computer sein könnte.

Im kleinen Maßstab ist Conways Game of Life doch auch eine Simulation eines Planeten auf einer toroiden Welt. Jedoch sind die Lebewesen ziemlich eingeschränkt in ihrer „Anatomie“ bzw. können durch die simplen Regeln nicht notwendigerweise komplexe Lebensformen entstehen.

Wenn man jedoch die exponentiell wachsende Rechnenleistung der Computer betrachtet, ist es nur eine Frage der Zeit, bis man eine ziemlich genaue Simulation hinbekommt – meiner Meinung nach zumindest.

Jedenfalls finde ich dieses Thema sehr interessant. Cool ist auch, dass keiner beweisen kann ob die Realität echt ist oder nur eine Simulation.

Ich habe hier noch ein paar interessante Youtube-Videos zu diesem Thema eingefügt:

Flattr this