Uh oh!
There was an error while loading. Please reload this page.
Next/patch - #171
Conversation
FBumann
commented
Mar 6, 2025
@PStange Hier ist der Bugfix von fixed relative profile. |
PStange
commented
Jun 12, 2025
Das Problem scheint wieder aufzutreten. Ich habe in einem Beispiel verschiedene Lastgänge gegeben, aus welchen er einen auswählen soll. fixed_size=1 im Kombination mit fixed_relative_profile führt trotz optional=True nur zu der zulässigen Lösung, dass alle Lastgänge gewählt werden. Beispiel: for k in zeitreihen: |
FBumann
commented
Jun 12, 2025
Kannst du ein minimalbeispiel erstellen? |
FBumann
commented
Jun 12, 2025
Schau mal in #248 |
PStange
commented
Jun 13, 2025
Ich dächte auch, dass Du das schonmal gefixt hattest. Ich stelle noch ein Beispiel zusammen. |
Das läuft bei mir mit beiden optionen flixopt == 2.1.1 importnumpyasnpimportpandasaspdimportxarrayasxrimportflixoptasfxdeftest_cases(case: int):
timesteps=pd.date_range('2020-01-01', periods=10, freq='h', name='time')
flow_system=fx.FlowSystem(timesteps)
profile=np.sin(np.linspace(0, 2*np.pi, len(timesteps))) *0.5+0.5flow_system.add_elements(
fx.Effect('Costs', '€', 'Kosten', is_standard=True, is_objective=True),
fx.Bus('Fernwärme'),
fx.Sink(
'Sink',
sink=fx.Flow(
'Wärme',
bus='Fernwärme',
size=fx.InvestParameters(fixed_size=1, optional=True),
fixed_relative_profile=xr.DataArray(profile, coords=(timesteps,)),
)
)
)
calculation=fx.FullCalculation('GenericName', flow_system)
calculation.do_modeling()
calculation.model.add_constraints(calculation.model.variables['Sink(Wärme)|size'] ==case)
calculation.solve(fx.solvers.HighsSolver(0, 20))
print(f'{calculation.results.solution['Sink(Wärme)|size'].item()=}')
returncalculationif__name__=='__main__':
test_cases(1)
test_cases(0) |
PStange
commented
Jun 16, 2025
Bin noch nicht dazu gekommen, ein abgespecktes Beispiel zu bauen. Dieses hier bringt bei mir zunächst erstmal Fehlermeldungen: typing_extensions fehlt als moduleund danach xarray has no attribute DataTree. Ich teste das in einer virtuellen environment in Pycharm mit der aktuellen flixopt Version 2.1.2 (installiert per pip). Was funktionieren soll, ist, dass er die sink nicht nutzt. Dazu gibts ja keinen Grund in Deinem Beispiel (verursacht keine Kosten) und die ist bestimmt im Ergebnis dabei, oder? |
Hier ist ein Beispiel (relativ kompakt). Aufgrund desEffects Sanierung, darf nur eine sink ausgewählt werden. Das führt zu einem Fehler. Grund dafür ist, dass fixed_size ungleich Null und fixed_relative_profile meiner Meinung nach das Investment erzwingen, auch wenn optional=True. Setzt man die obere Grenze im Sanierungseffekt auf >2 läuft es (da dann beide sinks genutzt werden dürfen). importflixOptasfxdatetime_series=fx.create_datetime_array('2023-01-01', 2, freq='h')
Waerme=fx.Bus('Waerme')
Gesamtkosten=fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True)
Sanierung=fx.Effect('Sanierungsvariante', '-', 'Wahl_der_Sanierung', minimum_invest=0.9, maximum_invest=2.1)
Sanierung1=fx.Sink('San1',
sink=fx.Flow('Q_th',
bus=Waerme,
size=fx.InvestParameters(fix_effects={Gesamtkosten: 200, Sanierung:1},
fixed_size=1,
optional=True),
fixed_relative_profile=[1, 1],
)
)
Sanierung2=fx.Sink('San2',
sink=fx.Flow('Q_th',
bus=Waerme,
size=fx.InvestParameters(fix_effects={Gesamtkosten: 300, Sanierung:1},
fixed_size=1,
optional=True),
fixed_relative_profile=[2, 2],
)
)
Waermebezug=fx.Source('Waer',
source=fx.Flow('Q_th',
bus=Waerme,
size=100,
effects_per_flow_hour=0.15))
flow_system=fx.FlowSystem(datetime_series)
flow_system.add_effects(Gesamtkosten,Sanierung)
flow_system.add_components(Sanierung1,Sanierung2,Waermebezug)
calculation=fx.FullCalculation('fullModel', flow_system, 'pyomo')
calculation.do_modeling()
calculation.solve(fx.solvers.HighsSolver(time_limit_seconds=3600,mip_gap=0.05))
results=fx.results.CalculationResults(calculation.name, folder='results') |
Hallo @PStange, Irgendwas ist mit deiner installation falsch. importflixoptDas alte mit importflixOpt(großes O) Auch fx.create_datetime_array() und add_effects()gibt es nicht mehr. Schick mal was bei |
PStange
commented
Jun 17, 2025
dieses blöde "O" -> jetzt habe ich erstmal ganz andere Probleme |
PStange
commented
Jun 17, 2025
Ich bekomme mein Mini-Beispiel gerade nicht zum Laufen mit flixopt 2.1.1, aber wenn ich in deinem Test fix_effects in der Senke einfüge, müsste er diese doch eigentlich nicht nutzen, oder? |
No description provided.