Beispiel #1
0
class Tests(unittest.TestCase):
    def setUp(self):
        self.model_p = Model(traffic=3.4, lines=10, blocking_rate=False)
        self.model_n = Model(traffic=3.4, lines=False, blocking_rate=0.0019)
        self.model_a = Model(traffic=False, lines=10, blocking_rate=0.0019)
        self.engset_p = Model(traffic=3.4,
                              lines=10,
                              blocking_rate=False,
                              sources=500)
        self.engset_n = Model(traffic=3.4,
                              lines=False,
                              blocking_rate=0.0018,
                              sources=500)
        self.engset_a = Model(traffic=False,
                              lines=10,
                              blocking_rate=0.0018,
                              sources=500)

    def test_erlang_p(self):
        self.assertEqual(self.model_p.calculate_erlang(), 0.0019)

    def test_erlang_n(self):
        self.assertEqual(self.model_n.calculate_erlang(), 10)

    def test_erlang_a(self):
        self.assertEqual(self.model_a.calculate_erlang(), 3.5)

    def test_engset_p(self):
        self.assertAlmostEqual(self.engset_p.calculate_engset(), 0.0018)

    def test_engset_n(self):
        self.assertEqual(self.engset_n.calculate_engset(), 10)

    def test_engset_a(self):
        self.assertAlmostEqual(self.engset_a.calculate_engset(), 3.4)
Beispiel #2
0
    def calculate(self, alg):
        """
        :param alg:  name of algorithm to use
        """

        if alg == 'erlang':
            try:
                traffic = self.checkEnabled(self.ids.traffic_input)
                lines = self.checkEnabled(self.ids.lines_input)
                block = self.checkEnabled(self.ids.block_rate_input)

                model = Model(traffic, lines, block)
                self.ids.result.text = str(model.calculate_erlang())
            except ValueError:
                self.popup.open()
        if alg == 'engset':
            try:
                traffic = self.checkEnabled(self.ids.engset_traffic)
                lines = self.checkEnabled(self.ids.engset_lines)
                block = self.checkEnabled(self.ids.engset_block)
                sources = self.checkEnabled(self.ids.sources)

                model = Model(traffic, lines, block, sources)
                self.ids.engset_result.text = str(model.calculate_engset())
            except ValueError:
                self.popup.open()
Beispiel #3
0
    def generate(self, graph):
        x = []
        y = []
        inputs = []
        for i in range(self.lin):
            y.append([])
        try:
            if graph == 'lines':
                if self.lin == 1:
                    inputs.append(int(self.ids.line_one_input.text))
                elif self.lin == 2:
                    inputs.append(int(self.ids.line_one_input.text))
                    inputs.append(int(self.ids.line_two_input.text))
                elif self.lin == 3:
                    inputs.append(int(self.ids.line_one_input.text))
                    inputs.append(int(self.ids.line_two_input.text))
                    inputs.append(int(self.ids.line_three_input.text))
                elif self.lin == 4:
                    inputs.append(int(self.ids.line_one_input.text))
                    inputs.append(int(self.ids.line_two_input.text))
                    inputs.append(int(self.ids.line_three_input.text))
                    inputs.append(int(self.ids.line_four_input.text))
                step = float(self.ids.spinner_id.text)
                n_steps = int(floor((float(self.ids.max_traffic.text) - float(self.ids.min_traffic.text)) / step))
                x.append(float(self.ids.min_traffic.text))
                for i in range(n_steps):
                    x.append(x[i] + step)
                    print(x[i])
                for i in range(self.lin):
                    for j in range(n_steps + 1):
                        model = Model(traffic=x[j], lines=inputs[i], blocking_rate=False)
                        y[i].append(model.calculate_erlang())
                        print(y[i])
            elif graph == 'block':
                if self.lin == 1:
                    inputs.append(float(self.ids.block_one_input.text))
                elif self.lin == 2:
                    inputs.append(float(self.ids.block_one_input.text))
                    inputs.append(float(self.ids.block_two_input.text))
                elif self.lin == 3:
                    inputs.append(float(self.ids.block_one_input.text))
                    inputs.append(float(self.ids.block_two_input.text))
                    inputs.append(float(self.ids.block_three_input.text))
                elif self.lin == 4:
                    inputs.append(float(self.ids.block_one_input.text))
                    inputs.append(float(self.ids.block_two_input.text))
                    inputs.append(float(self.ids.block_three_input.text))
                    inputs.append(float(self.ids.block_four_input.text))
                step = int(self.ids.spinner2_id.text)
                n_steps = int(floor((int(self.ids.max_lines.text) - int(self.ids.min_lines.text)) / step))
                x.append(int(self.ids.min_lines.text))
                print(n_steps)
                print(x)
                for i in range(n_steps):
                    x.append(x[i] + step)
                for i in range(self.lin):
                    for j in range(n_steps+1):
                        model = Model(traffic=False, lines= x[j], blocking_rate=inputs[i])
                        y[i].append(model.calculate_erlang())
                        print(y[i])

            generate_graph(x, y, inputs, graph)
        except ValueError:
            raise