Changeset 16976
- Timestamp:
- 05/21/19 22:56:20 (6 years ago)
- Location:
- branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3
- Files:
-
- 14 added
- 15 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/CVODES.cs
r16256 r16976 174 174 ); 175 175 176 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 177 public delegate void CVErrHandlerFn( 178 int errorCode, 179 IntPtr module, // const char * 180 IntPtr function, // const char * 181 IntPtr msg, // char * 182 IntPtr ehdata 183 ); 184 176 185 // returns a void* to the cvodes memory block if successful otherwise NULL 177 186 public static IntPtr CVodeCreate(MultistepMethod lmm, NonlinearSolverIteration iter) { … … 415 424 if (Environment.Is64BitProcess) return CVodeFree_x64(ref cvode_mem); 416 425 else return CVodeFree_x86(ref cvode_mem); 426 } 427 428 429 internal static int CVodeSetErrHandlerFn(IntPtr cvode_mem, CVErrHandlerFn errorHandler, IntPtr data) { 430 if (Environment.Is64BitProcess) return CVodeSetErrHandlerFn_x64(cvode_mem, errorHandler, data); 431 else return CVodeSetErrHandlerFn_x86(cvode_mem, errorHandler, data); 417 432 } 418 433 … … 812 827 ); 813 828 829 [DllImport("sundials_cvodes-x86.dll", EntryPoint = "CVodeSetErrHandlerFn", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] 830 private static extern int CVodeSetErrHandlerFn_x86(IntPtr cvode_mem, CVErrHandlerFn errorHandler, IntPtr data); 831 814 832 [DllImport("sundials_cvodes-x86.dll", EntryPoint = "CVodeFree", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] 815 816 833 private static extern int CVodeFree_x86(ref IntPtr cvode_mem); 817 834 … … 1096 1113 1097 1114 [DllImport("sundials_cvodes-x64.dll", EntryPoint = "CVodeFree", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] 1098 1099 1115 private static extern int CVodeFree_x64(ref IntPtr cvode_mem); 1116 1117 1118 [DllImport("sundials_cvodes-x64.dll", EntryPoint = "CVodeSetErrHandlerFn", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] 1119 private static extern int CVodeSetErrHandlerFn_x64(IntPtr cvode_mem, CVErrHandlerFn errorHandler, IntPtr data); 1100 1120 1101 1121 #region matrix … … 1182 1202 [DllImport("sundials_cvodes-x64.dll", EntryPoint = "N_VCloneVectorArray_Serial", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] 1183 1203 private static extern IntPtr N_VCloneVectorArray_Serial_x64(int count, IntPtr vec); // returns N_Vector* ! 1204 1184 1205 #endregion 1185 1206 -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/HeuristicLab.Problems.DynamicalSystemsModelling-3.3.csproj
r16954 r16976 118 118 </ItemGroup> 119 119 <ItemGroup> 120 <Compile Include="CVODES.cs" /> 120 121 <Compile Include="Instances\DataDescriptor.cs" /> 121 122 <Compile Include="OdeParameterIdentification.cs" /> … … 141 142 <None Include="Instances\ChemicalReaction.csv" /> 142 143 <EmbeddedResource Include="Instances\ChemicalReaction.csv.zip" /> 144 <EmbeddedResource Include="Instances\double_linear_h_1_equidistant.txt.zip" /> 145 <EmbeddedResource Include="Instances\double_pend_h_1_equidistant.txt.zip" /> 143 146 <None Include="Instances\E-CELL.csv" /> 144 147 <EmbeddedResource Include="Instances\E-CELL.csv.zip" /> 145 148 <None Include="Instances\Glider_1.csv" /> 146 149 <EmbeddedResource Include="Instances\Glider_1.csv.zip" /> 150 <EmbeddedResource Include="Instances\linear_h_1_equidistant.txt.zip" /> 147 151 <None Include="Instances\LotkaVolterra.csv" /> 148 152 <EmbeddedResource Include="Instances\LotkaVolterra.csv.zip" /> 153 <EmbeddedResource Include="Instances\pendulum_h_1_equidistant.txt.zip" /> 149 154 <None Include="Instances\predator_prey_1.csv" /> 150 155 <EmbeddedResource Include="Instances\predator_prey_1.csv.zip" /> 156 <EmbeddedResource Include="Instances\real_double_linear_h_1_equidistant.txt.zip" /> 157 <EmbeddedResource Include="Instances\real_double_pend_h_1_equidistant.txt.zip" /> 158 <EmbeddedResource Include="Instances\real_linear_h_1_equidistant.txt.zip" /> 159 <EmbeddedResource Include="Instances\real_pend_h_1_equidistant.txt.zip" /> 151 160 <None Include="Instances\S-System.csv" /> 152 161 <EmbeddedResource Include="Instances\S-System.csv.zip" /> … … 291 300 </ItemGroup> 292 301 <ItemGroup> 302 <Content Include="Instances\# README.txt" /> 303 <None Include="Instances\pendulum_h_1_equidistant.txt" /> 304 <None Include="Instances\double_linear_h_1_equidistant.txt" /> 305 <None Include="Instances\double_pend_h_1_equidistant.txt" /> 306 <None Include="Instances\linear_h_1_equidistant.txt" /> 307 <None Include="Instances\real_double_linear_h_1_equidistant.txt" /> 308 <None Include="Instances\real_double_pend_h_1_equidistant.txt" /> 309 <None Include="Instances\real_linear_h_1_equidistant.txt" /> 310 <None Include="Instances\real_pend_h_1_equidistant.txt" /> 293 311 <Content Include="sundials_cvodes-x64.dll"> 294 312 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Instances/pendulum_h_1_equidistant.txt
r16970 r16976 1 t;theta;omega;v 2 0.02;1.56874608122987;-0.198215825131781;-9.79997740774612 3 0.04;1.56115576202518;-0.416769224595534;-9.79940852398577 4 0.06;1.55028372193127;-0.623269173289159;-9.79763082109256 5 0.08;1.54468149930913;-0.705858864144413;-9.79635098754607 6 0.1;1.52754386073091;-0.912251061511948;-9.79018322197376 7 0.12;1.50134440830472;-1.15967109660331;-9.77532290367731 8 0.14;1.4679064081962;-1.41281831960097;-9.74645482440716 9 0.16;1.43432659642324;-1.62826469198267;-9.70675724993762 10 0.18;1.41952074828869;-1.71418136994579;-9.68595536846762 11 0.2;1.37909404600435;-1.92793309054672;-9.61731954835222 12 0.22;1.32447485300749;-2.18205620076956;-9.50020049577612 13 0.24;1.2753558558715;-2.3858913738581;-9.37161765674118 14 0.26;1.25523519758259;-2.46343847936162;-9.31231993163691 15 0.28;1.20206810940885;-2.65475497225107;-9.13631657581441 16 0.3;1.13318279475286;-2.87899756618972;-8.87080265846951 17 0.32;1.0588053155781;-3.09579884549923;-8.53701034957632 18 0.34;0.992311933576061;-3.27086845323823;-8.1990922590758 19 0.36;0.964357145977603;-3.33960998822044;-8.04615819084181 20 0.38;0.891933141620441;-3.50508430322281;-7.61967275935143 21 0.4;0.800634211498993;-3.69102966402551;-7.02670659094116 22 0.42;0.704819608694701;-3.8607721740716;-6.34176880959805 23 0.44;0.622861971826605;-3.98855515471348;-5.71384087728525 24 0.46;0.556172117266379;-4.07857110262074;-5.17086276234397 25 0.48;0.488070208571341;-4.15931621447535;-4.59272212691522 26 0.5;0.418714063133072;-4.23023218021594;-3.98210593770352 27 0.52;0.34827023664358;-4.29080955502264;-3.34236559983808 28 0.54;0.204826023151875;-4.3792167322465;-1.99198271543943 29 0.56;0.132194476529381;-4.40636812190815;-1.29087894657116 30 0.58;0.0617625447553851;-4.42169567749806;-0.604538527928841 31 0.6;-0.00627716897164661;-4.42587373975885;0.0614802241267177 32 0.62;-0.142155365217027;-4.40353833318769;1.38763921222506 33 0.64;-0.208886935774822;-4.3776072697134;2.03113977723328 34 0.66;-0.274357641099355;-4.3424207639848;2.65368983633987 35 0.68;-0.403368827706824;-4.24465394695545;3.84473318957877 36 0.7;-0.467430266560211;-4.18178907796009;4.41353026401486 37 0.72;-0.531259327796966;-4.10958655667351;4.96238668709364 38 0.74;-0.655268205784563;-3.94098544308479;5.96909679014836 39 0.76;-0.717468839979079;-3.84158757336105;6.4400298846202 40 0.78;-0.780276183204002;-3.73098497229658;6.89076164353195 41 0.8;-0.841188919581483;-3.61323499988222;7.30199420633354 42 0.82;-0.900093914476029;-3.48899021433118;7.67396174583089 43 0.84;-0.961305536039301;-3.34787468920122;8.03122363003775 44 0.86;-1.08424505673303;-3.02552368847277;8.65903231370804 45 0.88;-1.14094402661763;-2.85616146137067;8.90509128748555 46 0.9;-1.19652765660852;-2.67464385466458;9.11800894305925 47 0.92;-1.24192789870848;-2.51396354041321;9.27200540866638 48 0.94;-1.25927740861703;-2.44893504898269;9.32551486633627 49 0.96;-1.30058912761908;-2.28486944926824;9.44170166758256 50 0.98;-1.3464236682147;-2.08564255535696;9.55206671064279 51 1;-1.39140952391776;-1.86602361596991;9.64016659414852 52 1.02;-1.43466756082438;-1.62633880699496;9.70736806950991 53 1.04;-1.47197062840792;-1.38529668738058;9.75074743054948 54 1.06;-1.49857052144253;-1.18377652503702;9.77357846941541 55 1.08;-1.50801185959929;-1.10304282709259;9.77981943858127 56 1.1;-1.5290653282895;-0.895319094564573;9.79080786367076 57 1.12;-1.548994463412;-0.641256069107395;9.7973321550773 58 1.14;-1.56233187043747;-0.38708422926847;9.79952543461567 59 1.16;-1.56850119978264;-0.175251538637751;9.79996125243528 60 1.18;-1.56965012669137;-0.0905176969723619;9.79998062619942 61 1.2;-1.56928789063435;0.118838086638923;9.79997766095049 62 1.22;-1.56309590334689;0.368080695288001;9.79960209229047 63 1.24;-1.5531816453728;0.575767398274653;9.79821132321501 64 1.26;-1.54794821172043;0.658833434558124;9.7971737837865 65 1.28;-1.53169654904193;0.866426561619328;9.79191546442345 66 1.3;-1.50655809197917;1.11482000145969;9.77881191847661 67 1.32;-1.47518314281774;1.36224373349689;9.75378674381326 68 1.34;-1.44434281530566;1.56781724318295;9.71995773453057 69 1.36;-1.43075720891838;1.64983336989444;9.70227113389894 70 1.38;-1.39368708959005;1.8540304495212;9.64403964785919 71 1.4;-1.34318842206827;2.09906677601036;9.54376432709075 72 1.42;-1.2860200138267;2.34295107426308;9.40102459816339 73 1.44;-1.23370668993152;2.54300737576508;9.24393924055607 74 1.46;-1.21154761969719;2.62203475258826;9.16986317651578 75 1.48;-1.153139922933;2.81632991028476;8.95172782484674 76 1.5;-1.07981986529971;3.03706719605031;8.63641644700845 77 1.52;-1.00315727584028;3.24337448669523;8.2566169924906 78 1.54;-0.935575381079818;3.40772012592743;7.88228132570107 79 1.56;-0.90758464467535;3.47122797940696;7.71649302321986 80 1.58;-0.835361134048447;3.62342105332248;7.25997271337558 81 1.6;-0.758228497606258;3.77089059340855;6.73518916521185 82 1.62;-0.691439990534443;3.88418470292787;6.24535374202732 83 1.64;-0.622751804573357;3.98855564336474;5.71261064902426 84 1.66;-0.480336964594616;4.16762370070872;4.52537126112589 85 1.68;-0.406971413067468;4.24096370928929;3.87647788899022 86 1.7;-0.332427032319788;4.30269833178708;3.19586044346511 87 1.72;-0.25691064800756;4.35231684328173;2.4883240807502 88 1.74;-0.184160550145938;4.38825736074598;1.79350415494904 89 1.76;-0.044413164519911;4.42365412570857;0.434838612039077 90 1.78;0.0257098490142659;4.42510513426916;-0.251773879722829 91 1.8;0.0940624162414031;4.41617267305467;-0.919943113650948 92 1.82;0.160491594329429;4.39743504444888;-1.5652142239549 93 1.84;0.292139475857229;4.33118652402102;-2.82091301508649 94 1.86;0.35722551432335;4.28397105624277;-3.42502409357211 95 1.88;0.421682121490936;4.22765519390623;-4.00904343045667 96 1.9;0.54771037812862;4.08943275071346;-5.10074542678867 97 1.92;0.610633980661001;4.0059768407752;-5.61632363719572 98 1.94;0.67379860792052;3.9123907109479;-6.11181986919021 99 1.96;0.735408815958906;3.81118424029675;-6.57168756973847 100 1.98;0.856814769318436;3.58108871511943;-7.40267835185466 101 2;0.919465448541576;3.44558430096782;-7.79004360383459 102 2.02;0.979640962991438;3.3035688257992;-8.13338439544905 103 2.04;1.03723203988619;3.15581093812382;-8.43445757676599 104 2.06;1.09554330465114;2.99274442039023;-8.70996761512869 105 2.08;1.15409561336834;2.81455775485403;-8.95779897547474 106 2.1;1.20900804010443;2.63181809398469;-9.16237400256889 107 2.12;1.26019699126093;2.44535152885498;-9.32823984141548 108 2.14;1.31028163174655;2.24398229925969;-9.46626203955054 109 2.16;1.35869595623758;2.02811945594337;-9.57786061104823 110 2.18;1.4021924479195;1.81008335140663;-9.65900360155247 111 2.2;1.44072871586766;1.59049749834371;-9.71564235348613 112 2.22;1.47011027458198;1.39879639128922;-9.74910905865832 113 2.24;1.48146816934129;1.31720612476089;-9.75966763695438 114 2.26;1.50678827901055;1.11292572507497;-9.77897815404435 115 2.28;1.5316321820715;0.867387800812241;-9.79190542854185 116 2.3;1.55031213210743;0.621625767725759;-9.79764610182736 117 2.32;1.56149113398341;0.406962253187152;-9.79946372450279 118 2.34;1.56487187397446;0.315212980629898;-9.7997160095963 119 2.36;1.56945803720994;0.0858321855709665;-9.79998410409391 120 2.38;1.56888987922071;-0.143553620007082;-9.79995136407703 121 2.4;1.56711629798705;-0.235307903083455;-9.79990281465603 122 2.42;1.55881675590276;-0.464680615901938;-9.79908814253348 123 2.44;1.54313389672648;-0.725877012132236;-9.7958400109097 124 2.46;1.5257943870497;-0.931773927117243;-9.78942291468299 125 2.48;1.51761177569857;-1.01409287561407;-9.78548782737851 126 2.5;1.49404229499307;-1.21967539355331;-9.76999071515699 127 2.52;1.46016339676051;-1.46580867736387;-9.73842159660924 128 2.54;1.41817724494131;-1.72090357344831;-9.68341459432425 129 2.56;1.3766233846097;-1.94048160180111;-9.61270210746284 130 2.58;1.3585636472191;-2.0278344484376;-9.57698952925571 131 2.6;1.30985966633527;-2.24444031852747;-9.46381249024562 132 2.62;1.25645533083503;-2.4581908200111;-9.31498802973058 133 2.64;1.23369523882802;-2.54268829804135;-9.2436280300185 134 2.66;1.17754201514743;-2.73758275706053;-9.04688930213171 135 2.68;1.10810312089423;-2.95493095500476;-8.76386881690883 136 2.7;1.03345335809591;-3.16455602977596;-8.41263049468023 137 2.72;0.953802656831351;-3.36471278856949;-7.9863587224253 138 2.74;0.879225344988252;-3.53380636061219;-7.54415879506705 139 2.76;0.810844699704671;-3.67280760292069;-7.09940609774743 140 2.78;0.739909986802798;-3.80287954777451;-6.60306880760459 141 2.8;0.666599877793497;-3.92304633318248;-6.05531172353417 142 2.82;0.591111187656251;-4.03234369402559;-5.45738584545803 143 2.84;0.513659225204216;-4.12983760978703;-4.81170472905801 144 2.86;0.434476727503349;-4.21465282747028;-4.12187220156645 145 2.88;0.353811640453356;-4.28599829156357;-3.39265549467556 146 2.9;0.27748032029928;-4.34026266618153;-2.68283887180404 147 2.92;0.205843882574353;-4.37876855652316;-2.00175819942944 148 2.94;0.13366774096818;-4.40595024271161;-1.3051908944384 149 2.96;-0.00885770024086808;-4.42585531095823;0.0867551316175163 150 2.98;-0.0761471138939128;-4.41952495769984;0.7450994518858 151 3;-0.143264056037089;-4.40321276596197;1.39840508659528 152 3.02;-0.27601578579149;-4.34139687611713;2.66931489266026 153 3.04;-0.341001082968115;-4.29665602199094;3.27570879447784 154 3.06;-0.405245324275659;-4.24294309622682;3.86162530948144 155 3.08;-0.532139219257252;-4.10848629633817;4.96974645263235 156 3.1;-0.595645774987487;-4.02676355948308;5.49550946950315 157 3.12;-0.65781380397215;-3.93708574181393;5.98877591913253 158 3.14;-0.718523187219345;-3.83997020024362;6.44818399849438 159 3.16;-0.843035110217505;-3.60941620709089;7.31384675242613 160 3.18;-0.90358236387918;-3.4812167461588;7.69497632588517 161 3.2;-0.961886906498744;-3.34685791566578;8.03538594210697 162 3.22;-1.02199116837195;-3.19575984614038;8.35670024485477 163 3.24;-1.08338637415315;-3.02789061098168;8.65491633129425 164 3.26;-1.14141522483303;-2.85460170123313;8.90685851057183 165 3.28;-1.1959793244394;-2.67676679025082;9.11645246346843 166 3.3;-1.24927607789909;-2.48626141648364;9.29444798090068 167 3.32;-1.30086749490854;-2.28355608925945;9.44225990604676 168 3.34;-1.3480428002592;-2.07803777948431;9.55545584998124 169 3.36;-1.39074842496978;-1.87039531172274;9.63961135138625 170 3.38;-1.4315318597092;-1.64485718685202;9.70307006059976 171 3.4;-1.46376307470345;-1.44237581499856;9.74258938707214 172 3.42;-1.4754404845698;-1.36115886756479;9.75414960521004 173 3.44;-1.50158502076612;-1.15778306564945;9.77551427845941 174 3.46;-1.52746380315332;-0.913289040426239;9.79016317137375 175 3.48;-1.54475278106593;-0.703724161061628;9.79633826301425 176 3.5;-1.55063010292131;-0.616494452438665;9.79766891685189 177 3.52;-1.56182805269519;-0.3983876006027;9.79946718734038 178 3.54;-1.56897340444947;-0.136628027883163;9.79996740198767 179 3.56;-1.56968396947333;0.0815074825267155;9.79998177182817 180 3.58;-1.56856981066139;0.168760563430059;9.79996354367224 181 3.6;-1.5626752967266;0.379466376901578;9.79956487135176 182 3.62;-1.55000416542767;0.626351386261765;9.79757671006071 183 3.64;-1.53111340260463;0.873145616541827;9.79169238779374 184 3.66;-1.51070930518866;1.07863958851885;9.78144917714443 185 3.68;-1.50130519441966;1.16077160700782;9.77548257163557 186 3.7;-1.47378110199058;1.37174126036202;9.75231636069036 187 3.72;-1.43414427090105;1.62882054296913;9.70639341659835 188 3.74;-1.39603207655544;1.84191921613006;9.64806698054971 189 3.76;-1.37943673163928;1.92677624154911;9.61846388315673 190 3.78;-1.33460397063712;2.13748588426198;9.52411468320637 191 3.8;-1.27662105751983;2.38051687161244;9.37485872831051 192 3.82;-1.21423080117446;2.61243136857772;9.17869859647019 193 3.84;-1.1579369612045;2.80154121536071;8.97157521659694 194 3.86;-1.13428788054864;2.87591493523505;8.87610211622553 195 3.88;-1.07242630424872;3.05783351149039;8.60167203435859 196 3.9;-0.993110343535538;3.26859234921177;8.20280556927072 197 3.92;-0.90838220587828;3.46895121225648;7.7200440842053 198 3.94;-0.834104748958043;3.62607809737286;7.25205881764924 199 3.96;-0.803451964625949;3.68606010078491;7.04692555256627 200 3.98;-0.724659892079511;3.82771252198733;6.48870646887302 201 4;-0.643541547434513;3.95836635074805;5.87711955415286 202 4.02;-0.576804197841842;4.05186816819545;5.34136512658929 203 4.04;-0.439043581279882;4.21058752732978;4.16316160824712 204 4.06;-0.368346861772598;4.27468268222956;3.52648419314009 205 4.08;-0.296671945808074;4.32794188417278;2.86306141399829 206 4.1;-0.22420312002042;4.36995554150118;2.17738505356251 207 4.12;-0.151130377365781;4.40039506089777;1.47445453442967 208 4.14;-0.0120896941887321;4.42574226223411;0.118406991534705 209 4.16;0.0562078762214286;4.42240784492011;-0.55022645359437 210 4.18;0.124374433965999;4.40877660497301;-1.21502554129569 211 4.2;0.256936724483516;4.3527207633043;-2.48903678022965 212 4.22;0.321981756860899;4.31074732261681;-3.0995574579901 213 4.24;0.386328506998525;4.25974907318272;-3.69065433774399 214 4.26;0.514456379465439;4.12954026469083;-4.81978292207324 215 4.28;0.577240602438476;4.05150389701072;-5.34540958982915 216 4.3;0.638766537792501;3.96563565664217;-5.84010962587283 217 4.32;0.701070637743168;3.86873589770782;-6.31814446837035 218 4.34;0.824937115585952;3.6457055095864;-7.19490407593061 219 4.36;0.883999752610413;3.52399872839371;-7.57496235065751 220 4.38;0.945223103405363;3.38606244635696;-7.94003404585325 221 4.4;1.00814249483201;3.23174745784423;-8.28534345323592 222 4.42;1.06806854805571;3.07131787183097;-8.58380022921435 223 4.44;1.12489313167871;2.90563541677097;-8.83839739037686 224 4.46;1.18092278186421;2.72718471493268;-9.06092320709799 225 4.48;1.23574575013221;2.53640017572924;-9.25182871244252 226 4.5;1.28655661364324;2.34205186326534;-9.4039778407063 227 4.52;1.33328884596094;2.14489355029955;-9.52251233066875 228 4.54;1.37912568504493;1.92848869367177;-9.61788019213157 229 4.56;1.4232537741123;1.69317646360287;-9.69146344759509 230 4.58;1.45571409348346;1.49594956220283;-9.7338133933335 231 4.6;1.46754403563195;1.41682416012321;-9.74644374269726 232 4.62;1.49422178201085;1.21865130662623;-9.77020504293074 233 4.64;1.52160315237355;0.973600982642255;-9.78737574478142 234 4.66;1.5434247458828;0.721487467682873;-9.79590658318855 235 4.68;1.55673979794012;0.511277527414434;-9.79887293197839 236 4.7;1.5607668226205;0.427178229538768;-9.79934819334205 237 4.72;1.56758626494406;0.216923844829188;-9.79991130000748 238 4.74;1.56991066271621;-0.0361438851432762;-9.79999508312774 239 4.76;1.56693912026379;-0.247665550614458;-9.79986567570628 240 4.78;1.56443559768243;-0.332274572947089;-9.79974033046634 241 4.8;1.55488973915028;-0.54378294501634;-9.79851724915983 242 4.82;1.53751898719209;-0.79752500266369;-9.79405191296643 243 4.84;1.51391430031465;-1.0482790335339;-9.78328774475893 244 4.86;1.48969657328236;-1.25462319925847;-9.76662055336728 245 4.88;1.47875511712013;-1.33705604202356;-9.75734993005631 246 4.9;1.44827490933035;-1.54267268061923;-9.7246790752092 247 4.92;1.4060863939395;-1.78828902546384;-9.66488675841202 248 4.94;1.36582595962425;-1.99358930498405;-9.59188491441316 249 4.96;1.34821528907229;-2.07645703549025;-9.55527515567532 250 4.98;1.30098230573634;-2.28192020782915;-9.44129696771756 251 5;1.23858429483283;-2.52475802167623;-9.25919215933087 252 5.02;1.16995086328433;-2.76211462663623;-9.01736770374542 253 5.04;1.10985853780565;-2.95003090202839;-8.77209701582345 254 5.06;1.08562394575593;-3.02083294447494;-8.66391440432016 255 5.08;1.0225031100533;-3.19344876868432;-8.35714828575579 256 5.1;0.942314543340568;-3.39176699365398;-7.92066539011438 257 5.12;0.85743502365474;-3.57848528322994;-7.40339754513494 258 5.14;0.781078135991376;-3.72933467294311;-6.8959390927044 259 5.16;0.714489435726075;-3.84640060670178;-6.41760214988818 260 5.18;0.645919447526367;-3.95467074702335;-5.89537900003045 261 5.2;0.575529411435672;-4.05338597135985;-5.33054895693128 262 5.22;0.503493499454005;-4.14181580163302;-4.72525342623489 263 5.24;0.429998760906735;-4.21927211105692;-4.08251344469821 264 5.26;0.279437681059167;-4.33883762516863;-2.70102315576547 265 5.28;0.206365012145827;-4.37860952859963;-2.00682819399417 266 5.3;0.136285881333149;-4.40524766080435;-1.33064868221268 267 5.32;0.0658685085402296;-4.42101320220065;-0.644643506269028 268 5.34;-0.00471281264932037;-4.42578970048101;0.0461566044869721 269 5.36;-0.140015778763592;-4.40424851860221;1.3669196083351 270 5.38;-0.206326716320282;-4.37876974101363;2.00658897017558 271 5.4;-0.272180551623132;-4.34372746272842;2.63314047142061 272 5.42;-0.402047004649455;-4.24582811876575;3.83279482411397 273 5.44;-0.46575174061335;-4.18359692198325;4.39892745589674 274 5.46;-0.528452328684389;-4.11300528345357;4.93874763906276 275 5.48;-0.654759155171857;-3.94167778618852;5.96497266266354 276 5.5;-0.716501963597775;-3.84331750595638;6.43316813454917 277 5.52;-0.776627398109222;-3.73781412238798;6.86558462335929 278 5.54;-0.838173598186086;-3.61913740288248;7.28183660335249 279 5.56;-0.96107090021493;-3.34872152516285;8.0305920066374 280 5.58;-1.01883328167223;-3.20437051230397;8.34134051405891 281 5.6;-1.07759477634337;-3.04430991298076;8.62803267817041 282 5.62;-1.13686719934138;-2.86867520723601;8.88806782874805 283 5.64;-1.19256986386828;-2.68827715632377;9.10403956368617 284 5.66;-1.24461557693028;-2.50395461634337;9.28035197298311 285 5.68;-1.29551720539389;-2.30536628491158;9.4278844294306 286 5.7;-1.33693670848925;-2.12856431705639;9.53090883534807 287 5.72;-1.35255335923393;-2.05730762632628;9.56520742376478 288 5.74;-1.38919096873263;-1.87817918534388;9.63670965191066 289 5.76;-1.42880991047436;-1.66173648068482;9.69970341751307 290 5.78;-1.46531825316808;-1.43121593634378;9.74397191751251 291 5.8;-1.49808225926314;-1.18695725482629;9.77302525443444 292 5.82;-1.52079583985205;-0.982979366189633;9.78714757013002 293 5.84;-1.52865577405189;-0.901310569136196;9.79069492302986 294 5.86;-1.54523823944688;-0.697050495439038;9.79642673628672 295 5.88;-1.56003489554686;-0.438818229602957;9.79925176986058 296 5.9;-1.56765494939493;-0.212742608572872;9.79992822471304 297 5.92;-1.56920087833818;-0.122307976735148;9.79996410634867 298 5.94;-1.5693102947045;0.103779125413158;9.79997906790208 299 5.96;-1.56268197061875;0.375076348961152;9.79954529776891 300 5.98;-1.55216099443863;0.593049329999877;9.7980201382979 301 6;-1.54683182976733;0.675377557801189;9.79690782887783 302 6.02;-1.53039639552802;0.881127480587236;9.79139961911489 303 6.04;-1.50507440416999;1.12780516507316;9.77785462809791 304 6.06;-1.47353972379698;1.3739980407245;9.75222541762195 305 6.08;-1.44139169185748;1.58528100421277;9.71592567323527 306 6.1;-1.42656261850098;1.67362708155089;9.69610604865044 307 6.12;-1.38588455636389;1.89346375940767;9.6297162272921 308 6.14;-1.33061678842336;2.15488553308105;9.51457501903042 309 6.16;-1.27924035765128;2.36994615908248;9.38190320382415 310 6.18;-1.25728270603913;2.45507561192918;9.31780240010604 311 6.2;-1.20283617532853;2.65219919540643;9.13919239622511 312 6.22;-1.13515213516116;2.87300925800065;8.87916202800419 313 6.24;-1.0621434713353;3.08665589906925;8.55321473684753 314 6.26;-0.997447852788276;3.25811995004928;8.22696130525145 315 6.28;-0.970565736998173;3.32475329192435;8.08113399675394 316 6.3;-0.909618586439425;3.46736373682959;7.73035457070066 317 6.32;-0.840037251570339;3.61502281862202;7.29314400584746 318 6.34;-0.767643152685907;3.75355137199962;6.80089761194553 319 6.36;-0.692626296525125;3.88186702461168;6.25334217741208 320 6.38;-0.615197589158796;3.99889182279203;5.65141020446716 321 6.4;-0.535589397102367;4.10357364401707;4.99734575094273 322 6.42;-0.454054495693249;4.19491972902775;4.2947549930835 323 6.44;-0.37086360493064;4.27202715421537;3.54859214310691 324 6.46;-0.22082676994619;4.37163731274806;2.14514652121134 325 6.48;-0.148082113508147;4.40141846522886;1.44494395331074 326 6.5;-0.0749405271480904;4.41948726884231;0.733237321622717 327 6.52;-0.00455515562124399;4.4259101436334;0.0446149647241527 328 6.54;0.130193486761357;4.407164827518;-1.27157677750794 329 6.56;0.197200942476044;4.38283328863659;-1.91899629487787 330 6.58;0.263310233516495;4.34902440989412;-2.54936204777807 331 6.6;0.392743743730681;4.25413778917394;-3.74878366449204 332 6.62;0.456256686816478;4.19348533675382;-4.31564398139205 333 6.64;0.519878659010112;4.12313923605231;-4.86588635574325 334 6.66;0.645701787128558;3.95532518976908;-5.89444449928917 335 6.68;0.706532622876217;3.85991729360419;-6.35929208418658 336 6.7;0.768431458892509;3.7525957940219;-6.80762602784152 337 6.72;0.831128533676048;3.6333468203578;-7.23574386329532 338 6.74;0.89174168333171;3.50718181695897;-7.62265543285172 339 6.76;1.01053156090264;3.22548767766961;-8.29754402880233 340 6.78;1.07234636527078;3.05919797570114;-8.60368518904966 341 6.8;1.13083444622895;2.88735249198364;-8.86315021095873 342 6.82;1.18589508596443;2.71083123555036;-9.07975990155133 343 6.84;1.2396624557397;2.52191105821546;-9.26420399927299 344 6.86;1.2833988793704;2.35481994763479;-9.39544789253581 345 6.88;1.30002989214008;2.28732474484808;-9.44034094357905 346 6.9;1.33941710878966;2.1173184197112;-9.53637046270448 347 6.92;1.38271529832956;1.91134724925444;-9.6251443146745 348 6.94;1.42435305534246;1.68663378687911;-9.69294683520144 349 6.96;1.46350369809747;1.44351795456734;-9.74205865533899 350 6.98;1.49656020306368;1.19942573326685;-9.77190880682908 351 7;1.51952263661356;0.995576968778617;-9.7865004376728 352 7.02;1.52748343659935;0.913958007547837;-9.79018860052491 353 7.04;1.54476744313665;0.702286001215113;-9.79625465245336 354 7.06;1.55996032191033;0.44214065659109;-9.79925584296178 355 7.08;1.56744030754692;0.225315192419742;-9.79991939965509 356 7.1;1.56905062096134;0.138582027770475;-9.79995965491633 357 7.12;1.56962210586325;-0.0782484585517574;-9.79998795600347 358 7.14;1.56440127948784;-0.331845950812676;-9.79971391245288 359 7.16;1.55292446364654;-0.578831260859661;-9.79817425693197 360 7.18;1.53869187744721;-0.784601008834534;-9.79447860900148 361 7.2;1.53175410922627;-0.866885617350377;-9.79206052721543 362 7.22;1.51130045933083;-1.07245464786324;-9.78176677038658 363 7.24;1.48042495062297;-1.32372783716955;-9.75853841380582 364 7.26;1.44925832103267;-1.53668771069595;-9.72585547297816 365 7.28;1.43545131847571;-1.62165881691307;-9.70852521368845 366 7.3;1.39760142948346;-1.83322261190836;-9.65059434623393 367 7.32;1.34621193987147;-2.08510134526619;-9.55031798597932 368 7.34;1.29937429903811;-2.28918517064142;-9.4376481981258 369 7.36;1.27988326138146;-2.36798295143698;-9.38465416236206 370 7.38;1.22821534066775;-2.56265879274932;-9.22575183775467 371 7.4;1.16098871525259;-2.79137652019375;-8.98301486527283 372 7.42;1.0881032288214;-3.01318753884909;-8.67411889823303 373 7.44;1.02345582360569;-3.19112636541564;-8.36235172503967 374 7.46;0.996644162463075;-3.26009384025449;-8.22265183524791 375 7.48;0.927105319522959;-3.42676984870071;-7.83172896418292 376 7.5;0.839297928674986;-3.61537987674624;-7.28549927236307 377 7.52;0.746967756244719;-3.78927711895215;-6.65085518746705 378 7.54;0.666733618874402;-3.92321774598469;-6.05724320142204 379 7.56;0.599945679778724;-4.02067257434548;-5.52989587755335 380 7.58;0.531595828890043;-4.10893993947152;-4.96474995597615 381 7.6;0.461843645815494;-4.18740505199003;-4.36416765533403 382 7.62;0.318819545082796;-4.31270362047862;-3.0697498134746 383 7.64;0.245913701804339;-4.35857816801782;-2.38413612621308 384 7.66;0.172334492462805;-4.39275831736387;-1.67938466065259 385 7.68;0.10117141369784;-4.41455800028213;-0.989209515172891 386 7.7;0.0326334153439656;-4.42471016964124;-0.319562546162588 387 7.72;-0.104511123739436;-4.41379723126415;1.02174687316026 388 7.74;-0.171727730625574;-4.3932972601051;1.67376083670231 389 7.76;-0.23748902137661;-4.36341185391815;2.30433842061622 390 7.78;-0.367314436879094;-4.27580213795304;3.51746686298667 391 7.8;-0.431691902553777;-4.21801520245785;4.09826481111768 392 7.82;-0.495713592958439;-4.15099983283375;4.65911282583862 393 7.84;-0.620363094485454;-3.99231424985025;5.69438364409788 394 7.86;-0.682785928938451;-3.89817499017141;6.18023459954386 395 7.88;-0.745692871336873;-3.79323727796382;6.64591386589471 396 7.9;-0.806822931591931;-3.68099665764007;7.0733040989404 397 7.92;-0.927312426973403;-3.42757783021136;7.83605783537049 398 7.94;-0.990139722264976;-3.27736002887594;8.18994240367322 399 7.96;-1.05009296446888;-3.12094927543182;8.49756608643907 400 7.98;-1.10706392640808;-2.95918633661024;8.76164573756548 401 8;-1.16357786344555;-2.78403685328743;8.9948868296532 402 8.02;-1.21920520221869;-2.59588601866612;9.19718017763866 403 8.04;-1.27090198167665;-2.40397211268109;9.35971147117945 404 8.06;-1.31859821174229;-2.20906527632343;9.48751409620961 405 8.08;-1.35738057699339;-2.0343347471237;9.57523217493259 406 8.1;-1.37332271428841;-1.95771610412609;9.60710105038916 407 8.12;-1.4104125629526;-1.76520602721252;9.67206428616991 408 8.14;-1.4499230356294;-1.53277292779033;9.72685625940042 409 8.16;-1.4838507718095;-1.29927783614262;9.76179902692807 410 8.18;-1.51292883353949;-1.05728535744333;9.78270296316467 411 8.2;-1.533318647446;-0.848793996035762;9.79265523616 412 8.22;-1.54019537449497;-0.765341687186001;9.79494872754005 413 8.24;-1.55418662770609;-0.556655447101937;9.79840022326279 414 8.26;-1.56521417576462;-0.306174529076567;9.79977228812377 415 8.28;-1.56958047510386;-0.0946173142365923;9.79999074284266 416 8.3;-1.5700337525467;-0.00830708618768208;9.79999513704328 417 8.32;-1.56774611410411;0.20747070459582;9.79991759978462 418 8.34;-1.558843565918;0.466397421523056;9.79911393460662 419 8.36;-1.54310031614906;0.725272636425475;9.79579192186468 420 8.38;-1.525259647528;0.937293847163265;9.78917347998032 421 8.4;-1.51700059637523;1.01989899719128;9.78515531711916 422 8.42;-1.49321794149055;1.22619375019385;9.76934736064393 423 8.44;-1.45904366507447;1.4731723685817;9.73717546656711 424 8.46;-1.42588355557374;1.67821298566679;9.69524139905291 425 8.48;-1.41137411875719;1.75996458733858;9.67368943200146 426 8.5;-1.37107685950912;1.96759169986954;9.60200466267816 427 8.52;-1.31622105358145;2.21775698804078;9.48014284630741 428 8.54;-1.25485501138247;2.46411885448551;9.31008427574898 429 8.56;-1.19891710736614;2.66558418131268;9.12504630920641 430 8.58;-1.17527726205264;2.74497741900718;9.03833789912335 431 8.6;-1.11599269062287;2.93140092002248;8.79821136376673 432 8.62;-1.04214943640296;3.14130578005973;8.45603219250001 433 8.64;-0.963310733764466;3.34200197765314;8.03999720556543 434 8.66;-0.894039065384171;3.50102704763107;7.63394103477262 435 8.68;-0.865407571538728;3.56223051673206;7.45515880492124 436 8.7;-0.804032452727364;3.68611555537819;7.05378191222137 437 8.72;-0.668827229101069;3.91981507029374;6.07296645824394 438 8.74;-0.598271424815528;4.02280429343102;5.51598285456689 439 8.76;-0.525976167266099;4.11552399067408;4.91687536192123 440 8.78;-0.452130541442426;4.19724743965409;4.27847747990478 441 8.8;-0.376936185493384;4.26730760936469;3.60452857569891 442 8.82;-0.30060540963698;4.32511479314089;2.89962388080311 443 8.84;-0.227085837857009;4.3686091052336;2.20500477191543 444 8.86;-0.085820922389234;4.41763975385177;0.83948401169952 445 8.88;-0.0147750332151617;4.42554964101775;0.144698549433588 446 8.9;0.054233295748742;4.42269507802684;-0.530928567233345 447 8.92;0.187580559810215;4.3869590331437;-1.82652188806418 448 8.94;0.253701273475682;4.35453620216147;-2.45835284102587 449 8.96;0.319179430982771;4.31273583201735;-3.07348996099146 450 8.98;0.383876171771135;4.2618496977971;-3.66837249104689 451 9;0.510635324907487;4.13401781858409;-4.78724020732097 452 9.02;0.573832851544473;4.05591151435875;-5.31725396346669 453 9.04;0.637150524161359;3.96793902653216;-5.82723545524693 454 9.06;0.759316445850976;3.76920509455678;-6.74358911605631 455 9.08;0.82094201632015;3.65340057646009;-7.16787940810299 456 9.1;0.883584190294356;3.52472650718313;-7.57198891494234 457 9.12;0.943921552941303;3.38937694779671;-7.93320328850462 458 9.14;1.00184400993511;3.24808825581244;-8.25284925274856 459 9.16;1.06101372875537;3.09075138622035;-8.54987243932154 460 9.18;1.12093530663366;2.91745241293133;-8.82123858888944 461 9.2;1.17734985048124;2.7391951028533;-9.04783677628481 462 9.22;1.23016683582469;2.55682942434104;-9.23393387994063 463 9.24;1.2818031875963;2.36072804956141;-9.39039825048332 464 9.26;1.33175950011873;2.15132853340179;-9.51865066177967 465 9.28;1.37705099869109;1.93945924495592;-9.61442518794748 466 9.3;1.41763006939953;1.72577583147931;-9.68350326615674 467 9.32;1.45544188988797;1.49691516049602;-9.73316667115738 468 9.34;1.48458745404856;1.29390655128874;-9.76254140862079 469 9.36;1.49502758358275;1.21253734093635;-9.77081824452085 470 9.38;1.51807448807269;1.00888291527274;-9.78560548395335 471 9.4;1.54023024105737;0.76420149317809;-9.79497577247812 472 9.42;1.55672429993529;0.50778449027371;-9.79879338553135 473 9.44;1.56585526023836;0.284406123672298;-9.79983354634655 474 9.46;1.56804113969243;0.195048553191847;-9.79991597910086 475 9.48;1.56983932192713;-0.0283465775283993;-9.79999477578018 476 9.5;1.56674884848496;-0.251739114290087;-9.79984813989923 477 9.52;1.56404607226216;-0.341094090811978;-9.79970514009328 478 9.54;1.5543656342066;-0.553888512423307;-9.79843865135474 479 9.56;1.53730053150686;-0.80071695060819;-9.79400454655638 480 9.58;1.5140182214038;-1.04736542357444;-9.78335612693582 481 9.6;1.48995850854484;-1.25262305385032;-9.76684445504399 482 9.62;1.47909366492197;-1.3346212042554;-9.75767058690694 483 9.64;1.44729297758865;-1.54812951974984;-9.72322359434126 484 9.66;1.40187495485469;-1.81027498736415;-9.65761844740755 485 9.68;1.35872730519927;-2.02710146867207;-9.57712256614627 486 9.7;1.34006183456737;-2.11329264745504;-9.53695870739006 487 9.72;1.2899271218483;-2.32681078621997;-9.41132368016484 488 9.74;1.22684142847954;-2.56772038010024;-9.22138743773055 489 9.76;1.16084612622115;-2.79195395669199;-8.98266764044131 490 9.78;1.1017611320438;-2.97389546934202;-8.73633447242025 491 9.8;1.07705498884325;-3.04518603929864;-8.62425602772315 492 9.82;1.01271165058679;-3.21881951826174;-8.30652581322637 493 9.84;0.938419225465717;-3.40168031233334;-7.90017637356968 494 9.86;0.86751215657923;-3.55833181475966;-7.46976793120521 495 9.88;0.793507367681971;-3.70561698932108;-6.98063426222674 496 9.9;0.716607928200271;-3.84233344121427;-6.4320093951547 497 9.92;0.63704105152158;-3.96727453440152;-5.82446953779525 498 9.94;0.555058924389318;-4.07925407565086;-5.16007520501194 499 9.96;0.470937681925976;-4.17714591259268;-4.44245014885074 500 9.98;0.384974645644839;-4.2599206005121;-3.67678324945217 1 zero;t;theta;omega1;omega2;v 2 0;0;1,5707963267949;0,01;0,01;-9,8 3 0;0,0199435824926262;1,5690468030497;-0,185447049133125;-0,185447049133125;-9,79998504754202 4 0;0,0398871649852524;1,56339943963919;-0,380891535141874;-0,380891535141874;-9,79973532617267 5 0;0,0598307474778785;1,55385440128563;-0,576322380421437;-0,576322380421437;-9,79859415605632 6 0;0,0797743299705047;1,54041179254492;-0,771716532668412;-0,771716532668412;-9,79547672995062 7 0;0,0997179124631309;1,52307310027964;-0,967017101438835;-0,967017101438835;-9,78884436650659 8 0;0,119661494955757;1,50184125538184;-1,16213158625024;-1,16213158625024;-9,77671334708016 9 0;0,139605077448383;1,47672137154395;-1,3569275722976;-1,3569275722976;-9,75666893673552 10 0;0,159548659941009;1,44772125181193;-1,55122208733304;-1,55122208733304;-9,72587103449737 11 0;0,179492242433636;1,41485247577885;-1,74477180993738;-1,74477180993738;-9,68108215592949 12 0;0,199435824926262;1,37813339837047;-1,9372600189113;-1,9372600189113;-9,61868127159841 13 0;0,219379407418888;1,33758970798398;-2,12829293870799;-2,12829293870799;-9,53471853013898 14 0;0,239322989911514;1,29325506293181;-2,31739963904338;-2,31739963904338;-9,42497370300086 15 0;0,25926657240414;1,24517245585375;-2,50402702795319;-2,50402702795319;-9,28502337522233 16 0;0,279210154896766;1,19339732742832;-2,68752368288354;-2,68752368288354;-9,11033717293435 17 0;0,299153737389393;1,13799970995711;-2,86715098939423;-2,86715098939423;-8,89640279292021 18 0;0,319097319882019;1,0790655571621;-3,04208343613583;-3,04208343613583;-8,6388648476863 19 0;0,339040902374645;1,0166973139284;-3,21141350349488;-3,21141350349488;-8,33367338970963 20 0;0,358984484867271;0,951015366586319;-3,37415708451641;-3,37415708451641;-7,97725477954339 21 0;0,378928067359897;0,882161993718776;-3,52925042287196;-3,52925042287196;-7,56671752240915 22 0;0,398871649852524;0,810301254734915;-3,67559214197408;-3,67559214197408;-7,10004328593096 23 0;0,41881523234515;0,735618913760132;-3,81206059487068;-3,81206059487068;-6,57624780091029 24 0;0,438758814837776;0,658322828555564;-3,93752131122869;-3,93752131122869;-5,99555167544257 25 0;0,458702397330402;0,578643264979682;-4,05084286216007;-4,05084286216007;-5,35950715192898 26 0;0,478645979823028;0,496833927274802;-4,15094883358089;-4,15094883358089;-4,6711163390946 27 0;0,498589562315654;0,413168384455917;-4,23684007096816;-4,23684007096816;-3,93482708885133 28 0;0,518533144808281;0,327938825812;-4,30761893665865;-4,30761893665865;-3,15650473470992 29 0;0,538476727300907;0,241455077585663;-4,36251357020268;-4,36251357020268;-2,34333431103887 30 0;0,558420309793533;0,154040437902097;-4,40091037811633;-4,40091037811633;-1,50363310997008 31 0;0,578363892286159;0,0660280040208068;-4,42237302884608;-4,42237302884608;-0,646604231317743 32 0;0,598307474778785;-0,0222414144169002;-4,42665202307565;-4,42665202307565;0,217947921117598 33 0;0,618251057271411;-0,110423919652562;-4,41369702407014;-4,41369702407014;1,07995653461839 34 0;0,638194639764038;-0,198177497381886;-4,38365833593757;-4,38365833593757;1,9294512319325 35 0;0,658138222256664;-0,28516446353376;-4,33688301860941;-4,33688301860941;2,75688913449012 36 0;0,67808180474929;-0,37105567189465;-4,27389989319858;-4,27389989319858;3,55347472845092 37 0;0,698025387241916;-0,455534898853443;-4,19540171850015;-4,19540171850015;4,31143784125406 38 0;0,717968969734542;-0,53830086077377;-4,10222842883795;-4,10222842883795;5,02424219198253 39 0;0,737912552227169;-0,619069960228668;-3,99533464439281;-3,99533464439281;5,68672393928641 40 0;0,757856134719795;-0,697579002111393;-3,87576072329767;-3,87576072329767;6,29516770820558 41 0;0,777799717212421;-0,773586125669082;-3,74461151667173;-3,74461151667173;6,84731050604858 42 0;0,797743299705047;-0,846871600225607;-3,60302192089839;-3,60302192089839;7,34227674292541 43 0;0,817686882197673;-0,917238551007849;-3,45212721503044;-3,45212721503044;7,78047106005834 44 0;0,837630464690299;-0,98451264367355;-3,29304703194559;-3,29304703194559;8,16342442827307 45 0;0,857574047182926;-1,04854169997755;-3,12686167021042;-3,12686167021042;8,49362739026181 46 0;0,877517629675552;-1,10919404972296;-2,95459065426567;-2,95459065426567;8,77433207755339 47 0;0,897461212168178;-1,16635774771315;-2,77718212597971;-2,77718212597971;9,00936990402618 48 0;0,917404794660804;-1,21993933188569;-2,59550732528299;-2,59550732528299;9,20296927042301 49 0;0,93734837715343;-1,26986200938509;-2,41034760343377;-2,41034760343377;9,35958759485525 50 0;0,957291959646057;-1,31606304659747;-2,22239536869887;-2,22239536869887;9,48375948768525 51 0;0,977235542138683;-1,35849258567217;-2,03225285366943;-2,03225285366943;9,57997127159705 52 0;0,997179124631309;-1,39711229184892;-1,84043621014955;-1,84043621014955;9,65255912267757 53 0;1,01712270712394;-1,43189375655303;-1,64737152399099;-1,64737152399099;9,7056137872655 54 0;1,03706628961656;-1,46281568182392;-1,45340951432795;-1,45340951432795;9,74292364027497 55 0;1,05700987210919;-1,48986261055403;-1,25883214592518;-1,25883214592518;9,76792123126598 56 0;1,07695345460181;-1,51302424551721;-1,06385601362064;-1,06385601362064;9,78365093913545 57 0;1,09689703709444;-1,53229478520876;-0,868638007362338;-0,868638007362338;9,79274045307523 58 0;1,11684061958707;-1,5476706982811;-0,673283923771452;-0,673283923771452;9,79738248726719 59 0;1,13678420207969;-1,55914990799523;-0,47786368287163;-0,47786368287163;9,79933617916762 60 0;1,15672778457232;-1,56673140862568;-0,282420503383806;-0,282420503383806;9,79991936979167 61 0;1,17667136706494;-1,57041483426738;-0,0869749591420389;-0,0869749591420389;9,80000189963644 62 0;1,19661494955757;-1,57020050944195;0,108469612379024;0,108469612379024;9,8000012009222 63 0;1,2165585320502;-1,56608836766811;0,303915227034472;0,303915227034472;9,79989307694045 64 0;1,23650211454282;-1,55807818109789;0,499356898063231;0,499356898063231;9,79920746126029 65 0;1,25644569703545;-1,54617039220021;0,694772197752604;0,694772197752604;9,79702976664617 66 0;1,27638927952808;-1,53036605270254;0,89011548716739;0,89011548716739;9,79199436162124 67 0;1,2963328620207;-1,51066740850311;1,08531336840132;1,08531336840132;9,78229204335016 68 0;1,31627644451333;-1,48707810326492;1,28025404575962;1,28025404575962;9,76567806517666 69 0;1,33622002700595;-1,45960438813474;1,47477523992634;1,47477523992634;9,73948062128656 70 0;1,35616360949858;-1,42825713846445;1,66865387640424;1,66865387640424;9,70061465443659 71 0;1,37610719199121;-1,39305239846577;1,86159988405785;1,86159988405785;9,64560405744602 72 0;1,39605077448383;-1,35401221451935;2,05325540934256;2,05325540934256;9,57062448112366 73 0;1,41599435697646;-1,31116604857323;2,2431834891275;2,2431834891275;9,47155257861399 74 0;1,43593793946908;-1,26455284352158;2,43085989572141;2,43085989572141;9,34403388396405 75 0;1,45588152196171;-1,21422399829281;2,61567221493767;2,61567221493767;9,18356840040894 76 0;1,47582510445434;-1,16024430498314;2,796916918894;2,796916918894;8,98562477807909 77 0;1,49576868694696;-1,10269242641955;2,97380462029321;2,97380462029321;8,74576789010056 78 0;1,51571226943959;-1,04166294004508;3,1454584686876;3,1454584686876;8,45979945983007 79 0;1,53565585193222;-0,977269892187554;3,31091249734307;3,31091249734307;8,12393976393079 80 0;1,55559943442484;-0,90964750381721;3,46914089776742;3,46914089776742;7,7350127877663 81 0;1,57554301691747;-0,83895083482041;3,6190665363598;3,6190665363598;7,29062795550983 82 0;1,59548659941009;-0,765356354584994;3,75956721506314;3,75956721506314;6,78938114602673 83 0;1,61543018190272;-0,68906275504062;3,88949859478805;3,88949859478805;6,23097556393208 84 0;1,63537376439535;-0,61029297426871;4,00772870750846;4,00772870750846;5,61645277463504 85 0;1,65531734688797;-0,529291111340302;4,11316411477359;4,11316411477359;4,94823081021678 86 0;1,6752609293806;-0,446322347214577;4,20476998924517;4,20476998924517;4,23018043203236 87 0;1,69520451187323;-0,361672768598453;4,28159906006898;4,28159906006898;3,46762472110139 88 0;1,71514809436585;-0,275645472471796;4,34282995832595;4,34282995832595;2,66724661051462 89 0;1,73509167685848;-0,188557956485271;4,38778804509145;4,38778804509145;1,83693705829656 90 0;1,7550352593511;-0,100740433972701;4,41596121544961;4,41596121544961;0,985586855166113 91 0;1,77497884184373;-0,0125316352919622;4,42702438545312;4,42702438545312;0,12280678458829 92 0;1,79492242433636;0,0757261685117872;4,42084948202438;4,42084948202438;-0,741407214904661 93 0;1,81486600682898;0,163689509389155;4,39750880781145;4,39750880781145;-1,59700262254723 94 0;1,83480958932161;0,251017975128795;4,35727237884891;4,35727237884891;-2,43422345676706 95 0;1,85475317181423;0,337379269763042;4,30059735936996;4,30059735936996;-3,24394899865825 96 0;1,87469675430686;0,422451604345737;4,22811717812763;4,22811717812763;-4,01797700455412 97 0;1,89464033679949;0,505927027363731;4,14061673690178;4,14061673690178;-4,74926134816718 98 0;1,91458391929211;0,587515107850032;4,03900518402649;4,03900518402649;-5,43208581799024 99 0;1,93452750178474;0,666944448204908;3,92429601515481;3,92429601515481;-6,0621620606927 100 0;1,95447108427737;0,743964331155479;3,79757309584351;3,79757309584351;-6,63665820869171 101 0;1,97441466676999;0,818346382060471;3,65995822701233;3,65995822701233;-7,15416354409218 102 0;1,99435824926262;0,889884826681939;3,51259206049132;3,51259206049132;-7,61459266911737 103 0;2,01430183175524;0,958396517308212;3,35660589889279;3,35660589889279;-8,01905446471568 104 0;2,03424541424787;1,02372035122887;3,19309405816957;3,19309405816957;-8,36968204284173 105 0;2,0541889967405;1,0857167181985;3,02310098193179;3,02310098193179;-8,6694498666393 106 0;2,07413257923312;1,14426655127828;2,84760744950696;2,84760744950696;-8,92198743458696 107 0;2,09407616172575;1,19926932988168;2,66751518133685;2,66751518133685;-9,13138588640926 108 0;2,11401974421837;1,25064127059122;2,48364025601359;2,48364025601359;-9,30202912203576 109 0;2,133963326711;1,29831421321658;2,29671125922233;2,29671125922233;-9,43843812422737 110 0;2,15390690920363;1,34223417533717;2,10736581016487;2,10736581016487;-9,54513352509501 111 0;2,17385049169625;1,38235878105529;1,916150721995;1,916150721995;-9,62652159075985 112 0;2,19379407418888;1,41865511591861;1,72352978033957;1,72352978033957;-9,68679877747546 113 0;2,21373765668151;1,4510987507784;1,52988558997812;1,52988558997812;-9,72987947484608 114 0;2,23368123917413;1,4796727427445;1,3355255676816;1,3355255676816;-9,7593437438353 115 0;2,25362482166676;1,50436564478848;1,14068481283286;1,14068481283286;-9,7783865010031 116 0;2,27356840415938;1,52516968334646;0,94554203662719;0,94554203662719;-9,7898021043916 117 0;2,29351198665201;1,54207989464764;0,750228188515822;0,750228188515822;-9,79595961770914 118 0;2,31345556914464;1,55509358520833;0,554830355137874;0,554830355137874;-9,79879272014784 119 0;2,33339915163726;1,56421005977388;0,359398843573032;0,359398843573032;-9,79979263731858 120 0;2,35334273412989;1,56942889699159;0,163954519477977;0,163954519477977;-9,79999280763018 121 0;2,37328631662252;1,57074974737055;-0,0314954092216584;-0,0314954092216584;-9,80000032518603 122 0;2,39322989911514;1,56817259419664;-0,22694609948864;-0,22694609948864;-9,79997005454536 123 0;2,41317348160777;1,56169748419756;-0,422390273536018;-0,422390273536018;-9,79959852236228 124 0;2,43311706410039;1,55132478795866;-0,617814236492102;-0,617814236492102;-9,79814224007072 125 0;2,45306064659302;1,53705520578616;-0,81319021301762;-0,81319021301762;-9,79442265705547 126 0;2,47300422908565;1,51888975333575;-1,00845917025729;-1,00845917025729;-9,78680348721918 127 0;2,49294781157827;1,49683161786726;-1,20352180820602;-1,20352180820602;-9,77320817503051 128 0;2,5128913940709;1,47088664737297;-1,39823144441281;-1,39823144441281;-9,75113026009738 129 0;2,53283497656352;1,44106395024299;-1,59238968294819;-1,59238968294819;-9,71764623428609 130 0;2,55277855905615;1,4073768458368;-1,78573996841693;-1,78573996841693;-9,66943417147494 131 0;2,57272214154878;1,36984376592803;-1,97795307837472;-1,97795307837472;-9,60279596409799 132 0;2,5926657240414;1,32849144525337;-2,16862085918423;-2,16862085918423;-9,51371823897117 133 0;2,61260930653403;1,28335616803197;-2,35725250101223;-2,35725250101223;-9,39793298026378 134 0;2,63255288902666;1,23448456311339;-2,54327071180252;-2,54327071180252;-9,25098704974814 135 0;2,65249647151928;1,18193481480722;-2,72601098408161;-2,72601098408161;-9,06834395944525 136 0;2,67244005401191;1,12577895719141;-2,90471632154493;-2,90471632154493;-8,84550991593069 137 0;2,69238363650453;1,06610604993376;-3,07853701034901;-3,07853701034901;-8,57817756535909 138 0;2,71232721899716;1,0030229581285;-3,24654874474857;-3,24654874474857;-8,2623843746758 139 0;2,73227080148979;0,93665568887478;-3,40775325079912;-3,40775325079912;-7,89469130239856 140 0;2,75221438398241;0,867150028243912;-3,56108531559977;-3,56108531559977;-7,47238251206791 141 0;2,77215796647504;0,79467380757961;-3,70543204983294;-3,70543204983294;-6,99362292098812 142 0;2,79210154896766;0,71941804436536;-3,83965844982596;-3,83965844982596;-6,45767994159763 143 0;2,81204513146029;0,641595752087113;-3,96263156751631;-3,96263156751631;-5,86505056377675 144 0;2,83198871395292;0,561441988105795;-4,07323695660407;-4,07323695660407;-5,21759185853112 145 0;2,85193229644554;0,479214862359987;-4,17040585724779;-4,17040585724779;-4,51860951602602 146 0;2,87187587893817;0,395192427566631;-4,25315729394312;-4,25315729394312;-3,77286075501503 147 0;2,8918194614308;0,309670476530455;-4,32062267739268;-4,32062267739268;-2,98649914849015 148 0;2,91176304392342;0,222961408054999;-4,37206097227912;-4,37206097227912;-2,16696263488107 149 0;2,93170662641605;0,135391659063599;-4,40689289940756;-4,40689289940756;-1,32278774841639 150 0;2,95165020890867;0,0472963202619799;-4,42472057258672;-4,42472057258672;-0,463330914358535 151 0;2,9715937914013;-0,0409834759838914;-4,42533775920517;-4,42533775920517;0,401525647498309 152 0;2,99153737389393;-0,129103493917872;-4,4087365335298;-4,4087365335298;1,26170213495571 153 0;3,01148095638655;-0,216722057438139;-4,37510908723174;-4,37510908723174;2,10728872205774 154 0;3,03142453887918;-0,303503533366587;-4,32484171638451;-4,32484171638451;2,92888125712553 155 0;3,05136812137181;-0,389120978551898;-4,25850145012777;-4,25850145012777;3,71787691680388 156 0;3,07131170386443;-0,473260885175299;-4,1768136597436;-4,1768136597436;4,46675256297043 157 0;3,09125528635706;-0,555625901340421;-4,08064295155916;-4,08064295155916;5,16925618130573 158 0;3,11119886884968;-0,635936494495097;-3,97096746679592;-3,97096746679592;5,82052544787463 159 0;3,13114245134231;-0,713933689063713;-3,84884324568172;-3,84884324568172;6,41715545072239 160 0;3,15108603383494;-0,789380443119465;-3,71538096485553;-3,71538096485553;6,95718571135086 161 0;3,17102961632756;-0,862061991701137;-3,5717204292685;-3,5717204292685;7,44002490777418 162 0;3,19097319882019;-0,931786091211774;-3,4189967231279;-3,4189967231279;7,86632715491803 163 0;3,21091678131281;-0,998383102176659;-3,25831939762423;-3,25831939762423;8,2378430939429 164 0;3,23086036380544;-1,06170531511052;-3,09075778791763;-3,09075778791763;8,5572412887178 165 0;3,25080394629807;-1,12162573239075;-2,91731937446983;-2,91731937446983;8,8279139663105 166 0;3,27074752879069;-1,17803626698158;-2,73893604310621;-2,73893604310621;9,0537907255349 167 0;3,29069111128332;-1,23084678109602;-2,55645852149358;-2,55645852149358;9,23916071937908 168 0;3,31063469377595;-1,27998371508546;-2,37065144898663;-2,37065144898663;9,38850976513461 169 0;3,33057827626857;-1,32538777569938;-2,18218661648296;-2,18218661648296;9,50637384098593 170 0;3,3505218587612;-1,36701156913107;-1,99164789379639;-1,99164789379639;9,59721500849146 171 0;3,37046544125382;-1,40481851660164;-1,79953169319968;-1,79953169319968;9,66532134276895 172 0;3,39040902374645;-1,4387816110056;-1,60625218247657;-1,60625218247657;9,71472946292373 173 0;3,41035260623908;-1,46888157147744;-1,41214050766082;-1,41214050766082;9,7491520799366 174 0;3,4302961887317;-1,49510447771464;-1,21746122739402;-1,21746122739402;9,77194173710568 175 0;3,45023977122433;-1,51744072028355;-1,02241925174781;-1,02241925174781;9,78605398186092 176 0;3,47018335371695;-1,53588441170235;-0,82716375448204;-0,82716375448204;9,79402877953138 177 0;3,49012693620958;-1,55043283872748;-0,631794314339891;-0,631794314339891;9,79797182981858 178 0;3,51007051870221;-1,56108443944769;-0,436369633368507;-0,436369633368507;9,79954089634803 179 0;3,53001410119483;-1,5678383628716;-0,240923550528034;-0,240923550528034;9,79995762311595 180 0;3,54995768368746;-1,57069431280915;-0,0454741606536458;-0,0454741606536458;9,80000089291441 181 0;3,56990126618009;-1,56965220183364;0,149972074335834;0,149972074335834;9,79999736787167 182 0;3,58984484867271;-1,56471233977991;0,345415259915786;0,345415259915786;9,79982086947961 183 0;3,60978843116534;-1,55587477103859;0,540850453297164;0,540850453297164;9,79890986693179 184 0;3,62973201365796;-1,54313952033119;0,736254961214171;0,736254961214171;9,79625236621416 185 0;3,64967559615059;-1,5265078741186;0,9315780091426;0,9315780091426;9,79039220297402 186 0;3,66961917864322;-1,50598243738346;1,12673423881625;1,12673423881625;9,77942572162509 187 0;3,68956276113584;-1,48156785597517;1,32159978158019;1,32159978158019;9,76101604266077 188 0;3,70950634362847;-1,45327126966776;1,51600182814738;1,51600182814738;9,73239847869284 189 0;3,7294499261211;-1,42110344153969;1,70970854647064;1,70970854647064;9,690407035154 190 0;3,74939350861372;-1,38508160532594;1,90241627895576;1,90241627895576;9,63148684598596 191 0;3,76933709110635;-1,34523003102695;2,0937453687287;2,0937453687287;9,55174390841014 192 0;3,78928067359897;-1,30158067762334;2,28324019418237;2,28324019418237;9,44700205697914 193 0;3,8092242560916;-1,25417458738702;2,47036335446051;2,47036335446051;9,31286858863049 194 0;3,82916783858423;-1,20306484451527;2,65448014959638;2,65448014959638;9,14482375747332 195 0;3,84911142107685;-1,14831887294082;2,83486845371886;2,83486845371886;8,93834273504116 196 0;3,86905500356948;-1,09001968457687;3,01071827125255;3,01071827125255;8,68903112669767 197 0;3,8889985860621;-1,02826642537104;3,18113682883966;3,18113682883966;8,39277068677054 198 0;3,90894216855473;-0,96317597764384;3,34515263122073;3,34515263122073;8,04588683148074 199 0;3,92888575104736;-0,894886774186029;3,50171336847976;3,50171336847976;7,64535035207071 200 0;3,94882933353998;-0,823558875037932;3,64972599005681;3,64972599005681;7,18897135823831 201 0;3,96877291603261;-0,749373980908084;3,78807238052989;3,78807238052989;6,67556354302181 202 0;3,98871649852524;-0,672535890436369;3,91561646092792;3,91561646092792;6,10512290856295 203 0;4,00866008101786;-0,593270702286147;4,03122219871822;4,03122219871822;5,47894143206761 204 0;4,02860366351049;-0,511828316753514;4,13380317039863;4,13380317039863;4,79976493852162 205 0;4,04854724600311;-0,428478564165845;4,22234479875042;4,22234479875042;4,07177508861379 206 0;4,06849082849574;-0,343510345171996;4,29592825787755;4,29592825787755;3,30058496457604 207 0;4,08843441098837;-0,257230712815345;4,35375590064397;4,35375590064397;2,49315290093179 208 0;4,10837799348099;-0,169960634403822;4,39518476424182;4,39518476424182;1,65760646369582 209 0;4,12832157597362;-0,0820315636242179;4,41974549392852;4,41974549392852;0,803007815900605 210 0;4,14826515846624;0,00621662029614052;4,4271530092507;4,4271530092507;-0,0609225534061739 211 0;4,16820874095887;0,0944402884997655;4,417320549346;4,417320549346;-0,92413962229459 212 0;4,1881523234515;0,182296959512841;4,39036245280947;4,39036245280947;-1,77663121906856 213 0;4,20809590594412;0,269447736391079;4,34659096174281;4,34659096174281;-2,60875107688376 214 0;4,22803948843675;0,355561622424415;4,28650265444723;4,28650265444723;-3,41154574604111 215 0;4,24798307092938;0,44031994665717;4,21076193271362;4,21076193271362;-4,1770424184917 216 0;4,267926653422;0,523418419691438;4,12018465729623;4,12018465729623;-4,89846824773924 217 0;4,28787023591463;0,604570022255429;4,01570613186812;4,01570613186812;-5,5704019103971 218 0;4,30781381840725;0,683507822757144;3,89835287276184;3,89835287276184;-6,18886318968148 219 0;4,32775740089988;0,759985980759502;3,76922118691795;3,76922118691795;-6,7513293005029 220 0;4,34770098339251;0,833780653570764;3,62944215983983;3,62944215983983;-7,25667896305046 221 0;4,36764456588513;0,90469085858377;3,48015213122221;3,48015213122221;-7,7050946834099 222 0;4,38758814837776;0,972538220156516;3,32247612222616;3,32247612222616;-8,09791528275027 223 0;4,40753173087039;1,03716659598825;3,15750313527064;3,15750313527064;-8,43747108955305 224 0;4,42747531336301;1,09844059751967;2,9862639722654;2,9862639722654;-8,72688960374912 225 0;4,44741889585564;1,15624485068956;2,80972072788164;2,80972072788164;-8,96991127329798 226 0;4,46736247834826;1,21048276709359;2,62875970827561;2,62875970827561;-9,17070594391132 227 0;4,48730606084089;1,26107462474463;2,44417847275553;2,44417847275553;-9,33370059881514 228 0;4,50724964333352;1,30795511215594;2,25668580874435;2,25668580874435;-9,46342545879389 229 0;4,52719322582614;1,35107220029647;2,0669002678316;2,0669002678316;-9,56438455265968 230 0;4,54713680831877;1,39038575010491;1,87535343099227;1,87535343099227;-9,64094820700713 231 0;4,56708039081139;1,42586572245563;1,68248643521928;1,68248643521928;-9,69725809117479 232 0;4,58702397330402;1,4574894352312;1,48866439996506;1,48866439996506;-9,73716094591429 233 0;4,60696755579665;1,48524040165946;1,29418153095711;1,29418153095711;-9,7641555999542 234 0;4,62691113828927;1,50910765938464;1,09926512983653;1,09926512983653;-9,78135900566978 235 0;4,6468547207819;1,529084801253;0,904081675145117;0,904081675145117;-9,7914775945131 236 0;4,66679830327453;1,54516781232793;0,708744941162942;0,708744941162942;-9,79678484617347 237 0;4,68674188576715;1,55735435418165;0,513332362666462;0,513332362666462;-9,79911716135007 238 0;4,70668546825978;1,56564322696088;0,317892140693689;0,317892140693689;-9,79987029418788 239 0;4,7266290507524;1,57003407163185;0,122447588841142;0,122447588841142;-9,79999775802158 240 0;4,74657263324503;1,5705272451712;-0,0729969002461332;-0,0729969002461332;-9,80000244009992 241 0;4,76651621573766;1,56712250572224;-0,268443607393904;-0,268443607393904;-9,79993698457816 242 0;4,78645979823028;1,55981972148574;-0,463888004483;-0,463888004483;-9,79941082038897 243 0;4,80640338072291;1,54861927678002;-0,659310164488569;-0,659310164488569;-9,79759026564098 244 0;4,82634696321553;1,53352206223049;-0,854669854141864;-0,854669854141864;-9,79319506345058 245 0;4,84629054570816;1,51453004861505;-1,04990101089312;-1,04990101089312;-9,78449407910189 246 0;4,86623412820079;1,49164637644938;-1,24489973745705;-1,24489973745705;-9,76932086957326 247 0;4,88617771069341;1,46487688507396;-1,43951233961598;-1,43951233961598;-9,74507883302667 248 0;4,90612129318604;1,43423170441814;-1,63352655795745;-1,63352655795745;-9,7087580623959 249 0;4,92606487567867;1,39972577048733;-1,82666546415337;-1,82666546415337;-9,65695207973225 250 0;4,94600845817129;1,36137979642926;-2,01858555199379;-2,01858555199379;-9,58589533098267 251 0;4,96595204066392;1,31922165001178;-2,20886360833538;-2,20886360833538;-9,49151237359397 252 0;4,98589562315654;1,27328856151968;-2,39699128915707;-2,39699128915707;-9,36948634355796 253 0;5,00583920564917;1,22362974141155;-2,58237297640178;-2,58237297640178;-9,21533741281631 254 0;5,0257827881418;1,17030742429546;-2,76432128730044;-2,76432128730044;-9,02452963036087 255 0;5,04572637063442;1,11339733780495;-2,94206297437895;-2,94206297437895;-8,79259952128893 256 0;5,06566995312705;1,05299100869669;-3,11473539820936;-3,11473539820936;-8,51529357379876 257 0;5,08561353561968;0,989199092289005;-3,28138742151848;-3,28138742151848;-8,18874523492211 258 0;5,1055571181123;0,922152019255036;-3,44100603283934;-3,44100603283934;-7,80965266746164 259 0;5,12550070060493;0,852000939329382;-3,59252227071791;-3,59252227071791;-7,37546760597756 260 0;5,14544428309755;0,778918216979129;-3,73481809679224;-3,73481809679224;-6,88459694082763 261 0;5,16538786559018;0,703098620300167;-3,86675140879479;-3,86675140879479;-6,33652686343781 262 0;5,18533144808281;0,624760851526798;-3,98718741186148;-3,98718741186148;-5,73205174975334 263 0;5,20527503057543;0,544144998838482;-4,0950244671609;-4,0950244671609;-5,07333020593178 264 0;5,22521861306806;0,461512509888872;-4,18921341992907;-4,18921341992907;-4,36396815523371 265 0;5,24516219556068;0,377146090446372;-4,26878830857982;-4,26878830857982;-3,60903194706974 266 0;5,26510577805331;0,291345712285406;-4,33290478446393;-4,33290478446393;-2,81496532968236 267 0;5,28504936054594;0,20442638657798;-4,38085961806824;-4,38085961806824;-1,98945352888702 268 0;5,30499294303856;0,116716501378334;-4,41210855831565;-4,41210855831565;-1,14122617770138 269 0;5,32493652553119;0,0285534791900577;-4,42629197046355;-4,42629197046355;-0,279786089738933 270 0;5,34488010802382;-0,0597209580124391;-4,42324598096949;-4,42324598096949;0,584917364630208 271 0;5,36482369051644;-0,14776308492906;-4,40300639534173;-4,40300639534173;1,44281408260851 272 0;5,38476727300907;-0,235231605299347;-4,36580753371451;-4,36580753371451;2,28406852663826 273 0;5,40471085550169;-0,321792647755943;-4,31207345845031;-4,31207345845031;3,09942290003969 274 0;5,42465443799432;-0,407122154068937;-4,24240775283864;-4,24240775283864;3,88048887302393 275 0;5,44459802048695;-0,490909388620038;-4,15756905614675;-4,15756905614675;4,61999500056016 276 0;5,46454160297957;-0,572860677049547;-4,05844548566565;-4,05844548566565;5,31197413038582 277 0;5,4844851854722;-0,652700977455093;-3,94603481974117;-3,94603481974117;5,95187584367199 278 0;5,50442876796482;-0,730175662729514;-3,82140981730493;-3,82140981730493;6,53660424859814 279 0;5,52437235045745;-0,805052312864283;-3,68568674934808;-3,68568674934808;7,06449563771016 280 0;5,54431593295008;-0,877121033164002;-3,54000589510547;-3,54000589510547;7,53523308938372 281 0;5,5642595154427;-0,946194549329833;-3,38550196269311;-3,38550196269311;7,94972072409527 282 0;5,58420309793533;-1,01210780398229;-3,22327636513685;-3,22327636513685;8,30991937007036 283 0;5,60414668042796;-1,07471739239711;-3,05438455508509;-3,05438455508509;8,61866431952135 284 0;5,62409026292058;-1,13390071009441;-2,87982013997538;-2,87982013997538;8,87948136654627 285 0;5,64403384541321;-1,18955385966581;-2,70049949484097;-2,70049949484097;9,0963898081666 286 0;5,66397742790583;-1,24159008521952;-2,51725425296301;-2,51725425296301;9,27373277988581 287 0;5,68392101039846;-1,28993861853248;-2,33082975411967;-2,33082975411967;9,41601755208241 288 0;5,70386459289109;-1,3345431914889;-2,14187945739732;-2,14187945739732;9,52777425995542 289 0;5,72380817538371;-1,3753593048116;-1,95096662728243;-1,95096662728243;9,61343685080711 290 0;5,74375175787634;-1,4123523075559;-1,75857029630946;-1,75857029630946;9,6772450995179 291 0;5,76369534036897;-1,44549643699345;-1,56508736403406;-1,56508736403406;9,72317024233231 292 0;5,78363892286159;-1,47477367721003;-1,37083797508127;-1,37083797508127;9,75485663296416 293 0;5,80358250535422;-1,50017165372866;-1,17606870977;-1,17606870977;9,77557231011543 294 0;5,82352608784684;-1,52168186720266;-0,980969398879283;-0,980969398879283;9,78818487641329 295 0;5,84346967033947;-1,53929884259288;-0,785679613000745;-0,785679613000745;9,79513967643439 296 0;5,8634132528321;-1,55301966526812;-0,590293363337015;-0,590293363337015;9,7984515812814 297 0;5,88335683532472;-1,56284346760117;-0,394865852574143;-0,394865852574143;9,79969392896296 298 0;5,90330041781735;-1,56876963257067;-0,199421365678639;-0,199421365678639;9,79998360248647 299 0;5,92324400030997;-1,57079783538425;-0,0039710216975397;-0,0039710216975397;9,80000058221546 300 0;5,9431875828026;-1,56892803918765;0,191478972361714;0,191478972361714;9,7999842660578 301 0;5,96313116529523;-1,56316026823055;0,386923160787759;0,386923160787759;9,79971905701764 302 0;5,98307474778785;-1,55349491048428;0,582352065076896;0,582352065076896;9,79853481654425 303 0;6,00301833028048;-1,53993240612326;0,777741131261749;0,777741131261749;9,79533302731553 304 0;6,02296191277311;-1,52247362898176;0,9730366035847;0,9730366035847;9,78856092846661 305 0;6,04290549526573;-1,50112155397603;1,16814616324223;1,16814616324223;9,77622458702236 306 0;6,06284907775836;-1,47588146717731;1,36293185714845;1,36293185714845;9,75589222710544 307 0;6,08279266025098;-1,44676177129075;1,5572069705146;1,5572069705146;9,72471419841751 308 0;6,10273624274361;-1,41377473469416;1,75072575801346;1,75072575801346;9,67943487333841 309 0;6,12267982523624;-1,37693749915713;1,94317415715432;1,94317415715432;9,61643004186558 310 0;6,14262340772886;-1,33627572273033;2,13415721794526;2,13415721794526;9,53173525554007 311 0;6,16256699022149;-1,29182409461495;2,32319772617677;2,32319772617677;9,42112180394994 312 0;6,18251057271411;-1,24362691482868;2,50973589271086;2,50973589271086;9,28016705675915 313 0;6,20245415520674;-1,19173954143484;2,69312577829161;2,69312577829161;9,10433782783237 314 0;6,22239773769937;-1,13623172404338;2,8726228444148;2,8726228444148;8,88912222138367 315 0;6,24234132019199;-1,07718960154951;3,04739550359325;3,04739550359325;8,63016921689047 316 0;6,26228490268462;-1,01471681770041;3,21653404969485;3,21653404969485;8,32344362226622 317 0;6,28222848517725;-0,948935527511343;3,37905203386464;3,37905203386464;7,96539892282643 318 0;6,30217206766987;-0,879987340116371;3,53389427996596;3,53389427996596;7,55316197287075 319 0;6,3221156501625;-0,808036706731556;3,67995388407845;3,67995388407845;7,08473443054018 320 0;6,34205923265512;-0,733270279013287;3,81610088070034;3,81610088070034;6,55916930269096 321 0;6,36200281514775;-0,655896914807349;3,94120085530654;3,94120085530654;5,97672887870586 322 0;6,38194639764038;-0,576147615248723;4,05413197363182;4,05413197363182;5,33901552161405 323 0;6,401889980133;-0,494276791186173;4,15381347107236;4,15381347107236;4,64907223323432 324 0;6,42183356262563;-0,410558803845175;4,23924876494843;4,23924876494843;3,91139317508146 325 0;6,44177714511826;-0,325286211963086;4,3095477604455;4,3095477604455;3,13188411737334 326 0;6,46172072761088;-0,238768709300079;4,3639421626912;4,3639421626912;2,31776257973424 327 0;6,48166431010351;-0,151330607900371;4,40182221689817;4,40182221689817;1,47738533811732 328 0;6,50160789259613;-0,0633054974775656;4,42275648573376;4,42275648573376;0,619979258265363 329 0;6,52155147508876;0,0249663254534839;4,42650322661712;4,42650322661712;-0,244644591950205 330 0;6,54149505758139;0,113140722603872;4,41301789875755;4,41301789875755;-1,10641478800141 331 0;6,56143864007401;0,200875350164227;4,38245673647908;4,38245673647908;-1,95536553576015 332 0;6,58138222256664;0,287833267784946;4,33517183023242;4,33517183023242;-2,78197779927494 333 0;6,60132580505926;0,373685551576128;4,27169875572872;4,27169875572872;-3,57748084348508 334 0;6,62126938755189;0,458116076338752;4,19273531059861;4,19273531059861;-4,33413943576192 335 0;6,64121297004452;0,540824427416839;4,09912295491805;4,09912295491805;-5,04546032775846 336 0;6,66115655253714;0,621527581199664;3,9918217858449;3,9918217858449;-5,70632174161998 337 0;6,68110013502977;0,699962731424555;3,87187514086915;3,87187514086915;-6,31305305714419 338 0;6,7010437175224;0,775888842303276;3,7403860087769;3,7403860087769;-6,86343632590761 339 0;6,72098730001502;0,849087035298158;3,59849162390244;3,59849162390244;-7,35663937321477 340 0;6,74093088250765;0,919360951449536;3,44732913560261;3,44732913560261;-7,79310017722252 341 0;6,76087446500027;0,986536923947833;3,28801402760095;3,28801402760095;-8,17438360956579 342 0;6,7808180474929;1,05046335680134;3,12162499869696;3,12162499869696;-8,50300603011836 343 0;6,80076162998553;1,11100958038923;2,94918170687811;2,94918170687811;-8,78224197881975 344 0;6,82070521247815;1,16806411056979;2,77163000921525;2,77163000921525;-9,01593710021808 345 0;6,84064879497078;1,22153370918695;2,58983601687837;2,58983601687837;-9,20832807159383 346 0;6,86059237746341;1,27134202415026;2,40458061972087;2,40458061972087;-9,36387670051586 347 0;6,88053595995603;1,31742728468233;2,21655210220175;2,21655210220175;-9,48711943620088 348 0;6,90047954244866;1,35973995393189;2,02635045714988;2,02635045714988;-9,58253958564335 349 0;6,92042312494128;1,398241642094;1,83448764055859;1,83448764055859;-9,65446352521555 350 0;6,94036670743391;1,43290382108216;1,6413925466619;1,6413925466619;-9,70697918558225 351 0;6,96031028992654;1,46370598465749;1,44740982604403;1,44740982604403;-9,74386128824863 352 0;6,98025387241916;1,49063321775655;1,25281642286956;1,25281642286956;-9,76853074464691 353 0;7,00019745491179;1,51367514450518;1,05782805252406;1,05782805252406;-9,78401669253081 354 0;7,02014103740441;1,53282533928422;0,862603165774452;0,862603165774452;-9,79293640607935 355 0;7,04008461989704;1,54808072323367;0,667248996429865;0,667248996429865;-9,79747505875991 356 0;7,06002820238967;1,55943949115564;0,471830435635617;0,471830435635617;-9,79937123441043 357 0;7,07997178488229;1,56690066400622;0,276386099326949;0,276386099326949;-9,7999264499325 358 0;7,09991536737492;1,57046387240651;0,0809370791221344;0,0809370791221344;-9,80000000030576 359 0;7,11985894986755;1,57012901293442;-0,114508976315157;-0,114508976315157;-9,80000119439152 360 0;7,13980253236017;1,56589641240733;-0,309952741036882;-0,309952741036882;-9,79988488659955 361 0;7,1597461148528;1,55776605148918;-0,505391057724942;-0,505391057724942;-9,79916933600111 362 0;7,17968969734542;1,54573791251291;-0,70080451311596;-0,70080451311596;-9,79692333501126 363 0;7,19963327983805;1,52981311824242;-0,896147346650978;-0,896147346650978;-9,79177238320445 364 0;7,21957686233068;1,50999396964483;-1,09134108991651;-1,09134108991651;-9,78189321107067 365 0;7,2395204448233;1,48628466927901;-1,28627041963524;-1,28627041963524;-9,7650268515111 366 0;7,25946402731593;1,45869169863057;-1,48077238437557;-1,48077238437557;-9,73848437805265 367 0;7,27940760980855;1,42722509138719;-1,67462612176348;-1,67462612176348;-9,69917178503561 368 0;7,29935119230118;1,39190101154511;-1,86754088141798;-1,86754088141798;-9,64360272497778 369 0;7,31929477479381;1,35274234672352;-2,05915095691956;-2,05915095691956;-9,5679405283723 370 0;7,33923835728643;1,30977938840431;-2,24901605738565;-2,24901605738565;-9,46805488280922 371 0;7,35918193977906;1,26305130615687;-2,43661392261328;-2,43661392261328;-9,33958677386857 372 0;7,37912552227169;1,21260888104407;-2,6213267957865;-2,6213267957865;-9,17803148767952 373 0;7,39906910476431;1,15851700802513;-2,80244917303344;-2,80244917303344;-8,9788558120707 374 0;7,41901268725694;1,10085581893745;-2,9791865602815;-2,9791865602815;-8,73763116232262 375 0;7,43895626974956;1,03972117384633;-3,15066125635564;-3,15066125635564;-8,45017681206671 376 0;7,45889985224219;0,975226538796637;-3,31591433958697;-3,31591433958697;-8,11272409578689 377 0;7,47884343473482;0,907506540234131;-3,47390564493208;-3,47390564493208;-7,72211213269653 378 0;7,49878701722744;0,836717256273758;-3,62355141015058;-3,62355141015058;-7,27598483544633 379 0;7,51873059972007;0,763036336712333;-3,76373766543833;-3,76373766543833;-6,77295930117399 380 0;7,5386741822127;0,686663507690866;-3,89332703198177;-3,89332703198177;-6,21281249456693 381 0;7,55861776470532;0,607820754301709;-4,01118018943448;-4,01118018943448;-5,59658088405679 382 0;7,57856134719795;0,526754081636761;-4,11620160599847;-4,11620160599847;-4,92675326261948 383 0;7,59850492969057;0,443729524663356;-4,20736235236491;-4,20736235236491;-4,20724481928177 384 0;7,6184485121832;0,359032633278536;-4,28372307978152;-4,28372307978152;-3,44341330660252 385 0;7,63839209467583;0,27296762075608;-4,34446123782989;-4,34446123782989;-2,64198539081662 386 0;7,65833567716845;0,185852986034048;-4,3889054672982;-4,3889054672982;-1,81089140944417 387 0;7,67827925966108;0,0980184272438592;-4,41655375802816;-4,41655375802816;-0,959042899666818 388 0;7,6982228421537;0,00980279218148503;-4,42708574270491;-4,42708574270491;-0,0960657435949368 389 0;7,71816642464633;-0,0784507191944003;-4,42037833969458;-4,42037833969458;0,768028571686509 390 0;7,73811000713896;-0,166399289912357;-4,39650993279207;-4,39650993279207;1,6231975883764 391 0;7,75805358963158;-0,253702913146656;-4,35575756073844;-4,35575756073844;2,45970216692862 392 0;7,77799717212421;-0,340028876111144;-4,2985848972199;-4,2985848972199;3,26844020765913 393 0;7,79794075461684;-0,425056173131087;-4,22562741149855;-4,22562741149855;4,04124414210151 394 0;7,81788433710946;-0,508477580823387;-4,1376760760148;-4,1376760760148;4,77110958933077 395 0;7,83782791960209;-0,590002737086616;-4,03564580376888;-4,03564580376888;5,45236031375476 396 0;7,85777150209471;-0,669361035443295;-3,92054841708188;-3,92054841708188;6,08075213828916 397 0;7,87771508458734;-0,746302683374623;-3,79347081375939;-3,79347081375939;6,65350112010887 398 0;7,89765866707997;-0,820599740414308;-3,65553922103001;-3,65553922103001;7,1692366751733 399 0;7,91760224957259;-0,892047116238277;-3,50789027659486;-3,50789027659486;7,62791426881461 400 0;7,93754583206522;-0,960462382806525;-3,35165379044281;-3,35165379044281;8,03067534650222 401 0;7,95748941455784;-1,02568539327401;-3,18792678153774;-3,18792678153774;8,37968374910452 402 0;7,97743299705047;-1,08757701210144;-3,01775077310839;-3,01775077310839;8,677936342339 403 0;7,9973765795431;-1,1460183888053;-2,8421016592824;-2,8421016592824;8,92907646954848 404 0;8,01732016203572;-1,2009097661194;-2,66188046491204;-2,66188046491204;9,13721001381796 405 0;8,03726374452835;-1,25216840903964;-2,4779008792983;-2,4779008792983;9,30672825056924 406 0;8,05720732702098;-1,29972637941309;-2,29088791914675;-2,29088791914675;9,4421526318809 407 0;8,0771509095136;-1,34352943045445;-2,10147669715875;-2,10147669715875;9,54800139139223 408 0;8,09709449200623;-1,3835355911746;-1,91021394739526;-1,91021394739526;9,62867555385067 409 0;8,11703807449885;-1,41971307391068;-1,71755651175555;-1,71755651175555;9,68836565481858 410 0;8,13698165699148;-1,45203775843691;-1,52388411245174;-1,52388411245174;9,73097571593952 411 0;8,15692523948411;-1,48049211104394;-1,32950330989659;-1,32950330989659;9,76007018088681 412 0;8,17686882197673;-1,50506451326863;-1,13465229425417;-1,13465229425417;9,7788377303846 413 0;8,19681240446936;-1,52574787374239;-0,939506709984877;-0,939506709984877;9,79005785087977 414 0;8,21675598696199;-1,54253765098382;-0,744189748225312;-0,744189748225312;9,79608904042777 415 0;8,23669956945461;-1,55543120556107;-0,54878659425532;-0,54878659425532;9,79884636745479 416 0;8,25664315194724;-1,56442714337347;-0,353350283963924;-0,353350283963924;9,79980342832518 417 0;8,27658673443986;-1,56952517341788;-0,157906749353085;-0,157906749353085;9,79999253684887 418 0;8,29653031693249;-1,57072555826115;0,0375377920383803;0,0375377920383803;9,80000102175597 419 0;8,31647389942512;-1,56802794820193;0,232985602072396;0,232985602072396;9,79996573584126 420 0;8,33641748191774;-1,56143231125894;0,428432179642543;0,428432179642543;9,79957331235669 421 0;8,35636106441037;-1,55093895846346;0,623859860497899;0,623859860497899;9,79806848756347 422 0;8,37630464690299;-1,53654866311257;0,81923356801989;0,81923356801989;9,79425427937046 423 0;8,39624822939562;-1,51826311567255;1,01449458227657;1,01449458227657;9,78648275557133 424 0;8,41619181188825;-1,49608499529014;1,20954639962782;1,20954639962782;9,77266478671769 425 0;8,43613539438087;-1,47001977533069;1,40424361808733;1,40424361808733;9,75027936208166 426 0;8,4560789768735;-1,44007688032886;1,59838418640043;1,59838418640043;9,7163900444463 427 0;8,47602255936613;-1,40627018030293;1,79170439906792;1,79170439906792;9,66766255048006 428 0;8,49596614185875;-1,36861908737291;1,98387495306628;1,98387495306628;9,60039309843448 429 0;8,51590972435138;-1,32714988658537;2,17448639023803;2,17448639023803;9,51055553248095 430 0;8,535853306844;-1,28189822769082;2,36304580346867;2,36304580346867;9,3938720894543 431 0;8,55579688933663;-1,23291124783379;2,54897375857683;2,54897375857683;9,24588738697082 432 0;8,57574047182926;-1,18024857019942;2,73159980192516;2,73159980192516;9,06206581806014 433 0;8,59568405432188;-1,1239830444269;2,91016681184829;2,91016681184829;8,83791914242962 434 0;8,61562763681451;-1,06420323529821;3,08382632635769;3,08382632635769;8,56914400312871 435 0;8,63557121930713;-1,00101648321721;3,2516424970342;3,2516424970342;8,25179348971344 436 0;8,65551480179976;-0,934549503485754;3,41261535676922;3,41261535676922;7,88244811853976 437 0;8,67545838429239;-0,864949507018781;3,5656846789317;3,5656846789317;7,45840684743358 438 0;8,69540196678501;-0,792384749971534;3,70973748852302;3,70973748852302;6,97789096885036 439 0;8,71534554927764;-0,717046151963945;3,84363451069439;3,84363451069439;6,44017771064579 440 0;8,73528913177027;-0,639148133550786;3,96623912639558;3,96623912639558;5,84581694112146 441 0;8,75523271426289;-0,558926753748951;4,07644229891872;4,07644229891872;5,19671039566092 442 0;8,77517629675552;-0,476639706183332;4,17318158234209;4,17318158234209;4,49620025460207 443 0;8,79511987924814;-0,392566218720575;4,25547334856993;4,25547334856993;3,74909343602655 444 0;8,81506346174077;-0,307003069216012;4,32245102294416;4,32245102294416;2,96158967298188 445 0;8,8350070442334;-0,220262682959518;4,37338355472834;4,37338355472834;2,14116183012344 446 0;8,85495062672602;-0,132671492364351;4,40769518863249;4,40769518863249;1,29636950977451 447 0;8,87489420921865;-0,0445655021712049;4,4249922128012;4,4249922128012;0,436597398569716 448 0;8,89483779171128;0,0437142359971141;4,42507513953;4,42507513953;-0,428262918570996 449 0;8,9147813742039;0,131823890339707;4,40794315891083;4,40794315891083;-1,28813550449033 450 0;8,93472495669653;0,219421401396917;4,3737947365956;4,3737947365956;-2,13311635332339 451 0;8,95466853918915;0,306171438423063;4,32302038140846;4,32302038140846;-2,95382072798846 452 0;8,97461212168178;0,391747793445511;4,256193058403;4,256193058403;-3,74168211339176 453 0;8,99455570417441;0,47583704027138;4,1740444703194;4,1740444703194;-4,48921002345445 454 0;9,01449928666703;0,558142339230613;4,07744081875259;4,07744081875259;-5,19019058002695 455 0;9,03444286915966;0,638385064199779;3,96736309656885;3,96736309656885;-5,83981215595039 456 0;9,05438645165228;0,716306723058931;3,84487211508135;3,84487211508135;-6,43471417941025 457 0;9,07433003414491;0,791670869541382;3,71107771937418;3,71107771937418;-6,97297739995628 458 0;9,09427361663754;0,864263498500497;3,56711885813089;3,56711885813089;-7,45404946057036 459 0;9,11421719913016;0,933893203309122;3,41413292060192;3,41413292060192;-7,87862431647319 460 0;9,13416078162279;1,00039094491095;3,25322789671553;3,25322789671553;-8,24848430880541 461 0;9,15410436411542;1,06360948588585;3,08546959818296;3,08546959818296;-8,56631945968412 462 0;9,17404794660804;1,12342262070137;2,91186413702347;2,91186413702347;-8,8355454889507 463 0;9,19399152910067;1,17972304834448;2,73334221594471;2,73334221594471;-9,06010435351842 464 0;9,21393511159329;1,23242099118087;2,55075092535204;2,55075092535204;-9,24429316034744 465 0;9,23387869408592;1,28144300641045;2,36485218636939;2,36485218636939;-9,39260073294789 466 0;9,25382227657855;1,32673044873543;2,17631554289895;2,17631554289895;-9,509562890605 467 0;9,27376585907117;1,36823666054141;1,98572070800505;1,98572070800505;-9,59963831950114 468 0;9,2937094415638;1,40592522606377;1,7935619733684;1,7935619733684;-9,66710771293965 469 0;9,31365302405642;1,4397690009721;1,60025073800899;1,60025073800899;-9,71599667363263 470 0;9,33359660654905;1,46974882125642;1,40611986981374;1,40611986981374;-9,75001118041022 471 0;9,35354018904168;1,49585132505678;1,21142836201131;1,21142836201131;-9,77249278487141 472 0;9,3734837715343;1,51806726280315;1,01637711965283;1,01637711965283;-9,78638234242119 473 0;9,39342735402693;1,53639063890387;0,821114484497936;0,821114484497936;-9,79420170227482 474 0;9,41337093651956;1,55081830102532;0,625741480233533;0,625741480233533;-9,79804474011998 475 0;9,43331451901218;1,56134913352709;0,430318609158973;0,430318609158973;-9,79956470423168 476 0;9,45325810150481;1,56798235990769;0,234874639289512;0,234874639289512;-9,79996521562743 477 0;9,47320168399743;1,57071765069177;0,0394242514535842;0,0394242514535842;-9,80000222235698 478 0;9,49314526649006;1,56955493112919;-0,156025088556452;-0,156025088556452;-9,79999246898932 479 0;9,51308884898269;1,56449423469199;-0,351469260651106;-0,351469260651106;-9,79980867467083 480 0;9,53303243147531;1,55553595170353;-0,54690232094141;-0,54690232094141;-9,79886145567213 481 0;9,55297601396794;1,54268027195267;-0,74230283609705;-0,74230283609705;-9,79612859923217 482 0;9,57291959646057;1,5259280302493;-0,937621650715406;-0,937621650715406;-9,79013726892007 483 0;9,59286317895319;1,50528192942292;-1,13277323886209;-1,13277323886209;-9,77897690703868 484 0;9,61280676144582;1,48074672325291;-1,32762887856066;-1,32762887856066;-9,76029514726654 485 0;9,63275034393844;1,4523301218657;-1,52201292708074;-1,52201292708074;-9,73131613255956 486 0;9,65269392643107;1,42004333752938;-1,71569064541952;-1,71569064541952;-9,68885157326543 487 0;9,6726375089237;1,38390266356234;-1,90836051779786;-1,90836051779786;-9,62934498717356 488 0;9,69258109141632;1,34393240196954;-2,09964256436675;-2,09964256436675;-9,54889242385037 489 0;9,71252467390895;1,30016552872965;-2,28907390486823;-2,28907390486823;-9,44330493697809 490 0;9,73246825640157;1,25264421986469;-2,47611098918124;-2,47611098918124;-9,30818761726839 491 0;9,7524118388942;1,20142137023357;-2,66012480994641;-2,66012480994641;-9,13902138573437 492 0;9,77235542138683;1,14656421379983;-2,84038604320222;-2,84038604320222;-8,93127926226519 493 0;9,79229900387945;1,08815601778284;-3,01608087458721;-3,01608087458721;-8,68056950640599 494 0;9,81224258637208;1,0262972409257;-3,18631353117402;-3,18631353117402;-8,38278766051707 495 0;9,83218616886471;0,961106284136774;-3,35010955457455;-3,35010955457455;-8,03428995612114 496 0;9,85212975135733;0,892720851130278;-3,50642472590963;-3,50642472590963;-7,6320568324081 497 0;9,87207333384996;0,821301724817399;-3,65415926861478;-3,65415926861478;-7,17392536228938 498 0;9,89201691634258;0,747031339651636;-3,7921886963405;-3,7921886963405;-6,6587429000673 499 0;9,91196049883521;0,670114350052417;-3,91937776426753;-3,91937776426753;-6,08654056120828 500 0;9,93190408132784;0,590777723644847;-4,03459828047178;-4,03459828047178;-5,45866927112346 501 0;9,95184766382046;0,509272090489836;-4,13675853222113;-4,13675853222113;-4,77790993105455 502 0;9,97179124631309;0,425868088809942;-4,22484699556175;-4,22484699556175;-4,04849249917394 503 0;9,99173482880571;0,340854989035493;-4,29795328241913;-4,29795328241913;-3,27607161914566 -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Plugin.cs.frame
r16954 r16976 29 29 [Plugin("HeuristicLab.Problems.DynamicalSystemsModelling","TODO", "3.3.0.$WCREV$")] 30 30 [PluginFile("HeuristicLab.Problems.DynamicalSystemsModelling-3.3.dll", PluginFileType.Assembly)] 31 [PluginFile("sundials_cvodes-x64.dll", PluginFileType.NativeDll)] 32 [PluginFile("sundials_cvodes-x86.dll", PluginFileType.NativeDll)] 33 [PluginFile("sundials_nvecserial-x86.dll", PluginFileType.NativeDll)] 31 34 [PluginDependency("HeuristicLab.ALGLIB", "3.7")] 32 35 [PluginDependency("HeuristicLab.Attic", "1.0")] -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs
r16972 r16976 39 39 using HEAL.Attic; 40 40 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression; 41 using System.Runtime.InteropServices; 41 42 42 43 namespace HeuristicLab.Problems.DynamicalSystemsModelling { … … 55 56 private const string NumericIntegrationStepsParameterName = "Steps for numeric integration"; 56 57 private const string TrainingEpisodesParameterName = "Training episodes"; 58 private const string TestEpisodesParameterName = "Test episodes"; 57 59 private const string OptimizeParametersForEpisodesParameterName = "Optimize parameters for episodes"; 58 60 private const string OdeSolverParameterName = "ODE Solver"; … … 89 91 public IValueParameter<ItemList<IntRange>> TrainingEpisodesParameter { 90 92 get { return (IValueParameter<ItemList<IntRange>>)Parameters[TrainingEpisodesParameterName]; } 93 } 94 public IValueParameter<ItemList<IntRange>> TestEpisodesParameter { 95 get { return (IValueParameter<ItemList<IntRange>>)Parameters[TestEpisodesParameterName]; } 91 96 } 92 97 public IFixedValueParameter<BoolValue> OptimizeParametersForEpisodesParameter { … … 139 144 public IList<IntRange> TrainingEpisodes { 140 145 get { return TrainingEpisodesParameter.Value; } 146 } 147 public IList<IntRange> TestEpisodes { 148 get { return TestEpisodesParameter.Value; } 141 149 } 142 150 public bool OptimizeParametersForEpisodes { … … 215 223 Parameters.Add(new FixedValueParameter<IntValue>(NumericIntegrationStepsParameterName, "Number of steps in the numeric integration that are taken from one row to the next (set to 1 to 100). More steps makes the algorithm slower, less steps worsens the accuracy of the numeric integration scheme.", new IntValue(10))); 216 224 Parameters.Add(new ValueParameter<ItemList<IntRange>>(TrainingEpisodesParameterName, "A list of ranges that should be used for training, each range represents an independent episode. This overrides the TrainingSet parameter in ProblemData.", new ItemList<IntRange>())); 225 Parameters.Add(new ValueParameter<ItemList<IntRange>>(TestEpisodesParameterName, "A list of ranges that should be used for validation, each range represents an independent episode. This overrides the TestSet parameter in ProblemData.", new ItemList<IntRange>())); 217 226 Parameters.Add(new FixedValueParameter<BoolValue>(OptimizeParametersForEpisodesParameterName, "Flag to select if parameters should be optimized globally or for each episode individually.", new BoolValue(false))); 218 227 Parameters.Add(new FixedValueParameter<DoubleValue>("Pretuning NMSE weight", "For fitness weighting", new DoubleValue(0.5))); … … 220 229 Parameters.Add(new FixedValueParameter<DoubleValue>("Numeric differences smoothing", "Determines the amount of smoothing for the numeric differences which are calculated for pre-tuning. Values from -8 to 8 are reasonable. Use very low value if the data contains no noise. Default: 2.", new DoubleValue(2.0))); 221 230 222 var solversStr = new string[] { "HeuristicLab" /* , "CVODES" */};231 var solversStr = new string[] { "HeuristicLab", "CVODES" }; 223 232 var solvers = new ItemSet<StringValue>( 224 233 solversStr.Select(s => new StringValue(s).AsReadOnly()) … … 293 302 294 303 // optimize parameters by fitting f(x,y) to calculated differences dy/dt(t) 295 double nmse = pretuningErrorWeight * PreTuneParameters(trees, problemData, targetVars, latentVariables, random, episodes, 296 maxPretuningParameterOptIterations, numericDifferencesSmoothing, 297 initialTheta, out double[] pretunedParameters); 304 double[] pretunedParameters = initialTheta.SelectMany(v => v).ToArray(); 305 double nmse = 0; 306 if (pretuningErrorWeight > 0 || maxPretuningParameterOptIterations > -1) { 307 nmse += pretuningErrorWeight * PreTuneParameters(trees, problemData, targetVars, latentVariables, random, episodes, 308 maxPretuningParameterOptIterations, numericDifferencesSmoothing, 309 initialTheta, out pretunedParameters); 310 } 298 311 299 312 // extend parameter vector to include parameters for latent variable trees … … 303 316 .ToArray(); 304 317 305 // optimize parameters using integration of f(x,y) to calculate y(t) 306 nmse += odeErrorWeight * OptimizeParameters(trees, problemData, targetVars, latentVariables, episodes, maxOdeParameterOptIterations, pretunedParameters, numericIntegrationSteps, odeSolver, 307 out double[] optTheta); 318 double[] optTheta = pretunedParameters; 319 if (odeErrorWeight > 0 || maxOdeParameterOptIterations > -1) { 320 // optimize parameters using integration of f(x,y) to calculate y(t) 321 nmse += odeErrorWeight * OptimizeParameters(trees, problemData, targetVars, latentVariables, episodes, maxOdeParameterOptIterations, pretunedParameters, numericIntegrationSteps, odeSolver, 322 out optTheta); 323 } 308 324 // var optTheta = pretunedParameters; 309 325 … … 371 387 var t = targetTrees[treeIdx]; 372 388 389 // check if we need to change the problem data 373 390 var targetValuesDiff = new List<double>(); 391 392 // TODO: smooth only once 374 393 foreach (var ep in episodes) { 375 394 var episodeRows = Enumerable.Range(ep.Start, ep.Size); … … 620 639 results.Add(new Result("SNMSE", typeof(DoubleValue))); 621 640 } 622 if (!results.ContainsKey("SNMSE values")) {641 if (!results.ContainsKey("SNMSE values")) { 623 642 var dt = new DataTable("SNMSE values"); 624 643 dt.Rows.Add(new DataRow("ODE SNMSE")); … … 629 648 results.Add(new Result("Solution", typeof(Solution))); 630 649 } 631 // if (!results.ContainsKey("Squared error and gradient")) { 632 // results.Add(new Result("Squared error and gradient", typeof(DataTable))); 633 // } 650 634 651 635 652 // when no training episodes are specified then we implicitly use the training parition from the problemData … … 713 730 if (colIdx < targetVars.Length) { 714 731 var targetVar = targetVars[colIdx]; 715 var trainingDataTable = new DataTable(targetVar + " prediction (training)"); 732 var trainingDataTable = new DataTable(targetVar + " prediction (training)"); 716 733 var actualValuesRow = new DataRow(targetVar, "The values of " + targetVar, problemData.Dataset.GetDoubleValues(targetVar, trainingRows)); 717 734 var idx = Enumerable.Range(0, trainingRows.Length).Select(i => i * targetVars.Length + colIdx); … … 860 877 var model = new SymbolicRegressionModel(name + "_diff", t, new SymbolicDataAnalysisExpressionTreeLinearInterpreter()); 861 878 var solutionDataset = ((Dataset)problemData.Dataset).ToModifiable(); 879 solutionDataset.Name = ((Dataset)problemData.Dataset).Name; 880 solutionDataset.Description = ((Dataset)problemData.Dataset).Description; 881 862 882 var absValues = solutionDataset.GetDoubleValues(name).ToArray(); 863 883 864 884 var diffValues = new double[absValues.Length]; 865 foreach (var ep in TrainingEpisodes) {885 foreach (var ep in TrainingEpisodes.Concat(TestEpisodes)) { 866 886 var y = solutionDataset.GetDoubleValues(name, Enumerable.Range(ep.Start, ep.End - ep.Start)).ToArray(); 867 887 var yd = CalculateDifferences(y, NumericDifferencesSmoothing).ToArray(); 868 for (int r = ep.Start; r < ep.End;r++) {888 for (int r = ep.Start; r < ep.End; r++) { 869 889 diffValues[r] = yd[r - ep.Start]; 870 890 } … … 873 893 solutionDataset.AddVariable(name + "_diff", diffValues); 874 894 var solutionProblemData = new RegressionProblemData(solutionDataset, problemData.AllowedInputVariables, name + "_diff"); 895 solutionProblemData.Name = problemData.Name; 896 solutionProblemData.Description = problemData.Description; 897 875 898 solutionProblemData.TrainingPartition.Start = TrainingEpisodes.Select(ep => ep.Start).Min(); 876 899 solutionProblemData.TrainingPartition.End = TrainingEpisodes.Select(ep => ep.End).Max(); // assumes training episodes are sequential without gaps 877 solutionProblemData.TestPartition.Start = problemData.TestPartition.Start; 878 solutionProblemData.TestPartition.End = problemData.TestPartition.End; 900 if (TestEpisodes.Any()) { 901 solutionProblemData.TestPartition.Start = TestEpisodes.Select(ep => ep.Start).Min(); 902 solutionProblemData.TestPartition.End = TestEpisodes.Select(ep => ep.End).Max(); 903 } else { 904 solutionProblemData.TestPartition.Start = problemData.TestPartition.Start; 905 solutionProblemData.TestPartition.End = problemData.TestPartition.End; 906 } 879 907 var solution = model.CreateRegressionSolution(solutionProblemData); 880 908 results.AddOrUpdateResult("Solution " + name, solution); … … 989 1017 IntegrateHL(trees, calculatedVariables, nodeValues, numericIntegrationSteps); // integrator updates nodeValues 990 1018 else if (odeSolver == "CVODES") 991 throw new NotImplementedException(); 992 // IntegrateCVODES(trees, calculatedVariables, variableValues, parameterValues, t - prevT); 1019 IntegrateCVODES(trees, calculatedVariables, nodeValues); 993 1020 else throw new InvalidOperationException("Unknown ODE solver " + odeSolver); 994 1021 prevT = t; … … 1038 1065 #region CVODES 1039 1066 1040 /* 1067 1041 1068 /// <summary> 1042 1069 /// Here we use CVODES to solve the ODE. Forward sensitivities are used to calculate the gradient for parameter optimization … … 1044 1071 /// <param name="trees">Each equation in the ODE represented as a tree</param> 1045 1072 /// <param name="calculatedVariables">The names of the calculated variables</param> 1046 /// <param name="variableValues">The start values of the calculated variables as well as their sensitivites over parameters</param>1047 /// <param name="parameterValues">The current parameter values</param>1048 1073 /// <param name="t">The time t up to which we need to integrate.</param> 1049 1074 private static void IntegrateCVODES( 1050 1075 ISymbolicExpressionTree[] trees, // f(y,p) in tree representation 1051 1076 string[] calculatedVariables, // names of elements of y 1052 Dictionary<string, Tuple<double, Vector>> variableValues, // y (intput and output) input: y(t0), output: y(t0+t) 1053 double[] parameterValues, // p 1054 double t // duration t for which we want to integrate 1077 NodeValueLookup nodeValues 1055 1078 ) { 1056 1079 1057 1080 // the RHS of the ODE 1058 1081 // dy/dt = f(y_t,x_t,p) 1059 CVODES.CVRhsFunc f = CreateOdeRhs(trees, calculatedVariables, parameterValues);1082 CVODES.CVRhsFunc f = CreateOdeRhs(trees, calculatedVariables, nodeValues); 1060 1083 // the Jacobian ∂f/∂y 1061 CVODES.CVDlsJacFunc jac = CreateJac(trees, calculatedVariables, parameterValues);1084 CVODES.CVDlsJacFunc jac = CreateJac(trees, calculatedVariables, nodeValues); 1062 1085 1063 1086 // the RHS for the forward sensitivities (∂f/∂y)s_i(t) + ∂f/∂p_i 1064 CVODES.CVSensRhsFn sensF = CreateSensitivityRhs(trees, calculatedVariables, parameterValues);1087 CVODES.CVSensRhsFn sensF = CreateSensitivityRhs(trees, calculatedVariables, nodeValues); 1065 1088 1066 1089 // setup solver … … 1071 1094 IntPtr yS0 = IntPtr.Zero; 1072 1095 IntPtr linearSolver = IntPtr.Zero; 1073 var ns = parameterValues.Length; // number of parameters1096 var ns = nodeValues.ParameterCount; // number of parameters 1074 1097 1075 1098 try { … … 1078 1101 // y must be initialized before calling CVodeInit 1079 1102 for (int i = 0; i < calculatedVariables.Length; i++) { 1080 CVODES.NV_Set_Ith_S(y, i, variableValues[calculatedVariables[i]].Item1);1103 CVODES.NV_Set_Ith_S(y, i, nodeValues.GetVariableValue(calculatedVariables[i]).Item1); 1081 1104 } 1082 1105 … … 1085 1108 var flag = CVODES.CVodeInit(cvode_mem, f, 0.0, y); 1086 1109 Assert(CVODES.CV_SUCCESS == flag); 1110 1111 flag = CVODES.CVodeSetErrHandlerFn(cvode_mem, errorFunction, IntPtr.Zero); 1112 Assert(CVODES.CV_SUCCESS == flag); 1113 1087 1114 1088 1115 double relTol = 1.0e-2; … … 1109 1136 var yS0_i = *((IntPtr*)yS0.ToPointer() + pIdx); 1110 1137 for (var varIdx = 0; varIdx < calculatedVariables.Length; varIdx++) { 1111 CVODES.NV_Set_Ith_S(yS0_i, varIdx, variableValues[calculatedVariables[varIdx]].Item2[pIdx]);1138 CVODES.NV_Set_Ith_S(yS0_i, varIdx, nodeValues.GetVariableValue(calculatedVariables[varIdx]).Item2[pIdx]); // TODO: perf 1112 1139 } 1113 1140 } … … 1122 1149 // make one forward integration step 1123 1150 double tout = 0.0; // first output time 1124 flag = CVODES.CVode(cvode_mem, t, y, ref tout, CVODES.CV_NORMAL);1151 flag = CVODES.CVode(cvode_mem, 1.0, y, ref tout, CVODES.CV_NORMAL); 1125 1152 if (flag == CVODES.CV_SUCCESS) { 1126 Assert( t== tout);1153 Assert(1.0 == tout); 1127 1154 1128 1155 // get sensitivities … … 1133 1160 for (int varIdx = 0; varIdx < calculatedVariables.Length; varIdx++) { 1134 1161 var yi = CVODES.NV_Get_Ith_S(y, varIdx); 1135 var gArr = new double[ parameterValues.Length];1136 for (var pIdx = 0; pIdx < parameterValues.Length; pIdx++) {1162 var gArr = new double[ns]; 1163 for (var pIdx = 0; pIdx < ns; pIdx++) { 1137 1164 unsafe { 1138 1165 var yS0_pi = *((IntPtr*)yS0.ToPointer() + pIdx); … … 1140 1167 } 1141 1168 } 1142 variableValues[calculatedVariables[varIdx]] = Tuple.Create(yi, new Vector(gArr));1169 nodeValues.SetVariableValue(calculatedVariables[varIdx], yi, new Vector(gArr)); 1143 1170 } 1144 1171 } else { 1145 variableValues.Clear(); // indicate problems by not returning new values1172 throw new InvalidOperationException(); 1146 1173 } 1147 1174 … … 1156 1183 } 1157 1184 1185 private static void errorFunction(int errorCode, IntPtr module, IntPtr function, IntPtr msg, IntPtr ehdata) { 1186 var moduleStr = Marshal.PtrToStringAnsi(module); 1187 var functionStr = Marshal.PtrToStringAnsi(function); 1188 var msgStr = Marshal.PtrToStringAnsi(msg); 1189 string type = errorCode == 0 ? "Warning" : "Error"; 1190 throw new InvalidProgramException($"{type}: {msgStr} Module: {moduleStr} Function: {functionStr}"); 1191 } 1158 1192 1159 1193 private static CVODES.CVRhsFunc CreateOdeRhs( 1160 1194 ISymbolicExpressionTree[] trees, 1161 1195 string[] calculatedVariables, 1162 double[] parameterValues) {1196 NodeValueLookup nodeValues) { 1163 1197 // we don't need to calculate a gradient here 1164 1198 return (double t, … … 1167 1201 IntPtr user_data // optional user data, (unused here) 1168 1202 ) => { 1169 // TODO: perf 1170 var nodeValues = new Dictionary<ISymbolicExpressionTreeNode, Tuple<double, Vector>>(); 1171 1172 int pIdx = 0; 1173 foreach (var tree in trees) { 1174 foreach (var n in tree.IterateNodesPrefix()) { 1175 if (IsConstantNode(n)) { 1176 nodeValues.Add(n, Tuple.Create(parameterValues[pIdx], Vector.Zero)); // here we do not need a gradient 1177 pIdx++; 1178 } else if (n.SubtreeCount == 0) { 1179 // for variables and latent variables get the value from variableValues 1180 var varName = n.Symbol.Name; 1181 var varIdx = Array.IndexOf(calculatedVariables, varName); // TODO: perf! 1182 if (varIdx < 0) throw new InvalidProgramException(); 1183 var y_i = CVODES.NV_Get_Ith_S(y, (long)varIdx); 1184 nodeValues.Add(n, Tuple.Create(y_i, Vector.Zero)); // no gradient needed 1185 } 1186 } 1203 for (int i = 0; i < calculatedVariables.Length; i++) { 1204 var y_i = CVODES.NV_Get_Ith_S(y, (long)i); 1205 nodeValues.SetVariableValue(calculatedVariables[i], y_i); 1187 1206 } 1188 1207 for (int i = 0; i < trees.Length; i++) { 1189 1208 var tree = trees[i]; 1190 1209 var res_i = InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), nodeValues); 1191 CVODES.NV_Set_Ith_S(ydot, i, res_i .Item1);1210 CVODES.NV_Set_Ith_S(ydot, i, res_i); 1192 1211 } 1193 1212 return 0; … … 1198 1217 ISymbolicExpressionTree[] trees, 1199 1218 string[] calculatedVariables, 1200 double[] parameterValues) {1219 NodeValueLookup nodeValues) { 1201 1220 1202 1221 return ( … … 1210 1229 IntPtr tmp3 // N_Vector, optional (unused here) 1211 1230 ) => { 1212 // here we need to calculate partial derivatives for the calculated variables y 1213 var nodeValues = new Dictionary<ISymbolicExpressionTreeNode, Tuple<double, Vector>>(); 1214 int pIdx = 0; 1215 foreach (var tree in trees) { 1216 foreach (var n in tree.IterateNodesPrefix()) { 1217 if (IsConstantNode(n)) { 1218 nodeValues.Add(n, Tuple.Create(parameterValues[pIdx], Vector.Zero)); // here we need a gradient over y which is zero for parameters 1219 pIdx++; 1220 } else if (n.SubtreeCount == 0) { 1221 // for variables and latent variables we use values supplied in y and init gradient vectors accordingly 1222 var varName = n.Symbol.Name; 1223 var varIdx = Array.IndexOf(calculatedVariables, varName); // TODO: perf! 1224 if (varIdx < 0) throw new InvalidProgramException(); 1225 1226 var y_i = CVODES.NV_Get_Ith_S(y, (long)varIdx); 1227 var gArr = new double[CVODES.NV_LENGTH_S(y)]; // backing array 1228 gArr[varIdx] = 1.0; 1229 var g = new Vector(gArr); 1230 nodeValues.Add(n, Tuple.Create(y_i, g)); 1231 } 1232 } 1233 } 1234 1231 // int pIdx = 0; 1232 // foreach (var tree in trees) { 1233 // foreach (var n in tree.IterateNodesPrefix()) { 1234 // if (IsConstantNode(n)) { 1235 // nodeValues.Add(n, Tuple.Create(parameterValues[pIdx], Vector.Zero)); // here we need a gradient over y which is zero for parameters 1236 // pIdx++; 1237 // } else if (n.SubtreeCount == 0) { 1238 // // for variables and latent variables we use values supplied in y and init gradient vectors accordingly 1239 // var varName = n.Symbol.Name; 1240 // var varIdx = Array.IndexOf(calculatedVariables, varName); // TODO: perf! 1241 // if (varIdx < 0) throw new InvalidProgramException(); 1242 // 1243 // var y_i = CVODES.NV_Get_Ith_S(y, (long)varIdx); 1244 // var gArr = new double[CVODES.NV_LENGTH_S(y)]; // backing array 1245 // gArr[varIdx] = 1.0; 1246 // var g = new Vector(gArr); 1247 // nodeValues.Add(n, Tuple.Create(y_i, g)); 1248 // } 1249 // } 1250 // } 1251 for (int i = 0; i < calculatedVariables.Length; i++) { 1252 var y_i = CVODES.NV_Get_Ith_S(y, (long)i); 1253 nodeValues.SetVariableValue(calculatedVariables[i], y_i); 1254 } 1235 1255 for (int i = 0; i < trees.Length; i++) { 1236 1256 var tree = trees[i]; 1237 var res = InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), nodeValues); 1238 var g = res.Item2; 1257 InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), nodeValues, out double z, out Vector dz); 1239 1258 for (int j = 0; j < calculatedVariables.Length; j++) { 1240 CVODES.SUNDenseMatrix_Set(Jac, i, j, g[j]);1259 CVODES.SUNDenseMatrix_Set(Jac, i, j, dz[j]); 1241 1260 } 1242 1261 } … … 1249 1268 // must compute (∂f/∂y)s_i(t) + ∂f/∂p_i and store in ySdot. 1250 1269 // Index i refers to parameters, dimensionality of matrix and vectors is number of equations 1251 private static CVODES.CVSensRhsFn CreateSensitivityRhs(ISymbolicExpressionTree[] trees, string[] calculatedVariables, double[] parameterValues) {1270 private static CVODES.CVSensRhsFn CreateSensitivityRhs(ISymbolicExpressionTree[] trees, string[] calculatedVariables, NodeValueLookup nodeValues) { 1252 1271 return ( 1253 1272 int Ns, // number of parameters … … 1261 1280 IntPtr tmp2 // N_Vector, optional (unused here) 1262 1281 ) => { 1263 // here we need to calculate partial derivatives for the calculated variables y as well as for the parameters 1264 var nodeValues = new Dictionary<ISymbolicExpressionTreeNode, Tuple<double, Vector>>(); 1265 var d = calculatedVariables.Length + parameterValues.Length; // dimensionality of gradient 1266 // first collect variable values 1267 foreach (var tree in trees) { 1268 foreach (var n in tree.IterateNodesPrefix()) { 1269 if (IsVariableNode(n)) { 1270 // for variables and latent variables we use values supplied in y and init gradient vectors accordingly 1271 var varName = n.Symbol.Name; 1272 var varIdx = Array.IndexOf(calculatedVariables, varName); // TODO: perf! 1273 if (varIdx < 0) throw new InvalidProgramException(); 1274 1275 var y_i = CVODES.NV_Get_Ith_S(y, (long)varIdx); 1276 var gArr = new double[d]; // backing array 1277 gArr[varIdx] = 1.0; 1278 var g = new Vector(gArr); 1279 nodeValues.Add(n, Tuple.Create(y_i, g)); 1282 1283 var tmpNodeValues = new NodeValueLookup(trees, variableGradient: true); // for df / dy calculation 1284 1285 // update variableValues based on integration results 1286 for (int varIdx = 0; varIdx < calculatedVariables.Length; varIdx++) { 1287 var yi = CVODES.NV_Get_Ith_S(y, varIdx); 1288 var gArr = new double[Ns]; 1289 for (var pIdx = 0; pIdx < Ns; pIdx++) { 1290 unsafe { 1291 var yS_pi = *((IntPtr*)yS.ToPointer() + pIdx); 1292 gArr[pIdx] = CVODES.NV_Get_Ith_S(yS_pi, varIdx); 1280 1293 } 1281 1294 } 1282 } 1283 // then collect constants 1284 int pIdx = 0; 1285 foreach (var tree in trees) { 1286 foreach (var n in tree.IterateNodesPrefix()) { 1287 if (IsConstantNode(n)) { 1288 var gArr = new double[d]; 1289 gArr[calculatedVariables.Length + pIdx] = 1.0; 1290 var g = new Vector(gArr); 1291 nodeValues.Add(n, Tuple.Create(parameterValues[pIdx], g)); 1292 pIdx++; 1293 } 1294 } 1295 } 1296 // gradient vector is [∂f/∂y_1, ∂f/∂y_2, ... ∂f/∂yN, ∂f/∂p_1 ... ∂f/∂p_K] 1297 1298 1299 for (pIdx = 0; pIdx < Ns; pIdx++) { 1295 nodeValues.SetVariableValue(calculatedVariables[varIdx], yi, new Vector(gArr)); 1296 tmpNodeValues.SetVariableValue(calculatedVariables[varIdx], yi, Vector.CreateIndicator(calculatedVariables.Length, varIdx)); 1297 } 1298 1299 for (int pIdx = 0; pIdx < Ns; pIdx++) { 1300 1300 unsafe { 1301 1301 var sDot_pi = *((IntPtr*)ySdot.ToPointer() + pIdx); … … 1304 1304 } 1305 1305 1306 1306 1307 for (int i = 0; i < trees.Length; i++) { 1307 1308 var tree = trees[i]; 1308 var res = InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), nodeValues);1309 var g = res.Item2;1310 1311 1309 1312 1310 // update ySdot = (∂f/∂y)s_i(t) + ∂f/∂p_i 1313 1311 1314 for (pIdx = 0; pIdx < Ns; pIdx++) { 1312 // 1. interpret tree to calculate (∂f/∂y) 1313 // we need a different nodeValue object for (∂f/∂y) 1314 InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), tmpNodeValues, out double z1, out Vector df_dy); 1315 1316 // 2. interpret tree to calculate ∂f/∂p_i 1317 InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), nodeValues, out double z, out Vector df_dp); 1318 1319 for (int pIdx = 0; pIdx < Ns; pIdx++) { 1315 1320 unsafe { 1316 1321 var sDot_pi = *((IntPtr*)ySdot.ToPointer() + pIdx); … … 1321 1326 var p = 0.0; 1322 1327 for (int yIdx = 0; yIdx < calculatedVariables.Length; yIdx++) { 1323 p += g[yIdx] * CVODES.NV_Get_Ith_S(s_pi, yIdx);1328 p += df_dy[yIdx] * CVODES.NV_Get_Ith_S(s_pi, yIdx); 1324 1329 } 1325 1330 // + ∂f/∂p_i 1326 CVODES.NV_Set_Ith_S(sDot_pi, i, v + p + g[calculatedVariables.Length +pIdx]);1331 CVODES.NV_Set_Ith_S(sDot_pi, i, p + df_dp[pIdx]); 1327 1332 } 1328 1333 } … … 1332 1337 }; 1333 1338 } 1334 */ 1339 1335 1340 #endregion 1336 1341 … … 1657 1662 1658 1663 private static double[] CalculateDifferences(double[] targetValues, double numericDifferencesSmoothing) { 1664 return CalculateDifferencesSavitykzGolay(targetValues); 1665 } 1666 1667 private static double[] CalculateDifferencesPenalizedSplines(double[] targetValues, double numericDifferencesSmoothing) { 1659 1668 var x = Enumerable.Range(0, targetValues.Length).Select(i => (double)i).ToArray(); 1660 1669 alglib.spline1dfitpenalized(x, targetValues, targetValues.Length / 2, numericDifferencesSmoothing, … … 1670 1679 return dy; 1671 1680 } 1681 1682 private static readonly double[] sgCoeffMiddle = SavitzkyGolayCoefficients(3, 3, 1, 3); 1683 private static readonly double[] sgCoeffStart = SavitzkyGolayCoefficients(0, 3, 1, 3); 1684 private static readonly double[] sgCoeffEnd = SavitzkyGolayCoefficients(3, 0, 1, 3); 1685 private static double[] CalculateDifferencesSavitykzGolay(double[] y) { 1686 double[] dy = new double[y.Length]; 1687 for (int i = 3; i < y.Length - 3; i++) { 1688 for (int j = -3; j <= 3; j++) { 1689 dy[i] += y[i + j] * sgCoeffMiddle[j + 3]; 1690 } 1691 } 1692 1693 // start 1694 for (int i = 0; i < 3; i++) { 1695 for (int j = 0; j <= 3; j++) { 1696 dy[i] += y[i + j] * sgCoeffStart[j]; 1697 } 1698 } 1699 1700 // end 1701 for (int i = y.Length - 3; i < y.Length; i++) { 1702 for (int j = -3; j <= 0; j++) { 1703 dy[i] += y[i + j] * sgCoeffEnd[j + 3]; 1704 } 1705 } 1706 1707 return dy; 1708 } 1709 1710 /// <summary> 1711 /// Calculates coefficients for Savitzky-Golay filtering. (Numerical Recipes, page 769), one important change is that the coefficients are returned in normal order instead of wraparound order 1712 /// </summary> 1713 /// <param name="nl">number of samples to the left</param> 1714 /// <param name="nr">number of samples to the right</param> 1715 /// <param name="ld">order of derivative (smoothing=0)</param> 1716 /// <param name="order">order of the polynomial to fit</param> 1717 /// <param name="c">resulting coefficients for convolution, in correct order (t-nl, ... t-1, t+0, t+1, ... t+nr)</param> 1718 private static double[] SavitzkyGolayCoefficients(int nl, int nr, int ld, int order) { 1719 int np = nl + nr + 1; 1720 1721 int j, k, imj, ipj, kk, mm; 1722 double fac = 0; 1723 double sum = 0; 1724 if (nl < 0 || nr < 0 || ld > order || nl + nr < order) throw new ArgumentException(); 1725 1726 double[,] a = new double[order + 1, order + 1]; 1727 double[] b = new double[order + 1]; 1728 var c = new double[np]; 1729 1730 for (ipj = 0; ipj <= (order << 1); ipj++) { 1731 sum = (ipj > 0 ? 0.0 : 1.0); 1732 for (k = 1; k <= nr; k++) sum += Math.Pow((double)k, (double)ipj); 1733 for (k = 1; k <= nl; k++) sum += Math.Pow((double)-k, (double)ipj); 1734 mm = Math.Min(ipj, 2 * order - ipj); 1735 for (imj = -mm; imj <= mm; imj += 2) 1736 a[(ipj + imj) / 2, (ipj - imj) / 2] = sum; 1737 } 1738 for (j = 0; j < order + 1; j++) b[j] = 0; 1739 b[ld] = 1.0; 1740 alglib.densesolverreport rep; 1741 int info; 1742 double[] x = new double[b.Length]; 1743 alglib.rmatrixsolve(a, b.Length, b, out info, out rep, out x); 1744 1745 for (kk = 0; kk < np; kk++) c[kk] = 0.0; 1746 for (k = -nl; k <= nr; k++) { 1747 sum = x[0]; 1748 fac = 1.0; 1749 for (mm = 1; mm <= order; mm++) sum += x[mm] * (fac *= k); 1750 kk = k + nl; 1751 c[kk] = sum; 1752 } 1753 return c; 1754 } 1755 1672 1756 1673 1757 private void InitAllParameters() { … … 1822 1906 grammar.FinishedGrammarManipulation(); 1823 1907 return grammar; 1824 // // whenever ProblemData is changed we create a new grammar with the necessary symbols 1825 // var g = new SimpleSymbolicExpressionGrammar(); 1826 // var unaryFunc = new string[] { "sin", "cos", "sqr" }; 1827 // var binaryFunc = new string[] { "+", "-", "*", "%" }; 1828 // foreach (var func in unaryFunc) { 1829 // if (FunctionSet.CheckedItems.Any(ci => ci.Value.Value == func)) g.AddSymbol(func, 1, 1); 1830 // } 1831 // foreach (var func in binaryFunc) { 1832 // if (FunctionSet.CheckedItems.Any(ci => ci.Value.Value == func)) g.AddSymbol(func, 2, 2); 1833 // } 1834 // 1835 // foreach (var variableName in ProblemData.AllowedInputVariables.Union(TargetVariables.CheckedItems.Select(i => i.Value.Value))) 1836 // g.AddTerminalSymbol(variableName); 1837 // 1838 // // generate symbols for numeric parameters for which the value is optimized using AutoDiff 1839 // // we generate multiple symbols to balance the probability for selecting a numeric parameter in the generation of random trees 1840 // var numericConstantsFactor = 2.0; 1841 // for (int i = 0; i < numericConstantsFactor * (ProblemData.AllowedInputVariables.Count() + TargetVariables.CheckedItems.Count()); i++) { 1842 // g.AddTerminalSymbol("θ" + i); // numeric parameter for which the value is optimized using AutoDiff 1843 // } 1844 // 1845 // // generate symbols for latent variables 1846 // for (int i = 1; i <= NumberOfLatentVariables; i++) { 1847 // g.AddTerminalSymbol("λ" + i); // numeric parameter for which the value is optimized using AutoDiff 1848 // } 1849 // 1850 // return g; 1908 1851 1909 } 1852 1910 #endregion … … 1921 1979 private readonly Vector[] constantGradientVectors; 1922 1980 1923 // private readonly Dictionary<int, ISymbolicExpressionTreeNode> paramIdx2node = new Dictionary<int, ISymbolicExpressionTreeNode>();1924 1981 1925 1982 public double NodeValue(ISymbolicExpressionTreeNode node) => node2val[node].Item1; 1926 1983 public Vector NodeGradient(ISymbolicExpressionTreeNode node) => node2val[node].Item2; 1927 1984 1928 public NodeValueLookup(ISymbolicExpressionTree[] trees) { 1929 1985 public NodeValueLookup(ISymbolicExpressionTree[] trees, bool variableGradient = false) { 1930 1986 this.constantNodes = trees.SelectMany(t => t.IterateNodesPrefix().OfType<ConstantTreeNode>()).ToArray(); 1931 constantGradientVectors = new Vector[constantNodes.Length]; 1932 for (int paramIdx = 0; paramIdx < constantNodes.Length; paramIdx++) { 1933 constantGradientVectors[paramIdx] = Vector.CreateIndicator(length: constantNodes.Length, idx: paramIdx); 1934 1935 var node = constantNodes[paramIdx]; 1936 node2val[node] = Tuple.Create(node.Value, constantGradientVectors[paramIdx]); 1937 } 1938 1939 foreach (var tree in trees) { 1940 foreach (var node in tree.IterateNodesPrefix().Where(IsVariableNode)) { 1941 var varName = GetVariableName(node); 1942 if (!name2nodes.TryGetValue(varName, out List<ISymbolicExpressionTreeNode> nodes)) { 1943 nodes = new List<ISymbolicExpressionTreeNode>(); 1944 name2nodes.Add(varName, nodes); 1987 if (!variableGradient) { 1988 constantGradientVectors = new Vector[constantNodes.Length]; 1989 for (int paramIdx = 0; paramIdx < constantNodes.Length; paramIdx++) { 1990 constantGradientVectors[paramIdx] = Vector.CreateIndicator(length: constantNodes.Length, idx: paramIdx); 1991 1992 var node = constantNodes[paramIdx]; 1993 node2val[node] = Tuple.Create(node.Value, constantGradientVectors[paramIdx]); 1994 } 1995 1996 foreach (var tree in trees) { 1997 foreach (var node in tree.IterateNodesPrefix().Where(IsVariableNode)) { 1998 var varName = GetVariableName(node); 1999 if (!name2nodes.TryGetValue(varName, out List<ISymbolicExpressionTreeNode> nodes)) { 2000 nodes = new List<ISymbolicExpressionTreeNode>(); 2001 name2nodes.Add(varName, nodes); 2002 } 2003 nodes.Add(node); 2004 SetVariableValue(varName, 0.0); // this value is updated in the prediction loop 1945 2005 } 1946 nodes.Add(node); 1947 SetVariableValue(varName, 0.0); // this value is updated in the prediction loop 2006 } 2007 } 2008 else { 2009 // variable gradient means we want to calculate the gradient over the target variables instead of parameters 2010 for (int paramIdx = 0; paramIdx < constantNodes.Length; paramIdx++) { 2011 var node = constantNodes[paramIdx]; 2012 node2val[node] = Tuple.Create(node.Value, Vector.Zero); 2013 } 2014 2015 foreach (var tree in trees) { 2016 foreach (var node in tree.IterateNodesPrefix().Where(IsVariableNode)) { 2017 var varName = GetVariableName(node); 2018 if (!name2nodes.TryGetValue(varName, out List<ISymbolicExpressionTreeNode> nodes)) { 2019 nodes = new List<ISymbolicExpressionTreeNode>(); 2020 name2nodes.Add(varName, nodes); 2021 } 2022 nodes.Add(node); 2023 SetVariableValue(varName, 0.0); // this value is updated in the prediction loop 2024 } 1948 2025 } 1949 2026 } -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/ProblemInstanceProvider.cs
r16972 r16976 35 35 namespace HeuristicLab.Problems.DynamicalSystemsModelling { 36 36 public class ProblemInstanceProvider : ProblemInstanceProvider<Problem> { 37 private static readonly NumberFormatInfo germanNumberFormat = CultureInfo.GetCultureInfo("de-DE").NumberFormat; 38 37 39 public override string Name { 38 40 get { return "Dynamic Systems"; } … … 63 65 descriptorList.Add(ThreeSpeciesLotkaVolterra()); 64 66 descriptorList.Add(VanDerPol()); 67 descriptorList.Add(Oscillator()); 68 descriptorList.Add(RealOscillator()); 69 descriptorList.Add(Pendulum()); 70 descriptorList.Add(RealPendulum()); 71 descriptorList.Add(DoubleOscillator()); 72 descriptorList.Add(RealDoubleOscillator()); 73 descriptorList.Add(DoublePendulum()); 74 descriptorList.Add(RealDoublePendulum()); 75 65 76 return descriptorList; 66 77 } … … 74 85 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 75 86 TestEpisodes = new IntRange[] { }, 76 FileName = "bacterial_1.csv" 87 FileName = "bacterial_1.csv", 88 NumberFormat = germanNumberFormat, 89 Separator = ';' 77 90 }; 78 91 } … … 87 100 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 88 101 TestEpisodes = new IntRange[] { }, 89 FileName = "bar_magnets_1.csv" 102 FileName = "bar_magnets_1.csv", 103 NumberFormat = germanNumberFormat, 104 Separator = ';' 90 105 }; 91 106 } … … 97 112 TargetVariables = new[] { "y1", "y2", "y3" }, 98 113 InputVariables = new string[] { }, 99 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 100 TestEpisodes = new IntRange[] { }, 101 FileName = "ChemicalReaction.csv" 114 TrainingEpisodes = new IntRange[] { new IntRange(0, 101) }, 115 TestEpisodes = new IntRange[] { }, 116 FileName = "ChemicalReaction.csv", 117 NumberFormat = germanNumberFormat, 118 Separator = ';' 102 119 }; 103 120 } … … 109 126 TargetVariables = new[] { "y1", "y2", "y3" }, 110 127 InputVariables = new string[] { }, 111 TrainingEpisodes = new IntRange[] { new IntRange(0, 40) }, 112 TestEpisodes = new IntRange[] { }, 113 FileName = "E-CELL.csv" 128 TrainingEpisodes = new IntRange[] { new IntRange(0, 41) }, 129 TestEpisodes = new IntRange[] { }, 130 FileName = "E-CELL.csv", 131 NumberFormat = germanNumberFormat, 132 Separator = ';' 114 133 }; 115 134 } … … 123 142 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 124 143 TestEpisodes = new IntRange[] { }, 125 FileName = "Glider_1.csv" 144 FileName = "Glider_1.csv", 145 NumberFormat = germanNumberFormat, 146 Separator = ';' 126 147 }; 127 148 } … … 134 155 InputVariables = new string[] { }, 135 156 TrainingEpisodes = new IntRange[] { new IntRange(0, 193) }, 136 TestEpisodes = new IntRange[] { }, 137 FileName = "LotkaVolterra.csv" 157 TestEpisodes = new IntRange[] { new IntRange(193, 300) }, 158 FileName = "LotkaVolterra.csv", 159 NumberFormat = germanNumberFormat, 160 Separator = ';' 138 161 }; 139 162 } … … 147 170 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 148 171 TestEpisodes = new IntRange[] { }, 149 FileName = "predator_prey_1.csv" 172 FileName = "predator_prey_1.csv", 173 NumberFormat = germanNumberFormat, 174 Separator = ';' 150 175 }; 151 176 } … … 159 184 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 160 185 TestEpisodes = new IntRange[] { }, 161 FileName = "shear_flow_1.csv" 186 FileName = "shear_flow_1.csv", 187 NumberFormat = germanNumberFormat, 188 Separator = ';' 162 189 }; 163 190 } … … 171 198 TrainingEpisodes = new IntRange[] { new IntRange(0, 31), new IntRange(31, 62), new IntRange(62, 93) }, 172 199 TestEpisodes = new IntRange[] { }, 173 FileName = "S-System.csv" 200 FileName = "S-System.csv", 201 NumberFormat = germanNumberFormat, 202 Separator = ';' 174 203 }; 175 204 } … … 184 213 TrainingEpisodes = new IntRange[] { new IntRange(0, 100)}, 185 214 TestEpisodes = new IntRange[] { }, 186 FileName = "ThreeLotkaVolterra.csv" 215 FileName = "ThreeLotkaVolterra.csv", 216 NumberFormat = germanNumberFormat, 217 Separator = ';' 187 218 }; 188 219 } … … 197 228 TrainingEpisodes = new IntRange[] { new IntRange(0, 100) }, 198 229 TestEpisodes = new IntRange[] { }, 199 FileName = "van_der_pol_1.csv" 230 FileName = "van_der_pol_1.csv", 231 NumberFormat = germanNumberFormat, 232 Separator = ';' 233 }; 234 } 235 236 private DataDescriptor Oscillator() { 237 return new DataDescriptor { 238 Name = "Linear Oscillator (simulation)", 239 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 240 TargetVariables = new[] { "x", "v" }, 241 InputVariables = new string[] { }, 242 TrainingEpisodes = new IntRange[] { new IntRange(0, 512) }, 243 TestEpisodes = new IntRange[] { }, 244 FileName = "linear_h_1_equidistant.txt", 245 NumberFormat = germanNumberFormat, 246 Separator = ';' 247 }; 248 } 249 250 private DataDescriptor RealOscillator() { 251 return new DataDescriptor { 252 Name = "Linear Oscillator (motion-tracked)", 253 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 254 TargetVariables = new[] { "x", "v" }, 255 InputVariables = new string[] { }, 256 TrainingEpisodes = new IntRange[] { new IntRange(0, 879) }, 257 TestEpisodes = new IntRange[] { }, 258 FileName = "real_linear_h_1_equidistant.txt", 259 NumberFormat = germanNumberFormat, 260 Separator = ';' 261 }; 262 } 263 private DataDescriptor Pendulum() { 264 return new DataDescriptor { 265 Name = "Pendulum (simulated)", 266 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 267 TargetVariables = new[] { "theta", "omega", "v" }, 268 InputVariables = new string[] { }, 269 TrainingEpisodes = new IntRange[] { new IntRange(0, 502) }, 270 TestEpisodes = new IntRange[] { }, 271 FileName = "pendulum_h_1_equidistant.txt", 272 NumberFormat = germanNumberFormat, 273 Separator = ';' 274 }; 275 } 276 private DataDescriptor RealPendulum() { 277 return new DataDescriptor { 278 Name = "Pendulum (motion-tracked)", 279 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 280 TargetVariables = new[] { "theta", "omega" }, 281 InputVariables = new string[] { }, 282 TrainingEpisodes = new IntRange[] { new IntRange(0, 568) }, 283 TestEpisodes = new IntRange[] { }, 284 FileName = "real_pend_h_1_equidistant.txt", 285 NumberFormat = germanNumberFormat, 286 Separator = ';' 287 }; 288 } 289 private DataDescriptor DoubleOscillator() { 290 return new DataDescriptor { 291 Name = "Double Oscillator (simulated)", 292 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 293 TargetVariables = new[] { "x1", "x2", "v1", "v2" }, 294 InputVariables = new string[] { }, 295 TrainingEpisodes = new IntRange[] { new IntRange(0, 820) }, 296 TestEpisodes = new IntRange[] { }, 297 FileName = "double_linear_h_1_equidistant.txt", 298 NumberFormat = germanNumberFormat, 299 Separator = ';' 300 }; 301 } 302 private DataDescriptor RealDoubleOscillator() { 303 return new DataDescriptor { 304 Name = "Double Oscillator (motion-tracked)", 305 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 306 TargetVariables = new[] { "x1", "x2", "v1", "v2" }, 307 InputVariables = new string[] { }, 308 TrainingEpisodes = new IntRange[] { new IntRange(0, 500) }, 309 TestEpisodes = new IntRange[] { }, 310 FileName = "real_double_linear_h_1_equidistant.txt", 311 NumberFormat = germanNumberFormat, 312 Separator = ';' 313 }; 314 } 315 private DataDescriptor DoublePendulum() { 316 return new DataDescriptor { 317 Name = "Double Pendulum (simulated)", 318 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 319 TargetVariables = new[] { "theta1", "theta2", "omega1", "omega2" }, 320 InputVariables = new string[] { }, 321 TrainingEpisodes = new IntRange[] { new IntRange(0, 1355) }, 322 TestEpisodes = new IntRange[] {new IntRange(1355, 2660) }, 323 FileName = "double_pend_h_1_equidistant.txt", 324 NumberFormat = germanNumberFormat, 325 Separator = ';' 326 }; 327 } 328 private DataDescriptor RealDoublePendulum() { 329 return new DataDescriptor { 330 Name = "Double Pendulum (motion-tracked)", 331 Description = "Publication: M. Schmidt, H. Lipson; Distilling Free-Form Natural Laws from Experimental Data, Science Apr 2009: Vol. 324, Issue 5923, pp. 81 - 85.", 332 TargetVariables = new[] { "theta1", "theta2", "omega1", "omega2" }, 333 InputVariables = new string[] { }, 334 TrainingEpisodes = new IntRange[] { new IntRange(0, 886) }, 335 TestEpisodes = new IntRange[] {new IntRange(886, 1731) }, 336 FileName = "real_double_pend_h_1_equidistant.txt", 337 NumberFormat = germanNumberFormat, 338 Separator = ';' 200 339 }; 201 340 } … … 207 346 using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) { 208 347 var entry = instancesZipFile.GetEntry(descriptor.FileName); 209 NumberFormatInfo numberFormat ;210 DateTimeFormatInfo dateFormat ;211 char separator ;212 using (Stream stream = entry.Open()) {213 TableFileParser.DetermineFileFormat(stream, out numberFormat, out dateFormat, out separator);214 }348 NumberFormatInfo numberFormat = descriptor.NumberFormat; 349 DateTimeFormatInfo dateFormat = System.Globalization.DateTimeFormatInfo.InvariantInfo ; 350 char separator = descriptor.Separator; 351 //using (Stream stream = entry.Open()) { 352 // TableFileParser.DetermineFileFormat(stream, out numberFormat, out dateFormat, out separator); 353 //} 215 354 216 355 TableFileParser csvFileParser = new TableFileParser(); … … 221 360 Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values); 222 361 223 362 dataset.Name = descriptor.FileName; 363 dataset.Description = descriptor.Description; 224 364 // using a RegressionProblemData is suboptimal here --> TODO introduce a new datatype and refactor the whole problem 225 365 var problemData = new RegressionProblemData(dataset, descriptor.InputVariables, descriptor.TargetVariables.First()); 366 problemData.Name = descriptor.Name; 367 problemData.Description = descriptor.Description; 226 368 problemData.TrainingPartition.Start = 0; 227 369 problemData.TrainingPartition.End = 0; -
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/SolutionView.cs
r16660 r16976 96 96 } 97 97 98 var forecastPredValues = 99 Enumerable.Repeat(double.NaN, predictionEpisode.End) 100 .Concat(forecastPredictions.Select(pi => pi[i])) 101 .Concat(Enumerable.Repeat(double.NaN, ds.Rows - predictionEpisode.End - forecastPredictions.Length)) 102 .ToArray(); 98 if (ds.Rows - predictionEpisode.End - forecastPredictions.Length > 0) { 99 var forecastPredValues = 100 Enumerable.Repeat(double.NaN, predictionEpisode.End) 101 .Concat(forecastPredictions.Select(pi => pi[i])) 102 .Concat(Enumerable.Repeat(double.NaN, ds.Rows - predictionEpisode.End - forecastPredictions.Length)) 103 .ToArray(); 103 104 104 var forecastRow = new DataRow(varName + " (forecast)", varName + " (forecast)", forecastPredValues); 105 dt.Rows.Add(forecastRow); 105 var forecastRow = new DataRow(varName + " (forecast)", varName + " (forecast)", forecastPredValues); 106 dt.Rows.Add(forecastRow); 107 } 106 108 107 109 var vizProp = new DataTableVisualProperties();
Note: See TracChangeset
for help on using the changeset viewer.