Beispiel #1
0
        def __init__(self, viz):
            super(type(self), self).__init__(column=True)
            self.viz = viz
            self.ds = self.viz.state.ds
            column_names = self.ds.get_column_names()
            self.x = v.Select(items=column_names, v_model=self.viz.state.x_expression, label='x axis')
            widgets.link((self.viz.state, 'x_expression'), (self.x, 'v_model'))

            self.y = v.Select(items=column_names, v_model=self.viz.state.y_expression, label='y axis')
            widgets.link((self.viz.state, 'y_expression'), (self.y, 'v_model'))

            self.normalize = v.Checkbox(label='normalize', v_model=self.viz.normalize)
            widgets.link((self.viz, 'normalize'), (self.normalize, 'v_model'))
            

            self.children = [self.x, self.y, self.normalize]
Beispiel #2
0
    def __init__(self, label, tooltip, enum_color, clr, init_layer_val, layer_options, compute):

        self.check = v.Checkbox(v_on='tooltip.on', label=label, v_model=True , color='primary')
        self.check_widget = v.Tooltip(bottom=True, v_slots=[{'name': 'activator', 'variable': 'tooltip', 'children': self.check}],
                children=[tooltip])
       
        self.compute = compute
        self.enum_color = enum_color
        self.init_layer_val = init_layer_val
        self.layer_options = layer_options
        self.dropdown_widget = Dropdown(options=self.layer_options ,
                                        value=init_layer_val,
                                        disabled=False,
                                        layout={'width': '90px'}
                                        )
        self.dropdown_widget.observe(self.compute, names='value')
        self.dropdown_widget.observing = True
        self.clr = clr
Beispiel #3
0
        def __init__(self, viz):
            super(type(self), self).__init__(column=True)
            self.viz = viz
            self.ds = self.viz.state.ds
            column_names = self.ds.get_column_names()

            self.x = v.Select(items=column_names, v_model=self.viz.state.x_expression, label='x axis')
            widgets.link((self.viz.state, 'x_expression'), (self.x, 'v_model'))

            self.normalize = v.Checkbox(v_model=self.viz.normalize, label='normalize')
            widgets.link((self.viz, 'normalize'), (self.normalize, 'v_model'))

            self.min = widgets.FloatText(description='min')
            self.max = widgets.FloatText(description='max')
            widgets.link((self.viz.state, 'x_min'), (self.min, 'value'))
            widgets.link((self.viz.state, 'x_max'), (self.max, 'value'))
            
            self.shape = widgets.IntSlider(min=1, max=512, value=64, description='bins')
            widgets.link((self.viz.state, 'shape'), (self.shape, 'value'))

            self.bar_style = widgets.ToggleButtons(options=[('Stacked', 'stacked'), ('Grouped', 'grouped')], description='Bar style')
            widgets.link((self.viz. bar, 'type'), (self.bar_style, 'value'))

            self.children = [self.x, self.normalize, self.min, self.max, self.shape, self.bar_style]
Beispiel #4
0
    def initialize(self):
        """
        All ipyvuetify widgets to display for the model
        """

        self.namew = v.TextField(
            v_model=self.name,
            label="Name :",
            outlined=True,
            style_="margin-top:20px",
        )

        self.usesolver = v.Checkbox(
            v_model=True,
            label='Use solver',
            style_="margin-bottom:10px; margin-left:10px;",
        )

        if self.namew.v_model == 'model':
            self.namew.readonly = True

        self.linear = LinearSolver()

        self.nonlinear = NonLinearSolver()

        def disabled(widget, event, data):
            """
            Disabled linear & nonlinear solver widgets if you don't use it
            """

            if self.usesolver.v_model == False:
                self.linear.expansionPanel.disabled = True
                self.nonlinear.expansionPanel.disabled = True
            else:
                self.linear.expansionPanel.disabled = False
                self.nonlinear.expansionPanel.disabled = False

        self.usesolver.on_event("change", disabled)

        self.addMod = v.Btn(
            color="blue",
            elevation=4,
            style_="width:240px",
            outlined=True,
            children=["Add subgroup"],
        )

        def on_addMod_button_clicked(widget, event, data):
            """
            Display the widgets for each subgroup ( until 10 )
            """

            if (len(self.models) != 10):
                self.models.append(Model(self.name +
                                         str(len(self.models) + 1)))
                if (len(self.models) == 1):
                    self.models[0].display()
                elif (len(self.models) == 2):
                    self.models[1].display()
                elif (len(self.models) == 3):
                    self.models[2].display()
                elif (len(self.models) == 4):
                    self.models[3].display()
                elif (len(self.models) == 5):
                    self.models[4].display()
                elif (len(self.models) == 6):
                    self.models[5].display()
                elif (len(self.models) == 7):
                    self.models[6].display()
                elif (len(self.models) == 8):
                    self.models[7].display()
                elif (len(self.models) == 9):
                    self.models[8].display()
                elif (len(self.models) == 10):
                    self.models[9].display()
                    self.vbox.children = []

        self.addMod.on_event("click", on_addMod_button_clicked)

        self.vbox.children = [self.addMod]
