コード例 #1
0
    def createZSVariables(self):
        numVars = 0
        # the z variable is for each scenario
        for scenario in self.scenarios:

            # create zsp variable
            v1 = Variable()
            v1.type = Variable.v_zsp
            v1.name = "zsp_" + scenario.id
            v1.col = self.numCols
            v1.scenario = scenario.id
            self.variables[v1.name] = v1
            self.lp.variables.add(names=[v1.name])
            self.numCols += 1
            numVars += 1

            #create zsn variable
            v2 = Variable()
            v2.type = Variable.v_zsn
            v2.name = "zsn_" + scenario.id
            v2.col = self.numCols
            v2.scenario = scenario.id
            self.variables[v2.name] = v2
            self.lp.variables.add(names=[v2.name])
            self.numCols += 1
            numVars += 1

        return numVars
コード例 #2
0
    def createZSVariables(self):
        numVars = 0
        # the z variable is for each scenario
        for scenario in self.scenarios:

            # create zsp variable
            v1 = Variable()
            v1.type = Variable.v_zsp
            v1.name = "zsp_" + scenario.id
            v1.col = self.numCols
            v1.scenario = scenario.id
            self.variables[v1.name] = v1
            self.lp.variables.add(names=[v1.name])
            self.numCols += 1
            numVars += 1

            #create zsn variable
            v2 = Variable()
            v2.type = Variable.v_zsn
            v2.name = "zsn_" + scenario.id
            v2.col = self.numCols
            v2.scenario = scenario.id
            self.variables[v2.name] = v2
            self.lp.variables.add(names=[v2.name])
            self.numCols += 1
            numVars += 1

        return numVars
コード例 #3
0
 def createTimeIndexedVariable(self, name, v_type, coefficient=0.0, interval=1, lb=0.0, ub=1000000):
     numVars = 0
     for i in range(self.currentDay, self.finalDay, interval):
         v = Variable()
         v.name = name + str(i)
         v.col = self.numCols
         v.instant = i
         v.type = v_type
         self.variables[v.name] = v
         self.lp.variables.add(obj=[coefficient], lb=[lb], ub=[ub], names=[v.name])
         self.numCols += 1
         numVars += 1
     return numVars
コード例 #4
0
    def createZVariables(self):
        numVars = 0

        # create the zp variable
        v1 = Variable()
        v1.type = Variable.v_zp
        v1.name = "zp"
        v1.col = self.numCols
        self.variables[v1.name] = v1
        self.lp.variables.add(obj=[1.0], names=[v1.name])
        self.numCols += 1
        numVars += 1

        # create the zn variable
        v2 = Variable()
        v2.type = Variable.v_zn
        v2.name = "zn"
        v2.col = self.numCols
        self.variables[v2.name] = v2
        self.lp.variables.add(obj=[-1.0], names=[v2.name])
        self.numCols += 1
        numVars += 1

        return numVars
コード例 #5
0
    def createZVariables(self):
        numVars = 0

        # create the zp variable
        v1 = Variable()
        v1.type = Variable.v_zp
        v1.name = "zp"
        v1.col = self.numCols
        self.variables[v1.name] = v1
        self.lp.variables.add(obj=[1.0], names=[v1.name])
        self.numCols += 1
        numVars += 1

        # create the zn variable
        v2 = Variable()
        v2.type = Variable.v_zn
        v2.name = "zn"
        v2.col = self.numCols
        self.variables[v2.name] = v2
        self.lp.variables.add(obj=[-1.0], names=[v2.name])
        self.numCols += 1
        numVars += 1

        return numVars
コード例 #6
0
    def createRepositionVariable(self):
        numVars = 0
        repositionDays = [rDay for rDay in self.pData.repositionDays if rDay >= self.currentDay and rDay < self.finalDay]

        for i in repositionDays:
            v = Variable()
            v.name = "r" + str(i)
            v.col = self.numCols
            v.instant = i
            v.type = Variable.v_reposition
            self.variables[v.name] = v
            self.lp.variables.add(obj=[-params.unitCost], names=[v.name])
            self.numCols += 1
            numVars += 1
        return numVars
コード例 #7
0
 def createDemandVariable(self):
     numVars = 0
     t0 = self.currentDay
     for t in range(self.currentDay, self.finalDay):
         v = Variable()
         v.name = "d" + str(t)
         v.col = self.numCols
         v.instant = t
         v.type = Variable.v_demand
         demand = self.pData.getForecast(t0, t)
         self.variables[v.name] = v
         self.lp.variables.add(obj=[params.unitPrice], lb=[demand], ub=[demand], names=[v.name])
         self.numCols += 1
         numVars += 1
     return numVars
コード例 #8
0
    def createStockVariable(self):
        numVars = 0

        # the s variables are for each scenario and for each t of current horizon
        for scenario in self.scenarios:
            for t in range(self.currentDay, self.finalDay):
                # create the variable
                v = Variable()
                v.type = Variable.v_stock
                v.name = "s_" + scenario.id + "_" + str(t)
                v.col = self.numCols
                v.instant = t
                v.scenario = scenario.id
                self.variables[v.name] = v
                self.lp.variables.add(names=[v.name])
                self.numCols += 1
                numVars += 1

        return numVars
コード例 #9
0
    def createStockVariable(self):
        numVars = 0

        # the s variables are for each scenario and for each t of current horizon
        for scenario in self.scenarios:
            for t in range(self.currentDay, self.finalDay):
                # create the variable
                v = Variable()
                v.type = Variable.v_stock
                v.name = "s_" + scenario.id + "_" + str(t)
                v.col = self.numCols
                v.instant = t
                v.scenario = scenario.id
                self.variables[v.name] = v
                self.lp.variables.add(names=[v.name])
                self.numCols += 1
                numVars += 1

        return numVars
コード例 #10
0
    def createRepositionVariable(self):
        numVars = 0
        repositionDays = [rDay for rDay in self.pData.repositionDays if rDay >= self.currentDay and rDay < self.finalDay]

        # get the maximum forecast for using it as upper bound for r variable
        maxDemand = max(s.maxForecast for s in self.scenarios)

        # The reposition variable remains only for each t in the current planning horizon
        for i in repositionDays:
            v = Variable()
            v.type = Variable.v_reposition
            v.name = "r_" + str(i)
            v.col = self.numCols
            v.instant = i
            self.variables[v.name] = v
            self.lp.variables.add(names=[v.name])
            self.numCols += 1
            numVars += 1

        return numVars
コード例 #11
0
    def createRepositionVariable(self):
        numVars = 0
        repositionDays = [
            rDay for rDay in self.pData.repositionDays
            if rDay >= self.currentDay and rDay < self.finalDay
        ]

        # get the maximum forecast for using it as upper bound for r variable
        maxDemand = max(s.maxForecast for s in self.scenarios)

        # The reposition variable remains only for each t in the current planning horizon
        for i in repositionDays:
            v = Variable()
            v.type = Variable.v_reposition
            v.name = "r_" + str(i)
            v.col = self.numCols
            v.instant = i
            self.variables[v.name] = v
            self.lp.variables.add(names=[v.name])
            self.numCols += 1
            numVars += 1

        return numVars