Learn Go reflections and generic designs with a practical example


Reflections allow us to inspect and modify a program's structure at its own runtime. In this article we will be looking at some parts of the go reflect package API and applying them to a real-world use case by building a generic application configuration mechanism. We have implemented a Go data analysis application which will take data from an inventory database of a bookshop, process it, and turn it into human-readable statistical models that reflect the status of our inventory. The output could, for example, be a list of books that were published by a certain author, or a bar chart depicting the number of books in our inventory per decade of publishing. What we want is a way for us to configure what the application generates from the raw data in an abstract manner. There might be hundreds of algorithms that all process the raw data in different ways and produce different outputs, but not all outputs are relevant to us every time we run the application. We want to be able to configure our application to suit our needs and then just let it do what it has to do in order to deliver what we want from it.

Gender-Sensitive Automated Negotiators

AAAI Conferences

This paper introduces an innovative approach for automated negotiating using the gender of human opponents. Our approach segments the information acquired from previous opponents, stores it in two databases, and models the typical behavior of males and of females. The two models are used in order to match an optimal strategy to each of the two subpopulations. In addition to the basic separation, we propose a learning algorithm which supplies an online indicator for the gender separability-level of the population, which tunes the level of separation the algorithm activates. The algorithm we present can be generally applied in different environments with no need for configuration of parameters. Experiments in 4 different one-shot domains, comparing the performance of the gender based separation approach with a basic approach which is not gender sensitive, revealed higher payoffs of the former in almost all the domains. Moreover, using the proposed learning algorithm further improved the results.

Interaction Design in Agent-based Service-oriented Computing Systems

AAAI Conferences

This paper presents a new approach which addresses the issue of inconsistent message exchange during agent interactions. We advocate that in agent-based service-oriented computing systems, only agents should be in charge of executing interactions. We also require that the architecture of an agent be clearly separated in two distinct parts, a public and a private parts. The public part contains the interaction model, while any other data and process the agent needs belong to the private part. Our solution consists of automatically constructing the interaction model. It is based on a unification of the actions, required of an agent playing a role in a generic protocol, and the functionalities abstracted from the BPEL4WS model of this agent. We present the algorithms to perform this unification as well as the abstract models they manipulate.

Detecting Danger: The Dendritic Cell Algorithm

arXiv.org Artificial Intelligence

The Dendritic Cell Algorithm (DCA) is inspired by the function of the dendritic cells of the human immune system. In nature, dendritic cells are the intrusion detection agents of the human body, policing the tissue and organs for potential invaders in the form of pathogens. In this research, and abstract model of DC behaviour is developed and subsequently used to form an algorithm, the DCA. The abstraction process was facilitated through close collaboration with laboratory- based immunologists, who performed bespoke experiments, the results of which are used as an integral part of this algorithm. The DCA is a population based algorithm, with each agent in the system represented as an 'artificial DC'. Each DC has the ability to combine multiple data streams and can add context to data suspected as anomalous. In this chapter the abstraction process and details of the resultant algorithm are given. The algorithm is applied to numerous intrusion detection problems in computer security including the detection of port scans and botnets, where it has produced impressive results with relatively low rates of false positives.

Text Clustering : Get quick insights from Unstructured Data


In this two-part series, we will explore text clustering and how to get insights from unstructured data. It will be quite powerful and industrial strength. The first part will focus on the motivation. The second part will be about implementation. This post is the first part of the two-part series on how to get insights from unstructured data using text clustering.