Package trust.jfcm.examples

Source Code of trust.jfcm.examples.MedicalVisit

package trust.jfcm.examples;


import java.text.NumberFormat;
import java.util.Locale;
import java.io.InputStream;

import trust.jfcm.*;
import trust.jfcm.utils.FcmIO;
import trust.jfcm.utils.FcmRunner;
import trust.jfcm.utils.SimpleFcmRunner;





public class MedicalVisit {
 
  FcmRunner runner;
  CognitiveMap map;
 
  public MedicalVisit() {
    //String fcm_xml = "sociocog-trust.fcm-Emergency.xml";
    String fcm_xml = "sociocog-trust.fcm-Routine.xml";
   
    try{
      InputStream xmlStream = getClass().getResourceAsStream(fcm_xml);
      map = FcmIO.loadMapFromXml(xmlStream).get("sociocog-trust-tanh");
      //map = FcmIO.loadMapFromXml(xmlStream).get("sociocog-trust-sigmoid");
      runner = new SimpleFcmRunner(map, 0.000001, 1000);
      System.out.println(map);
     
      System.out.println("Trying to clone map...");
      map = (CognitiveMap) map.clone();
      runner = new SimpleFcmRunner(map, 0.000001, 1000);
     
      System.out.println(map);
     
    } catch(Exception e){
      // TODO Auto-generated catch block
      System.out.println("The resource:\'" + fcm_xml + "\'  could not be located ");
      e.printStackTrace();
    }   
  }
 
