Example #1
0
    def allocate(self, avoid_conflicts=True):
        p = PanelMaker()
        panels = p.form_panels(self.adjudicators, len(self.debates))

        assert len(self.debates) <= len(panels)

        self.debates.sort(key=lambda d: self.get_debate_energy(d), reverse=True)
        panels.sort(key=lambda p: p.get_energy(), reverse=True)

        self.pairings = list(zip(self.debates, panels))

        if avoid_conflicts:
            for i, (debate, panel) in enumerate(self.pairings):
                if panel.conflicts(debate):
                    j = self.search_swap(i, list(range(i, 0, -1)))
                    if j is None:
                        j = self.search_swap(i, list(range(i+1, len(panels))))

        from adjallocation.allocation import AdjudicatorAllocation

        allocation = []
        for debate, panel in self.pairings:
            a = AdjudicatorAllocation(debate)
            a.chair = panel[0]
            a.panel = panel[1:]
            allocation.append(a)

        return allocation
Example #2
0
    def allocate(self, avoid_conflicts=True):
        p = PanelMaker()
        panels = p.form_panels(self.adjudicators, len(self.debates))

        assert len(self.debates) <= len(panels)

        self.debates.sort(key=lambda d: self.get_debate_energy(d),
                          reverse=True)
        panels.sort(key=lambda p: p.get_energy(), reverse=True)

        self.pairings = list(zip(self.debates, panels))

        if avoid_conflicts:
            for i, (debate, panel) in enumerate(self.pairings):
                if panel.conflicts(debate):
                    j = self.search_swap(i, list(range(i, 0, -1)))
                    if j is None:
                        j = self.search_swap(i, list(range(i + 1,
                                                           len(panels))))

        from adjallocation.allocation import AdjudicatorAllocation

        allocation = []
        for debate, panel in self.pairings:
            a = AdjudicatorAllocation(debate)
            a.chair = panel[0]
            a.panel = panel[1:]
            allocation.append(a)

        return allocation