Inhalt

Aktueller Ordner: /

.ipynb (pretty JSON)

{
    "metadata": {
        "language_info": {
            "codemirror_mode": {
                "name": "python",
                "version": 3
            },
            "file_extension": ".py",
            "mimetype": "text\/x-python",
            "name": "python",
            "nbconvert_exporter": "python",
            "pygments_lexer": "ipython3",
            "version": "3.8"
        },
        "kernelspec": {
            "name": "python",
            "display_name": "Python (Pyodide)",
            "language": "python"
        }
    },
    "nbformat_minor": 4,
    "nbformat": 4,
    "cells": [
        {
            "cell_type": "markdown",
            "source": "Ein mâgliches Multiagentensystem, das die Grammatik mit zwei wechselseitig handelnden Softwareagenten Agent-K für \"KÀufer\" und Agent-V für \"VerkÀufer\" nutzt, kânnte folgendermaßen implementiert werden:",
            "metadata": []
        },
        {
            "cell_type": "code",
            "source": "import random\n\n# Definition der Grammatikregeln\nw3 = {\n    \"anfang\": [(100, [\"s\", \"vkg\"])],\n    (\"s\", \"vkg\"): [(100, \"ende\")]\n}\n\nbbd = {(\"kbbd\",): [(100, \"vbbd\")]}\n\nba = {(\"kba\",): [(100, \"vba\")]}\n\nae = {(\"kae\",): [(100, \"vae\")]}\n\naa = {(\"kaa\",): [(100, \"vaa\")]}\n\nb = {(\"s\", \"bbd\"): [(100, (\"s\", \"ba\"))]}\n\na = {(\"s\", \"ae\"): [(50, (\"s\", \"ae\")), (100, (\"s\", \"aa\"))]}\n\nvt = {(\"s\", \"b\"): [(50, (\"s\", \"b\")), (100, (\"s\", \"a\"))]}\n\nbg = {(\"kbg\",): [(100, \"vbg\")]}\n\nav = {(\"kav\",): [(100, \"vav\")]}\n\nvkg = {(\"s\", \"bg\"): [(100, (\"s\", \"vt\"))],\n        (\"s\", \"vt\"): [(50, (\"s\", \"vt\")), (100, (\"s\", \"av\"))]}\n\n# Definition der Agentenklasse\nclass Agent:\n    def __init__(self, name, grammar, starting_rule):\n        self.name = name\n        self.grammar = grammar\n        self.rule_probs = self.compute_rule_probs()\n        self.current_rule = starting_rule\n        \n    def compute_rule_probs(self):\n        rule_probs = {}\n        for rule in self.grammar:\n            rule_probs[rule] = [x[0] for x in self.grammar[rule]]\n            total_prob = sum(rule_probs[rule])\n            rule_probs[rule] = [x \/ total_prob for x in rule_probs[rule]]\n        return rule_probs\n    \n    def update_rule(self, input_symbol):\n        possible_rules = [x for x in self.rule_probs if input_symbol in x]\n        if not possible_rules:\n            return\n        self.current_rule = random.choices(possible_rules, weights=self.rule_probs[possible_rules[0]])[0]\n        \n    def generate_output(self):\n        output = []\n        for symbol in self.current_rule:\n            if isinstance(symbol, tuple):\n                output.extend(Agent(symbol[0], globals()[symbol[0]], symbol))\n            else:\n                output.append(symbol)\n        return output\n    \n# Definition des Multiagentensystems\nclass MultiAgentSystem:\n    def __init__(self, agent_k, agent_v):\n        self.agents = {\"K\": agent_k, \"V\": agent_v}\n        \n    def communicate(self, input_sequence):\n        agent_k_output = self.agents[\"K\"].generate_output()\n        agent_v_output = self.agents[\"V\"].generate_output()\n        \n        current_agent = self.agents[\"K\"]\n        output_sequence = []\n        \n        for symbol in input_sequence:\n            current_agent.update_rule(symbol)\n            output_sequence.extend(current_agent.generate_output())\n            if current_agent == self.agents[\"K\"]:\n                current_agent = self.agents[\"V\"]\n            else:\n                current_agent = self.agents[\"K\"]\n        \n        return output_sequence\n\n# Beispielanwendung\nagent_k = Agent(\"s\", globals()[\"s\"], (\"s\", \"vkg\"))\nagent_v = Agent(\"s\", globals()[\"s\"], (\"s\", \"vkg\"))\n\nmas = MultiAgentSystem(agent_k, agent_v)\n\ninput_sequence\n",
            "metadata": [],
            "execution_count": null,
            "outputs": []
        }
    ]
}