  /**
   * Scenario for the Medical Doctor Pag 320
   * @throws Exception
   */
  public void set_scenario_Doctor() throws Exception {
    map.resetConcepts();
   
    //BELIEFS
    //check if node ability exists
    if(map.getConcepts().containsKey("ability")){
      map.getConcepts().get("ab_de").setOutput(0.3);
      map.getConcepts().get("ab_de").setFixedOutput(true);
     
      map.getConcepts().get("ab_c").setOutput(0.7);
      map.getConcepts().get("ab_c").setFixedOutput(true);
     
      map.getConcepts().get("ab_r").setOutput(0.0);
      map.getConcepts().get("ab_r").setFixedOutput(true);
     
      map.getConcepts().get("ab_o_r").setOutput(0.0);
      map.getConcepts().get("ab_o_r").setFixedOutput(true);
    }
   
    //check if node availability exists
    if(map.getConcepts().containsKey("availability")){
      map.getConcepts().get("av_de").setOutput(-0.3);
      map.getConcepts().get("av_de").setFixedOutput(true);
     
      map.getConcepts().get("av_c").setOutput(0.0);
      map.getConcepts().get("av_c").setFixedOutput(true);
     
      map.getConcepts().get("av_r").setOutput(0.0);
      map.getConcepts().get("av_r").setFixedOutput(true);
     
      map.getConcepts().get("av_o_r").setOutput(0.0);
      map.getConcepts().get("av_o_r").setFixedOutput(true);
    }
   
    //check if node unharmfulness exists
    if(map.getConcepts().containsKey("unharmfulness")){
      map.getConcepts().get("un_de").setOutput(-0.2);
      map.getConcepts().get("un_de").setFixedOutput(true);
     
      map.getConcepts().get("un_c").setOutput(0.0);
      map.getConcepts().get("un_c").setFixedOutput(true);
     
      map.getConcepts().get("un_r").setOutput(0.0);
      map.getConcepts().get("un_r").setFixedOutput(true);
     
      map.getConcepts().get("un_o_r").setOutput(0.0);
      map.getConcepts().get("un_o_r").setFixedOutput(true);
    }
   
    //check if node opportunity exists
    if(map.getConcepts().containsKey("opportunity")){
      map.getConcepts().get("op_de").setOutput(0.0);
      map.getConcepts().get("op_de").setFixedOutput(true);
     
      map.getConcepts().get("op_c").setOutput(0.0);
      map.getConcepts().get("op_c").setFixedOutput(true);
     
      map.getConcepts().get("op_r").setOutput(0.2);
      map.getConcepts().get("op_r").setFixedOutput(true);
     
      map.getConcepts().get("op_o_r").setOutput(0.0);
      map.getConcepts().get("op_o_r").setFixedOutput(true);
    }
   
    // check if node danger exists
    if(map.getConcepts().containsKey("danger")){
      map.getConcepts().get("da_de").setOutput(0.0);
      map.getConcepts().get("da_de").setFixedOutput(true);
     
      map.getConcepts().get("da_c").setOutput(0.0);
      map.getConcepts().get("da_c").setFixedOutput(true);
     
      map.getConcepts().get("da_r").setOutput(-0.2);
      map.getConcepts().get("da_r").setFixedOutput(true);
     
      map.getConcepts().get("da_o_r").setOutput(0.0);
      map.getConcepts().get("da_o_r").setFixedOutput(true);
    }

  }
 
 
  /**
   * Scenario for the Medical Machine Pag 320
   * @throws Exception
   */
  public void set_scenario_Machine() throws Exception {
    map.resetConcepts();
   
      //check if node ability exists
      if(map.getConcepts().containsKey("ability")){
        map.getConcepts().get("ab_de").setOutput(0.0);
        map.getConcepts().get("ab_de").setFixedOutput(true);
     
        map.getConcepts().get("ab_c").setOutput(0.6);
        map.getConcepts().get("ab_c").setFixedOutput(true);
     
        map.getConcepts().get("ab_r").setOutput(0.0);
        map.getConcepts().get("ab_r").setFixedOutput(false);
     
        map.getConcepts().get("ab_o_r").setOutput(0.0);
        map.getConcepts().get("ab_o_r").setFixedOutput(true);
      }
     
      //check if node availability exists
      if(map.getConcepts().containsKey("availability")){
        map.getConcepts().get("av_de").setOutput(0.0);
        map.getConcepts().get("av_de").setFixedOutput(true);
     
        map.getConcepts().get("av_c").setOutput(0.6);
        map.getConcepts().get("av_c").setFixedOutput(true);
     
        map.getConcepts().get("av_r").setOutput(0.0);
        map.getConcepts().get("av_r").setFixedOutput(true);
     
        map.getConcepts().get("av_o_r").setOutput(0.0);
        map.getConcepts().get("av_o_r").setFixedOutput(true);
      }
   
      //check if node unharmfulness exists
      if(map.getConcepts().containsKey("unharmfulness")){
        map.getConcepts().get("un_de").setOutput(0.0);
        map.getConcepts().get("un_de").setFixedOutput(true);
     
        map.getConcepts().get("un_c").setOutput(-0.3);
        map.getConcepts().get("un_c").setFixedOutput(true);
     
        map.getConcepts().get("un_r").setOutput(0.0);
        map.getConcepts().get("un_r").setFixedOutput(true);
     
        map.getConcepts().get("un_o_r").setOutput(0.0);
        map.getConcepts().get("un_o_r").setFixedOutput(true);
      }
   
      //check if node opportunity exists
      if(map.getConcepts().containsKey("opportunity")){
        map.getConcepts().get("op_de").setOutput(0.0);
        map.getConcepts().get("op_de").setFixedOutput(true);
     
        map.getConcepts().get("op_c").setOutput(0.0);
        map.getConcepts().get("op_c").setFixedOutput(true);
     
        map.getConcepts().get("op_r").setOutput(0.2);
        map.getConcepts().get("op_r").setFixedOutput(true);
     
        map.getConcepts().get("op_o_r").setOutput(0.0);
        map.getConcepts().get("op_o_r").setFixedOutput(true);
      }
      // check if node danger exists
      if(map.getConcepts().containsKey("danger")){
        map.getConcepts().get("da_de").setOutput(0.0);
        map.getConcepts().get("da_de").setFixedOutput(true);
     
        map.getConcepts().get("da_c").setOutput(-0.3);
        map.getConcepts().get("da_c").setFixedOutput(true);
     
        map.getConcepts().get("da_r").setOutput(-0.3);
        map.getConcepts().get("da_r").setFixedOutput(true);
     
        map.getConcepts().get("da_o_r").setOutput(0.0);
        map.getConcepts().get("da_o_r").setFixedOutput(true);
      }
     
  }
 
