def run(self, batchID: str, jobID: str):
        divisionDatasetPercentualSize: int
        uBehaviour: str
        repetition: int
        divisionDatasetPercentualSize, uBehaviour, repetition = \
            InputABatchDefinition().getBatchParameters(self.datasetID)[batchID]

        # eTool:AEvalTool
        selector, eTool = self.getParameters()[jobID]

        rIDs, rDescs = InputRecomMLDefinition.exportPairOfRecomIdsAndRecomDescrs(
        )

        aDescDHont: AggregationDescription = InputAggrDefinition.exportADescDHondt(
            selector)

        pDescr: Portfolio1AggrDescription = Portfolio1AggrDescription(
            self.getBatchName() + jobID, rIDs, rDescs, aDescDHont)

        rIds: List[str] = pDescr.getRecommendersIDs()
        model: DataFrame = PModelHybrid(
            PModelDHondt(rIds), PModelDHondtPersonalisedStat(rIds), {
                PModelHybrid.ARG_MODE_SKIP: True,
                PModelHybrid.ARG_SKIP_CLICK_THRESHOLD: 3
            })

        simulator: Simulator = InputSimulatorDefinition().exportSimulatorML1M(
            batchID, divisionDatasetPercentualSize, uBehaviour, repetition)
        simulator.simulate([pDescr], [model], [eTool],
                           [HistoryHierDF(pDescr.getPortfolioID())])
def test01():
    print("Test 01")

    rIDs, rDescs = InputRecomRRDefinition.exportPairOfRecomIdsAndRecomDescrs()

    mGlobal: DataFrame = PModelDHondt(rIDs)
    mPerson: DataFrame = PModelDHondtPersonalisedStat(rIDs)
    mh: DataFrame = PModelHybrid(mGlobal, mPerson)
    mh.getModel(1)
def test01():
    print("Test 01")

    userID:int = 1
    clickedItemID:int = 101

    # methods parametes
    portfolioModelData1:List[tuple] = [['metoda1',100], ['metoda2',80], ['metoda3',60]]
    portfolioModel1:DataFrame = pd.DataFrame(portfolioModelData1, columns=["methodID","votes"])
    portfolioModel1.set_index("methodID", inplace=True)
    portfolioModel1.__class__ = PModelDHondt
    portfolioModel1.linearNormalizing()

    portfolioModelData2:List[tuple] = [['metoda1',0], ['metoda2',20], ['metoda3',40]]
    portfolioModel2:DataFrame = pd.DataFrame(portfolioModelData2, columns=["methodID","votes"])
    portfolioModel2.set_index("methodID", inplace=True)
    portfolioModel2.__class__ = PModelDHondt
    portfolioModel2.linearNormalizing()

    pModel:DataFrame = PModelHybrid(portfolioModel1, portfolioModel2)
    #print(pModel.getModelGlobal())
    #print(pModel.getModelPerson(userID))
    print()
    print("////////////////////////////////////////")
    print(pModel.getModel(userID))


    rItemIDsWithResponsibility:List[tuple] = [(clickedItemID, {'metoda1': 0.0, 'metoda2': 1.0, 'metoda3': 0.0})]

    eTool:AEvalTool = EToolHybrid({EvalToolDHondt.ARG_LEARNING_RATE_CLICKS:0.1,
                                   EvalToolDHondt.ARG_LEARNING_RATE_VIEWS:0.1/500, EvalToolDHondt.ARG_VERBOSE:False})
    eTool.click(userID, rItemIDsWithResponsibility, clickedItemID, pModel, {})

    print()
    print("////////////////////////////////////////")
    print(pModel.getModel(userID))