переключать методы в объектах Монте-Карло с Brightway - PullRequest
0 голосов
/ 25 марта 2020

У меня проблемы с успешным применением 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

...