У меня проблемы с успешным применением switch_method
к объектам Монте-Карло. Я пытаюсь перейти от метода с неопределенностью к методу без неопределенности в системе продуктов без неопределенности, и все равно получаю неопределенные результаты.
Приведем пример:
pm25_key=('biosphere3', '051aaf7a-6c1a-4e86-999f-85d5f0830df6')
# uncertain method
cfs=[(pm25_key,{"amount": 10,
"uncertainty type": 4,
"minimum": 0,
"maximum": 20}),]
test_method_name_1=('test method Stackoverflow','1 unspecified')
test_method_1=bw.Method(test_method_name_1)
metadata_test_method={'description':'method with 1 uncertain CF',
'unit':'DALY'}
test_method_1.register(**metadata_test_method)
test_method_1.write(cfs)
# static method
cfs2=[(pm25_key,10)]
test_method_name_2=('test method Stackoverflow','0 unspecified')
test_method_2=bw.Method(test_method_name_2)
metadata_test_method={'description':'method with 0 uncertain CF',
'unit':'DALY'}
test_method_2.register(**metadata_test_method)
test_method_2.write(cfs2)
определить простую систему продуктов без неопределенность
# test activities
act1_key=('test_so','activity_1')
biosphere_exchange_1={'amount':1,
'input':pm25_key,
'output':act1_key,
'type':'biosphere',
'uncertainty type': 0}
production_exchange_1={'amount':1,
'input':act1_key,
'output':act1_key,
'type':'production',
'uncertainty type':0}
act_1_dict={'name':'test_activity_1',
'unit':'megajoule',
'exchanges':[production_exchange_1,biosphere_exchange_1]}
# activity 2
act2_key=('test_so','activity_2')
production_exchange_2={'amount':1,
'input':act2_key,
'output':act2_key,
'type':'production',
'uncertainty type':0}
technosphere_exchange_1={'amount':10,
'input':act1_key,
'output':act2_key,
'type':'technosphere',
'uncertainty type':0}
act_2_dict={'name':'test_activity_2',
'unit':'megajoule',
'exchanges':[production_exchange_2,technosphere_exchange_1]}
database_dict={act1_key:act_1_dict,
act2_key:act_2_dict}
db=bw.Database('test_so')
db.write(database_dict)
mc=bw.MonteCarloLCA({('test_so','activity_2'):1},('test method Stackoverflow','1 unspecified'))
next(mc)
next(mc)
Я получаю разные результаты, хорошо
# now try to switch method
mc.switch_method(('test method Stackoverflow','0 unspecified'))
next(mc)
next(mc)
Я все еще получаю разные результаты
mc.redo_lcia()
next(mc) # still uncertain
mc.load_lcia_data()
mc.characterization_matrix.toarray() # this shows a CF of 10 (as expected)
но я продолжаю делать next(mc)
I продолжайте получать разные результаты, когда в теории я переключился на метод без неопределенности, и у меня нет неопределенности в матрицах A или B ... вы знаете, где проблема? Я использую Brightway версии 2,3. с версией 3.6.2 bw2data и 1.8.0 bw2cal c