Code Duplication    Length = 21-24 lines in 2 locations

src/oemof/solph/flows/_investment_flow_block.py 1 location

@@ 1129-1149 (lines=21) @@
1126
        else:
1127
            return 0
1128
1129
    def _minimum_investment_constraint(self):
1130
        """Constraint factory for a minimum investment"""
1131
        m = self.parent_block()
1132
1133
        def _min_invest_rule(_):
1134
            """Rule definition for applying a minimum investment"""
1135
            for i, o in self.NON_CONVEX_INVESTFLOWS:
1136
                for p in m.PERIODS:
1137
                    expr = (
1138
                        m.flows[i, o].investment.minimum[p]
1139
                        * self.invest_status[i, o, p]
1140
                        <= self.invest[i, o, p]
1141
                    )
1142
                    self.minimum_rule.add((i, o, p), expr)
1143
1144
        self.minimum_rule = Constraint(
1145
            self.NON_CONVEX_INVESTFLOWS, m.PERIODS, noruleinit=True
1146
        )
1147
        self.minimum_rule_build = BuildAction(rule=_min_invest_rule)
1148
1149
        return self.minimum_rule
1150
1151
    def _maximum_investment_constraint(self):
1152
        """Constraint factory for a maximum investment"""

src/oemof/solph/flows/_invest_non_convex_flow_block.py 1 location

@@ 338-361 (lines=24) @@
335
            + investment_costs
336
        )
337
338
    def _minimum_invest_constraint(self):
339
        r"""
340
        .. math::
341
                P_{invest, min} \cdot Y_{invest, status} \le P_{invest}
342
        """
343
        m = self.parent_block()
344
345
        def _min_invest_rule(_):
346
            """Rule definition for applying a minimum investment"""
347
            for i, o in self.OFFSET_INVEST_NON_CONVEX_FLOWS:
348
                for p in m.PERIODS:
349
                    expr = (
350
                        m.flows[i, o].investment.minimum[p]
351
                        * self.invest_status[i, o, p]
352
                        <= self.invest[i, o, p]
353
                    )
354
                    self.minimum_investment.add((i, o, p), expr)
355
356
        self.minimum_investment = Constraint(
357
            self.INVEST_NON_CONVEX_FLOWS, m.PERIODS, noruleinit=True
358
        )
359
        self.minimum_rule_build = BuildAction(rule=_min_invest_rule)
360
361
        return self.minimum_investment
362
363
    def _maximum_invest_constraint(self):
364
        r"""