"""
Created on Tue May 18 13:11:55 2021

@author: dasilva
"""
import tutorials.tutorial10 as objects
import dessia_common.workflow as wf

# from dessia_api_client import Client
import numpy as np
from dessia_common.typings import MethodType

block_generator = wf.InstanciateModel(objects.GearBoxGenerator,
                                      name='Gearbox Generator')
block_generate = wf.ModelMethod(MethodType(class_=objects.GearBoxGenerator,
                                           name='generate'),
                                name='Generate')
block_efficiencymap = wf.InstanciateModel(objects.EfficiencyMap,
                                          name='Efficiency Map')
block_engine = wf.InstanciateModel(objects.Engine, name='Engine')
block_gearbox = wf.InstanciateModel(objects.GearBox, name='Gearbox')
block_cluster = wf.InstanciateModel(objects.Clustering, name='Clustering')

display = wf.Display(name='Display')

block_workflow = [
    block_generator, block_generate, block_gearbox, block_engine,
    block_efficiencymap, block_cluster, display
]
pipe_workflow = [
    wf.Pipe(block_generator.outputs[0], block_generate.inputs[0]),
                        soc_end=0.2*59.5*3600,
                        use_selection=True,
                        name='WLTP profile')

comb_profile_wltp = electrical.CombinationPowerProfile([wltp_bat], name='wltp_profil')
comb_profile_load = electrical.CombinationPowerProfile([load_bat], name='load_profil')
comb_profile_end = electrical.CombinationPowerProfile([end_bat], name='end_soc_profil')

# =============================================================================
# Electrical Optimizer
# =============================================================================

input_values = {}
blocks = []
block_ebo = wf.InstanciateModel(eo.ElecBatteryOptimizer, name='ElecBatteryOptimizer')
optimize_ebo = wf.ModelMethod(eo.ElecBatteryOptimizer, 'Optimize',  name='Optimize-ElecBatteryOptimizer')
attribute_selection_ebo = wf.ModelAttribute('powerpack_electric_simulators')


blocks.extend([block_ebo, optimize_ebo, attribute_selection_ebo])
pipes = [wf.Pipe(block_ebo.outputs[0], optimize_ebo.inputs[0]),
         wf.Pipe(optimize_ebo.outputs[1], attribute_selection_ebo.inputs[0])
         ]

# =============================================================================
# Thermal specs
# =============================================================================
altitude = 0.1
evol_power1 = electrical.Evolution(evolution = list(npy.linspace(0, 5., 10)))
evol_power2 = electrical.Evolution(evolution = list(npy.linspace(0, 6., 10)))
evol_h_min1 = electrical.Evolution(evolution = [0 + 0.3*1e1*p/(p + 0.1)/2. for p in npy.linspace(0, 1, 10)])
    'operator': 'gte',
    'bound': 10
}, {
    'attribute': 'MPG',
    'operator': 'lte',
    'bound': 35
}]

# Blocks
import_csv = wf.Import(type_='csv')
instantiate_pareto = wf.InstanciateModel(model_class=ParetoSettings,
                                         name='Pareto Settings')
instantiate_catalog = wf.InstanciateModel(model_class=Catalog,
                                          name='Cars Instantiation')
filter_method = wf.ModelMethod(model_class=Catalog,
                               method_name='filter_',
                               name='Filters')
filtered_catalog = wf.InstanciateModel(model_class=Catalog,
                                       name='Filtered Catalog')
display = wf.Display(order=0, name="Display")
# display = wf.MultiPlot(choice_args, 1, name='Display')
filtered = wf.Display(order=1, name="Filtered")
# filtered = wf.MultiPlot(choice_args, 1, name='Filtered')
# objectives_method = wf.ModelMethod(model_class=Catalog,
#                                    method_name='find_best_objective',
#                                    name="Find best objectives")
# objectives_attributes = wf.ModelAttribute(attribute_name='objectives',
#                                           name='Objectives')

blocks = [
    import_csv, instantiate_pareto, instantiate_catalog, filter_method,
    name='WLTP profile')

comb_profile_wltp = electrical.CombinationPowerProfile([wltp_bat],
                                                       name='wltp_profil')
