Multi Objective Optimization

usman_ali
usman_ali New Altair Community Member
edited November 2024 in Community Q&A
 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.

Tagged:

Answers

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