max_loop=50, 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)))
use_selection=False, 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',
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 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 ]
] # Ordered minimized_attributes = { 'MPG': False, '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')
aimpoint = {'MPG': 4, 'Weight': 1000} filters = [{ 'attribute': 'MPG', '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',
Model(self.parameter + i, submodels[i]) for i in range(self.nb_solutions) ] 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')
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)
#!/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]),
support_annual_package=55000, hiring_cost=13000, main_geographic_area=America, name='USA') 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]),
piping1 = tuto.Piping(start=p1, end=p2, direction_start=vm.Vector3D(0, 0, 1), 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]) ]
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,
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()