source: cpp/frams/_demos/multiline_f0_test.cpp @ 895

Last change on this file since 895 was 745, checked in by Maciej Komosinski, 7 years ago

Renamed ParamInterface::save() -> saveMultiLine()

  • Property svn:eol-style set to native
File size: 3.1 KB
RevLine 
[286]1// This file is a part of Framsticks SDK.  http://www.framsticks.com/
2// Copyright (C) 1999-2015  Maciej Komosinski and Szymon Ulatowski.
3// See LICENSE.txt for details.
[121]4
[109]5#include <stdlib.h>
6#include <stdio.h>
7#include <time.h>
[382]8#include <common/virtfile/stdiofile.h>
[109]9
[145]10#include <frams/genetics/preconfigured.h>
[109]11#include <frams/model/model.h>
[391]12#include <common/loggers/loggertostdout.h>
[382]13#include <common/virtfile/stringfile.h>
[109]14
15int main(int argc,char*argv[])
16{
[375]17LoggerToStdout messages_to_stdout(LoggerBase::Enable);
[145]18PreconfiguredGenetics genetics;
19
[109]20SString gen(argc>1?argv[1]:"X[|G:1.23]");
[348]21if (!strcmp(gen.c_str(),"-"))
[109]22        {
23        gen=0;
24        StdioFILEDontClose in(stdin);
25        loadSString(&in,gen);
26        }
27Geno g(gen);
[534]28printf("\nSource genotype: '%s'\n",g.getGenes().c_str());
[109]29printf("                  ( format %c %s)\n",
[348]30       g.getFormat(), g.getComment().c_str());
[109]31
32Model m(g);//.getConverted('0'));
33
34if (!m.isValid())
35        {
36        printf("Cannot build Model from this genotype!\n");
37        return 2;       
38        }
[534]39printf("Converted to f0:\n%s\n",m.getF0Geno().getGenes().c_str());
[109]40
[745]41printf("\nusing Param::saveMultiLine() to create the \"expanded\" form of the f0 genotype...\n(MultiParamLoader should be able to load this)");
[109]42
43StringFILE2 f;
44
45static Param modelparam(f0_model_paramtab);
46static Param partparam(f0_part_paramtab);
47static Param jointparam(f0_joint_paramtab);
48static Param neuroparam(f0_neuro_paramtab);
49static Param connparam(f0_neuroconn_paramtab);
50
51modelparam.select(&m);
[745]52modelparam.saveMultiLine(&f,"m");
[109]53
54Part *p;
55Joint *j;
56Neuro *n;
57
58for (int i=0;p=(Part*)m.getPart(i);i++)
59        {
60        partparam.select(p);
[745]61        partparam.saveMultiLine(&f,"p");
[109]62        }
63for (int i=0;j=(Joint*)m.getJoint(i);i++)
64        {
65        jointparam.select(j);
66        jointparam.setParamTab(j->usedelta?f0_joint_paramtab:f0_nodeltajoint_paramtab);
[745]67        jointparam.saveMultiLine(&f,"j");
[109]68        }
69for (int i=0;n=(Neuro*)m.getNeuro(i);i++)
70        {
71        neuroparam.select(n);
[745]72        neuroparam.saveMultiLine(&f,"n");
[109]73        }
74for (int a=0;n=(Neuro*)m.getNeuro(a);a++)
75        { // inputs
76        for (int b=0;b<n->getInputCount();b++)
77                {
78                double w;
79                NeuroConn nc;
80                Neuro* n2=n->getInput(b,w);
81                nc.n1_refno=n->refno; nc.n2_refno=n2->refno;
82                nc.weight=w;
83                nc.info=n->getInputInfo(b);
84                connparam.select(&nc);
[745]85                connparam.saveMultiLine(&f,"c");
[109]86                }
87        }
88
[348]89printf("\n============================\n%s\n",f.getString().c_str());
[109]90
91return 0;
92}
93
94/*********************** EXAMPLE OUTPUT *********************************
95
96Source genotype: 'X[|G:1.23]'
97                  ( format 1 )
98Converted to f0:
99p:
100p:1
101j:0, 1, dx=1
102n:p=1
103n:j=0, d="|:p=0.25,r=1"
104n:j=0, d=G
105c:0, 2, 1.23
106c:1, 0
107
108
[745]109using Param::saveMultiLine() to create the "expanded" form of the f0 genotype...
[109]110(MultiParamLoader should be able to load this)
111============================
112m:
113se:1
114Vstyle:
115
116p:
117x:0
118y:0
119z:0
120m:1
121s:1
122dn:1
123fr:0.4
124ing:0.25
125as:0.25
126rx:0
127ry:0
128rz:0
129i:
130Vstyle:part
131
132p:
133x:1
134y:0
135z:0
136m:1
137s:1
138dn:1
139fr:0.4
140ing:0.25
141as:0.25
142rx:0
143ry:0
144rz:0
145i:
146Vstyle:part
147
148j:
149p1:0
150p2:1
151rx:0
152ry:0
153rz:0
154dx:1
155dy:0
156dz:0
157stif:1
158rotstif:1
159stam:0.25
160i:
161Vstyle:joint
162
163n:
164p:1
165j:-1
166d:N
167i:
168Vstyle:neuro
169
170n:
171p:-1
172j:0
173d:|:p=0.25,r=1
174i:
175Vstyle:neuro
176
177n:
178p:-1
179j:0
180d:G
181i:
182Vstyle:neuro
183
184c:
185n1:0
186n2:2
187w:1.23
188i:
189
190c:
191n1:1
192n2:0
193w:1
194i:
195
196
197*************************************************************************/
Note: See TracBrowser for help on using the repository browser.