comb_profile_load = electrical.CombinationPowerProfile([load_bat],
                                                       name='load_profil')
comb_profile_end = electrical.CombinationPowerProfile([end_bat],
                                                      name='end_soc_profil')

# =============================================================================
# Electrical Optimizer
# =============================================================================
input_values = {}
blocks = []
block_ebo = wf.InstanciateModel(eo.ElecBatteryOptimizer, name='EBO')
optimize_ebo = wf.ModelMethod(eo.ElecBatteryOptimizer, 'Optimize',
                              'Optimize EBO')
attribute_selection_ebo = wf.ModelAttribute('powerpack_electric_simulators',
                                            'Attribute Selection EBO')

filters = [{
    'attribute': 'bms.battery.number_module_parallel',
    'operator': 'gt',
    'bound': 2
}, {
    'attribute': 'bms.battery.number_module_serie',
    'operator': 'lte',
    'bound': 10
}, {
    'attribute': 'bms.number_cells',
    'operator': 'gte',
    'bound': 750
import tutorials.pattern_generator as patterns
import dessia_common.workflow as wf

from dessia_api_client import Client
from dessia_common.typings import MethodType

block_generator = wf.InstanciateModel(patterns.PatternGenerator,
                                      name='Pattern Generator')
block_generate = wf.ModelMethod(MethodType(class_=patterns.PatternGenerator,
                                           name='generate'),
                                name='Generate')

list_attribute = [
    'minor_axis_size_in_mm', 'excentricity', 'clearence', 'piece_diameter'
]
display = wf.MultiPlot(list_attribute, order=1, name='Display')

# display = wf.Display(name='Display')

block_workflow = [block_generator, block_generate]

pipe_workflow = [
    wf.Pipe(block_generator.outputs[0], block_generate.inputs[0]),
    wf.Pipe(block_generate.outputs[0], display.inputs[0])
]

workflow = wf.Workflow(block_workflow, pipe_workflow,
                       block_generate.outputs[0])

list_diameters = [0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3]
excentricity_min_max = (0.6, 0.9)
Beispiel #6
0
    'Horsepower': True,
    'Weight': True,
    'Acceleration': False
}

aimpoint = {'MPG': 4, 'Weight': 1000}

filter_min = [{'attribute': 'MPG', 'operator': 'lte', 'bound': 20}]

# Blocks
import_csv = wf.Import(type_='csv')
instantiate_pareto = wf.InstanciateModel(model_class=ParetoSettings,
                                         name='Pareto Settings')
catalog1 = wf.InstanciateModel(model_class=Catalog, name='Cars 1')
filter1 = wf.ModelMethod(model_class=Catalog,
                         method_name='filter_',
                         name='Filter 1')
filtered_catalog1 = wf.InstanciateModel(model_class=Catalog,
                                        name='Filtered Catalog 1')

filter_max = [{'attribute': 'MPG', 'operator': 'gte', 'bound': 30}]
catalog2 = wf.InstanciateModel(model_class=Catalog, name='Car 2')
filter2 = wf.ModelMethod(model_class=Catalog,
                         method_name='filter_',
                         name='Filter 2')
filtered_catalog2 = wf.InstanciateModel(model_class=Catalog,
                                        name='Filtered Catalog 2')

catalogs = wf.Sequence(number_arguments=2, name='Catalogs')
concatenate = wf.ClassMethod(class_=Catalog,
                             method_name='concatenate',
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 29 11:52:37 2021

@author: dasilva
"""
import tutorials.tutorial9_simple_3ratios_gearbox as objects
import dessia_common.workflow as wf

# from dessia_api_client import Client
import numpy as np
from dessia_common.typings import MethodType

block_optimizer = wf.InstanciateModel(objects.GearBoxOptimizer, name='Gearbox Optimizer')
method_optimize = wf.ModelMethod(MethodType(class_ =objects.GearBoxOptimizer,name= 'optimize'), name='Optimize')

block_gearbox = wf.InstanciateModel(objects.GearBox, name='Gearbox')
block_engine = wf.InstanciateModel(objects.Engine, name= 'Engine')

block_efficiencymap = wf.InstanciateModel(objects.EfficiencyMap, name= 'Efficiency Map')
block_wltpcycle = wf.InstanciateModel(objects.WLTPCycle, name = 'WLTP Cycle')

list_attribute = ['average_fuel_consumption', 'average_engine_speed', 'average_engine_torque', 'ratio_min', 'ratio_max', 'average_ratio']
display = wf.MultiPlot(list_attribute, order = 1, name= 'Display')

block_workflow = [block_optimizer, method_optimize, block_gearbox, block_engine, block_efficiencymap, block_wltpcycle, display]
pipe_workflow = [wf.Pipe(block_optimizer.outputs[0], method_optimize.inputs[0]), 
                 wf.Pipe(block_gearbox.outputs[0], block_optimizer.inputs[0]),
                 wf.Pipe(block_wltpcycle.outputs[0], block_optimizer.inputs[1]), 
                 wf.Pipe(block_engine.outputs[0], block_gearbox.inputs[0]), 

class Optimizer(DessiaObject):
    def __init__(self, model_to_optimize: Model, name: str = ''):
        self.model_to_optimize = model_to_optimize

        DessiaObject.__init__(self, name=name)

    def optimize(self, optimization_value: int = 3) -> None:
        self.model_to_optimize.value += optimization_value


instanciate_generator = wf.InstanciateModel(model_class=Generator,
                                            name='Instantiate Generator')
generator_generate = wf.ModelMethod(model_class=Generator,
                                    method_name='generate',
                                    name='Generator Generate')
attribute_selection = wf.ModelAttribute(attribute_name='models',
                                        name='Attribute Selection')

# Subworkflow of model optimization
instanciate_optimizer = wf.InstanciateModel(model_class=Optimizer,
                                            name='Instantiate Optimizer')
optimization = wf.ModelMethod(model_class=Optimizer,
                              method_name='optimize',
                              name='Optimization')
model_fetcher = wf.ModelAttribute(attribute_name='model_to_optimize',
                                  name='Model Fetcher')

pipe1_opt = wf.Pipe(input_variable=instanciate_optimizer.outputs[0],
                    output_variable=optimization.inputs[0])
import tutorials.tutorial9_simple_3ratios_gearbox as objects
import dessia_common.workflow as wf
import numpy as np
# from dessia_api_client import Client



block_optimizer = wf.InstanciateModel(objects.GearBoxOptimizer, name='Gearbox Optimizer')

method_type_optimize = wf.MethodType(objects.GearBoxOptimizer,'optimize')
method_optimize = wf.ModelMethod(method_type_optimize, name='Optimize')

block_gearbox = wf.InstanciateModel(objects.GearBox, name='Gearbox')
block_engine = wf.InstanciateModel(objects.Engine, name= 'Engine')

block_efficiencymap = wf.InstanciateModel(objects.EfficiencyMap, name= 'Efficiency Map')
block_wltpcycle = wf.InstanciateModel(objects.WLTPCycle, name = 'WLTP Cycle')

list_attribute = ['average_fuel_consumption', 'average_engine_speed', 'average_engine_torque', 'ratio_min', 'ratio_max', 'average_ratio']
display = wf.MultiPlot(list_attribute, order = 1, name= 'Display')

block_workflow = [block_optimizer, method_optimize, block_gearbox, block_engine, block_efficiencymap, block_wltpcycle, display]
pipe_workflow = [wf.Pipe(block_optimizer.outputs[0], method_optimize.inputs[0]),
                 wf.Pipe(block_gearbox.outputs[0], block_optimizer.inputs[0]),
                 wf.Pipe(block_wltpcycle.outputs[0], block_optimizer.inputs[1]),
                 wf.Pipe(block_engine.outputs[0], block_gearbox.inputs[0]),
                 wf.Pipe(block_efficiencymap.outputs[0], block_engine.inputs[0]),
                 wf.Pipe(method_optimize.outputs[0], display.inputs[0])]

workflow = wf.Workflow(block_workflow, pipe_workflow, method_optimize.outputs[0])
Beispiel #10
0
Canada = bp.GeographicArea(market_size=1300000000, market_maturity=9, market_access_cost=0.846,
                           market_penetration=0.001, percentage_profit_center=0.0000115,
                           percentage_cost_center=0.00000224, sale_annual_package=64800, support_annual_package=54000,
                           hiring_cost=11000, main_geographic_area=America, name='Canada')
China = bp.GeographicArea(market_size=2500000000, market_maturity=10, market_access_cost=0.72, market_penetration=0.001,
                          percentage_profit_center=0.000007, percentage_cost_center=0.0000011,
                          sale_annual_package=30000, support_annual_package=27500, hiring_cost=7000,
                          main_geographic_area=Asia,
                          name='China')
Japan = bp.GeographicArea(market_size=900000000, market_maturity=4, market_access_cost=0.99, market_penetration=0.001,
                          percentage_profit_center=0.000011, percentage_cost_center=0.00000224,
                          sale_annual_package=72000, support_annual_package=55000, hiring_cost=13000,
                          main_geographic_area=Asia, name='Japan')

block_generator = wf.InstanciateModel(bp.MainRevenueGenerator, name='MainRevenueGenerator')
method_generate = wf.ModelMethod(bp.MainRevenueGenerator, 'decision_tree', name='generate')
block_optimizer = wf.InstanciateModel(bp.MainRevenueOptimizer, name='MainRevenueOptimizer')
method_minimize = wf.ModelMethod(bp.MainRevenueOptimizer, 'minimize', name='minimize')
method_sort = wf.ModelMethod(bp.MainRevenueOptimizer, 'sort_solutions', name='sort')

parallel_plot_block = wf.ParallelPlot(['last_margin', 'cumulative_cost', 'cumulative_revenue',
                                       'number_main_area', 'number_area',
                                       'last_revenue', 'strategy_txt', 'revenue_txt'])

blocks = []

blocks.extend([block_generator, method_generate, block_optimizer, method_minimize,
               method_sort, parallel_plot_block])

pipes = [wf.Pipe(block_generator.outputs[0], method_generate.inputs[0]),
         wf.Pipe(method_generate.outputs[0], method_minimize.inputs[1]),
Beispiel #11
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 23 12:36:10 2020

@author: launay
"""
import tutorials.tutorial2_powertransmission as objects
import dessia_common.workflow as wf
from dessia_common.typings import MethodType


block_optimizer = wf.InstantiateModel(objects.Optimizer, name='Optimizer')
method_type = MethodType(class_=objects.Optimizer, name='optimize')
block_optimize = wf.ModelMethod(method_type=method_type, name='Optimize')
block_instanciate_reductor = wf.InstantiateModel(objects.InstanciateReductor,
                                                 name='Instanciate Reductor')
method_type = MethodType(class_=objects.InstanciateReductor,
                         name='instanciate')
block_instanciate = wf.ModelMethod(method_type=method_type, name='Instanciate')

block_motor = wf.InstantiateModel(objects.Motor, name='Motor')

list_attribute1 = ['mass_reductor', 'number_solution']
display_reductor = wf.MultiPlot(list_attribute1, 1, name='Display Reductor')

block_workflow = [block_optimizer, block_optimize, block_instanciate_reductor,
                  block_instanciate, block_motor, display_reductor]

pipe_worflow = [wf.Pipe(block_optimizer.outputs[0], block_optimize.inputs[0]),
                wf.Pipe(block_instanciate_reductor.outputs[0],
Beispiel #12
0
                              direction_end=vm.Vector3D(1, 0, 1),
                              diameter=0.005,
                              length_connector=0.1,
                              minimum_radius=0.03)
        assemblies.append(
            tuto.Assembly(frames=[frame1, frame3, frame4, frame2],
                          piping=piping1,
                          housing=housing))

# opti1 = tuto.Optimizer()
# solutions = opti1.optimize(assemblies=[assembly1], number_solution_per_assembly=2)

block_optimizer = wf.InstanciateModel(tuto.Optimizer, name='Optimizer')

method_type_optimize = MethodType(tuto.Optimizer, 'optimize')
block_optimize = wf.ModelMethod(method_type_optimize, name='optimize')

list_attribute1 = [
    'length', 'min_radius', 'max_radius', 'distance_input', 'straight_line'
]
display_reductor = wf.ParallelPlot(list_attribute1, 1, name='Display')

block_workflow = [block_optimizer, block_optimize, display_reductor]

pipe_worflow = [
    wf.Pipe(block_optimizer.outputs[0], block_optimize.inputs[0]),
    wf.Pipe(block_optimize.outputs[0], display_reductor.inputs[0])
]

workflow = wf.Workflow(block_workflow,
                       pipe_worflow,
Beispiel #13
0
from dessia_common import workflow
import automotive.interior as interior

cockpit = workflow.TypedVariable(interior.Cockpit, name='Cockpit')

population_instanciator = workflow.ClassMethod(interior.Population,
                                               'random_population')

mark_cockpit = workflow.ModelMethod(interior.Population, 'mark_cockpit')
extremas = workflow.ModelMethod(interior.SeatErgonomyAnalysis, 'extremas')
interior_instanciator = workflow.InstanciateModel(
    interior.CarInterior)  #cockpit: 0

cockpit_pipe1 = workflow.Pipe(cockpit, mark_cockpit.inputs[1])
cockpit_pipe2 = workflow.Pipe(cockpit, interior_instanciator.inputs[0])
population_pipe = workflow.Pipe(population_instanciator.outputs[0],
                                mark_cockpit.inputs[0])
marks_pipe = workflow.Pipe(mark_cockpit.outputs[0], extremas.inputs[0])

passenger_pipe = workflow.Pipe(extremas.outputs[0],
                               interior_instanciator.inputs[4])

simple_analysis = workflow.Workflow([population_instanciator, mark_cockpit],
                                    [population_pipe],
                                    mark_cockpit.outputs[0],
                                    name='Simple analysis')

seat_analysis_workflow = workflow.Workflow(
    [population_instanciator, mark_cockpit, interior_instanciator, extremas],
    [
        population_pipe, marks_pipe, passenger_pipe, cockpit_pipe1,
Beispiel #14
0
import hello_dessia as hd
import dessia_common.workflow as wf
from dessia_api_client import Client

block_generator = wf.InstanciateModel(hd.Generator, name='Generator')
methode_generate = wf.ModelMethod(hd.Generator, 'generate', name='generate')
list_attribute = [
    'rivet_diameter', 'rivet_length', 'head_diameter', 'head_length', 'price',
    'mass'
]
display = wf.ParallelPlot(list_attribute, 1, name='Display')

block_workflow = [block_generator, methode_generate, display]

pipe_worflow = [
    wf.Pipe(block_generator.outputs[0], methode_generate.inputs[0]),
    wf.Pipe(methode_generate.outputs[0], display.inputs[0])
]
workflow = wf.Workflow(block_workflow, pipe_worflow,
                       methode_generate.outputs[0])
workflow_block = wf.WorkflowBlock(workflow=workflow, name='Workflow')

final_pipe_workflow = pipe_worflow + [
    wf.Pipe(methode_generate.outputs[1], workflow_block.inputs[0])
]
final_block_workflow = block_workflow + [workflow_block]
final_workflow = wf.Workflow(final_block_workflow,
                             final_pipe_workflow,
                             methode_generate.outputs[0],
                             name="")
# final_workflow.plot_jointjs()
Beispiel #15
0
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 23 12:36:10 2020

@author: launay
"""
import tutorials.tutorial1_rivetedassembly as tuto
import plot_data.core as plot_data
import volmdlr as vm
from dessia_api_client import Client
import dessia_common.workflow as wf

block_generator = wf.InstanciateModel(tuto.Generator, name='Generator')

generate_method = wf.MethodType(class_=tuto.Generator, name='generate')
block_generate = wf.ModelMethod(method_type=generate_method, name='generate')

list_attribute1 = [
    'number_rivet1', 'number_rivet2', 'number_rivet', 'mass',
    'pressure_applied', 'fatigue_resistance'
]
display_reductor = wf.MultiPlot(list_attribute1, 1, name='Display Reductor')

block_workflow = [block_generator, block_generate, display_reductor]

pipe_worflow = [
    wf.Pipe(block_generator.outputs[0], block_generate.inputs[0]),
    wf.Pipe(block_generate.outputs[0], display_reductor.inputs[0])
]

workflow = wf.Workflow(block_workflow, pipe_worflow, block_generate.outputs[0])