<?xml version='1.0' encoding='utf-8'?>
<program_description>
	<program provider="oso" name="LearnMRSortMeta" version="1.0" displayName="LearnMRSortMeta" />
	<documentation>
		<description>The purpose of this webservice is to infer parameters of an ELECTRE TRI Bouyssou-Marchant model, also called MR-Sort model. It takes in input the categories and criteria of the model and examples of assignments. The user should also specify several parameters of the metaheuristic: the size of the population of models (nmodels), the number of iterations to do with the heuristic adjusting the profiles, and the number of iterations (niter_heur) of the main loop (niter_meta). The metaheuristic will try to find a MRSort model which is compatible with the highest number of examples given in input.</description>
		<contact><![CDATA[Olivier Sobrie (olivier.sobrie@gmail.com)]]></contact>
		<reference>Olivier Sobrie, Vincent Mousseau, Marc Pirlot: Learning a Majority Rule Model from Large Sets of Assignment Examples</reference>
	</documentation>
	<parameters>

		<input id="criteria" name="criteria" displayName="criteria" isoptional="0">
			<documentation>
				<description>The list of criteria of the model.</description>
			</documentation>
			<xmcda tag="criteria" />
		</input>

		<input id="alternatives" name="alternatives" displayName="alternatives" isoptional="0">
			<documentation>
				<description>The list of learning alternatives to use to learn the MR-Sort model.</description>
			</documentation>
			<xmcda tag="alternatives" />
		</input>

		<input id="categories" name="categories" displayName="categories" isoptional="0">
			<documentation>
				<description>The list of categories of the model and their rank</description>
			</documentation>
			<xmcda tag="categories" />
		</input>

		<input id="perfs_table" name="perfs_table" displayName="performanceTable" isoptional="0">
			<documentation>
				<description>The performance table of the learning alternatives.</description>
			</documentation>
			<xmcda tag="performanceTable" />
		</input>

		<input id="assign" name="assign" displayName="alternativesAssignments" isoptional="0">
			<documentation>
				<description>The assignments of the alternatives in the different categories.</description>
			</documentation>
			<xmcda tag="alternativesAffectations" />
		</input>

		<input id="params" name="params" displayName="params" isoptional="0">
			<documentation>
				<description>The parameters of the metaheuristic. 'nmodels': the size of the population; 'niter_heur': the number of iterations of the heuristic; 'niter_meta': the number of iterations of the main loop.</description>
			</documentation>
			<xmcda tag="methodParameters" />
		</input>

		<input id="solver" name="solver" displayName="solver" isoptional="1">
			<documentation>
				<description>The solver to use. Currently CPLEX and GLPK are supported. In none specified, GLPK is used.</description>
			</documentation>
			<xmcda tag="methodParameters" />
		</input>

		<output id="compatible_alts_out" name="compatible_alts" displayName="compatibleAlternatives">
			<documentation>
				<description>The reference alternatives that are compatible with the profiles, weights and majority threshold computed by the webservice.</description>
			</documentation>
			<xmcda tag="alternatives" />
		</output>

		<output id="profiles_perfs_out" name="profiles_perfs" displayName="profilesPerformances">
			<documentation>
				<description>The profiles performance table of the profiles computed by the webservice.</description>
			</documentation>
			<xmcda tag="performanceTable" />
		</output>

		<output id="crit_weights_out" name="crit_weights" displayName="criteriaWeights">
			<documentation>
				<description>The set of criteria weights found by the webservice.</description>
			</documentation>
			<xmcda tag="criteriaValues" />
		</output>

		<output id="cat_profiles_out" name="cat_profiles" displayName="categoriesProfiles">
			<documentation>
				<description>The category profiles computed by the webservice.</description>
			</documentation>
			<xmcda tag="categoriesProfiles" />
		</output>

		<output id="lambda_out" name="lambda" displayName="majorityThreshold">
			<documentation>
				<description>The majority threshold computed by the webservice.</description>
			</documentation>
			<xmcda tag="methodParameters" />
		</output>

		<output id="message" name="messages" displayName="messages">
			<documentation>
				<description>A list of messages generated by the webservice. In this output the result of the inference will be given. It gives informations on what might be wrong in the inputs.</description>
			</documentation>
			<xmcda tag="methodMessages" />
		</output>

	</parameters>
</program_description>
