<?xml version='1.0' encoding='utf-8'?>
<program_description>
  <program provider="PUT" name="ElectreIsFindKernel" version="0.2.0" displayName="ElectreIsFindKernel" />
  <documentation>
    <description>ElectreIsFindKernel - finds kernel of a graph (i.e. subset of best alternatives) according to the procedure used by the Electre Is method. The graph is generated from the outranking matrix provided as one of the input files.

This module provides two methods of cycle elimination: by cutting weakest edge (i.e. with the lowest weight) or by aggregation of the nodes, which is the default. In case of the former method, it is required to provide a credibility matrix as an additional input, since weights are derived from credibility indices. Please note that these two methods may give different results.</description>
    <url>http://github.com/xor-xor/electre_diviz</url>
  </documentation>
  <parameters>

    <input id="input1" name="alternatives" displayName="alternatives" isoptional="0">
      <documentation>
        <description>Alternatives to consider.</description>
      </documentation>
      <xmcda tag="alternatives" />
    </input>

    <input id="input2" name="credibility" displayName="credibility" isoptional="1">
      <documentation>
        <description>The credibility matrix for determining the weights of the generated graph. This input is required only if the 'cut_weakest' option is used for cycle elimination.</description>
      </documentation>
      <xmcda tag="alternativesComparisons" />
    </input>

    <input id="input3" name="outranking" displayName="outranking" isoptional="0">
      <documentation>
        <description>The outranking relations which should be used as a base for generated graph. This input should be provided in a 'crisp' form, i.e. it should contain only pairs where outranking occurs, but without assigning any explicit value (e.g. '1.0') to them. For example:

&lt;alternativesComparisons&gt;
  &lt;pairs&gt;
    &lt;pair&gt;
      &lt;initial&gt;
        &lt;alternativeID&gt;a01&lt;/alternativeID&gt;
      &lt;/initial&gt;
      &lt;terminal&gt;
        &lt;alternativeID&gt;a05&lt;/alternativeID&gt;
      &lt;/terminal&gt;
    &lt;/pair&gt;
    &lt;pair&gt;
      &lt;initial&gt;
        &lt;alternativeID&gt;a01&lt;/alternativeID&gt;
      &lt;/initial&gt;
      &lt;terminal&gt;
        &lt;alternativeID&gt;a06&lt;/alternativeID&gt;
      &lt;/terminal&gt;
    &lt;/pair&gt;
  &lt;/pairs&gt;
&lt;/alternativesComparisons&gt;</description>
      </documentation>
      <xmcda tag="alternativesComparisons" />
    </input>

    <input id="input4" name="method_parameters" displayName="method_parameters" isoptional="0">
      <documentation>
        <description>Method for cycle elimination. Please note that 'cut_weakest' method requires providing credibility matrix as an additional input.</description>
      </documentation>
      <xmcda tag="methodParameters"><![CDATA[
        
        <methodParameters>
          <parameter name="eliminate_cycles_method">
            <value>
              <label>%1</label>
            </value>
          </parameter>
        </methodParameters>
        
      ]]></xmcda>
      <gui status="preferGUI">
        <entry id="%1" type="enum" displayName="eliminate_cycles_method">
          <items>
            <item id="item0">
              <description>aggregate nodes</description>
              <value>aggregate</value>
            </item>
            <item id="item1">
              <description>cut weakest edge</description>
              <value>cut_weakest</value>
            </item>
          </items>
          <defaultValue>item0</defaultValue>
        </entry>
      </gui>
    </input>

    <output id="output1" name="kernel" displayName="kernel">
      <documentation>
        <description>Resulting kernel (i.e. subset of best alternatives).</description>
      </documentation>
      <xmcda tag="alternativesSets"><![CDATA[
        
      <alternativesSets>
        <alternativesSet mcdaConcept="kernel">
          <element>
            <alternativeID>[...]</alternativeID>
          </element>
          [...]
        </alternativesSet>
      </alternativesSets>
        
      ]]></xmcda>
    </output>

    <output id="output2" name="messages" displayName="messages">
      <documentation>
        <description>Messages or errors generated by this module.</description>
      </documentation>
      <xmcda tag="methodMessages" />
    </output>

  </parameters>
</program_description>
