Multi Objective Optimization

usman_aliusman_ali Member Posts: 2 Learner I
 Hello,

I am looking for the rapidminer solution to solve my following problem:

I have 10 number of inputs features and two numeric features are used for multi-objective 

Inputs 1...10 , Objective 1, Objective 2

My goal select features that have a minimum value of Objective 1 and  Objective 2.

For Example:
Select the building physics features that have a minimum energy cost and energy usage.

Currently, so far solution available online is used for classification algorithm but in my case objective variable is a simple numeric value.

Answers

  • lionelderkrikorlionelderkrikor Moderator, RapidMiner Certified Analyst, Member Posts: 676   Unicorn
    HI @usman_ali,

    Here an example of (simple) process using the "Golf" Dataset : 
    In this dataset, we can assimilate the "Temperature" and "Humidity" to your Objective 1 and 2 attributes
    and the 3 other attributes to your input 1 , 2, etc attributes.
    You can adapt this process to your own data : 
    <?xml version="1.0" encoding="UTF-8"?><process version="9.1.000-BETA2">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.1.000-BETA2" expanded="true" name="Process">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="2001"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="retrieve" compatibility="9.1.000-BETA2" expanded="true" height="68" name="Retrieve Golf" width="90" x="112" y="85">
            <parameter key="repository_entry" value="//Samples/data/Golf"/>
          </operator>
          <operator activated="true" class="filter_examples" compatibility="9.1.000-BETA2" expanded="true" height="103" name="Filter Examples" width="90" x="313" y="85">
            <parameter key="parameter_expression" value=""/>
            <parameter key="condition_class" value="custom_filters"/>
            <parameter key="invert_filter" value="false"/>
            <list key="filters_list">
              <parameter key="filters_entry_key" value="Temperature.eq.64\.0"/>
              <parameter key="filters_entry_key" value="Humidity.eq.65\.0"/>
            </list>
            <parameter key="filters_logic_and" value="false"/>
            <parameter key="filters_check_metadata" value="true"/>
          </operator>
          <connect from_op="Retrieve Golf" from_port="output" to_op="Filter Examples" to_port="example set input"/>
          <connect from_op="Filter Examples" from_port="example set output" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
        </process>
      </operator>
    </process>
    
    Hope it helps .. (if this process don't answer to your need, can you be more explicit by giving an example..)


    Regards,

    Lionel

  • usman_aliusman_ali Member Posts: 2 Learner I
    Thanks @lionelderkrikor for help.

    But I am looking for optimization algorithm solution.

    𝑥 = { 𝑋 wall , 𝑋 roof , 𝑋 ground , 𝑋 window , 𝑋 light , 𝑋 cool , 𝑋 heat }, in the solution space 𝑋,

    the objective are
    𝑍1 (x ∗) is energy cost
    𝑍2 (x ∗) is energy  consumption
     find the vector(s) 𝑥 ∗ that: Minimise: 𝑍(𝑥 ∗ ) = {𝑍1 (x ∗), 𝑍2 (x ∗)}  define the Pareto front

    So the goal is to get optimal space X values that to minimize the objective value and 
     
  • SGolbertSGolbert RapidMiner Certified Analyst, Member Posts: 225   Unicorn
    Hi,

    you need to have only one objective to be able to train a model on RM. The easiest option would be to sum the 2 objectives, i.e. Z3 := Z1 + Z2.

    Then you can train a model and use the model simulator to find the optimum:

    <?xml version="1.0" encoding="UTF-8"?><process version="9.1.000">
    <context>
    <input/>
    <output/>
    <macros/>
    </context>
    <operator activated="true" class="process" compatibility="9.1.000" expanded="true" name="Process">
    <parameter key="logverbosity" value="init"/>
    <parameter key="random_seed" value="2001"/>
    <parameter key="send_mail" value="never"/>
    <parameter key="notification_email" value=""/>
    <parameter key="process_duration_for_mail" value="30"/>
    <parameter key="encoding" value="SYSTEM"/>
    <process expanded="true">
    <operator activated="true" class="generate_data" compatibility="9.1.000" expanded="true" height="68" name="Generate Data" width="90" x="112" y="34">
    <parameter key="target_function" value="random"/>
    <parameter key="number_examples" value="100"/>
    <parameter key="number_of_attributes" value="5"/>
    <parameter key="attributes_lower_bound" value="-10.0"/>
    <parameter key="attributes_upper_bound" value="10.0"/>
    <parameter key="gaussian_standard_deviation" value="10.0"/>
    <parameter key="largest_radius" value="10.0"/>
    <parameter key="use_local_random_seed" value="false"/>
    <parameter key="local_random_seed" value="1992"/>
    <parameter key="datamanagement" value="double_array"/>
    <parameter key="data_management" value="auto"/>
    </operator>
    <operator activated="true" class="multiply" compatibility="9.1.000" expanded="true" height="103" name="Multiply" width="90" x="246" y="34"/>
    <operator activated="true" class="h2o:generalized_linear_model" compatibility="9.0.000" expanded="true" height="124" name="Generalized Linear Model" width="90" x="313" y="289">
    <parameter key="family" value="AUTO"/>
    <parameter key="link" value="family_default"/>
    <parameter key="solver" value="AUTO"/>
    <parameter key="reproducible" value="false"/>
    <parameter key="maximum_number_of_threads" value="4"/>
    <parameter key="use_regularization" value="true"/>
    <parameter key="lambda_search" value="false"/>
    <parameter key="number_of_lambdas" value="0"/>
    <parameter key="lambda_min_ratio" value="0.0"/>
    <parameter key="early_stopping" value="true"/>
    <parameter key="stopping_rounds" value="3"/>
    <parameter key="stopping_tolerance" value="0.001"/>
    <parameter key="standardize" value="true"/>
    <parameter key="non-negative_coefficients" value="false"/>
    <parameter key="add_intercept" value="true"/>
    <parameter key="compute_p-values" value="false"/>
    <parameter key="remove_collinear_columns" value="false"/>
    <parameter key="missing_values_handling" value="MeanImputation"/>
    <parameter key="max_iterations" value="0"/>
    <parameter key="specify_beta_constraints" value="false"/>
    <list key="beta_constraints"/>
    <parameter key="max_runtime_seconds" value="0"/>
    <list key="expert_parameters"/>
    </operator>
    <operator activated="true" class="model_simulator:model_simulator" compatibility="9.1.000" expanded="true" height="103" name="Model Simulator" width="90" x="581" y="34"/>
    <connect from_op="Generate Data" from_port="output" to_op="Multiply" to_port="input"/>
    <connect from_op="Multiply" from_port="output 1" to_op="Model Simulator" to_port="training data"/>
    <connect from_op="Multiply" from_port="output 2" to_op="Generalized Linear Model" to_port="training set"/>
    <connect from_op="Generalized Linear Model" from_port="model" to_op="Model Simulator" to_port="model"/>
    <connect from_op="Model Simulator" from_port="simulator output" to_port="result 1"/>
    <portSpacing port="source_input 1" spacing="0"/>
    <portSpacing port="sink_result 1" spacing="0"/>
    <portSpacing port="sink_result 2" spacing="0"/>
    </process>
    </operator>
    </process>

    If the problem is a bit more complex and you need to have all points of the Pareto front, AFAIK you have to look for another software (Python, R, Java, Matlab, etc.).

    Regards,
    Sebastian
Sign In or Register to comment.