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",
- "