Beispiel #5
0
    def initialize(self):
        """
        All ipyvuetify widgets to display for the driver
        """

        drive = driver.scipy_optimizer.ScipyOptimizeDriver()

        optimizers = v.Select(
            items=list(drive.options.__dict__["_dict"]["optimizer"].get("values")),
            v_model=drive.options.__dict__["_dict"]["optimizer"].get("value"),
            label="Optimizers :",
            outlined=True,
            style_="width:500px;margin-top:5px",
        )

        tol = v.TextField(
            v_model=drive.options.__dict__["_dict"]["tol"].get("value"),
            min=drive.options.__dict__["_dict"]["tol"].get("lower"),
            max=1,
            label="Tol :",
            type="number",
            outlined=True,
            style_="width:500px;margin-left:50px;margin-top:6px",
        )

        maxiter = v.TextField(
            v_model=drive.options.__dict__["_dict"]["maxiter"].get("value"),
            min=drive.options.__dict__["_dict"]["maxiter"].get("lower"),
            max=1000,
            label="Maxiter :",
            type="number",
            outlined=True,
        )

        disp = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["disp"].get("value"),
            label="Disp",
            style_="margin-left:50px",
        )

        def scipy_optimizer_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxgenerator.children[0].children = []
            self.vboxdoedriver.children[0].children = []
            self.vboxdoedriver.children[1].children = []
            self.vboxdriver.children[0].children = [optimizers, maxiter]
            self.vboxdriver.children[1].children = [tol, disp]


        drive = driver.differential_evolution_driver.DifferentialEvolutionDriver()


        maxgendiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["max_gen"].get("value"),
            min=0,
            max=1000,
            label="Max generations :",
            type='number',
            outlined=True,
            style_='width:500px;margin-top:5px'
        )

        popsizediff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["pop_size"].get("value"),
            min=0,
            max=100,
            label="Number of points in the GA :",
            type="number",
            outlined=True,
            style_='width:500px;margin-left:50px;margin-top:5px'
        )

        runparalleldiff = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"),
            label="Run parallel",
            style_='margin-bottom:20px'
        )

        procspermodeldiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"),
            min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"),
            max=100,
            label="Processors per model :",
            type="number",
            outlined=True,
            style_='width:500px;margin-left:50px'
        )

        penaltyparameterdiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["penalty_parameter"].get("value"),
            min=drive.options.__dict__["_dict"]["penalty_parameter"].get("lower"),
            max=100,
            label="Penalty parameter :",
            type="number",
            outlined=True,
            style_='width:500px'
        )

        penaltyexponentdiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["penalty_exponent"].get("value"),
            min=0,
            max=100,
            label="Penalty exponent :",
            type="number",
            outlined=True,
            style_='width:500px;margin-left:50px'
        )

        cross_probdiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["Pc"].get("value"),
            min=drive.options.__dict__["_dict"]["Pc"].get("lower"),
            max=drive.options.__dict__["_dict"]["Pc"].get("upper"),
            label="Crossover probability :",
            type="number",
            outlined=True,
            style_='width:500px'
        )

        diff_rate = v.TextField(
            v_model=drive.options.__dict__["_dict"]["F"].get("value"),
            min=drive.options.__dict__["_dict"]["F"].get("lower"),
            max=drive.options.__dict__["_dict"]["F"].get("upper"),
            label="Differential rate :",
            type="number",
            outlined=True,
            style_='width:500px;margin-left:50px'
        )

        multiobjweightsdiff = v.TextField(
            v_model="{}",
            label="Multi objective weights :",
            outlined=True,
            style_='width:500px'
        )

        multiobjexponentdiff = v.TextField(
            v_model=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("value"),
            min=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("lower"),
            max=100,
            label="Multi-objective weighting exponent :",
            type="number",
            outlined=True,
            style_='width:500px;margin-left:50px'
        )

        def differential_evolution_driver_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxgenerator.children[0].children = []
            self.vboxdoedriver.children[0].children = []
            self.vboxdoedriver.children[1].children = []
            self.vboxdriver.children[0].children = [maxgendiff, runparalleldiff, penaltyparameterdiff, cross_probdiff, multiobjweightsdiff]
            self.vboxdriver.children[1].children = [popsizediff, procspermodeldiff, penaltyexponentdiff, diff_rate, multiobjexponentdiff]

        def doe_driver_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxdriver.children[0].children = []
            self.vboxdriver.children[1].children = []

            drive = driver.doe_driver.DOEDriver()

            def onchangegenerator(widget, event, data):
                """
                A function which start the function you need for your generator
                """

                if data == "DOEGenerator":
                    doe_generator()
                elif data == "ListGenerator":
                    list_generator()
                elif data == "CSVGenerator":
                    csv_generator()
                elif data == "UniformGenerator":
                    uniform_generator()
                elif data == "_pyDOE_Generator":
                    pydoe_generator()
                elif data == "FullFactorialGenerator":
                    full_factorial_generator()
                elif data == "GeneralizedSubsetGenerator":
                    generalized_subset_generator()
                elif data == "PlackettBurmanGenerator":
                    plackett_burman_generator()
                elif data == "BoxBehnkenGenerator":
                    box_behnken_generator()
                elif data == "LatinHypercubeGenerator":
                    latin_hypercube_generator()

            self.generator = v.Select(
                items=[
                    "DOEGenerator",
                    "ListGenerator",
                    "CSVGenerator",
                    "UniformGenerator",
                    "_pyDOE_Generator",
                    "FullFactorialGenerator",
                    "GeneralizedSubsetGenerator",
                    "PlackettBurmanGenerator",
                    "BoxBehnkenGenerator",
                    "LatinHypercubeGenerator",
                ],
                v_model="DOEGenerator",
                label="Generator :",
                outlined=True,
                style_="width:500px;margin-top:5px",
            )

            self.vboxgenerator.children[0].children = [self.generator]
            self.generator.on_event("change", onchangegenerator)

            procspermodeldoe = v.TextField(
                v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"),
                min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"),
                max=100,
                label="Processors per model :",
                outlined=True,
                type='number',
                style_='width:500px;margin-top:5px'
            )

            runparalleldoe = v.Checkbox(
                v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"),
                label="Run parallel",
                outlined=True,
                type='number',
                style_='width:500px;margin-left:50px'
            )

            drive = driver.doe_generators.DOEGenerator()

            def doe_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [procspermodeldoe]
                self.vboxdoedriver.children[1].children = [runparalleldoe]

            drive = driver.doe_generators.ListGenerator()

            _data = v.TextField(
                v_model="[]",
                label="List of collections of name :",
                outlined=True,
                style_='width:500px;margin-top:5px'
            )

            def list_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_data, runparalleldoe]
                self.vboxdoedriver.children[1].children = [procspermodeldoe]


            _filename = v.TextField(
                label="File name  :",
                outlined=True,
                style_='width:500px;margin-top:5px'
            )

            def csv_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_filename, runparalleldoe]
                self.vboxdoedriver.children[1].children = [procspermodeldoe]

            drive = driver.doe_generators.UniformGenerator()

            _num_samples = v.TextField(
                v_model=drive.__dict__["_num_samples"],
                min=0,
                max=100,
                label="Number of samples :",
                outlined=True,
                type='number',
                style_='width:500px;margin-top:5px'
            )

            _seeduniform = v.TextField(
                v_model=drive.__dict__["_seed"],
                min=0,
                max=100,
                label="Seed :",
                outlined=True,
                type='number',
                style_='width:500px;margin-left:50px;margin-top:5px',
            )

            def uniform_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_num_samples, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_seeduniform, runparalleldoe]


            drive = driver.doe_generators._pyDOE_Generator()

            def onchangelevels(widget, event, data):
                """
                A function which change the type of the levels widget ( Int or Dict )
                """

                if self.generator.v_model == '_pyDOE_Generator':
                    drive = drive = driver.doe_generators._pyDOE_Generator()

                    if data == "Int":

                        _levelspydoe = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelspydoe = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe]

                elif self.generator.v_model == 'FullFactorialGenerator':
                    drive = driver.doe_generators.FullFactorialGenerator()

                    if data == "Int":

                        _levelsfull = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsfull = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe]

                elif self.generator.v_model == 'PlackettBurmanGenerator':
                    drive = driver.doe_generators.PlackettBurmanGenerator()

                    if data == "Int":

                        _levelsplackett = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsplackett = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe]

                elif self.generator.v_model == 'BoxBehnkenGenerator':
                    drive = driver.doe_generators.BoxBehnkenGenerator()

                    if data == "Int":

                        _levelsbox = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsbox = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsbox, procspermodeldoe]


            selectlevels = v.RadioGroup(
                children=[
                    v.Radio(label='Int', value='Int'),
                    v.Radio(label='Dict', value='Dict'),
                ],
                v_model="Int",
                label="Levels type  :",
            )

            selectlevels.on_event('change', onchangelevels)


            _levelspydoe = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizespy = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def pydoe_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizespy, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe]


            drive = driver.doe_generators.FullFactorialGenerator()

            _levelsfull = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizesfull = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def full_factorial_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesfull, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe]


            def generalized_subset_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [procspermodeldoe]
                self.vboxdoedriver.children[1].children = [runparalleldoe]

            drive = driver.doe_generators.PlackettBurmanGenerator()

            _levelsplackett = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizesplackett = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def plackett_burman_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesplackett, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe]


            drive = driver.doe_generators.BoxBehnkenGenerator()

            _levelsbox = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px;margin-left:50px'
            )

            _sizesbox = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            _center = v.TextField(
                v_model=drive.__dict__["_center"],
                min=0,
                max=100,
                label="Center  :",
                type='number',
                outlined=True,
                style_='width:500px;margin-top:5px;margin-left:50px'
            )

            def box_behnken_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesbox, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_levelsbox, _center, runparalleldoe]


            drive = driver.doe_generators.LatinHypercubeGenerator()

            _samples = v.TextField(
                v_model=drive.__dict__["_samples"],
                min=0,
                max=100,
                label="Number of samples to generate :",
                type='number',
                outlined=True,
                style_="width:500px;margin-top:5px",
            )

            _criterion = v.Select(
                items=["None", "center", "maximin", "centermaximin", "correlation"],
                v_model=drive.__dict__["_criterion"],
                label="Criterion :",
                outlined=True,
                style_="width:500px;margin-top:5px;margin-left:50px",
            )

            _iterations = v.TextField(
                v_model=drive.__dict__["_iterations"],
                min=0,
                max=100,
                label="Iterations  :",
                outlined=True,
                type='number',
                style_="width:500px;margin-top:5px",
            )

            _seedlatin = v.TextField(
                v_model=drive.__dict__["_seed"],
                min=0,
                max=100,
                label="Seed :",
                outlined=True,
                type='number',
                style_="width:500px;margin-top:5px;margin-left:50px",
            )

            def latin_hypercube_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_samples, _iterations, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_criterion, _seedlatin, runparalleldoe]

            doe_generator()


        drive = driver.genetic_algorithm_driver.SimpleGADriver()


        bits = v.TextField(
            v_model="{}",
            label="Number of bits of resolution :",
            outlined=True,
            style_='width:500px;margin-top:5px',
        )

        elitism = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["elitism"].get("value"),
            label="Elitism",
            style_='width:500px;margin-left:50px;margin-bottom:40px',
        )

        gray = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["gray"].get("value"),
            label="Gray",
            style_='width:500px;margin-bottom:20px',
        )

        crossbits = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["cross_bits"].get("value"),
            label="Cross bits",
            style_='width:500px;margin-left:50px;margin-bottom:20px',
        )

        maxgengenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["max_gen"].get("value"),
            min=0,
            max=1000,
            label="Number of generations :",
            type='number',
            outlined=True,
            style_='width:500px',
        )

        popsizegenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["pop_size"].get("value"),
            min=0,
            max=100,
            label="Number of points in the GA :",
            type='number',
            outlined=True,
            style_='width:500px;margin-left:50px',
        )

        runparallelgenetic = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"),
            label="Run parallel",
            style_='width:500px;margin-bottom:20px',
        )

        procspermodelgenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"),
            min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"),
            max=100,
            label="Processors per model :",
            type='number',
            outlined=True,
            style_='width:500px;margin-left:50px',
        )

        penaltyparametergenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["penalty_parameter"].get("value"),
            min=drive.options.__dict__["_dict"]["penalty_parameter"].get("lower"),
            max=100,
            label="Penalty parameter :",
            type='number',
            outlined=True,
            style_='width:500px',
        )

        penaltyexponentgenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["penalty_exponent"].get("value"),
            min=0,
            max=100,
            label="Penalty exponent :",
            type='number',
            outlined=True,
            style_='width:500px;margin-left:50px',
        )

        cross_probgenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["Pc"].get("value"),
            min=drive.options.__dict__["_dict"]["Pc"].get("lower"),
            max=drive.options.__dict__["_dict"]["Pc"].get("upper"),
            label="Crossover probability :",
            type='number',
            outlined=True,
            style_='width:500px',
        )

        mut_rate = v.TextField(
            v_model=drive.options.__dict__["_dict"]["Pm"].get("value"),
            min=drive.options.__dict__["_dict"]["Pm"].get("lower"),
            max=drive.options.__dict__["_dict"]["Pm"].get("upper"),
            label="Mutation rate :",
            type='number',
            outlined=True,
            style_='width:500px;margin-left:50px',
        )

        multiobjweightsgenetic = v.TextField(
            v_model="{}",
            label="Multi objective weights :",
            outlined=True,
            style_='width:500px',
        )

        multiobjexponentgenetic = v.TextField(
            v_model=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("value"),
            min=drive.options.__dict__["_dict"]["multi_obj_exponent"].get("lower"),
            max=100,
            label="Multi-objective weighting exponent :",
            type='number',
            outlined=True,
            style_='width:500px;margin-left:50px',
        )

        computepareto = v.Checkbox(
            v_model=drive.options.__dict__["_dict"]["compute_pareto"].get("value"),
            label="Compute pareto",
            style_='width:500px',
        )

        def genetic_algorithm_driver_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxgenerator.children[0].children = []
            self.vboxdoedriver.children[0].children = []
            self.vboxdoedriver.children[1].children = []
            self.vboxdriver.children[0].children = [bits, gray, maxgengenetic, runparallelgenetic, penaltyparametergenetic, cross_probgenetic, multiobjweightsgenetic, computepareto]
            self.vboxdriver.children[1].children = [elitism, crossbits, popsizegenetic, procspermodelgenetic, penaltyexponentgenetic, mut_rate, multiobjexponentgenetic]

        def pyoptsparse_driver_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxgenerator.children[0].children = []
            self.vboxdoedriver.children[0].children = []
            self.vboxdoedriver.children[1].children = []
            self.vboxdriver.children[0].children = []
            self.vboxdriver.children[1].children = []


        def onchange(widget, event, data):
            """
            A function which start the function you need for your driver
            """

            if data == "scipy_optimizer":
                scipy_optimizer_change()
            elif data == "differential_evolution_driver":
                differential_evolution_driver_change()
            elif data == "doe_driver":
                doe_driver_change()
            elif data == "genetic_algorithm_driver":
                genetic_algorithm_driver_change()
            elif data == "pyoptsparse_driver":
                pyoptsparse_driver_change()

        self.selectDriver = v.Select(
            items=[
                "differential_evolution_driver",
                "doe_driver",
                "genetic_algorithm_driver",
                "pyoptsparse_driver",
                "scipy_optimizer",
            ],
            v_model="scipy_optimizer",
            label="Driver :",
            outlined=True,
            style_="margin-top:5px",
        )

        self.selectDriver.on_event("change", onchange)


        panel = v.ExpansionPanel(
            children=[
                v.ExpansionPanelHeader(
                    color='#eaeaea',
                    children=['Driver'],
                    style_='margin-bottom:25px;'
                ),
                v.ExpansionPanelContent(
                    children=[self.selectDriver,self.vboxdriver,self.vboxgenerator,self.vboxdoedriver]
                ),
            ]
        )

        expansionPanel = v.ExpansionPanels(
            focusable=True,
            children=[panel],
        )

        display(expansionPanel)
        scipy_optimizer_change()
