Min / max of flow is ignored

Hello,
I am trying to figure out what kind of heat pump configuration will do best: several small ones, or one/two big ones.
So I am simulating 3 small ones, 3 middle ones and 2 big ones.
Usually the heat pumps will work from 70% of nominal_value on.
So far it works somehow OK.
BUT: a) it is ignoring the min value b) if I state minuptime it is ignored as well.

I have also activated relax_problem() to have some faster results.

Right now I do not even have a clue where to look for the error!

So, I would appreciate some hints!

wps = [
    {'name': 'a1', 'pmax': 5, 'var': 10, 'startup': 10 * 1.1, 'fixed_costs': SPECCOST * 5 * 1.1, 'cop': 3.0, 'pmin': 3},
    {'name': 'a2', 'pmax': 5, 'var': 10, 'startup': 10 * 1.2, 'fixed_costs': SPECCOST * 5 * 1.2, 'cop': 3.0, 'pmin': 3},
    {'name': 'a3', 'pmax': 5, 'var': 10, 'startup': 10 * 1.3, 'fixed_costs': SPECCOST * 5 * 1.3, 'cop': 3.0, 'pmin': 3},
    {'name': 'b1', 'pmax': 10, 'var': 20, 'startup': 20 * 1.1, 'fixed_costs': SPECCOST * 10 * 1.1, 'cop': 3.05, 'pmin': 6},
    {'name': 'b2', 'pmax': 10, 'var': 20, 'startup': 20 * 1.2, 'fixed_costs': SPECCOST * 10 * 1.2, 'cop': 3.05, 'pmin': 6},
    {'name': 'b3', 'pmax': 12, 'var': 20, 'startup': 20 * 1.3, 'fixed_costs': SPECCOST * 12 * 1.3, 'cop': 3.05, 'pmin': 6},
    {'name': 'c1', 'pmax': 15, 'var': 19, 'startup': 30 * 1.1, 'fixed_costs': SPECCOST * 15 * 1.1, 'cop': 3.1, 'pmin': 10},
    {'name': 'c2', 'pmax': 15, 'var': 22, 'startup': 30 * 1.2, 'fixed_costs': SPECCOST * 15 * 1.2, 'cop': 3.1, 'pmin': 10}
]

# Add heat pumps to the energy system
for wp in wps:
    f_kw = 1 - 1 / wp['cop']
    f_sn = 1 / wp['cop']
    wpn = f"Klarwasserwaermepumpe_{wp['name']}"
    P_el_max=wp['pmax']*f_sn
    activity_costs=wp['fixed_costs']

    tmp_output_flow = solph.Flow(
        nominal_value=wp['pmax'],
        variable_costs=wp['var'],
        min=0.7,max=1,
        nonconvex=solph.NonConvex(startup_costs=wp['startup'], activity_costs=activity_costs,minimum_uptime=4,minimum_downtime=4)
    )

    converter = solph.components.Converter(
        label=wpn,
        inputs={b_klarwasser: solph.Flow(), b_stromnetz: solph.Flow(variable_costs=220, nominal_value=60)},
        outputs={b_fw_netz: tmp_output_flow},
        conversion_factors={b_klarwasser: f_kw, 
                            b_stromnetz: f_sn},
        
    )

    energysystem.add(converter)

energysystem_model = solph.Model(energysystem)
energysystem_model.relax_problem()
energysystem_model.solve(solver=SOLVER, solve_kwargs={"tee": True})

oemof.solph v0.56

1 Like