From e546bad48f8fbde233dacf80e155e2d766c0e4b3 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Fri, 11 Oct 2019 11:51:30 +0200 Subject: [PATCH] fixed several scoring bugs in Evolutional Algorithm --- .../EvolutionaryAlgorithm.ipynb | 1508 ++++++----------- 1 file changed, 501 insertions(+), 1007 deletions(-) diff --git a/EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb b/EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb index b11fb14..799c046 100644 --- a/EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb +++ b/EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb @@ -9,9 +9,33 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 1, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -88,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -106,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -115,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -124,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -142,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -169,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -194,7 +218,7 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -219,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -238,7 +262,7 @@ " 1, 1, 1, 1, 1]))" ] }, - "execution_count": 112, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -249,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -267,7 +291,7 @@ " 1, 1]))" ] }, - "execution_count": 113, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -278,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -308,7 +332,7 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -340,7 +364,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -372,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -410,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -601,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -610,7 +634,7 @@ " super().__init__(\"mix\", constant, single_child=False)\n", " \n", " def dot_node(self, dot):\n", - " dot.node(self._id, label=f\"{self._name} ({self.node_score()})\", shape=\"diamond\")\n", + " dot.node(self._id, label=f\"< {self._name}
node score: {self.node_score()}>\", shape=\"diamond\")\n", " \n", " def split(self, set_above, set_below, node_between):\n", " assert len(set_above.difference(self.childs())) == 0\n", @@ -714,7 +738,7 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -756,7 +780,7 @@ " \n", " \n", " def dot_node(self, dot):\n", - " dot.node(self._id, label=f\"{self._name} ({self.node_score()})\", shape=\"box\")" + " dot.node(self._id, label=f\"< {self._name}
node score:{self.node_score()}>\", shape=\"box\")" ] }, { @@ -768,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -814,7 +838,7 @@ " return s / len(ings)\n", " \n", " def dot_node(self, dot):\n", - " dot.node(self._id, label=f\"{self._name} ({self.node_score()})\", shape=\"ellipse\")" + " dot.node(self._id, label=f\"< {self._name}
node score: {self.node_score()}>\", shape=\"ellipse\")" ] }, { @@ -826,7 +850,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -991,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -1051,6 +1075,8 @@ " self._act_max = max\n", " \n", " def single_score(self, mix_scores, act_scores, ing_scores):\n", + " if mix_scores is None or act_scores is None or ing_scores is None:\n", + " return 0\n", " return np.average(mix_scores) * np.average(act_scores) * np.average(ing_scores)\n", " \n", " \n", @@ -1063,9 +1089,15 @@ " \n", " if self._mix_min is not None and self._mix_max is not None:\n", " self._mix_scores = [t.normalized_mix_scores(self._mix_min, self._mix_max) for t in self.population]\n", + " else:\n", + " # if no normalization can be done, all values are the same or 0.\n", + " # in this case just fill in zeros as score\n", + " self._mix_scores = [np.zeros(shape=t._mix_scores.shape) for t in self.population]\n", " \n", " if self._act_min is not None and self._act_max is not None:\n", " self._act_scores = [t.normalized_act_scores(self._act_min, self._act_max) for t in self.population]\n", + " else:\n", + " self._act_scores = [np.zeros(shape=t._act_scores) for t in self.population]\n", " \n", " self._scores = []\n", " for i in range(len(self._mix_scores)):\n", @@ -1108,64 +1140,40 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "p = Population([\"noodle\",\"tomato\", \"onion\"])" + "p = Population([\"tomato\",\"onion\"])" ] }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "4\n" + "0\n" ] } ], "source": [ - "p.run(5)" + "p.run(1)" ] }, { "cell_type": "code", - "execution_count": 155, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1.])" - ] - }, - "execution_count": 155, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p.population[0].action_scores()" - ] - }, - { - "cell_type": "code", - "execution_count": 156, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.27112203844434507\n" + "0.3304126483795514\n" ] }, { @@ -1177,82 +1185,80 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3727\n", - "\n", - "mix (0.0)\n", + "152\n", + "\n", + " \n", + "bake\n", + "node score: 0.4546361041518653\n", "\n", - "\n", + "\n", "\n", - "3730\n", - "\n", - "mix (0.22564102564102564)\n", + "153\n", + "\n", + " \n", + "mix\n", + "node score: 0.3897435897435897\n", "\n", - "\n", + "\n", "\n", - "3727->3730\n", - "\n", - "\n", + "152->153\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3728\n", - "\n", - "noodle (1)\n", - "\n", - "\n", - "\n", - "3727->3728\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3731\n", - "\n", - "tomato (1)\n", + "157\n", + "\n", + " \n", + "chop\n", + "node score: 0.21089630931458697\n", "\n", - "\n", + "\n", "\n", - "3730->3731\n", - "\n", - "\n", + "153->157\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3732\n", - "\n", - "cook (0.9999999999999999)\n", - "\n", - "\n", - "\n", - "3730->3732\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3733\n", - "\n", - "onion (1.0)\n", + "155\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3732->3733\n", - "\n", - "\n", + "153->155\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "154\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", + "\n", + "\n", + "\n", + "157->154\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1262,7 +1268,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.2576130268096809\n" + "0.28606469692626313\n" ] }, { @@ -1274,130 +1280,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3716\n", - "\n", - "cook (0.9219858156028368)\n", + "139\n", + "\n", + " \n", + "cook\n", + "node score: 0.8829787234042552\n", "\n", - "\n", + "\n", "\n", - "3717\n", - "\n", - "bake (0.5054716884821958)\n", + "135\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3716->3717\n", - "\n", - "\n", + "139->135\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3718\n", - "\n", - "mix (0.0)\n", + "137\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3717->3718\n", - "\n", - "\n", + "135->137\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3721\n", - "\n", - "simmer (0.6899063929501801)\n", + "136\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3718->3721\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3719\n", - "\n", - "cut (0.25)\n", - "\n", - "\n", - "\n", - "3718->3719\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3722\n", - "\n", - "mix (0.3897435897435897)\n", - "\n", - "\n", - "\n", - "3721->3722\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3726\n", - "\n", - "chop (0.21089630931458697)\n", - "\n", - "\n", - "\n", - "3722->3726\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3723\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "3722->3723\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3724\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "3726->3724\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3720\n", - "\n", - "noodle (1.0)\n", - "\n", - "\n", - "\n", - "3719->3720\n", - "\n", - "\n", + "135->136\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1407,7 +1349,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.23576471183610126\n" + "0.2081128747795414\n" ] }, { @@ -1419,82 +1361,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3403\n", - "\n", - "mix (0.0)\n", + "185\n", + "\n", + " \n", + "mix\n", + "node score: 0.3897435897435897\n", "\n", - "\n", + "\n", "\n", - "3404\n", - "\n", - "cook (1.0)\n", + "188\n", + "\n", + " \n", + "tomato\n", + "node score:1\n", "\n", - "\n", + "\n", "\n", - "3403->3404\n", - "\n", - "\n", + "185->188\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3407\n", - "\n", - "mix (0.20029027576197386)\n", - "\n", - "\n", - "\n", - "3403->3407\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3406\n", - "\n", - "noodle (1.0)\n", + "186\n", + "\n", + " \n", + "chop\n", + "node score: 0.21089630931458697\n", "\n", - "\n", + "\n", "\n", - "3404->3406\n", - "\n", - "\n", + "185->186\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3409\n", - "\n", - "onion (1)\n", + "\n", + "\n", + "187\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", - "\n", - "3407->3409\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3408\n", - "\n", - "tomato (1)\n", - "\n", - "\n", - "\n", - "3407->3408\n", - "\n", - "\n", + "\n", + "\n", + "186->187\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1504,7 +1430,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.23576471183610126\n" + "0.1467369569343487\n" ] }, { @@ -1516,82 +1442,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3708\n", - "\n", - "mix (0.0)\n", + "74\n", + "\n", + " \n", + "bake\n", + "node score: 0.4546361041518653\n", "\n", - "\n", + "\n", "\n", - "3709\n", - "\n", - "cook (1.0)\n", + "70\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3708->3709\n", - "\n", - "\n", + "74->70\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3712\n", - "\n", - "mix (0.20029027576197386)\n", - "\n", - "\n", - "\n", - "3708->3712\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3711\n", - "\n", - "noodle (1.0)\n", + "71\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3709->3711\n", - "\n", - "\n", + "70->71\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3714\n", - "\n", - "onion (1)\n", + "\n", + "\n", + "72\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", - "\n", - "3712->3714\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3713\n", - "\n", - "tomato (1)\n", - "\n", - "\n", - "\n", - "3712->3713\n", - "\n", - "\n", + "\n", + "\n", + "70->72\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1601,7 +1511,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.21735554335886978\n" + "0.1467369569343487\n" ] }, { @@ -1613,82 +1523,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "4004\n", - "\n", - "cook (0.9219858156028368)\n", + "54\n", + "\n", + " \n", + "bake\n", + "node score: 0.4546361041518653\n", "\n", - "\n", + "\n", "\n", - "4006\n", - "\n", - "mix (0.0)\n", + "50\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "4004->4006\n", - "\n", - "\n", + "54->50\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "4010\n", - "\n", - "noodle (1.0)\n", + "51\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "4006->4010\n", - "\n", - "\n", + "50->51\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "4007\n", - "\n", - "mix (0.20029027576197386)\n", + "52\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "4006->4007\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4009\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "4007->4009\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "4008\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "4007->4008\n", - "\n", - "\n", + "50->52\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1698,7 +1592,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.21735554335886978\n" + "0.10385674736299129\n" ] }, { @@ -1710,82 +1604,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3909\n", - "\n", - "cook (0.9219858156028368)\n", + "114\n", + "\n", + " \n", + "saute\n", + "node score: 0.3228072143489262\n", "\n", - "\n", + "\n", "\n", - "3911\n", - "\n", - "mix (0.0)\n", + "110\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3909->3911\n", - "\n", - "\n", + "114->110\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3915\n", - "\n", - "noodle (1.0)\n", + "111\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3911->3915\n", - "\n", - "\n", + "110->111\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3912\n", - "\n", - "mix (0.20029027576197386)\n", + "112\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3911->3912\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3913\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "3912->3913\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3914\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "3912->3914\n", - "\n", - "\n", + "110->112\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1795,7 +1673,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.20962497813112532\n" + "0.0979739710108862\n" ] }, { @@ -1807,130 +1685,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3947\n", - "\n", - "cook (0.9219858156028368)\n", + "49\n", + "\n", + " \n", + "place\n", + "node score: 0.3047214847499034\n", "\n", - "\n", + "\n", "\n", - "3948\n", - "\n", - "bake (0.5054716884821958)\n", + "45\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3947->3948\n", - "\n", - "\n", + "49->45\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3949\n", - "\n", - "mix (0.0)\n", + "47\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3948->3949\n", - "\n", - "\n", + "45->47\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3950\n", - "\n", - "cut (0.21044759376285382)\n", + "46\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3949->3950\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3955\n", - "\n", - "cut (0.25)\n", - "\n", - "\n", - "\n", - "3949->3955\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3951\n", - "\n", - "mix (0.3897435897435897)\n", - "\n", - "\n", - "\n", - "3950->3951\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3954\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "3951->3954\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3952\n", - "\n", - "chop (0.21089630931458697)\n", - "\n", - "\n", - "\n", - "3951->3952\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3953\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "3952->3953\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3956\n", - "\n", - "noodle (1.0)\n", - "\n", - "\n", - "\n", - "3955->3956\n", - "\n", - "\n", + "45->46\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1940,7 +1754,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.18941305549164347\n" + "0.048854207472685374\n" ] }, { @@ -1952,94 +1766,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3870\n", - "\n", - "mix (0.0)\n", + "104\n", + "\n", + " \n", + "pour\n", + "node score: 0.15371000511037156\n", "\n", - "\n", + "\n", "\n", - "3873\n", - "\n", - "mix (0.20029027576197386)\n", + "100\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3870->3873\n", - "\n", - "\n", + "104->100\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3871\n", - "\n", - "cook (1.0)\n", - "\n", - "\n", - "\n", - "3870->3871\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3874\n", - "\n", - "onion (1)\n", + "102\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3873->3874\n", - "\n", - "\n", + "100->102\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3875\n", - "\n", - "tomato (1)\n", + "101\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3873->3875\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3877\n", - "\n", - "bake (0.6071428571428571)\n", - "\n", - "\n", - "\n", - "3871->3877\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3872\n", - "\n", - "noodle (1.0)\n", - "\n", - "\n", - "\n", - "3877->3872\n", - "\n", - "\n", + "100->101\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2049,7 +1835,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.18081651769563872\n" + "0.029112476630023528\n" ] }, { @@ -2061,118 +1847,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3680\n", - "\n", - "mix (0.0)\n", + "95\n", + "\n", + " \n", + "mix\n", + "node score: 0.13782051282051283\n", "\n", - "\n", + "\n", "\n", - "3689\n", - "\n", - "heat (0.969244288224956)\n", + "97\n", + "\n", + " \n", + "tomato\n", + "node score:1\n", "\n", - "\n", + "\n", "\n", - "3680->3689\n", - "\n", - "\n", + "95->97\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3687\n", - "\n", - "noodle (1)\n", - "\n", - "\n", - "\n", - "3680->3687\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3681\n", - "\n", - "open (0.009697241645788928)\n", + "99\n", + "\n", + " \n", + "brown\n", + "node score: 0.2899824253075571\n", "\n", - "\n", + "\n", "\n", - "3689->3681\n", - "\n", - "\n", + "95->99\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3682\n", - "\n", - "simmer (0.6899063929501801)\n", + "96\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3681->3682\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3683\n", - "\n", - "mix (0.22564102564102564)\n", - "\n", - "\n", - "\n", - "3682->3683\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3684\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "3683->3684\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3685\n", - "\n", - "cook (0.9999999999999999)\n", - "\n", - "\n", - "\n", - "3683->3685\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3686\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "3685->3686\n", - "\n", - "\n", + "99->96\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2182,7 +1916,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.17755644030720744\n" + "0.012923052806571338\n" ] }, { @@ -2194,130 +1928,66 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "%3\n", - "\n", - "\n", + "\n", + "\n", "\n", - "3878\n", - "\n", - "mix (0.0)\n", + "89\n", + "\n", + " \n", + "peel\n", + "node score: 0.04324496129828366\n", "\n", - "\n", + "\n", "\n", - "3879\n", - "\n", - "heat (0.969244288224956)\n", + "85\n", + "\n", + " \n", + "mix\n", + "node score: 0.20029027576197386\n", "\n", - "\n", + "\n", "\n", - "3878->3879\n", - "\n", - "\n", + "89->85\n", + "\n", + "\n", "\n", - "\n", - "\n", - "3888\n", - "\n", - "bake (0.6071428571428571)\n", - "\n", - "\n", - "\n", - "3878->3888\n", - "\n", - "\n", - "\n", - "\n", + "\n", "\n", - "3880\n", - "\n", - "open (0.009697241645788928)\n", + "86\n", + "\n", + " \n", + "tomato\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3879->3880\n", - "\n", - "\n", + "85->86\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "3881\n", - "\n", - "simmer (0.6899063929501801)\n", + "87\n", + "\n", + " \n", + "onion\n", + "node score:1.0\n", "\n", - "\n", + "\n", "\n", - "3880->3881\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3882\n", - "\n", - "mix (0.22564102564102564)\n", - "\n", - "\n", - "\n", - "3881->3882\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3883\n", - "\n", - "tomato (1.0)\n", - "\n", - "\n", - "\n", - "3882->3883\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3884\n", - "\n", - "cook (0.9999999999999999)\n", - "\n", - "\n", - "\n", - "3882->3884\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3885\n", - "\n", - "onion (1.0)\n", - "\n", - "\n", - "\n", - "3884->3885\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "3886\n", - "\n", - "noodle (1.0)\n", - "\n", - "\n", - "\n", - "3888->3886\n", - "\n", - "\n", + "85->87\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2328,182 +1998,6 @@ "p.plot_population()" ] }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 't' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTree\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrom_serialization\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mserialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 't' is not defined" - ] - } - ], - "source": [ - "t2 = Tree.from_serialization(t.serialize())" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [], - "source": [ - "t.mutate()" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.00499001996007984" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t.score()" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "\n", - "43\n", - "\n", - "mix\n", - "\n", - "\n", - "\n", - "44\n", - "\n", - "chocolate\n", - "\n", - "\n", - "\n", - "43->44\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "51\n", - "\n", - "beat\n", - "\n", - "\n", - "\n", - "43->51\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "45\n", - "\n", - "sugar\n", - "\n", - "\n", - "\n", - "51->45\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t.root().dot()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'pepper'" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(t.root().childs())[0]._name" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "n = IngredientNode(\"test\")" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n.traverse() == IngredientNode" - ] - }, { "cell_type": "code", "execution_count": null,