  public void test_scenario_Machine(boolean partialTree) throws Exception {
    // TODO Auto-generated method stub
    set_scenario_Machine();
   
   
    // run map and show results
    System.out.println("\n Initial values:" + map.toString() + "\n ");
    showResults("Scenario-Machine", runner.converge());
   
    System.out.println("\n\n***********\n Trust is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
   
   
    if(partialTree){
     
      /* WITHOUT DANGER */
     
      //reset scenario
      set_scenario_Machine();
      /* remove Danger subtree */
      map.removeConnection("da_ef");
      map.removeConcept("danger");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Machine", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY */
      //reset scenario
      set_scenario_Machine();
      /* remove opportinity subtree */
      map.removeConnection("op_ef");
      map.removeConcept("opportunity");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Machine", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY and UNHARMFULNESS */
      //reset scenario
      set_scenario_Machine();
      /* remove opportinity subtree */
      map.removeConnection("un_if");
      map.removeConcept("unharmfulness");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity and Unharmfulness------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Machine", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity and Unharmfulness) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY and UNHARMFULNESS */
      //reset scenario
      set_scenario_Machine();
      /* remove opportinity subtree */
      map.removeConnection("av_if");
      map.removeConcept("availability");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity and Unharmfulness and Availability------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Machine", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity and Unharmfulness and Availability) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
    }
   
  }
 

  public void test_scenario_Doctor(boolean partialTree) throws Exception{
   
    //Print initial values
   
   
    set_scenario_Doctor();
   
    // run map and show results
    System.out.println("\n Initial values:" + map.toString() + "\n ");
    showResults("Scenario-Doctor", runner.converge());
   
    System.out.println("\n\n***********\n Trust is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
   
    map.toString();
   
    if(partialTree){
     
      /* WITHOUT DANGER */
     
      //reset scenario
      set_scenario_Doctor();
      /* remove Danger subtree */
      map.removeConnection("da_ef");
      map.removeConcept("danger");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Doctor", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY */
      //reset scenario
      set_scenario_Doctor();
      /* remove opportinity subtree */
      map.removeConnection("op_ef");
      map.removeConcept("opportunity");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Doctor", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY and UNHARMFULNESS */
      //reset scenario
      set_scenario_Doctor();
      /* remove opportinity subtree */
      map.removeConnection("un_if");
      map.removeConcept("unharmfulness");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity and Unharmfulness------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Doctor", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity and Unharmfulness) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
     
      /* WITHOUT DANGER and OPPORTUNITY and UNHARMFULNESS */
      //reset scenario
      set_scenario_Doctor();
      /* remove opportinity subtree */
      map.removeConnection("av_if");
      map.removeConcept("availability");
      //run map and show results
      System.out.println("--------------Partial Tree without Danger and Opportunity and Unharmfulness and Availability------------------");
      System.out.println("\n Initial values:" + map.toString() + "\n ");
      showResults("Scenario-Doctor", runner.converge());
     
      System.out.println("\n\n***********\n Trust (without Danger and Opportunity and Unharmfulness and Availability) is:\n" + map.getConcepts().get("trust").getOutput() + "\n***********");
    }
  }
 
 
  /*
   *  Agent class
  */
  public void run() {
    try {
      System.out.print("Scenario\tConverged");
      //System.out.println(map);
      //System.out.println("\nAlpha = " + ((HyperbolicTangentActivator)map.getConcept("ability").getConceptActivator()).getAlpha());
      for (Concept c : map.getConcepts().values()) {
        System.out.print("\t" + c.getName());
      }
      System.out.println();

      //test_scenario_Doctor(true);
            test_scenario_Machine(false);

    } catch (Exception e) {
      // TODO Auto-generated catch block
      System.out.println("Some Problem Occurs in running the FCM...");
      e.printStackTrace();
    }
  }

  void showResults(String scenario, boolean converged) {
    NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
    nf.setMaximumFractionDigits(8);
    System.out.print(scenario + "\t" + converged);
   
    for (Concept c : map.getConcepts().values()) {
      System.out.print("\t");
      System.out.print(c.getOutput() != null ? nf.format(c.getOutput()) : "");
    }
   
  }

  public static void main(String[] args) {
    MedicalVisit example = new MedicalVisit();
    example.run();
  }


}
TOP

Related Classes of trust.jfcm.examples.MedicalVisit

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.