CMiniLexicon::FindMajorSignatures(): use log file routines
[linguistica.git] / DCNsnetwork.cpp
blob143ba9c32ec597d59bc4e0af89cfe5208bf5df56
1 // Implementation of snetwork methods
2 // Copyright © 2009 The University of Chicago
3 #include <qstring.h>
4 #include <q3textedit.h>
5 #include "DCNgrammar.h"
6 #include "DCNnetwork.h"
8 #include "DCNsnetwork.h"
10 //////////////////////////////////////////////////////////////////////
11 // Construction/Destruction
12 //////////////////////////////////////////////////////////////////////
14 snetwork::snetwork(int leastNumberOfSyl, int greatestNumberOfSyl)
16 this->leastNumberOfSyl = leastNumberOfSyl;
17 this->greatestNumberOfSyl = greatestNumberOfSyl;
18 int total = greatestNumberOfSyl - leastNumberOfSyl + 1;
19 theNetworks.resize(total);
21 for (int i = 0; i < total; i++)
23 network* theNetwork = new network(i + leastNumberOfSyl);
24 theNetworks.insert(i, theNetwork);
29 snetwork::~snetwork() {}
31 void snetwork::setGrammar(grammar* theGrammar)
33 this->theGrammar = theGrammar;
36 void snetwork::equilibrium()
38 // are all of the networks in the snetwork converged?
39 // boolean logic will tell us so
40 converged = true;
41 for (uint i = 0; i < theNetworks.count(); i++)
43 theNetworks[i]->setGrammar(theGrammar);
44 theNetworks[i]->equilibrium();
45 converged = converged && theNetworks[i]->isConverged();
49 void snetwork::print(Q3TextEdit *label)
51 //label->setReadOnly(true);
53 //definitions of network values
54 // float alpha = theGrammar->getAlpha(); unused variables: alpha, beta, I, F
55 // float beta = theGrammar->getBeta();
56 // float I = theGrammar->getI();
57 // float F = theGrammar->getF();
58 //float P = theGrammar->getP();
59 //float bias = theGrammar->getBias();
61 // partially ganked from grammar::print(label)
62 QString totalString;
63 QString partialString;
65 totalString += "The values of the grammar:\n";
66 totalString += "alpha\t\tbeta\t\tinitial\t\tfinal\n"; // + "\tpenult\tbias\n\t";
67 partialString.setNum(alpha); totalString += partialString + "\t";
68 partialString.setNum(beta); totalString += partialString + "\t";
69 partialString.setNum(I); totalString += partialString + "\t";
70 partialString.setNum(F); totalString += partialString; //+ "\t";
71 //partialString.setNum(P); totalString += partialString + "\t";
72 //partialString.setNum(bias); totalString += partialString + "\t";
73 totalString += "\n\n";
75 totalString += "Stress:\n";
77 for (uint i = 0; i < theNetworks.count(); i++)
79 //partialString.setNum(i + leastNumberOfSyl);
80 //totalString += "\tWord of length " + partialString + ":\t";
81 if (theNetworks[i]->isConverged())
82 totalString += theNetworks[i]->getStress() + "\n";
83 else
84 totalString += "not converged!\n";
88 totalString += "\n\n";
89 if (isTotallyConverged())
90 totalString += "The grammar is stable for these word-lengths\n";
91 else
92 totalString += "The grammar is unstable for these word-lengths\n";
95 label->setText(totalString);