Package eu.planets_project.pp.plato.test.controller.sensitivity

Source Code of eu.planets_project.pp.plato.test.controller.sensitivity.AnalyseSensitivityMultipleAlternativesTest

/*******************************************************************************
* Copyright (c) 2006-2010 Vienna University of Technology,
* Department of Software Technology and Interactive Systems
*
* All rights reserved. This program and the accompanying
* materials are made available under the terms of the
* Apache License, Version 2.0 which accompanies
* this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package eu.planets_project.pp.plato.test.controller.sensitivity;

import java.util.List;
import java.util.Vector;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import eu.planets_project.pp.plato.bean.ResultNode;
import eu.planets_project.pp.plato.model.Alternative;
import eu.planets_project.pp.plato.model.aggregators.WeightedSum;
import eu.planets_project.pp.plato.model.tree.Node;
import eu.planets_project.pp.plato.sensitivity.IWeightModifier;
import eu.planets_project.pp.plato.sensitivity.SimpleIterativeWeightModifier;

public class AnalyseSensitivityMultipleAlternativesTest  {
   
    private Node root;
   
    private IWeightModifier weightModifier = new SimpleIterativeWeightModifier();
   
   
    private List<Alternative> alternatives = new Vector<Alternative>();
   
    SimpleLeaf sf1 = new SimpleLeaf();
    SimpleLeaf sf2 = new SimpleLeaf();
    SimpleLeaf sf3 = new SimpleLeaf();
   
    Alternative a1 = new Alternative("Alternative 1", "Alternative 1");
    Alternative a2 = new Alternative("Alternative 2", "Alternative 2");
    Alternative a3 = new Alternative("Alternative 3", "Alternative 3");
    Alternative a4 = new Alternative("Alternative 4", "Alternative 4");
    Alternative a5 = new Alternative("Alternative 5", "Alternative 5");
   
    @BeforeClass
    public void setUp() {
        alternatives.add(a1);
        alternatives.add(a2);
        alternatives.add(a3);
        alternatives.add(a4);
        alternatives.add(a5);
       
        root = new Node();
        root.addChild(sf1);
        root.addChild(sf2);
        root.addChild(sf3);
       
    }
    @Test
    public void testUnstableWeights() {
        double sf1Weight = 0.4;
        double sf2Weight = 0.25;
        double sf3Weight = 0.15;
       
        sf1.setResult(a1, 0.3/sf1Weight);
        sf1.setResult(a2, 0.4/sf1Weight);
        sf1.setResult(a3, 0.3/sf1Weight);
        sf1.setResult(a4, 0.4/sf1Weight);
        sf1.setResult(a5, 0.3/sf1Weight);
       
        sf2.setResult(a1, 1.2/sf2Weight);
        sf2.setResult(a2, 0.9/sf2Weight);
        sf2.setResult(a3, 0.9/sf2Weight);
        sf2.setResult(a4, 1.0/sf2Weight);
        sf2.setResult(a5, 0.8/sf2Weight);
       
        sf3.setResult(a1, 0.8/sf3Weight);
        sf3.setResult(a2, 0.9/sf3Weight);
        sf3.setResult(a3, 0.9/sf3Weight);
        sf3.setResult(a4, 0.7/sf3Weight);
        sf3.setResult(a5, 0.9/sf3Weight);
       
        sf1.setWeight(sf1Weight);
        sf2.setWeight(sf2Weight);
        sf3.setWeight(sf3Weight);
       
        ResultNode resultRoot = new ResultNode(root, new WeightedSum(), alternatives);
        resultRoot.analyseSensitivity(weightModifier,
                SensitivityAnalysisTestFactory.getSensitivityTest(root, new WeightedSum(), alternatives));
       
        assert(resultRoot.isSensitive());
    }
    @Test
    public void testYetUnstableWeights() {
        double sf1Weight = 1.0/3.0;
        double sf2Weight = 1.0/3.0;
        double sf3Weight = 1.0/3.0;
       
        sf1.setResult(a1, 1.54/sf1Weight);
        sf1.setResult(a2, 1.52/sf1Weight);
        sf1.setResult(a3, 1.5/sf1Weight);
        sf1.setResult(a4, 1.5/sf1Weight);
        sf1.setResult(a5, 1.5/sf1Weight);
       
        sf2.setResult(a1, 1.5/sf2Weight);
        sf2.setResult(a2, 1.5/sf2Weight);
        sf2.setResult(a3, 1.54/sf2Weight);
        sf2.setResult(a4, 1.52/sf2Weight);
        sf2.setResult(a5, 1.5/sf2Weight);
       
        sf3.setResult(a1, 1.5/sf3Weight);
        sf3.setResult(a2, 1.5/sf3Weight);
        sf3.setResult(a3, 1.5/sf3Weight);
        sf3.setResult(a4, 1.5/sf3Weight);
        sf3.setResult(a5, 1.54/sf3Weight);
       
        sf1.setWeight(sf1Weight);
        sf2.setWeight(sf2Weight);
        sf3.setWeight(sf3Weight);
       
        ResultNode resultRoot = new ResultNode(root, new WeightedSum(), alternatives);
        resultRoot.analyseSensitivity(weightModifier,
                SensitivityAnalysisTestFactory.getSensitivityTest(root, new WeightedSum(), alternatives));

        assert(resultRoot.isSensitive());
    }
   
    @Test
    public void testYetStableWeights() {
        double sf1Weight = 1.0/3.0;
        double sf2Weight = 1.0/3.0;
        double sf3Weight = 1.0/3.0;
       
        sf1.setResult(a1, 1.65/sf1Weight);
        sf1.setResult(a2, 1.6/sf1Weight);
        sf1.setResult(a3, 1.55/sf1Weight);
        sf1.setResult(a4, 1.5/sf1Weight);
        sf1.setResult(a5, 1.45/sf1Weight);
       
        sf2.setResult(a1, 1.5/sf2Weight);
        sf2.setResult(a2, 1.5/sf2Weight);
        sf2.setResult(a3, 1.5/sf2Weight);
        sf2.setResult(a4, 1.5/sf2Weight);
        sf2.setResult(a5, 1.5/sf2Weight);
       
        sf3.setResult(a1, 1.5/sf3Weight);
        sf3.setResult(a2, 1.5/sf3Weight);
        sf3.setResult(a3, 1.5/sf3Weight);
        sf3.setResult(a4, 1.5/sf3Weight);
        sf3.setResult(a5, 1.5/sf3Weight);
       
        sf1.setWeight(sf1Weight);
        sf2.setWeight(sf2Weight);
        sf3.setWeight(sf3Weight);
       
        ResultNode resultRoot = new ResultNode(root, new WeightedSum(), alternatives);
        resultRoot.analyseSensitivity(weightModifier,
                SensitivityAnalysisTestFactory.getSensitivityTest(root, new WeightedSum(), alternatives));

        assert(!resultRoot.isSensitive());
    }
   
    @Test
    public void testStableWeights() {
        double sf1Weight = 0.9;
        double sf2Weight = 0.05;
        double sf3Weight = 0.05;
       
        sf1.setResult(a1, 2.5/sf1Weight);
        sf1.setResult(a2, 2.0/sf1Weight);
        sf1.setResult(a3, 1.5/sf1Weight);
        sf1.setResult(a4, 1.0/sf1Weight);
        sf1.setResult(a5, 0.5/sf1Weight);
       
        sf2.setResult(a1, 0.1/sf2Weight);
        sf2.setResult(a2, 0.1/sf2Weight);
        sf2.setResult(a3, 0.1/sf2Weight);
        sf2.setResult(a4, 0.1/sf2Weight);
        sf2.setResult(a5, 0.1/sf2Weight);
       
        sf3.setResult(a1, 0.1/sf3Weight);
        sf3.setResult(a2, 0.1/sf3Weight);
        sf3.setResult(a3, 0.1/sf3Weight);
        sf3.setResult(a4, 0.1/sf3Weight);
        sf3.setResult(a5, 0.1/sf3Weight);
       
        sf1.setWeight(sf1Weight);
        sf2.setWeight(sf2Weight);
        sf3.setWeight(sf3Weight);
       
        ResultNode resultRoot = new ResultNode(root, new WeightedSum(), alternatives);
        resultRoot.analyseSensitivity(weightModifier,
                SensitivityAnalysisTestFactory.getSensitivityTest(root, new WeightedSum(), alternatives));

        assert(!resultRoot.isSensitive());
    }
   

}
TOP

Related Classes of eu.planets_project.pp.plato.test.controller.sensitivity.AnalyseSensitivityMultipleAlternativesTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.