From 7ef86a5484ed6f87172feabf98c0ef48ef8017ba Mon Sep 17 00:00:00 2001
From: Gauthier Roy <gauthierroy83@gmail.com>
Date: Tue, 28 Jan 2020 16:54:49 +0100
Subject: [PATCH] new fitness function

---
 __pycache__/RotTable.cpython-36.pyc | Bin 2085 -> 2132 bytes
 __pycache__/Traj3D.cpython-36.pyc   | Bin 1976 -> 1976 bytes
 individu.py                         |  32 ++++++++++++++++++----------
 3 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/__pycache__/RotTable.cpython-36.pyc b/__pycache__/RotTable.cpython-36.pyc
index 7a6158dd6374a43aa0874b27bdbf65bcfb4208a1..a8064bb45dbaad46db289f9e730b7dd816423ae4 100644
GIT binary patch
delta 764
zcmZ1~a794bn3tDplbb=@JPrni#|%h-nSp`9fq{XcSZkuPrbP;4FoPz`OOU)@GKhp>
zQJ69{Mh1pdhA74qhA5^K#wg|#rWEEBvxzgz`OQ<rQzTN@)7eraQ>0QXCf<`~w4C_M
zT-GXuJB0@<uAU;E!k)sJ!Vl)jrzoUYPxfP!X0(}{#c08kV$#A8#g$?j%%Ewzc^RW8
zBV*L$4@~n}i}Fk2OD0cYc4riye1|!UQD(9`%TZoo1_p*(tVM}=>8V9RlO<W@6hTfb
z5(5b{W)_JvFfc#}2@p$!fq_9~as;bfJtNddAR2_7L4IdrU|^_W$YKa)&}8(}WGn(1
zuE|&gHWAgNTP*oSC5c)fO-vw@7^`@L@=HPzlX6n^Kr+c-Q3eJE5Dmg$^ZB6W*D%^j
zGNdp{f-GY4D+1ZC$yg-Bz`&r%1hEa|eu%rl_JSOLiz7X?B&0mExWs(&byjm{kV9)2
zk<58Xf;r)-De0+Jlf&4|SwQAYp2#L_K-dL5>8T|ynMJ9|C7Jnowv%tNxiNB2R$$k2
z1O-%)BrJrBWI-%B5TO7f6hQ>o9|!{Eqaskiu!6!+Z*mvAS`-Th2L~GmF9$ORGgwNK
zC5kgQu_U9kBr~V@77K`3Bn>hPqz@@{z@~x>yv1RYo1apelWGSFiegZ7axii*axeh^
DL6V3g

delta 689
zcmca2uv9?Vn3tC;$jKmXCp!bfV+JI^%)r3lz`(#zY&TI^(<ha=nIVcLl{J+mi!Fsk
zlA)QAks*aKm_d{EB}k87GKhp>QJ7XaMh1pdhA74qhA5^K#wg|#rWEEBlZh?n{H7`5
zDH18{>1-*IDN-qB6HiGqnooRY&S)`Nj!~M?a<UbpG^5qzFh&cOU<OU=&9fLi85wU)
ze!?`LH7LI%K4fwSvpb{2<O|GMjM9^>S&s6GFfcIOVl7I{OHVBlp3KWCrzpn2z)&O(
z5@yUSk^phQgd~Usa-h;=A6B`^``9EsN*J;jYZxUNQWzx}f*CZK{E8SE7#K8}ikLuZ
zK_+W56~T=|GwT*ddTL2Xd1i5m(c}ee5|i!N<XJ!lPEKSKHYCA_@YIy_RMW`|*vx%E
z+ELxZMuK~I(o;)ZGK*4^OEUBGEGEmbyD@T2PG#3~26?1N3gjh__lx8}ECmpu2qM6N
zgCM}c1oA&CC<*8=Ffed1vM^76$SyJYJv&>O2r~yehX4mN2Qws)1V9dCkK)WtEXgP>
z$;>If#R6g$$$*Ro856};l9-f}YIuvapeQr1q(~Sffv^tD0@-<s!zMRBr8Fni4ipE)
PTwsei7&(~uEZ7(UdF6hr

diff --git a/__pycache__/Traj3D.cpython-36.pyc b/__pycache__/Traj3D.cpython-36.pyc
index 31651032f232ae34320d1f923ad5b5548331aa50..b5c1da4e7f16d56be5828446b2f8423d03027c1c 100644
GIT binary patch
delta 54
zcmdnNzk{FCn3tDplbb=@(~X>2ER44{m#}a$F&a&-V~b-`Wnf?^GMxN~&5KcevM#$k
Kqvm8^_G|#7XAW2Z

delta 54
zcmdnNzk{FCn3tC;$jKm1WFu!53uDyg5*AJ-M#IT<Y;kNV3=9lK29qDLc`>R@)@7Gx
K)R^qco(%wAiwvFs

diff --git a/individu.py b/individu.py
index 0b14b4c..3c652c8 100644
--- a/individu.py
+++ b/individu.py
@@ -1,7 +1,7 @@
 from RotTable import RotTable
 from Traj3D import *
 import numpy as np
-from math import sqrt
+from math import sqrt, inf
 
 class Individu():
 
@@ -12,20 +12,30 @@ class Individu():
     def evaluate(self, brin):
         traj = Traj3D()
 
-        fisrt_nuc = brin[0]
-        last_nu = brin[-1]
+        numb_ajout = 3
 
-        traj.compute(brin + fisrt_nuc, self.table)
+        fisrt_seq = brin[0:numb_ajout]
+        last_seq = brin[-numb_ajout:]
+
+        traj.compute(last_seq + brin + fisrt_seq, self.table)
         traj_array = np.array(traj.getTraj())
 
-        first_nuc_coordonate = traj_array[0, 0:3]
-        last_nuc_coordonate = traj_array[-2, 0:3]
+        list_distance = []
+
+        for i in range(numb_ajout):
+                first_nuc_coordonate = traj_array[numb_ajout+i, 0:3]
+                first_nuc_coordonate_compute = traj_array[-(numb_ajout-i), 0:3]
+                
+                last_nuc_coordonate = traj_array[-(2*numb_ajout-i), 0:3]
+                last_nuc_coordonate_compute = traj_array[i, 0:3]
+
+                distance_first_nuc = np.linalg.norm(first_nuc_coordonate - first_nuc_coordonate_compute, ord=2)
+                distance_last_nuc = np.linalg.norm(last_nuc_coordonate - last_nuc_coordonate_compute, ord=2)
+
+                list_distance += [distance_first_nuc, distance_last_nuc]
+
 
-        test = np.linalg.norm(first_nuc_coordonate - last_nuc_coordonate, ord=2)
-        distance = sqrt(sum((first_nuc_coordonate - last_nuc_coordonate) ** 2))
-        diff_ideal_distance = abs(3.38 - distance)
-        diff_ideal_distance_2 = abs(3.38 - test)
-        self.score = (1/(diff_ideal_distance ), 1/diff_ideal_distance_2)
+        self.score = 1/max(list_distance)
         
     
     def mutation(self):
-- 
GitLab