def go_(model_name, queries, result_like, what_to_plot_res, what_to_plot_fun, fn): lib = MCDPLibrary() lib.add_search_dir('.') ndp = lib.load_ndp(model_name) data = solve_queries(ndp, queries, result_like) r = Report() plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) print('writing to %r' % fn) r.to_html(fn)
def go(lib): combinations = { "capacity": (np.linspace(50, 3000, 10), "Wh"), "missions": ( 1000, "[]"), } result_like = dict(maintenance="dimensionless", cost="USD", mass='kg') what_to_plot_res = result_like what_to_plot_fun = dict(capacity="Wh", missions="[]") ndp = lib.load_ndp('batteries') data = solve_combinations(ndp, combinations, result_like) r = Report() plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) r.to_html('out/batteries-c1.html')
def go2(lib): model_name = 'batteries_squash' combinations = { "capacity": (np.linspace(50, 3000, 10), "Wh"), "missions": (1000, "[]"), } result_like = dict(cost="USD", mass='kg') what_to_plot_res = result_like what_to_plot_fun = dict(capacity="Wh", missions="[]") ndp = lib.load_ndp(model_name) data = solve_combinations(ndp, combinations, result_like) r = Report() plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) r.to_html('out/batteries_squash-c2.html')
def go(): model_name = 'droneC' queries = [] def add(q): queries.append(q) n = 10 endurance = np.linspace(1, 20, n) payload = np.linspace(5, 50, n) for endurance, payload in zip(endurance, payload): q = { "num_missions": (1000, "[]"), "extra_power": (5, "W"), "extra_payload": (payload, "g"), "endurance": (endurance, "minutes"), } add(q) result_like = dict(total_cost="CHF", total_mass='kg') what_to_plot_res = result_like what_to_plot_fun = dict(extra_payload="g", endurance="minutes") librarian = Librarian() librarian.find_libraries('..') lib = librarian.load_library('droneC_cost_v1') ndp = lib.load_ndp(model_name) data = solve_queries(ndp, queries, result_like) r = Report() plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) fn = 'out/droneC_c1.html' print('writing to %r' % fn) r.to_html(fn)
def go(): fn = 'out/actuation_c1.html' model_name = 'actuation' queries = [] def add(q): queries.append(q) n = 10 lifts = np.linspace(0, 10.0, n) for lift, in zip(lifts): q = { "lift": (lift, "N"), } add(q) result_like = dict(power="W", cost='$') what_to_plot_res = result_like what_to_plot_fun = dict(lift="N") lib = MCDPLibrary() lib.add_search_dir('.') ndp = lib.load_ndp(model_name) data = solve_queries(ndp, queries, result_like) r = Report() plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) print('writing to %r' % fn) r.to_html(fn)
def report_plane2(data): matplotlib_settings() cs = CommonStats(data) r = Report() what_to_plot_res = dict(total_mass="kg", total_cost="USD") what_to_plot_fun = dict(endurance="Wh", extra_payload="g") plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) fig1 = dict(figsize=(3, 3)) fig2 = dict(figsize=(4, 4)) fnames = ('endurance', 'extra_payload') rnames = ('total_cost', 'total_mass') axis = (108, 145, 0.05, 0.8) axis2 = (105, 111.5, 0.05, 0.27) fs, rs = cs.iterate(fnames, rnames) colors = get_colors(len(fs)) f = r.figure() with f.plot('resources1', **fig1) as pylab: ieee_spines_zoom3(pylab) for i, ((f1, f2), resources) in enumerate(zip(fs, rs)): color = colors[i] if resources: marker = 'k.' else: marker = 'x' pylab.plot(f1, f2, marker, markerfacecolor=color, clip_on=False) pylab.xlabel('endurance [min]') pylab.ylabel('extra_payload [g]') # pylab.xticks([0, 30, 60, 90, 120]) set_axis_colors(pylab, color_functions, color_functions) params0 = dict(color_shadow=[1.0, 0.8, 0.8], markers='k.', markers_params={}) color_shadow = params0['color_shadow'] markers = params0['markers'] P = parse_poset('dimensionless x dimensionless') with f.plot('resources2', **fig2) as pylab: ieee_spines_zoom3(pylab) for i, resources in enumerate(rs): v = P.Us(resources) color = colors[i] plot_upset_R2(pylab, v, axis, extra_space_shadow=0, color_shadow=color, markers=markers, marker_params=dict(markerfacecolor=color)) pylab.ylabel('total mass [kg]') pylab.xlabel('total cost [USD]') pylab.xticks([110, 120, 130, 140, 150]) # pylab.yticks([0.2, 0.25, 0.3, 0.35]) set_axis_colors(pylab, color_resources, color_resources) pylab.axis(axis) rs_subset = rs[:3] with f.plot('resources3', **fig2) as pylab: ieee_spines_zoom3(pylab) for i, resources in enumerate(rs_subset): v = P.Us(resources) color = colors[i] plot_upset_R2(pylab, v, axis2, extra_space_shadow=0, color_shadow=color, markers=markers, marker_params=dict(markerfacecolor=color)) pylab.ylabel('total mass [kg]') pylab.xlabel('total cost [USD]') pylab.xticks([110, 110.5, 111,111.5,]) set_axis_colors(pylab, color_resources, color_resources) return r
def report(res): r = Report() dataL = res['dataL'] dataU = res['dataU'] what_to_plot_res = dict(total_cost="USD", total_mass='kg') what_to_plot_fun = dict(endurance="hour", extra_payload="g") queries = dataL['queries'] endurance = [q['endurance'] for q in queries] def get_value(data, field): for res in data['results']: a = to_numpy_array({field: 'kg'}, res) if len(a): a = min(a[field]) else: a = None yield a from matplotlib import pylab ieee_fonts_zoom3(pylab) markers = dict(markeredgecolor='none', markerfacecolor='black', markersize=6, marker='o') LOWER2 = dict(color='orange', linewidth=4, linestyle='-', clip_on=False) UPPER2 = dict(color='purple', linewidth=4, linestyle='-', clip_on=False) LOWER2.update(markers) UPPER2.update(markers) color_resources = '#700000' color_functions = '#007000' fig = dict(figsize=(4.5, 4)) with r.plot('total_mass', **fig) as pylab: ieee_spines_zoom3(pylab) total_massL = np.array(list(get_value(dataL, 'total_mass'))) total_massU = np.array(list(get_value(dataU, 'total_mass'))) print endurance print total_massL, total_massU pylab.plot(endurance, total_massL, **LOWER2) pylab.plot(endurance, total_massU, **UPPER2) set_axis_colors(pylab, color_functions, color_resources) pylab.xlabel('endurance [hours]') pylab.ylabel('total_mass [kg]') return r print('Plotting lower') with r.subsection('lower') as rL: plot_all_directions(rL, queries=dataL['queries'], results=dataL['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) print('Plotting upper') with r.subsection('upper') as rU: plot_all_directions(rU, queries=dataU['queries'], results=dataU['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) return r
def report_plane2(data): matplotlib_settings() cs = CommonStats(data) r = Report() what_to_plot_res = dict(total_mass="kg", total_cost="USD") what_to_plot_fun = dict(endurance="Wh", extra_payload="g") plot_all_directions(r, queries=data['queries'], results=data['results'], what_to_plot_res=what_to_plot_res, what_to_plot_fun=what_to_plot_fun) fig1 = dict(figsize=(3, 3)) fig2 = dict(figsize=(4, 4)) fnames = ('endurance', 'extra_payload') rnames = ('total_cost', 'total_mass') axis = (108, 145, 0.05, 0.8) axis2 = (105, 111.5, 0.05, 0.27) fs, rs = cs.iterate(fnames, rnames) colors = get_colors(len(fs)) f = r.figure() with f.plot('resources1', **fig1) as pylab: ieee_spines_zoom3(pylab) for i, ((f1, f2), resources) in enumerate(zip(fs, rs)): color = colors[i] if resources: marker = 'k.' else: marker = 'x' pylab.plot(f1, f2, marker, markerfacecolor=color, clip_on=False) pylab.xlabel('endurance [min]') pylab.ylabel('extra_payload [g]') # pylab.xticks([0, 30, 60, 90, 120]) set_axis_colors(pylab, color_functions, color_functions) params0 = dict(color_shadow=[1.0, 0.8, 0.8], markers='k.', markers_params={}) color_shadow = params0['color_shadow'] markers = params0['markers'] P = parse_poset('dimensionless x dimensionless') with f.plot('resources2', **fig2) as pylab: ieee_spines_zoom3(pylab) for i, resources in enumerate(rs): v = P.Us(resources) color = colors[i] plot_upset_R2(pylab, v, axis, extra_space_shadow=0, color_shadow=color, markers=markers, marker_params=dict(markerfacecolor=color)) pylab.ylabel('total mass [kg]') pylab.xlabel('total cost [USD]') pylab.xticks([110, 120, 130, 140, 150]) # pylab.yticks([0.2, 0.25, 0.3, 0.35]) set_axis_colors(pylab, color_resources, color_resources) pylab.axis(axis) rs_subset = rs[:3] with f.plot('resources3', **fig2) as pylab: ieee_spines_zoom3(pylab) for i, resources in enumerate(rs_subset): v = P.Us(resources) color = colors[i] plot_upset_R2(pylab, v, axis2, extra_space_shadow=0, color_shadow=color, markers=markers, marker_params=dict(markerfacecolor=color)) pylab.ylabel('total mass [kg]') pylab.xlabel('total cost [USD]') pylab.xticks([ 110, 110.5, 111, 111.5, ]) set_axis_colors(pylab, color_resources, color_resources) return r