IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Python, pomoc s optimalizaci

Python

def calculate(self):
    # HORIZONT-ČELO
    # vzorec A0°C0° ; (chyba) + (A) + (B) + (Cy) = 0
    # vzorec A0°C180° ; (chyba) + (A) + (B) - (Cy) = 0
    # vzorec A0°C+90° ; (chyba) + (A) + (B) - (Cx) = 0
    # vzorec A0°C-90° ; (chyba) + (A) + (B) + (Cx) = 0

    # VERTIKAL-VRCH
    # vzorec A180°C0 ; (chyba) - (A) + (B) + (Cy) = 0
    # vzorec A180°C180° ; (chyba) + (A) - (B) + (Cy) = 0
    # vzorec A180°C+90° ; (chyba) + (Cy) = 0
    # vzorec A180°C-90° ; (chyba) + (Cy) = 0

    # VERTIKAL-BOK
    # vzorec xA180°C0° ; (chyba) + (Cx) = 0
    # vzorec A180°C180° ; (chyba) + (Cx) = 0
    # vzorec A180°C+90° ; (chyba) + (A) - (B) + (Cx) = 0
    # vzorec A180°C-90° ; (chyba) - (A) + (B) + (Cx) = 0

    def set_label(label, a, b, c):
        label.set(str(get_magic_number(label, a, b, c)))
 
    def get_magic_number(label, a, b, c):
        return float(label.get()) + (a) + (b) + (c)

    def spec_print(name, data):
        print(name+str(get_magic_number(data[0], data[1], data[2], data[3])))


    CyOK = False
    CxOK = False
    self.labelCy_p.set("")
    for error in self.frange(0, 2.5, 0.25):
        for A in self.frange(-10, 11, 0.25):
            for B in self.frange(-10, 11, 0.25):
                if not CyOK:
                    for Cy in self.frange(-10, 11, 0.25):
                        something = (abs(get_magic_number(self.A0C0, +A, +B, +Cy)) <= error,
                                    abs(get_magic_number(self.A0C180, +A, +B, -Cy)) <= error,
                                    abs(get_magic_number(self.A180C0_t, -A, +B, +Cy)) <= error,
                                    abs((float(self.A180C180_t.get())) + (A) - (B) + (Cy)) <= error,
                                    abs(float(self.A180C90_p_t.get()) + (Cy)) <= error,
                                    abs(float(self.A180C90_m_t.get()) + (Cy)) <= error)

                        if not 0 in something:
                            set_label(self.labelA0C180, A, B, -Cy)
                            set_label(self.labelA0C0, A, B, Cy)

                            set_label(self.A180C0_t, -A, +B, +Cy)
                            set_label(self.A180C180_t, -A, +B, -Cy)
                            set_label(self.A180C90_m_t, 0, 0, +Cy)
                            set_label(self.A180C90_p_t, 0, 0, +Cy)
                            CyOK = True
                            break


                if not CxOK:
                    for Cx in self.frange(-10, 11, 0.25):
                        something = (abs(get_magic_number(self.A0C90_p, +A, +B, -Cx)) <= error,
                                    abs(get_magic_number(self.A0C90_m, +A, +B, +Cx)) <= error,
                                    abs((float(self.A180C90_p_s.get())) + (A) - (B) + (Cx)) <= error,
                                    abs(float(self.A180C90_m_s.get()) - (A) + (B) + (Cx)) <= error,
                                    abs(float(self.A180C0_s.get()) + (Cx)) <= error,
                                    abs(float(self.A180C180_s.get()) + (Cx)) <= error)

                        if not 0 in something:
                            set_label(self.A0C90_m, +A, +B, +Cx)
                            set_label(self.A0C90_p, +A, +B, -Cx)
                            set_label(self.A180C90_p_s, -A, +B, -Cx)
                            set_label(self.A180C90_m_s, -A, +B, +Cx)
                            set_label(self.A180C0_s, 0, 0, Cx)
                            set_label(self.A180C180_s, 0, 0, +Cx)
                            CxOK = True
                            break

                if CyOK and CxOK:

                    print("Cx---")
                    spec_print("A0C90 ", (self.A0C90_p, +A, +B, -Cx))
                    spec_print("A0C-90 ", (self.A0C90_m, +A, +B, +Cx))
                    spec_print("A180C90 side ", (self.A180C90_p_s, -A, +B, -Cx))
                    spec_print("A180C-90 side ", (self.A180C90_m_s, -A, +B, +Cx))
                    spec_print("A180C0 side ", (self.A180C0_s, 0, 0, +Cx))
                    spec_print("A180C180 side", (self.A180C180_s, 0, 0, +Cx))
                    print("A "+str(A))
                    print("B "+str(B))
                    print("Cx "+str(Cx))

                    print("Cy---")
                    spec_print("A0C0 ", (self.A0C0, +A, +B, +Cy))
                    spec_print("A0C180 ", (self.A0C180, +A, +B, -Cy))
                    spec_print("A180C0 top", (self.A180C0_t, -A, +B, +Cy))
                    spec_print("A180C180 top", (self.A180C180_t, -A, +B, -Cy))
                    spec_print("A180C90 top", (self.A180C90_p_t, 0, 0, +Cy))
                    spec_print("A180C-90 top", (self.A180C90_m_t, 0, 0, +Cy))
                    print("A "+str(A))
                    print("B "+str(B))
                    print("Cy "+str(Cy))

                    if A < 0:
                        self.labelA_m.set(A)
                    else:
                        self.labelA_p.set(-A)
                    if B < 0:
                        self.labelB_m.set(B)
                    else:
                        self.labelB_p.set(-B)
                    if Cx < 0:
                        self.labelCx_m.set(Cx)
                    else:
                        self.labelCx_p.set(-Cx)
                    if Cy < 0:
                        self.labelCy_m.set(Cy)
                    else:
                        self.labelCy_p.set(-Cy)
                    return
                else:
                    CyOK = False
                    CxOK = False

Neformátovaný

Přidáno: 20.9.2015
Expirace: Neuvedeno

Avatar
Autor: Drakeman
Aktivity