1 // Implementation of snetwork methods
2 // Copyright © 2009 The University of Chicago
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
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)
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";
84 totalString
+= "not converged!\n";
88 totalString += "\n\n";
89 if (isTotallyConverged())
90 totalString += "The grammar is stable for these word-lengths\n";
92 totalString += "The grammar is unstable for these word-lengths\n";
95 label
->setText(totalString
);