Beispiel #6
0
        def doe_driver_change():
            """
            Adapt widgets & vbox widgets to only display widgets you need in this driver
            """

            self.vboxdriver.children[0].children = []
            self.vboxdriver.children[1].children = []

            drive = driver.doe_driver.DOEDriver()

            def onchangegenerator(widget, event, data):
                """
                A function which start the function you need for your generator
                """

                if data == "DOEGenerator":
                    doe_generator()
                elif data == "ListGenerator":
                    list_generator()
                elif data == "CSVGenerator":
                    csv_generator()
                elif data == "UniformGenerator":
                    uniform_generator()
                elif data == "_pyDOE_Generator":
                    pydoe_generator()
                elif data == "FullFactorialGenerator":
                    full_factorial_generator()
                elif data == "GeneralizedSubsetGenerator":
                    generalized_subset_generator()
                elif data == "PlackettBurmanGenerator":
                    plackett_burman_generator()
                elif data == "BoxBehnkenGenerator":
                    box_behnken_generator()
                elif data == "LatinHypercubeGenerator":
                    latin_hypercube_generator()

            self.generator = v.Select(
                items=[
                    "DOEGenerator",
                    "ListGenerator",
                    "CSVGenerator",
                    "UniformGenerator",
                    "_pyDOE_Generator",
                    "FullFactorialGenerator",
                    "GeneralizedSubsetGenerator",
                    "PlackettBurmanGenerator",
                    "BoxBehnkenGenerator",
                    "LatinHypercubeGenerator",
                ],
                v_model="DOEGenerator",
                label="Generator :",
                outlined=True,
                style_="width:500px;margin-top:5px",
            )

            self.vboxgenerator.children[0].children = [self.generator]
            self.generator.on_event("change", onchangegenerator)

            procspermodeldoe = v.TextField(
                v_model=drive.options.__dict__["_dict"]["procs_per_model"].get("value"),
                min=drive.options.__dict__["_dict"]["procs_per_model"].get("lower"),
                max=100,
                label="Processors per model :",
                outlined=True,
                type='number',
                style_='width:500px;margin-top:5px'
            )

            runparalleldoe = v.Checkbox(
                v_model=drive.options.__dict__["_dict"]["run_parallel"].get("value"),
                label="Run parallel",
                outlined=True,
                type='number',
                style_='width:500px;margin-left:50px'
            )

            drive = driver.doe_generators.DOEGenerator()

            def doe_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [procspermodeldoe]
                self.vboxdoedriver.children[1].children = [runparalleldoe]

            drive = driver.doe_generators.ListGenerator()

            _data = v.TextField(
                v_model="[]",
                label="List of collections of name :",
                outlined=True,
                style_='width:500px;margin-top:5px'
            )

            def list_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_data, runparalleldoe]
                self.vboxdoedriver.children[1].children = [procspermodeldoe]


            _filename = v.TextField(
                label="File name  :",
                outlined=True,
                style_='width:500px;margin-top:5px'
            )

            def csv_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_filename, runparalleldoe]
                self.vboxdoedriver.children[1].children = [procspermodeldoe]

            drive = driver.doe_generators.UniformGenerator()

            _num_samples = v.TextField(
                v_model=drive.__dict__["_num_samples"],
                min=0,
                max=100,
                label="Number of samples :",
                outlined=True,
                type='number',
                style_='width:500px;margin-top:5px'
            )

            _seeduniform = v.TextField(
                v_model=drive.__dict__["_seed"],
                min=0,
                max=100,
                label="Seed :",
                outlined=True,
                type='number',
                style_='width:500px;margin-left:50px;margin-top:5px',
            )

            def uniform_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_num_samples, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_seeduniform, runparalleldoe]


            drive = driver.doe_generators._pyDOE_Generator()

            def onchangelevels(widget, event, data):
                """
                A function which change the type of the levels widget ( Int or Dict )
                """

                if self.generator.v_model == '_pyDOE_Generator':
                    drive = drive = driver.doe_generators._pyDOE_Generator()

                    if data == "Int":

                        _levelspydoe = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelspydoe = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe]

                elif self.generator.v_model == 'FullFactorialGenerator':
                    drive = driver.doe_generators.FullFactorialGenerator()

                    if data == "Int":

                        _levelsfull = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsfull = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe]

                elif self.generator.v_model == 'PlackettBurmanGenerator':
                    drive = driver.doe_generators.PlackettBurmanGenerator()

                    if data == "Int":

                        _levelsplackett = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsplackett = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe]

                elif self.generator.v_model == 'BoxBehnkenGenerator':
                    drive = driver.doe_generators.BoxBehnkenGenerator()

                    if data == "Int":

                        _levelsbox = v.TextField(
                            v_model=drive.__dict__["_levels"],
                            label="Levels  :",
                            min=0,
                            max=1000,
                            outlined=True,
                            type='number',
                            style_='width:500px;margin-top:27px'
                        )

                    elif data == "Dict":

                        _levelsbox = v.TextField(
                            v_model="[]",
                            label="Levels  :",
                            outlined=True,
                            style_='width:500px;margin-top:27px'
                        )

                    self.vboxdoedriver.children[1].children = [_levelsbox, procspermodeldoe]


            selectlevels = v.RadioGroup(
                children=[
                    v.Radio(label='Int', value='Int'),
                    v.Radio(label='Dict', value='Dict'),
                ],
                v_model="Int",
                label="Levels type  :",
            )

            selectlevels.on_event('change', onchangelevels)


            _levelspydoe = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizespy = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def pydoe_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizespy, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelspydoe, procspermodeldoe]


            drive = driver.doe_generators.FullFactorialGenerator()

            _levelsfull = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizesfull = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def full_factorial_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesfull, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelsfull, procspermodeldoe]


            def generalized_subset_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [procspermodeldoe]
                self.vboxdoedriver.children[1].children = [runparalleldoe]

            drive = driver.doe_generators.PlackettBurmanGenerator()

            _levelsplackett = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px'
            )

            _sizesplackett = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            def plackett_burman_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesplackett, runparalleldoe]
                self.vboxdoedriver.children[1].children = [_levelsplackett, procspermodeldoe]


            drive = driver.doe_generators.BoxBehnkenGenerator()

            _levelsbox = v.TextField(
                v_model=drive.__dict__["_levels"],
                label="Levels  :",
                min=0,
                max=1000,
                outlined=True,
                type='number',
                style_='width:500px;margin-top:27px;margin-left:50px'
            )

            _sizesbox = v.TextField(
                v_model=drive.__dict__["_sizes"],
                min=0,
                max=100,
                label="Sizes  :",
                outlined=True,
                type='number',
                style_='width:500px'
            )

            _center = v.TextField(
                v_model=drive.__dict__["_center"],
                min=0,
                max=100,
                label="Center  :",
                type='number',
                outlined=True,
                style_='width:500px;margin-top:5px;margin-left:50px'
            )

            def box_behnken_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [selectlevels, _sizesbox, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_levelsbox, _center, runparalleldoe]


            drive = driver.doe_generators.LatinHypercubeGenerator()

            _samples = v.TextField(
                v_model=drive.__dict__["_samples"],
                min=0,
                max=100,
                label="Number of samples to generate :",
                type='number',
                outlined=True,
                style_="width:500px;margin-top:5px",
            )

            _criterion = v.Select(
                items=["None", "center", "maximin", "centermaximin", "correlation"],
                v_model=drive.__dict__["_criterion"],
                label="Criterion :",
                outlined=True,
                style_="width:500px;margin-top:5px;margin-left:50px",
            )

            _iterations = v.TextField(
                v_model=drive.__dict__["_iterations"],
                min=0,
                max=100,
                label="Iterations  :",
                outlined=True,
                type='number',
                style_="width:500px;margin-top:5px",
            )

            _seedlatin = v.TextField(
                v_model=drive.__dict__["_seed"],
                min=0,
                max=100,
                label="Seed :",
                outlined=True,
                type='number',
                style_="width:500px;margin-top:5px;margin-left:50px",
            )

            def latin_hypercube_generator():
                """
                Adapt widgets & vbox widgets to only display widgets you need in this generator
                """

                self.vboxdoedriver.children[0].children = [_samples, _iterations, procspermodeldoe]
                self.vboxdoedriver.children[1].children = [_criterion, _seedlatin, runparalleldoe]

            doe_generator()