Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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')
Exemple #4
0
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')
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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