Changeset 972 for cpp/frams/_demos/f0_variants_test.cpp
- Timestamp:
- 07/03/20 00:32:23 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/_demos/f0_variants_test.cpp
r955 r972 1 1 // This file is a part of Framsticks SDK. http://www.framsticks.com/ 2 // Copyright (C) 1999-20 16Maciej Komosinski and Szymon Ulatowski.2 // Copyright (C) 1999-2020 Maciej Komosinski and Szymon Ulatowski. 3 3 // See LICENSE.txt for details. 4 4 … … 12 12 #include <common/loggers/loggertostdout.h> 13 13 14 void save_as_f0(SString &gen, Model &m,bool omit_default_values)14 void save_as_f0(SString &gen, Model &m, bool omit_default_values) 15 15 { 16 // copied from Model::makeGeno() (with small changes)16 // copied from Model::makeGeno() (with small changes) 17 17 18 static Param modelparam(f0_model_paramtab);19 static Param partparam(f0_part_paramtab);20 static Param jointparam(f0_joint_paramtab);21 static Param neuroparam(f0_neuro_paramtab);22 static Param connparam(f0_neuroconn_paramtab);18 static Param modelparam(f0_model_paramtab); 19 static Param partparam(f0_part_paramtab); 20 static Param jointparam(f0_joint_paramtab); 21 static Param neuroparam(f0_neuro_paramtab); 22 static Param connparam(f0_neuroconn_paramtab); 23 23 24 static Part defaultpart;25 static Joint defaultjoint;26 static Neuro defaultneuro;27 static Model defaultmodel;28 static NeuroConn defaultconn;24 static Part defaultpart; 25 static Joint defaultjoint; 26 static Neuro defaultneuro; 27 static Model defaultmodel; 28 static NeuroConn defaultconn; 29 29 30 modelparam.select(&m);31 gen+="m:";32 modelparam.saveSingleLine(gen,omit_default_values ? &defaultmodel : NULL);30 modelparam.select(&m); 31 gen += "m:"; 32 modelparam.saveSingleLine(gen, omit_default_values ? &defaultmodel : NULL); 33 33 34 Part *p;35 Joint *j;36 Neuro *n;34 Part *p; 35 Joint *j; 36 Neuro *n; 37 37 38 for (int i=0;p=(Part*)m.getPart(i);i++)38 for (int i = 0; p = (Part*)m.getPart(i); i++) 39 39 { 40 partparam.select(p);41 gen+="p:";42 partparam.saveSingleLine(gen,omit_default_values ? &defaultpart : NULL);40 partparam.select(p); 41 gen += "p:"; 42 partparam.saveSingleLine(gen, omit_default_values ? &defaultpart : NULL); 43 43 } 44 for (int i=0;j=(Joint*)m.getJoint(i);i++)44 for (int i = 0; j = (Joint*)m.getJoint(i); i++) 45 45 { 46 jointparam.select(j);47 jointparam.setParamTab(j->usedelta?f0_joint_paramtab:f0_nodeltajoint_paramtab);48 gen+="j:";49 jointparam.saveSingleLine(gen,omit_default_values ? &defaultjoint : NULL);46 jointparam.select(j); 47 jointparam.setParamTab(j->usedelta ? f0_joint_paramtab : f0_nodeltajoint_paramtab); 48 gen += "j:"; 49 jointparam.saveSingleLine(gen, omit_default_values ? &defaultjoint : NULL); 50 50 } 51 for (int i=0;n=(Neuro*)m.getNeuro(i);i++)51 for (int i = 0; n = (Neuro*)m.getNeuro(i); i++) 52 52 { 53 neuroparam.select(n);54 gen+="n:";55 neuroparam.saveSingleLine(gen,omit_default_values ? &defaultneuro : NULL);53 neuroparam.select(n); 54 gen += "n:"; 55 neuroparam.saveSingleLine(gen, omit_default_values ? &defaultneuro : NULL); 56 56 } 57 for (int a=0;n=(Neuro*)m.getNeuro(a);a++)57 for (int a = 0; n = (Neuro*)m.getNeuro(a); a++) 58 58 { // inputs 59 for (int b=0;b<n->getInputCount();b++)59 for (int b = 0; b < n->getInputCount(); b++) 60 60 { 61 double w;62 NeuroConn nc;63 Neuro* n2=n->getInput(b,w);64 nc.n1_refno=n->refno; nc.n2_refno=n2->refno;65 nc.weight=w;66 nc.info=n->getInputInfo(b);67 connparam.select(&nc);68 gen+="c:";69 connparam.saveSingleLine(gen,omit_default_values ? &defaultconn : NULL);61 double w; 62 NeuroConn nc; 63 Neuro* n2 = n->getInput(b, w); 64 nc.n1_refno = n->refno; nc.n2_refno = n2->refno; 65 nc.weight = w; 66 nc.info = n->getInputInfo(b); 67 connparam.select(&nc); 68 gen += "c:"; 69 connparam.saveSingleLine(gen, omit_default_values ? &defaultconn : NULL); 70 70 } 71 71 } 72 72 } 73 73 74 int main(int argc, char*argv[])74 int main(int argc, char*argv[]) 75 75 { 76 LoggerToStdout messages_to_stdout(LoggerBase::Enable);76 LoggerToStdout messages_to_stdout(LoggerBase::Enable); 77 77 78 //without converters the application would only handle "format 0" genotypes79 DefaultGenoConvManager gcm;80 gcm.addDefaultConverters();81 Geno::useConverters(&gcm);78 //without converters the application would only handle "format 0" genotypes 79 DefaultGenoConvManager gcm; 80 gcm.addDefaultConverters(); 81 Geno::useConverters(&gcm); 82 82 83 Geno::Validators validators;84 Geno::useValidators(&validators);85 ModelGenoValidator model_validator;86 validators+=&model_validator; //This simple validator handles all cases where a converter for a particular format is available but there is no genetic operator. Converters may be less strict in detecting invalid genotypes but it is better than nothing83 Geno::Validators validators; 84 Geno::useValidators(&validators); 85 ModelGenoValidator model_validator; 86 validators += &model_validator; //This simple validator handles all cases where a converter for a particular format is available but there is no genetic operator. Converters may be less strict in detecting invalid genotypes but it is better than nothing 87 87 88 SString gen(argc>1?argv[1]:"X[|G:1.23]");89 if (!strcmp(gen.c_str(),"-"))88 SString gen(argc > 1 ? argv[1] : "X[|G:1.23]"); 89 if (!strcmp(gen.c_str(), "-")) 90 90 { 91 gen=0;92 StdioFILEDontClose in(stdin);93 loadSString(&in,gen);91 gen = 0; 92 StdioFILEDontClose in(stdin); 93 loadSString(&in, gen); 94 94 } 95 Geno g(gen);96 printf("\nSource genotype: '%s'\n",g.getGenes().c_str());97 printf(" ( format %s %s)\n",98 95 Geno g(gen); 96 printf("\nSource genotype: '%s'\n", g.getGenes().c_str()); 97 printf(" ( format %s %s)\n", 98 g.getFormat().c_str(), g.getComment().c_str()); 99 99 100 Model m(g);//.getConverted('0'));100 Model m(g, Model::SHAPE_UNKNOWN);//.getConverted('0')); 101 101 102 if (!m.isValid())102 if (!m.isValid()) 103 103 { 104 printf("Cannot build Model from this genotype!\n");105 return 2;104 printf("Cannot build Model from this genotype!\n"); 105 return 2; 106 106 } 107 107 108 printf("\nthis example shows how to save a f0 genotype using low-level ParamInterface::saveSingleLine() calls\n");108 printf("\nthis example shows how to save a f0 genotype using low-level ParamInterface::saveSingleLine() calls\n"); 109 109 110 SString f0_skipping_defaults;111 SString f0_no_skipping_defaults;110 SString f0_skipping_defaults; 111 SString f0_no_skipping_defaults; 112 112 113 save_as_f0(f0_skipping_defaults,m,true);114 save_as_f0(f0_no_skipping_defaults,m,false);113 save_as_f0(f0_skipping_defaults, m, true); 114 save_as_f0(f0_no_skipping_defaults, m, false); 115 115 116 printf("\n==== with defdata (skips default values) ======\n%s\n",f0_skipping_defaults.c_str());117 printf("\n==== without defdata (saves all fields) ======\n%s\n",f0_no_skipping_defaults.c_str());116 printf("\n==== with defdata (skips default values) ======\n%s\n", f0_skipping_defaults.c_str()); 117 printf("\n==== without defdata (saves all fields) ======\n%s\n", f0_no_skipping_defaults.c_str()); 118 118 119 return 0;119 return 0; 120 120 } 121 121 … … 123 123 124 124 Source genotype: 'X[|G:1.23]' 125 125 ( format 1 ) 126 126 127 127 this example shows how to save a f0 genotype using low-level ParamInterface::saveSingleLine() calls
Note: See TracChangeset
for help on using the changeset viewer.