# rights in this software. # This software is distributed under the 3-clause BSD License. # ___________________________________________________________________________ import sys import os from pyomo.pysp.plugins.phhistoryextension import load_history import matplotlib.pylab as plt assert len(sys.argv) == 2 filename = sys.argv[1] assert os.path.exists(filename) scenario_tree, history, iterations = load_history(filename) for node_name, node in scenario_tree['nodes'].items(): # it's not a leaf node if len(node['children']): node_vars = history['0']['node solutions'][node_name]['variables'].keys() node_scenarios = node['scenarios'] node_avg_res = {} node_xbar_res = {} scen_res = {} # will produce 1 figure for each variable name in this list VARS_TO_SHOW = node_vars for varname in VARS_TO_SHOW:
fail_flag = False def flatten(d, parent_key=''): items = [] for k, v in d.items(): new_key = parent_key + '_' + k if parent_key else k if v and isinstance(v, collections.MutableMapping): items.extend(flatten(v, new_key).items()) else: items.append((new_key, v)) return dict(items) f1 = sys.argv[1] scenariotree1, history1, iter_keys1 = load_history(f1) f2 = sys.argv[2] scenariotree2, history2, iter_keys2 = load_history(f2) if scenariotree1 != scenariotree2: print("Scenario Tree Mismatch") fail_flag = True if iter_keys1 != iter_keys2: print("Total PH Iteration Mismatch: %s != %s" % (len(iter_keys1), len(iter_keys2))) fail_flag = True valid_iters = set(iter_keys1).intersection(iter_keys2) valid_iters = sorted([int(v) for v in valid_iters]) valid_iters = [str(k) for k in valid_iters]
_diff_tolerance = 1e-6 fail_flag = False def flatten(d, parent_key=''): items = [] for k, v in d.items(): new_key = parent_key + '_' + k if parent_key else k if v and isinstance(v, collections.MutableMapping): items.extend(flatten(v, new_key).items()) else: items.append((new_key, v)) return dict(items) f1 = sys.argv[1] scenariotree1, history1, iter_keys1 = load_history(f1) f2 = sys.argv[2] scenariotree2, history2, iter_keys2 = load_history(f2) if scenariotree1 != scenariotree2: print("Scenario Tree Mismatch") fail_flag = True if iter_keys1 != iter_keys2: print("Total PH Iteration Mismatch: %s != %s" % (len(iter_keys1), len(iter_keys2))) fail_flag = True valid_iters = set(iter_keys1).intersection(iter_keys2) valid_iters = sorted([int(v) for v in valid_iters]) valid_iters = [str(k) for k in valid_iters]