
В этой статье я расскажу про свой эксперимент: я создал в Unity симуляцию радиоуправляемых машинок, которые эволюционируют. «Мозгом» каждой машинки является электронная схема. Я заставил эти схемы мутировать(случайно меняться) и скрещиваться(обмениваться частями), чтобы создавать новые модели машин и улучшать их. Их «интеллект» и поведение меняются в зависимости от того, сколько блоков они успешно поднимают.
Старт симуляции:
Мутация: У машинки меняется "ДНК" (её электронная схема)
Скрещивание: Эта машинка объединяет свои "гены" с другой, и рождается новая.
Принцип такой: «мозг» машинки (её радиосхема) учится методом проб и ошибок. Каждый раз, когда она успешно поднимает блок, она получает положительный сигнал (подкрепление), который заставляет её повторять удачные действия в будущем.
Основная задача заключалась в организации непрерывного обмена данными между Unity и NGspice.
Я сделал так: программа в Юнити создавала описание схемы, отправляла его в NGspice (симулятор), тот рассчитывал все токи и напряжения и возвращал готовый ответ обратно в Юнити.
Понимаете, NGspice только кажется простым. На самом деле это мощный симулятор, созданный для профессионалов, и его исходный код — на языке C. Поэтому, хотя перенос его функций на C# для полной интеграции с Unity — дело важное, я считаю, что сначала нужно сосредоточиться на вызове NGspice из Unity.
Вот так развивалось поведение машинок:
Сперва они могли только ехать вперёд. Потом понемногу начали управлять своей рукой-манипулятором. В какой-то момент они сообразили, что можно оттолкнуться этой рукой от пола и подпрыгнуть. И уже на основе этого прыжка у них рождалось новое, куда более сложное поведение. Стоит одной машинке схватить блок, её успешная радиосхема («ДНК») передаётся по наследству, и среди всех машинок начинается настоящая гонка за блоками. И тут я увидел кое-что удивительное: они начали отбирать и воровать блоки друг у друга. Это поведение возникло само по себе, я его в них не закладывал. Меня это потрясло и невероятно обрадовало. Я никогда не думал, что они смогут додуматься до такого сами.
Моя гипотеза: настоящий интеллект нельзя просто написать кодом или натренировать на данных. Его нужно «выращивать», как растение, с помощью эволюции.
Как это работает в симуляции:
Система поощрений: Машинка получает «награду», если она наедет на синий кубик или дотронется до него своим усиком-датчиком,либо схватить своей роборукой красный кубик.
Цикл эволюции:
Начало (Мутация): У каждой машинки в «мозгу» (радиосхеме) появляется случайное изменение.
Финал (Скрещивание): Самые успешные машинки (с наибольшей наградой) объединяют свои схемы, чтобы создать следующее, более умное поколение.
К чему приводит такая эволюция? Схемы начинают жить в своем «обществе». Между ними возникает взаимодействие: они борются за блоки, толкают друг друга, а их странные «прыжки» — возможно, это даже примитивный «язык», на котором они «общаются».
В процессе эволюции (мутации и скрещивания) постоянно меняются «мозги» для машинок. Они собраны из разных радиодеталей так сложно и хаотично, что уже невозможно понять, как именно они работают.
Мой рецепт первичного ИИ: начать с простого поощрения за блоки, постепенно наращивать сложность задач и позволить эволюции сделать всю остальную работу.
Нейросети тоже можно «выращивать» эволюцией, мутируя их параметры. Однако аналоговые схемы, как в моём эксперименте, эффективнее — они потребляют меньше энергии и не требуют мощного охлаждения. Также в отличие от цифровых систем, мои аналоговые схемы работают в реальном времени. Эта временная зависимость дает им «чувство времени», которое помогает ориентироваться в пространстве.
Я усложнил задачу: добавил в мир карандаши и холст для рисования. Настроив систему поощрений так, чтобы машинки получали "баллы" за рисование, я заставил их брать карандаши и оставлять на холсте свои каракули.
Сдесь ссылка на ютуб плейлист,где происходит эволюция радиомашинок
Принцип генерации электронных схем (нетлистов):
Входные данные: 16x16 пиксельная камера, реагирующая на свет, преобразуется в набор постоянных напряжений.
Выходные данные: Сигналы снимаются с резисторов, которые имитируют моторы. Эти сигналы (рассчитанные напряжения) передаются в Unity для управления колёсами и манипулятором.
Формирование схемы: Между входами и выходами эволюционным путём создаётся случайная схема. Процесс мутации может:
Добавить или удалить любой элемент.
Изменить его расположение в схеме.
Изменить его номинал (например, сопротивление резистора).
Цикл эволюции выглядит так:
Находим лидера — машинку с наибольшим количеством очков.
Находим претендента — машинку с немного меньшим счётом.
Скрещиваем их — создаём новое поколение на основе "мозгов" лучших из текущего.
Рассмотрим минимум из того, что нужно знать о ngspice для данного проекта.
.title – это просто метка
.subckt – это подсхема. У меня используется для безопасного подключения транзистора или диода через резисторы.
.ends – конец подсхемы.
Vk a 0 DC Value
Источник постоянного тока, где k,a – постоянные значения.Value – значение напряжения на источнике питания.
Пример
V1 1 0 DC 1.193
V3 3 0 DC 1.250
Rk a b Value
Резистор.k a b – целые значения.a,b – места куда подключается резистор.Value – номинал резистора
Пример
R1 257 0 1000
R10 266 257 100
*start scheme
Комментарий, после которого начинается генерироваться цепь.
Ck a b Value.
Конденсатор. K,a,b – целые числа. Числа a,b – место, куда подключается конденсатор.Value – номинал конденсатора.
Пример
С1 254 340 100m
Lk a b Value
Индуктивность.k,a,b – целые значения,a,b – место,кода подключается индуктивность,Value – номинал индуктивности.
Пример
L1 331 340 223m
Xk a b c TRANS_SAFE
Транзистор. Осуществляется вызов .subckt TRANS_SAFE.k a b c- целые числа.a b c – места куда подключается транзистор. TRANS_SAFE – имя подсхемы транзистора.
Пример
X2 180 877 593 TRANS_SAFE
Xk a b DIODE_SAFE
Диод, вызов .subckt DIODE_SAFE
k,a,b – целые числа.a b – место куда подключается диод
DIODE_SAFE – имя подсхемы
Пример
X4 632 561 DIODE_SAFE
.tran – анализ радиосхем
.control – начало анализа схемы
.endc – конец анализа схемы
run – запуск анализа
print v(257) v(258) > output.txt –это вывод потенциалов в точках 257 и 258 в текстовый файл output.txt
Рассмотрим типичный код нетлиста, сгенерированный программой c# unity:
Начало нетлиста
Этот код отвечает за безопасное подключение транзистора и диода.
безопасное подключение транзистора и диода.
.title Simple Circuit .model m1 NPN .model m2 D .subckt TRANS_SAFE base_int collector_int emitter_int Q1 collector base emitter m1 rbase base base_int 10k rcollector collector collector_int 1k remitter emitter emitter_int 100 .ends .subckt DIODE_SAFE in_int out_int D1 in out m2 rin in in_int 1k rout out out_int 1k .ends
Это напряжения на входе фронтальной камеры(текстуры 16x16)
напряжения на входе фронтальной камеры(текстуры 16x16)
V1 1 0 DC 1.193 V2 2 0 DC 1.227 V3 3 0 DC 1.250 V4 4 0 DC 1.232 V5 5 0 DC 1.227 V6 6 0 DC 1.211 V7 7 0 DC 1.193 V8 8 0 DC 1.355 V9 9 0 DC 1.374 V10 10 0 DC 1.232 V11 11 0 DC 1.252 V12 12 0 DC 1.270 V13 13 0 DC 1.290 V14 14 0 DC 1.309 V15 15 0 DC 1.270 V16 16 0 DC 1.227 V17 17 0 DC 1.445 V18 18 0 DC 1.270 V19 19 0 DC 1.309 V20 20 0 DC 1.335 V21 21 0 DC 1.329 V22 22 0 DC 1.315 V23 23 0 DC 1.309 V24 24 0 DC 1.309 V25 25 0 DC 1.353 V26 26 0 DC 1.367 V27 27 0 DC 1.372 V28 28 0 DC 1.372 V29 29 0 DC 1.392 V30 30 0 DC 1.368 V31 31 0 DC 1.309 V32 32 0 DC 1.484 V33 33 0 DC 2.281 V34 34 0 DC 1.574 V35 35 0 DC 1.555 V36 36 0 DC 1.550 V37 37 0 DC 1.536 V38 38 0 DC 1.452 V39 39 0 DC 1.432 V40 40 0 DC 2.140 V41 41 0 DC 1.456 V42 42 0 DC 1.456 V43 43 0 DC 1.472 V44 44 0 DC 1.509 V45 45 0 DC 1.536 V46 46 0 DC 1.536 V47 47 0 DC 1.536 V48 48 0 DC 1.550 V49 49 0 DC 1.637 V50 50 0 DC 1.632 V51 51 0 DC 1.617 V52 52 0 DC 1.613 V53 53 0 DC 1.599 V54 54 0 DC 1.593 V55 55 0 DC 1.593 V56 56 0 DC 1.574 V57 57 0 DC 2.301 V58 58 0 DC 1.555 V59 59 0 DC 1.554 V60 60 0 DC 1.536 V61 61 0 DC 1.656 V62 62 0 DC 1.656 V63 63 0 DC 1.670 V64 64 0 DC 1.656 V65 65 0 DC 1.695 V66 66 0 DC 1.676 V67 67 0 DC 1.676 V68 68 0 DC 1.656 V69 69 0 DC 1.656 V70 70 0 DC 1.637 V71 71 0 DC 1.632 V72 72 0 DC 1.613 V73 73 0 DC 1.599 V74 74 0 DC 1.593 V75 75 0 DC 1.575 V76 76 0 DC 1.715 V77 77 0 DC 1.714 V78 78 0 DC 1.714 V79 79 0 DC 1.700 V80 80 0 DC 1.695 V81 81 0 DC 1.676 V82 82 0 DC 1.714 V83 83 0 DC 1.694 V84 84 0 DC 1.676 V85 85 0 DC 1.656 V86 86 0 DC 1.652 V87 87 0 DC 1.777 V88 88 0 DC 1.777 V89 89 0 DC 1.777 V90 90 0 DC 1.772 V91 91 0 DC 1.753 V92 92 0 DC 1.753 V93 93 0 DC 1.739 V94 94 0 DC 1.777 V95 95 0 DC 1.772 V96 96 0 DC 1.772 V97 97 0 DC 1.816 V98 98 0 DC 1.816 V99 99 0 DC 1.816 V100 100 0 DC 1.816 V101 101 0 DC 1.816 V102 102 0 DC 1.796 V103 103 0 DC 1.796 V104 104 0 DC 1.796 V105 105 0 DC 1.796 V106 106 0 DC 1.792 V107 107 0 DC 1.911 V108 108 0 DC 1.991 V109 109 0 DC 1.991 V110 110 0 DC 1.972 V111 111 0 DC 1.967 V112 112 0 DC 2.086 V113 113 0 DC 1.936 V114 114 0 DC 1.956 V115 115 0 DC 1.956 V116 116 0 DC 1.975 V117 117 0 DC 1.975 V118 118 0 DC 1.980 V119 119 0 DC 1.980 V120 120 0 DC 1.873 V121 121 0 DC 1.897 V122 122 0 DC 1.918 V123 123 0 DC 1.956 V124 124 0 DC 2.049 V125 125 0 DC 2.087 V126 126 0 DC 1.968 V127 127 0 DC 2.898 V128 128 0 DC 2.353 V129 129 0 DC 3.835 V130 130 0 DC 5.000 V131 131 0 DC 4.917 V132 132 0 DC 4.908 V133 133 0 DC 4.896 V134 134 0 DC 4.887 V135 135 0 DC 4.871 V136 136 0 DC 4.858 V137 137 0 DC 4.745 V138 138 0 DC 4.676 V139 139 0 DC 4.622 V140 140 0 DC 4.553 V141 141 0 DC 4.497 V142 142 0 DC 4.438 V143 143 0 DC 2.469 V144 144 0 DC 2.473 V145 145 0 DC 4.268 V146 146 0 DC 4.230 V147 147 0 DC 4.174 V148 148 0 DC 4.098 V149 149 0 DC 4.059 V150 150 0 DC 4.021 V151 151 0 DC 3.964 V152 152 0 DC 3.923 V153 153 0 DC 3.870 V154 154 0 DC 3.831 V155 155 0 DC 3.778 V156 156 0 DC 3.752 V157 157 0 DC 3.716 V158 158 0 DC 3.677 V159 159 0 DC 3.661 V160 160 0 DC 3.640 V161 161 0 DC 3.625 V162 162 0 DC 3.563 V163 163 0 DC 3.524 V164 164 0 DC 3.485 V165 165 0 DC 3.432 V166 166 0 DC 3.392 V167 167 0 DC 3.353 V168 168 0 DC 3.338 V169 169 0 DC 3.299 V170 170 0 DC 3.278 V171 171 0 DC 3.258 V172 172 0 DC 3.223 V173 173 0 DC 3.203 V174 174 0 DC 3.202 V175 175 0 DC 3.182 V176 176 0 DC 3.181 V177 177 0 DC 3.147 V178 178 0 DC 3.124 V179 179 0 DC 3.089 V180 180 0 DC 3.049 V181 181 0 DC 3.010 V182 182 0 DC 2.995 V183 183 0 DC 2.974 V184 184 0 DC 2.954 V185 185 0 DC 2.919 V186 186 0 DC 2.899 V187 187 0 DC 2.878 V188 188 0 DC 2.878 V189 189 0 DC 2.859 V190 190 0 DC 2.857 V191 191 0 DC 2.859 V192 192 0 DC 2.859 V193 193 0 DC 2.880 V194 194 0 DC 2.841 V195 195 0 DC 2.787 V196 196 0 DC 2.747 V197 197 0 DC 2.707 V198 198 0 DC 2.653 V199 199 0 DC 2.629 V200 200 0 DC 2.608 V201 201 0 DC 2.588 V202 202 0 DC 2.573 V203 203 0 DC 2.553 V204 204 0 DC 2.553 V205 205 0 DC 2.552 V206 206 0 DC 2.553 V207 207 0 DC 2.572 V208 208 0 DC 2.595 V209 209 0 DC 2.574 V210 210 0 DC 2.539 V211 211 0 DC 2.500 V212 212 0 DC 2.495 V213 213 0 DC 2.459 V214 214 0 DC 2.440 V215 215 0 DC 2.419 V216 216 0 DC 2.399 V217 217 0 DC 2.384 V218 218 0 DC 2.378 V219 219 0 DC 2.364 V220 220 0 DC 2.363 V221 221 0 DC 2.378 V222 222 0 DC 2.382 V223 223 0 DC 2.382 V224 224 0 DC 2.384 V225 225 0 DC 2.403 V226 226 0 DC 2.380 V227 227 0 DC 2.343 V228 228 0 DC 2.304 V229 229 0 DC 2.265 V230 230 0 DC 2.249 V231 231 0 DC 2.230 V232 232 0 DC 2.209 V233 233 0 DC 2.210 V234 234 0 DC 2.210 V235 235 0 DC 2.209 V236 236 0 DC 2.209 V237 237 0 DC 2.209 V238 238 0 DC 2.209 V239 239 0 DC 2.209 V240 240 0 DC 2.230 V241 241 0 DC 2.230 V242 242 0 DC 2.210 V243 243 0 DC 2.189 V244 244 0 DC 2.189 V245 245 0 DC 2.169 V246 246 0 DC 2.148 V247 247 0 DC 2.133 V248 248 0 DC 2.113 V249 249 0 DC 2.113 V250 250 0 DC 2.113 V251 251 0 DC 2.113 V252 252 0 DC 2.113 V253 253 0 DC 2.113 V254 254 0 DC 2.113 V255 255 0 DC 2.113 V256 256 0 DC 2.133
Это сопротивления на моторах, которые управляют перемещением машинки взад-вперед, влево-направо
сопротивления на моторах, которые управляют перемещением машинки
R1 257 0 1000 R2 258 0 1000 R3 259 0 1000 R4 260 0 1000
Это сопротивления, которые подключены к моторам машинок для управления перемещения. Они нужны для того, чтобы эволюции было легче связать батарейку на камере, например V255, с выходным сопротивлением на моторе.
сопротивления, которые подключены к моторам машинок для управления перемещения
R5 261 257 100 R6 262 257 100 R7 263 257 100 R8 264 257 100 R9 265 257 100 R10 266 257 100 R11 267 257 100 R12 268 257 100 R13 269 257 100 R14 270 257 100 R15 271 257 100 R16 272 257 100 R17 273 257 100 R18 274 257 100 R19 275 257 100 R20 276 257 100 R21 277 257 100 R22 278 257 100 R23 279 257 100 R24 280 257 100 R25 281 257 100 R26 282 257 100 R27 283 257 100 R28 284 257 100 R29 285 257 100 R30 286 257 100 R31 287 257 100 R32 288 257 100 R33 289 257 100 R34 290 257 100 R35 291 257 100 R36 292 257 100 R37 293 257 100 R38 294 257 100 R39 295 257 100 R40 296 257 100 R41 297 257 100 R42 298 257 100 R43 299 257 100 R44 300 257 100 R45 301 257 100 R46 302 257 100 R47 303 257 100 R48 304 257 100 R49 305 257 100 R50 306 257 100 R51 307 257 100 R52 308 257 100 R53 309 257 100 R54 310 257 100 R55 311 257 100 R56 312 257 100 R57 313 257 100 R58 314 257 100 R59 315 257 100 R60 316 257 100 R61 317 257 100 R62 318 257 100 R63 319 257 100 R64 320 257 100 R65 321 257 100 R66 322 257 100 R67 323 257 100 R68 324 257 100 R69 325 258 100 R70 326 258 100 R71 327 258 100 R72 328 258 100 R73 329 258 100 R74 330 258 100 R75 331 258 100 R76 332 258 100 R77 333 258 100 R78 334 258 100 R79 335 258 100 R80 336 258 100 R81 337 258 100 R82 338 258 100 R83 339 258 100 R84 340 258 100 R85 341 258 100 R86 342 258 100 R87 343 258 100 R88 344 258 100 R89 345 258 100 R90 346 258 100 R91 347 258 100 R92 348 258 100 R93 349 258 100 R94 350 258 100 R95 351 258 100 R96 352 258 100 R97 353 258 100 R98 354 258 100 R99 355 258 100 R100 356 258 100 R101 357 258 100 R102 358 258 100 R103 359 258 100 R104 360 258 100 R105 361 258 100 R106 362 258 100 R107 363 258 100 R108 364 258 100 R109 365 258 100 R110 366 258 100 R111 367 258 100 R112 368 258 100 R113 369 258 100 R114 370 258 100 R115 371 258 100 R116 372 258 100 R117 373 258 100 R118 374 258 100 R119 375 258 100 R120 376 258 100 R121 377 258 100 R122 378 258 100 R123 379 258 100 R124 380 258 100 R125 381 258 100 R126 382 258 100 R127 383 258 100 R128 384 258 100 R129 385 258 100 R130 386 258 100 R131 387 258 100 R132 388 258 100 R133 389 259 100 R134 390 259 100 R135 391 259 100 R136 392 259 100 R137 393 259 100 R138 394 259 100 R139 395 259 100 R140 396 259 100 R141 397 259 100 R142 398 259 100 R143 399 259 100 R144 400 259 100 R145 401 259 100 R146 402 259 100 R147 403 259 100 R148 404 259 100 R149 405 259 100 R150 406 259 100 R151 407 259 100 R152 408 259 100 R153 409 259 100 R154 410 259 100 R155 411 259 100 R156 412 259 100 R157 413 259 100 R158 414 259 100 R159 415 259 100 R160 416 259 100 R161 417 259 100 R162 418 259 100 R163 419 259 100 R164 420 259 100 R165 421 259 100 R166 422 259 100 R167 423 259 100 R168 424 259 100 R169 425 259 100 R170 426 259 100 R171 427 259 100 R172 428 259 100 R173 429 259 100 R174 430 259 100 R175 431 259 100 R176 432 259 100 R177 433 259 100 R178 434 259 100 R179 435 259 100 R180 436 259 100 R181 437 259 100 R182 438 259 100 R183 439 259 100 R184 440 259 100 R185 441 259 100 R186 442 259 100 R187 443 259 100 R188 444 259 100 R189 445 259 100 R190 446 259 100 R191 447 259 100 R192 448 259 100 R193 449 259 100 R194 450 259 100 R195 451 259 100 R196 452 259 100 R197 453 260 100 R198 454 260 100 R199 455 260 100 R200 456 260 100 R201 457 260 100 R202 458 260 100 R203 459 260 100 R204 460 260 100 R205 461 260 100 R206 462 260 100 R207 463 260 100 R208 464 260 100 R209 465 260 100 R210 466 260 100 R211 467 260 100 R212 468 260 100 R213 469 260 100 R214 470 260 100 R215 471 260 100 R216 472 260 100 R217 473 260 100 R218 474 260 100 R219 475 260 100 R220 476 260 100 R221 477 260 100 R222 478 260 100 R223 479 260 100 R224 480 260 100 R225 481 260 100 R226 482 260 100 R227 483 260 100 R228 484 260 100 R229 485 260 100 R230 486 260 100 R231 487 260 100 R232 488 260 100 R233 489 260 100 R234 490 260 100 R235 491 260 100 R236 492 260 100 R237 493 260 100 R238 494 260 100 R239 495 260 100 R240 496 260 100 R241 497 260 100 R242 498 260 100 R243 499 260 100 R244 500 260 100 R245 501 260 100 R246 502 260 100 R247 503 260 100 R248 504 260 100 R249 505 260 100 R250 506 260 100 R251 507 260 100 R252 508 260 100 R253 509 260 100 R254 510 260 100 R255 511 260 100 R256 512 260 100 R257 513 260 100 R258 514 260 100 R259 515 260 100 R260 516 260 100
Это напряжения на усиках вокруг машинки. Усики срабатывают тогда, когда машинка сталкиваются с каким-то объектом
напряжения на усиках вокруг машинки
V257 517 0 DC 0 V258 518 0 DC 0 V259 519 0 DC 0 V260 520 0 DC 0 V261 521 0 DC 0 V262 522 0 DC 0
Это сопротивления, которые разветвляют сигнал с усиков, для лучшей связи с выходными электромоторами(сопротивлениями)
сопротивления, которые разветвляют сигнал с усиков
R261 523 517 100 R262 524 517 100 R263 525 517 100 R264 526 517 100 R265 527 517 100 R266 528 517 100 R267 529 517 100 R268 530 517 100 R269 531 517 100 R270 532 517 100 R271 533 517 100 R272 534 517 100 R273 535 517 100 R274 536 517 100 R275 537 517 100 R276 538 517 100 R277 539 517 100 R278 540 517 100 R279 541 517 100 R280 542 517 100 R281 543 517 100 R282 544 517 100 R283 545 517 100 R284 546 517 100 R285 547 517 100 R286 548 517 100 R287 549 517 100 R288 550 517 100 R289 551 517 100 R290 552 517 100 R291 553 517 100 R292 554 517 100 R293 555 518 100 R294 556 518 100 R295 557 518 100 R296 558 518 100 R297 559 518 100 R298 560 518 100 R299 561 518 100 R300 562 518 100 R301 563 518 100 R302 564 518 100 R303 565 518 100 R304 566 518 100 R305 567 518 100 R306 568 518 100 R307 569 518 100 R308 570 518 100 R309 571 518 100 R310 572 518 100 R311 573 518 100 R312 574 518 100 R313 575 518 100 R314 576 518 100 R315 577 518 100 R316 578 518 100 R317 579 518 100 R318 580 518 100 R319 581 518 100 R320 582 518 100 R321 583 518 100 R322 584 518 100 R323 585 518 100 R324 586 518 100 R325 587 519 100 R326 588 519 100 R327 589 519 100 R328 590 519 100 R329 591 519 100 R330 592 519 100 R331 593 519 100 R332 594 519 100 R333 595 519 100 R334 596 519 100 R335 597 519 100 R336 598 519 100 R337 599 519 100 R338 600 519 100 R339 601 519 100 R340 602 519 100 R341 603 519 100 R342 604 519 100 R343 605 519 100 R344 606 519 100 R345 607 519 100 R346 608 519 100 R347 609 519 100 R348 610 519 100 R349 611 519 100 R350 612 519 100 R351 613 519 100 R352 614 519 100 R353 615 519 100 R354 616 519 100 R355 617 519 100 R356 618 519 100 R357 619 520 100 R358 620 520 100 R359 621 520 100 R360 622 520 100 R361 623 520 100 R362 624 520 100 R363 625 520 100 R364 626 520 100 R365 627 520 100 R366 628 520 100 R367 629 520 100 R368 630 520 100 R369 631 520 100 R370 632 520 100 R371 633 520 100 R372 634 520 100 R373 635 520 100 R374 636 520 100 R375 637 520 100 R376 638 520 100 R377 639 520 100 R378 640 520 100 R379 641 520 100 R380 642 520 100 R381 643 520 100 R382 644 520 100 R383 645 520 100 R384 646 520 100 R385 647 520 100 R386 648 520 100 R387 649 520 100 R388 650 520 100 R389 651 521 100 R390 652 521 100 R391 653 521 100 R392 654 521 100 R393 655 521 100 R394 656 521 100 R395 657 521 100 R396 658 521 100 R397 659 521 100 R398 660 521 100 R399 661 521 100 R400 662 521 100 R401 663 521 100 R402 664 521 100 R403 665 521 100 R404 666 521 100 R405 667 521 100 R406 668 521 100 R407 669 521 100 R408 670 521 100 R409 671 521 100 R410 672 521 100 R411 673 521 100 R412 674 521 100 R413 675 521 100 R414 676 521 100 R415 677 521 100 R416 678 521 100 R417 679 521 100 R418 680 521 100 R419 681 521 100 R420 682 521 100 R421 683 522 100 R422 684 522 100 R423 685 522 100 R424 686 522 100 R425 687 522 100 R426 688 522 100 R427 689 522 100 R428 690 522 100 R429 691 522 100 R430 692 522 100 R431 693 522 100 R432 694 522 100 R433 695 522 100 R434 696 522 100 R435 697 522 100 R436 698 522 100 R437 699 522 100 R438 700 522 100 R439 701 522 100 R440 702 522 100 R441 703 522 100 R442 704 522 100 R443 705 522 100 R444 706 522 100 R445 707 522 100 R446 708 522 100 R447 709 522 100 R448 710 522 100 R449 711 522 100 R450 712 522 100 R451 713 522 100 R452 714 522 100
Эта цепь отвечает за усики, которые находятся на “роборуке” машинки
цепь отвечает за усики, которые находятся на “роборуке” машинки
V264 683 0 DC 0 V265 684 0 DC 0 V266 685 0 DC 0 V267 686 0 DC 0 V268 687 0 DC 0
Эта цепь отвечает за сгибание "роборуки"
цепь отвечает за сгибание "роборуки"
R453 688 0 1000 R454 689 0 1000 R455 690 0 1000 R456 691 0 1000 R457 692 0 1000 R458 693 0 1000 R459 694 0 1000 R460 695 0 1000
Этот код отвечает за разветвление подключения моторов к роборуке
код отвечает за разветвление подключения моторов к роборуке
R461 696 688 100 R462 697 688 100 R463 698 688 100 R464 699 688 100 R465 700 688 100 R466 701 688 100 R467 702 688 100 R468 703 688 100 R469 704 688 100 R470 705 688 100 R471 706 688 100 R472 707 688 100 R473 708 688 100 R474 709 688 100 R475 710 688 100 R476 711 688 100 R477 712 688 100 R478 713 688 100 R479 714 688 100 R480 715 688 100 R481 716 688 100 R482 717 688 100 R483 718 688 100 R484 719 688 100 R485 720 688 100 R486 721 688 100 R487 722 688 100 R488 723 688 100 R489 724 688 100 R490 725 688 100 R491 726 688 100 R492 727 688 100 R493 728 689 100 R494 729 689 100 R495 730 689 100 R496 731 689 100 R497 732 689 100 R498 733 689 100 R499 734 689 100 R500 735 689 100 R501 736 689 100 R502 737 689 100 R503 738 689 100 R504 739 689 100 R505 740 689 100 R506 741 689 100 R507 742 689 100 R508 743 689 100 R509 744 689 100 R510 745 689 100 R511 746 689 100 R512 747 689 100 R513 748 689 100 R514 749 689 100 R515 750 689 100 R516 751 689 100 R517 752 689 100 R518 753 689 100 R519 754 689 100 R520 755 689 100 R521 756 689 100 R522 757 689 100 R523 758 689 100 R524 759 689 100 R525 760 690 100 R526 761 690 100 R527 762 690 100 R528 763 690 100 R529 764 690 100 R530 765 690 100 R531 766 690 100 R532 767 690 100 R533 768 690 100 R534 769 690 100 R535 770 690 100 R536 771 690 100 R537 772 690 100 R538 773 690 100 R539 774 690 100 R540 775 690 100 R541 776 690 100 R542 777 690 100 R543 778 690 100 R544 779 690 100 R545 780 690 100 R546 781 690 100 R547 782 690 100 R548 783 690 100 R549 784 690 100 R550 785 690 100 R551 786 690 100 R552 787 690 100 R553 788 690 100 R554 789 690 100 R555 790 690 100 R556 791 690 100 R557 792 691 100 R558 793 691 100 R559 794 691 100 R560 795 691 100 R561 796 691 100 R562 797 691 100 R563 798 691 100 R564 799 691 100 R565 800 691 100 R566 801 691 100 R567 802 691 100 R568 803 691 100 R569 804 691 100 R570 805 691 100 R571 806 691 100 R572 807 691 100 R573 808 691 100 R574 809 691 100 R575 810 691 100 R576 811 691 100 R577 812 691 100 R578 813 691 100 R579 814 691 100 R580 815 691 100 R581 816 691 100 R582 817 691 100 R583 818 691 100 R584 819 691 100 R585 820 691 100 R586 821 691 100 R587 822 691 100 R588 823 691 100 R589 824 692 100 R590 825 692 100 R591 826 692 100 R592 827 692 100 R593 828 692 100 R594 829 692 100 R595 830 692 100 R596 831 692 100 R597 832 692 100 R598 833 692 100 R599 834 692 100 R600 835 692 100 R601 836 692 100 R602 837 692 100 R603 838 692 100 R604 839 692 100 R605 840 692 100 R606 841 692 100 R607 842 692 100 R608 843 692 100 R609 844 692 100 R610 845 692 100 R611 846 692 100 R612 847 692 100 R613 848 692 100 R614 849 692 100 R615 850 692 100 R616 851 692 100 R617 852 692 100 R618 853 692 100 R619 854 692 100 R620 855 692 100 R621 856 693 100 R622 857 693 100 R623 858 693 100 R624 859 693 100 R625 860 693 100 R626 861 693 100 R627 862 693 100 R628 863 693 100 R629 864 693 100 R630 865 693 100 R631 866 693 100 R632 867 693 100 R633 868 693 100 R634 869 693 100 R635 870 693 100 R636 871 693 100 R637 872 693 100 R638 873 693 100 R639 874 693 100 R640 875 693 100 R641 876 693 100 R642 877 693 100 R643 878 693 100 R644 879 693 100 R645 880 693 100 R646 881 693 100 R647 882 693 100 R648 883 693 100 R649 884 693 100 R650 885 693 100 R651 886 693 100 R652 887 693 100 R653 888 694 100 R654 889 694 100 R655 890 694 100 R656 891 694 100 R657 892 694 100 R658 893 694 100 R659 894 694 100 R660 895 694 100 R661 896 694 100 R662 897 694 100 R663 898 694 100 R664 899 694 100 R665 900 694 100 R666 901 694 100 R667 902 694 100 R668 903 694 100 R669 904 694 100 R670 905 694 100 R671 906 694 100 R672 907 694 100 R673 908 694 100 R674 909 694 100 R675 910 694 100 R676 911 694 100 R677 912 694 100 R678 913 694 100 R679 914 694 100 R680 915 694 100 R681 916 694 100 R682 917 694 100 R683 918 694 100 R684 919 694 100 R685 920 695 100 R686 921 695 100 R687 922 695 100 R688 923 695 100 R689 924 695 100 R690 925 695 100 R691 926 695 100 R692 927 695 100 R693 928 695 100 R694 929 695 100 R695 930 695 100 R696 931 695 100 R697 932 695 100 R698 933 695 100 R699 934 695 100 R700 935 695 100 R701 936 695 100 R702 937 695 100 R703 938 695 100 R704 939 695 100 R705 940 695 100 R706 941 695 100 R707 942 695 100 R708 943 695 100 R709 944 695 100 R710 945 695 100 R711 946 695 100 R712 947 695 100 R713 948 695 100 R714 949 695 100 R715 950 695 100 R716 951 695 100
Это датчики задней камеры
датчики задней камеры
V269 952 0 DC 2.510 V270 953 0 DC 2.613 V271 954 0 DC 2.709 V272 955 0 DC 2.768 V273 956 0 DC 2.788 V274 957 0 DC 2.768 V275 958 0 DC 2.690 V276 959 0 DC 2.593 V277 960 0 DC 2.471 V278 961 0 DC 2.355 V279 962 0 DC 2.244 V280 963 0 DC 2.162 V281 964 0 DC 2.083 V282 965 0 DC 2.006 V283 966 0 DC 1.963 V284 967 0 DC 1.764 V285 968 0 DC 2.593 V286 969 0 DC 2.690 V287 970 0 DC 2.768 V288 971 0 DC 2.807 V289 972 0 DC 2.609 V290 973 0 DC 2.589 V291 974 0 DC 2.530 V292 975 0 DC 2.438 V293 976 0 DC 2.337 V294 977 0 DC 2.239 V295 978 0 DC 2.142 V296 979 0 DC 2.079 V297 980 0 DC 2.006 V298 981 0 DC 1.948 V299 982 0 DC 1.904 V300 983 0 DC 1.870 V301 984 0 DC 2.410 V302 985 0 DC 2.510 V303 986 0 DC 2.589 V304 987 0 DC 2.632 V305 988 0 DC 2.632 V306 989 0 DC 2.613 V307 990 0 DC 2.536 V308 991 0 DC 2.453 V309 992 0 DC 2.337 V310 993 0 DC 2.239 V311 994 0 DC 2.020 V312 995 0 DC 1.943 V313 996 0 DC 1.904 V314 997 0 DC 1.865 V315 998 0 DC 1.827 V316 999 0 DC 1.807 V317 1000 0 DC 2.356 V318 1001 0 DC 2.453 V319 1002 0 DC 2.510 V320 1003 0 DC 2.530 V321 1004 0 DC 2.530 V322 1005 0 DC 2.477 V323 1006 0 DC 2.293 V324 1007 0 DC 2.221 V325 1008 0 DC 2.138 V326 1009 0 DC 2.061 V327 1010 0 DC 2.001 V328 1011 0 DC 1.943 V329 1012 0 DC 1.886 V330 1013 0 DC 1.865 V331 1014 0 DC 1.827 V332 1015 0 DC 1.807 V333 1016 0 DC 2.134 V334 1017 0 DC 2.254 V335 1018 0 DC 2.356 V336 1019 0 DC 2.293 V337 1020 0 DC 2.307 V338 1021 0 DC 2.274 V339 1022 0 DC 2.254 V340 1023 0 DC 1.959 V341 1024 0 DC 1.915 V342 1025 0 DC 1.857 V343 1026 0 DC 1.823 V344 1027 0 DC 1.803 V345 1028 0 DC 1.803 V346 1029 0 DC 1.803 V347 1030 0 DC 1.682 V348 1031 0 DC 1.687 V349 1032 0 DC 1.157 V350 1033 0 DC 1.196 V351 1034 0 DC 1.234 V352 1035 0 DC 1.235 V353 1036 0 DC 1.190 V354 1037 0 DC 1.214 V355 1038 0 DC 1.099 V356 1039 0 DC 1.098 V357 1040 0 DC 1.078 V358 1041 0 DC 1.039 V359 1042 0 DC 1.019 V360 1043 0 DC 0.918 V361 1044 0 DC 1.827 V362 1045 0 DC 1.788 V363 1046 0 DC 1.764 V364 1047 0 DC 1.745 V365 1048 0 DC 0.000 V366 1049 0 DC 0.000 V367 1050 0 DC 0.000 V368 1051 0 DC 0.000 V369 1052 0 DC 0.000 V370 1053 0 DC 0.000 V371 1054 0 DC 0.000 V372 1055 0 DC 0.000 V373 1056 0 DC 0.000 V374 1057 0 DC 0.000 V375 1058 0 DC 0.000 V376 1059 0 DC 0.000 V377 1060 0 DC 1.663 V378 1061 0 DC 1.682 V379 1062 0 DC 1.682 V380 1063 0 DC 1.682 V381 1064 0 DC 0.000 V382 1065 0 DC 2.300 V383 1066 0 DC 3.513 V384 1067 0 DC 2.484 V385 1068 0 DC 2.464 V386 1069 0 DC 2.328 V387 1070 0 DC 2.368 V388 1071 0 DC 0.000 V389 1072 0 DC 0.000 V390 1073 0 DC 1.035 V391 1074 0 DC 1.935 V392 1075 0 DC 1.896 V393 1076 0 DC 1.740 V394 1077 0 DC 1.740 V395 1078 0 DC 1.740 V396 1079 0 DC 1.586 V397 1080 0 DC 0.000 V398 1081 0 DC 2.375 V399 1082 0 DC 4.755 V400 1083 0 DC 4.759 V401 1084 0 DC 4.773 V402 1085 0 DC 4.791 V403 1086 0 DC 4.791 V404 1087 0 DC 0.000 V405 1088 0 DC 0.000 V406 1089 0 DC 2.376 V407 1090 0 DC 4.763 V408 1091 0 DC 4.790 V409 1092 0 DC 4.785 V410 1093 0 DC 4.771 V411 1094 0 DC 4.776 V412 1095 0 DC 4.757 V413 1096 0 DC 4.150 V414 1097 0 DC 4.150 V415 1098 0 DC 4.150 V416 1099 0 DC 4.150 V417 1100 0 DC 4.136 V418 1101 0 DC 4.136 V419 1102 0 DC 4.132 V420 1103 0 DC 2.071 V421 1104 0 DC 2.065 V422 1105 0 DC 2.051 V423 1106 0 DC 4.082 V424 1107 0 DC 4.079 V425 1108 0 DC 4.062 V426 1109 0 DC 4.061 V427 1110 0 DC 4.044 V428 1111 0 DC 4.060 V429 1112 0 DC 3.741 V430 1113 0 DC 3.757 V431 1114 0 DC 3.741 V432 1115 0 DC 3.737 V433 1116 0 DC 3.723 V434 1117 0 DC 3.718 V435 1118 0 DC 3.702 V436 1119 0 DC 3.683 V437 1120 0 DC 3.681 V438 1121 0 DC 3.662 V439 1122 0 DC 3.645 V440 1123 0 DC 3.639 V441 1124 0 DC 3.622 V442 1125 0 DC 3.603 V443 1126 0 DC 3.605 V444 1127 0 DC 3.604 V445 1128 0 DC 3.474 V446 1129 0 DC 3.474 V447 1130 0 DC 3.456 V448 1131 0 DC 3.454 V449 1132 0 DC 3.436 V450 1133 0 DC 3.416 V451 1134 0 DC 3.415 V452 1135 0 DC 3.400 V453 1136 0 DC 3.380 V454 1137 0 DC 3.359 V455 1138 0 DC 3.358 V456 1139 0 DC 3.338 V457 1140 0 DC 3.323 V458 1141 0 DC 3.316 V459 1142 0 DC 3.300 V460 1143 0 DC 3.299 V461 1144 0 DC 3.264 V462 1145 0 DC 3.244 V463 1146 0 DC 3.211 V464 1147 0 DC 3.205 V465 1148 0 DC 3.185 V466 1149 0 DC 3.170 V467 1150 0 DC 3.152 V468 1151 0 DC 3.131 V469 1152 0 DC 3.129 V470 1153 0 DC 3.110 V471 1154 0 DC 3.094 V472 1155 0 DC 3.089 V473 1156 0 DC 3.073 V474 1157 0 DC 3.086 V475 1158 0 DC 3.090 V476 1159 0 DC 3.089 V477 1160 0 DC 3.072 V478 1161 0 DC 3.072 V479 1162 0 DC 3.052 V480 1163 0 DC 3.037 V481 1164 0 DC 3.033 V482 1165 0 DC 3.017 V483 1166 0 DC 2.998 V484 1167 0 DC 2.978 V485 1168 0 DC 2.977 V486 1169 0 DC 2.956 V487 1170 0 DC 2.940 V488 1171 0 DC 2.921 V489 1172 0 DC 2.919 V490 1173 0 DC 2.918 V491 1174 0 DC 2.898 V492 1175 0 DC 2.883 V493 1176 0 DC 2.943 V494 1177 0 DC 2.923 V495 1178 0 DC 2.904 V496 1179 0 DC 2.898 V497 1180 0 DC 2.898 V498 1181 0 DC 2.883 V499 1182 0 DC 2.863 V500 1183 0 DC 2.848 V501 1184 0 DC 2.842 V502 1185 0 DC 2.827 V503 1186 0 DC 2.821 V504 1187 0 DC 2.801 V505 1188 0 DC 2.785 V506 1189 0 DC 2.765 V507 1190 0 DC 2.765 V508 1191 0 DC 2.764 V509 1192 0 DC 2.842 V510 1193 0 DC 2.828 V511 1194 0 DC 2.824 V512 1195 0 DC 2.822 V513 1196 0 DC 2.803 V514 1197 0 DC 2.787 V515 1198 0 DC 2.768 V516 1199 0 DC 2.766 V517 1200 0 DC 2.747 V518 1201 0 DC 2.727 V519 1202 0 DC 2.727 V520 1203 0 DC 2.706 V521 1204 0 DC 2.691 V522 1205 0 DC 2.671 V523 1206 0 DC 2.670 V524 1207 0 DC 2.650
Это комментарий,начиная с которого происходят мутации и скрещивания в схеме
комментарий,начиная с которого происходят мутации и скрещивания в схеме
*start scheme
Дальше идет код случайных мутаций и скрещиваний
код случайных мутаций и скрещиваний
R717 260 1 100 C1 254 340 100m X2 180 877 593 TRANS_SAFE X3 781 280 DIODE_SAFE L1 331 340 223m L2 607 435 100m R718 822 21 100m R719 3 112 100m L3 555 479 776m L4 815 304 100m C2 135 503 100m L5 56 581 100m L6 785 268 100m R720 845 947 100m L7 776 2 100m L8 3 765 100m C3 505 784 100m X4 632 561 DIODE_SAFE C4 914 350 100m L9 241 890 100m X5 669 467 208 TRANS_SAFE L10 131 913 100m X6 286 138 126 TRANS_SAFE R721 190 707 100m
Выбираем тип анализа цепи
тип анализа цепи
.TRAN 1 1.5 1 1
Происходит запуск анализа цепи и вывод исходных данных в текстовые файлы
запуск анализа цепи и вывод исходных данных в текстовые файлы
.control set filetype=ascii set rchar="," run print v(257) v(258) > output_1.txt print v(259) v(260) > output_1.txt.ctl print v(688) v(689) > output_1.txt.or1 print v(690) v(691) > output_1.txt.or2 print v(692) v(693) > output_1.txt.or3 print v(694) v(695) > output_1.txt.or4 .endc .end
Полный текст нетлиста
текст нетлиста
.title Simple Circuit .model m1 NPN .model m2 D .subckt TRANS_SAFE base_int collector_int emitter_int Q1 collector base emitter m1 rbase base base_int 10k rcollector collector collector_int 1k remitter emitter emitter_int 100 .ends .subckt DIODE_SAFE in_int out_int D1 in out m2 rin in in_int 1k rout out out_int 1k .ends V1 1 0 DC 1.193 V2 2 0 DC 1.227 V3 3 0 DC 1.250 V4 4 0 DC 1.232 V5 5 0 DC 1.227 V6 6 0 DC 1.211 V7 7 0 DC 1.193 V8 8 0 DC 1.355 V9 9 0 DC 1.374 V10 10 0 DC 1.232 V11 11 0 DC 1.252 V12 12 0 DC 1.270 V13 13 0 DC 1.290 V14 14 0 DC 1.309 V15 15 0 DC 1.270 V16 16 0 DC 1.227 V17 17 0 DC 1.445 V18 18 0 DC 1.270 V19 19 0 DC 1.309 V20 20 0 DC 1.335 V21 21 0 DC 1.329 V22 22 0 DC 1.315 V23 23 0 DC 1.309 V24 24 0 DC 1.309 V25 25 0 DC 1.353 V26 26 0 DC 1.367 V27 27 0 DC 1.372 V28 28 0 DC 1.372 V29 29 0 DC 1.392 V30 30 0 DC 1.368 V31 31 0 DC 1.309 V32 32 0 DC 1.484 V33 33 0 DC 2.281 V34 34 0 DC 1.574 V35 35 0 DC 1.555 V36 36 0 DC 1.550 V37 37 0 DC 1.536 V38 38 0 DC 1.452 V39 39 0 DC 1.432 V40 40 0 DC 2.140 V41 41 0 DC 1.456 V42 42 0 DC 1.456 V43 43 0 DC 1.472 V44 44 0 DC 1.509 V45 45 0 DC 1.536 V46 46 0 DC 1.536 V47 47 0 DC 1.536 V48 48 0 DC 1.550 V49 49 0 DC 1.637 V50 50 0 DC 1.632 V51 51 0 DC 1.617 V52 52 0 DC 1.613 V53 53 0 DC 1.599 V54 54 0 DC 1.593 V55 55 0 DC 1.593 V56 56 0 DC 1.574 V57 57 0 DC 2.301 V58 58 0 DC 1.555 V59 59 0 DC 1.554 V60 60 0 DC 1.536 V61 61 0 DC 1.656 V62 62 0 DC 1.656 V63 63 0 DC 1.670 V64 64 0 DC 1.656 V65 65 0 DC 1.695 V66 66 0 DC 1.676 V67 67 0 DC 1.676 V68 68 0 DC 1.656 V69 69 0 DC 1.656 V70 70 0 DC 1.637 V71 71 0 DC 1.632 V72 72 0 DC 1.613 V73 73 0 DC 1.599 V74 74 0 DC 1.593 V75 75 0 DC 1.575 V76 76 0 DC 1.715 V77 77 0 DC 1.714 V78 78 0 DC 1.714 V79 79 0 DC 1.700 V80 80 0 DC 1.695 V81 81 0 DC 1.676 V82 82 0 DC 1.714 V83 83 0 DC 1.694 V84 84 0 DC 1.676 V85 85 0 DC 1.656 V86 86 0 DC 1.652 V87 87 0 DC 1.777 V88 88 0 DC 1.777 V89 89 0 DC 1.777 V90 90 0 DC 1.772 V91 91 0 DC 1.753 V92 92 0 DC 1.753 V93 93 0 DC 1.739 V94 94 0 DC 1.777 V95 95 0 DC 1.772 V96 96 0 DC 1.772 V97 97 0 DC 1.816 V98 98 0 DC 1.816 V99 99 0 DC 1.816 V100 100 0 DC 1.816 V101 101 0 DC 1.816 V102 102 0 DC 1.796 V103 103 0 DC 1.796 V104 104 0 DC 1.796 V105 105 0 DC 1.796 V106 106 0 DC 1.792 V107 107 0 DC 1.911 V108 108 0 DC 1.991 V109 109 0 DC 1.991 V110 110 0 DC 1.972 V111 111 0 DC 1.967 V112 112 0 DC 2.086 V113 113 0 DC 1.936 V114 114 0 DC 1.956 V115 115 0 DC 1.956 V116 116 0 DC 1.975 V117 117 0 DC 1.975 V118 118 0 DC 1.980 V119 119 0 DC 1.980 V120 120 0 DC 1.873 V121 121 0 DC 1.897 V122 122 0 DC 1.918 V123 123 0 DC 1.956 V124 124 0 DC 2.049 V125 125 0 DC 2.087 V126 126 0 DC 1.968 V127 127 0 DC 2.898 V128 128 0 DC 2.353 V129 129 0 DC 3.835 V130 130 0 DC 5.000 V131 131 0 DC 4.917 V132 132 0 DC 4.908 V133 133 0 DC 4.896 V134 134 0 DC 4.887 V135 135 0 DC 4.871 V136 136 0 DC 4.858 V137 137 0 DC 4.745 V138 138 0 DC 4.676 V139 139 0 DC 4.622 V140 140 0 DC 4.553 V141 141 0 DC 4.497 V142 142 0 DC 4.438 V143 143 0 DC 2.469 V144 144 0 DC 2.473 V145 145 0 DC 4.268 V146 146 0 DC 4.230 V147 147 0 DC 4.174 V148 148 0 DC 4.098 V149 149 0 DC 4.059 V150 150 0 DC 4.021 V151 151 0 DC 3.964 V152 152 0 DC 3.923 V153 153 0 DC 3.870 V154 154 0 DC 3.831 V155 155 0 DC 3.778 V156 156 0 DC 3.752 V157 157 0 DC 3.716 V158 158 0 DC 3.677 V159 159 0 DC 3.661 V160 160 0 DC 3.640 V161 161 0 DC 3.625 V162 162 0 DC 3.563 V163 163 0 DC 3.524 V164 164 0 DC 3.485 V165 165 0 DC 3.432 V166 166 0 DC 3.392 V167 167 0 DC 3.353 V168 168 0 DC 3.338 V169 169 0 DC 3.299 V170 170 0 DC 3.278 V171 171 0 DC 3.258 V172 172 0 DC 3.223 V173 173 0 DC 3.203 V174 174 0 DC 3.202 V175 175 0 DC 3.182 V176 176 0 DC 3.181 V177 177 0 DC 3.147 V178 178 0 DC 3.124 V179 179 0 DC 3.089 V180 180 0 DC 3.049 V181 181 0 DC 3.010 V182 182 0 DC 2.995 V183 183 0 DC 2.974 V184 184 0 DC 2.954 V185 185 0 DC 2.919 V186 186 0 DC 2.899 V187 187 0 DC 2.878 V188 188 0 DC 2.878 V189 189 0 DC 2.859 V190 190 0 DC 2.857 V191 191 0 DC 2.859 V192 192 0 DC 2.859 V193 193 0 DC 2.880 V194 194 0 DC 2.841 V195 195 0 DC 2.787 V196 196 0 DC 2.747 V197 197 0 DC 2.707 V198 198 0 DC 2.653 V199 199 0 DC 2.629 V200 200 0 DC 2.608 V201 201 0 DC 2.588 V202 202 0 DC 2.573 V203 203 0 DC 2.553 V204 204 0 DC 2.553 V205 205 0 DC 2.552 V206 206 0 DC 2.553 V207 207 0 DC 2.572 V208 208 0 DC 2.595 V209 209 0 DC 2.574 V210 210 0 DC 2.539 V211 211 0 DC 2.500 V212 212 0 DC 2.495 V213 213 0 DC 2.459 V214 214 0 DC 2.440 V215 215 0 DC 2.419 V216 216 0 DC 2.399 V217 217 0 DC 2.384 V218 218 0 DC 2.378 V219 219 0 DC 2.364 V220 220 0 DC 2.363 V221 221 0 DC 2.378 V222 222 0 DC 2.382 V223 223 0 DC 2.382 V224 224 0 DC 2.384 V225 225 0 DC 2.403 V226 226 0 DC 2.380 V227 227 0 DC 2.343 V228 228 0 DC 2.304 V229 229 0 DC 2.265 V230 230 0 DC 2.249 V231 231 0 DC 2.230 V232 232 0 DC 2.209 V233 233 0 DC 2.210 V234 234 0 DC 2.210 V235 235 0 DC 2.209 V236 236 0 DC 2.209 V237 237 0 DC 2.209 V238 238 0 DC 2.209 V239 239 0 DC 2.209 V240 240 0 DC 2.230 V241 241 0 DC 2.230 V242 242 0 DC 2.210 V243 243 0 DC 2.189 V244 244 0 DC 2.189 V245 245 0 DC 2.169 V246 246 0 DC 2.148 V247 247 0 DC 2.133 V248 248 0 DC 2.113 V249 249 0 DC 2.113 V250 250 0 DC 2.113 V251 251 0 DC 2.113 V252 252 0 DC 2.113 V253 253 0 DC 2.113 V254 254 0 DC 2.113 V255 255 0 DC 2.113 V256 256 0 DC 2.133 R1 257 0 1000 R2 258 0 1000 R3 259 0 1000 R4 260 0 1000 R5 261 257 100 R6 262 257 100 R7 263 257 100 R8 264 257 100 R9 265 257 100 R10 266 257 100 R11 267 257 100 R12 268 257 100 R13 269 257 100 R14 270 257 100 R15 271 257 100 R16 272 257 100 R17 273 257 100 R18 274 257 100 R19 275 257 100 R20 276 257 100 R21 277 257 100 R22 278 257 100 R23 279 257 100 R24 280 257 100 R25 281 257 100 R26 282 257 100 R27 283 257 100 R28 284 257 100 R29 285 257 100 R30 286 257 100 R31 287 257 100 R32 288 257 100 R33 289 257 100 R34 290 257 100 R35 291 257 100 R36 292 257 100 R37 293 257 100 R38 294 257 100 R39 295 257 100 R40 296 257 100 R41 297 257 100 R42 298 257 100 R43 299 257 100 R44 300 257 100 R45 301 257 100 R46 302 257 100 R47 303 257 100 R48 304 257 100 R49 305 257 100 R50 306 257 100 R51 307 257 100 R52 308 257 100 R53 309 257 100 R54 310 257 100 R55 311 257 100 R56 312 257 100 R57 313 257 100 R58 314 257 100 R59 315 257 100 R60 316 257 100 R61 317 257 100 R62 318 257 100 R63 319 257 100 R64 320 257 100 R65 321 257 100 R66 322 257 100 R67 323 257 100 R68 324 257 100 R69 325 258 100 R70 326 258 100 R71 327 258 100 R72 328 258 100 R73 329 258 100 R74 330 258 100 R75 331 258 100 R76 332 258 100 R77 333 258 100 R78 334 258 100 R79 335 258 100 R80 336 258 100 R81 337 258 100 R82 338 258 100 R83 339 258 100 R84 340 258 100 R85 341 258 100 R86 342 258 100 R87 343 258 100 R88 344 258 100 R89 345 258 100 R90 346 258 100 R91 347 258 100 R92 348 258 100 R93 349 258 100 R94 350 258 100 R95 351 258 100 R96 352 258 100 R97 353 258 100 R98 354 258 100 R99 355 258 100 R100 356 258 100 R101 357 258 100 R102 358 258 100 R103 359 258 100 R104 360 258 100 R105 361 258 100 R106 362 258 100 R107 363 258 100 R108 364 258 100 R109 365 258 100 R110 366 258 100 R111 367 258 100 R112 368 258 100 R113 369 258 100 R114 370 258 100 R115 371 258 100 R116 372 258 100 R117 373 258 100 R118 374 258 100 R119 375 258 100 R120 376 258 100 R121 377 258 100 R122 378 258 100 R123 379 258 100 R124 380 258 100 R125 381 258 100 R126 382 258 100 R127 383 258 100 R128 384 258 100 R129 385 258 100 R130 386 258 100 R131 387 258 100 R132 388 258 100 R133 389 259 100 R134 390 259 100 R135 391 259 100 R136 392 259 100 R137 393 259 100 R138 394 259 100 R139 395 259 100 R140 396 259 100 R141 397 259 100 R142 398 259 100 R143 399 259 100 R144 400 259 100 R145 401 259 100 R146 402 259 100 R147 403 259 100 R148 404 259 100 R149 405 259 100 R150 406 259 100 R151 407 259 100 R152 408 259 100 R153 409 259 100 R154 410 259 100 R155 411 259 100 R156 412 259 100 R157 413 259 100 R158 414 259 100 R159 415 259 100 R160 416 259 100 R161 417 259 100 R162 418 259 100 R163 419 259 100 R164 420 259 100 R165 421 259 100 R166 422 259 100 R167 423 259 100 R168 424 259 100 R169 425 259 100 R170 426 259 100 R171 427 259 100 R172 428 259 100 R173 429 259 100 R174 430 259 100 R175 431 259 100 R176 432 259 100 R177 433 259 100 R178 434 259 100 R179 435 259 100 R180 436 259 100 R181 437 259 100 R182 438 259 100 R183 439 259 100 R184 440 259 100 R185 441 259 100 R186 442 259 100 R187 443 259 100 R188 444 259 100 R189 445 259 100 R190 446 259 100 R191 447 259 100 R192 448 259 100 R193 449 259 100 R194 450 259 100 R195 451 259 100 R196 452 259 100 R197 453 260 100 R198 454 260 100 R199 455 260 100 R200 456 260 100 R201 457 260 100 R202 458 260 100 R203 459 260 100 R204 460 260 100 R205 461 260 100 R206 462 260 100 R207 463 260 100 R208 464 260 100 R209 465 260 100 R210 466 260 100 R211 467 260 100 R212 468 260 100 R213 469 260 100 R214 470 260 100 R215 471 260 100 R216 472 260 100 R217 473 260 100 R218 474 260 100 R219 475 260 100 R220 476 260 100 R221 477 260 100 R222 478 260 100 R223 479 260 100 R224 480 260 100 R225 481 260 100 R226 482 260 100 R227 483 260 100 R228 484 260 100 R229 485 260 100 R230 486 260 100 R231 487 260 100 R232 488 260 100 R233 489 260 100 R234 490 260 100 R235 491 260 100 R236 492 260 100 R237 493 260 100 R238 494 260 100 R239 495 260 100 R240 496 260 100 R241 497 260 100 R242 498 260 100 R243 499 260 100 R244 500 260 100 R245 501 260 100 R246 502 260 100 R247 503 260 100 R248 504 260 100 R249 505 260 100 R250 506 260 100 R251 507 260 100 R252 508 260 100 R253 509 260 100 R254 510 260 100 R255 511 260 100 R256 512 260 100 R257 513 260 100 R258 514 260 100 R259 515 260 100 R260 516 260 100 V257 517 0 DC 0 V258 518 0 DC 0 V259 519 0 DC 0 V260 520 0 DC 0 V261 521 0 DC 0 V262 522 0 DC 0 R261 523 517 100 R262 524 517 100 R263 525 517 100 R264 526 517 100 R265 527 517 100 R266 528 517 100 R267 529 517 100 R268 530 517 100 R269 531 517 100 R270 532 517 100 R271 533 517 100 R272 534 517 100 R273 535 517 100 R274 536 517 100 R275 537 517 100 R276 538 517 100 R277 539 517 100 R278 540 517 100 R279 541 517 100 R280 542 517 100 R281 543 517 100 R282 544 517 100 R283 545 517 100 R284 546 517 100 R285 547 517 100 R286 548 517 100 R287 549 517 100 R288 550 517 100 R289 551 517 100 R290 552 517 100 R291 553 517 100 R292 554 517 100 R293 555 518 100 R294 556 518 100 R295 557 518 100 R296 558 518 100 R297 559 518 100 R298 560 518 100 R299 561 518 100 R300 562 518 100 R301 563 518 100 R302 564 518 100 R303 565 518 100 R304 566 518 100 R305 567 518 100 R306 568 518 100 R307 569 518 100 R308 570 518 100 R309 571 518 100 R310 572 518 100 R311 573 518 100 R312 574 518 100 R313 575 518 100 R314 576 518 100 R315 577 518 100 R316 578 518 100 R317 579 518 100 R318 580 518 100 R319 581 518 100 R320 582 518 100 R321 583 518 100 R322 584 518 100 R323 585 518 100 R324 586 518 100 R325 587 519 100 R326 588 519 100 R327 589 519 100 R328 590 519 100 R329 591 519 100 R330 592 519 100 R331 593 519 100 R332 594 519 100 R333 595 519 100 R334 596 519 100 R335 597 519 100 R336 598 519 100 R337 599 519 100 R338 600 519 100 R339 601 519 100 R340 602 519 100 R341 603 519 100 R342 604 519 100 R343 605 519 100 R344 606 519 100 R345 607 519 100 R346 608 519 100 R347 609 519 100 R348 610 519 100 R349 611 519 100 R350 612 519 100 R351 613 519 100 R352 614 519 100 R353 615 519 100 R354 616 519 100 R355 617 519 100 R356 618 519 100 R357 619 520 100 R358 620 520 100 R359 621 520 100 R360 622 520 100 R361 623 520 100 R362 624 520 100 R363 625 520 100 R364 626 520 100 R365 627 520 100 R366 628 520 100 R367 629 520 100 R368 630 520 100 R369 631 520 100 R370 632 520 100 R371 633 520 100 R372 634 520 100 R373 635 520 100 R374 636 520 100 R375 637 520 100 R376 638 520 100 R377 639 520 100 R378 640 520 100 R379 641 520 100 R380 642 520 100 R381 643 520 100 R382 644 520 100 R383 645 520 100 R384 646 520 100 R385 647 520 100 R386 648 520 100 R387 649 520 100 R388 650 520 100 R389 651 521 100 R390 652 521 100 R391 653 521 100 R392 654 521 100 R393 655 521 100 R394 656 521 100 R395 657 521 100 R396 658 521 100 R397 659 521 100 R398 660 521 100 R399 661 521 100 R400 662 521 100 R401 663 521 100 R402 664 521 100 R403 665 521 100 R404 666 521 100 R405 667 521 100 R406 668 521 100 R407 669 521 100 R408 670 521 100 R409 671 521 100 R410 672 521 100 R411 673 521 100 R412 674 521 100 R413 675 521 100 R414 676 521 100 R415 677 521 100 R416 678 521 100 R417 679 521 100 R418 680 521 100 R419 681 521 100 R420 682 521 100 R421 683 522 100 R422 684 522 100 R423 685 522 100 R424 686 522 100 R425 687 522 100 R426 688 522 100 R427 689 522 100 R428 690 522 100 R429 691 522 100 R430 692 522 100 R431 693 522 100 R432 694 522 100 R433 695 522 100 R434 696 522 100 R435 697 522 100 R436 698 522 100 R437 699 522 100 R438 700 522 100 R439 701 522 100 R440 702 522 100 R441 703 522 100 R442 704 522 100 R443 705 522 100 R444 706 522 100 R445 707 522 100 R446 708 522 100 R447 709 522 100 R448 710 522 100 R449 711 522 100 R450 712 522 100 R451 713 522 100 R452 714 522 100 V264 683 0 DC 0 V265 684 0 DC 0 V266 685 0 DC 0 V267 686 0 DC 0 V268 687 0 DC 0 R453 688 0 1000 R454 689 0 1000 R455 690 0 1000 R456 691 0 1000 R457 692 0 1000 R458 693 0 1000 R459 694 0 1000 R460 695 0 1000 R461 696 688 100 R462 697 688 100 R463 698 688 100 R464 699 688 100 R465 700 688 100 R466 701 688 100 R467 702 688 100 R468 703 688 100 R469 704 688 100 R470 705 688 100 R471 706 688 100 R472 707 688 100 R473 708 688 100 R474 709 688 100 R475 710 688 100 R476 711 688 100 R477 712 688 100 R478 713 688 100 R479 714 688 100 R480 715 688 100 R481 716 688 100 R482 717 688 100 R483 718 688 100 R484 719 688 100 R485 720 688 100 R486 721 688 100 R487 722 688 100 R488 723 688 100 R489 724 688 100 R490 725 688 100 R491 726 688 100 R492 727 688 100 R493 728 689 100 R494 729 689 100 R495 730 689 100 R496 731 689 100 R497 732 689 100 R498 733 689 100 R499 734 689 100 R500 735 689 100 R501 736 689 100 R502 737 689 100 R503 738 689 100 R504 739 689 100 R505 740 689 100 R506 741 689 100 R507 742 689 100 R508 743 689 100 R509 744 689 100 R510 745 689 100 R511 746 689 100 R512 747 689 100 R513 748 689 100 R514 749 689 100 R515 750 689 100 R516 751 689 100 R517 752 689 100 R518 753 689 100 R519 754 689 100 R520 755 689 100 R521 756 689 100 R522 757 689 100 R523 758 689 100 R524 759 689 100 R525 760 690 100 R526 761 690 100 R527 762 690 100 R528 763 690 100 R529 764 690 100 R530 765 690 100 R531 766 690 100 R532 767 690 100 R533 768 690 100 R534 769 690 100 R535 770 690 100 R536 771 690 100 R537 772 690 100 R538 773 690 100 R539 774 690 100 R540 775 690 100 R541 776 690 100 R542 777 690 100 R543 778 690 100 R544 779 690 100 R545 780 690 100 R546 781 690 100 R547 782 690 100 R548 783 690 100 R549 784 690 100 R550 785 690 100 R551 786 690 100 R552 787 690 100 R553 788 690 100 R554 789 690 100 R555 790 690 100 R556 791 690 100 R557 792 691 100 R558 793 691 100 R559 794 691 100 R560 795 691 100 R561 796 691 100 R562 797 691 100 R563 798 691 100 R564 799 691 100 R565 800 691 100 R566 801 691 100 R567 802 691 100 R568 803 691 100 R569 804 691 100 R570 805 691 100 R571 806 691 100 R572 807 691 100 R573 808 691 100 R574 809 691 100 R575 810 691 100 R576 811 691 100 R577 812 691 100 R578 813 691 100 R579 814 691 100 R580 815 691 100 R581 816 691 100 R582 817 691 100 R583 818 691 100 R584 819 691 100 R585 820 691 100 R586 821 691 100 R587 822 691 100 R588 823 691 100 R589 824 692 100 R590 825 692 100 R591 826 692 100 R592 827 692 100 R593 828 692 100 R594 829 692 100 R595 830 692 100 R596 831 692 100 R597 832 692 100 R598 833 692 100 R599 834 692 100 R600 835 692 100 R601 836 692 100 R602 837 692 100 R603 838 692 100 R604 839 692 100 R605 840 692 100 R606 841 692 100 R607 842 692 100 R608 843 692 100 R609 844 692 100 R610 845 692 100 R611 846 692 100 R612 847 692 100 R613 848 692 100 R614 849 692 100 R615 850 692 100 R616 851 692 100 R617 852 692 100 R618 853 692 100 R619 854 692 100 R620 855 692 100 R621 856 693 100 R622 857 693 100 R623 858 693 100 R624 859 693 100 R625 860 693 100 R626 861 693 100 R627 862 693 100 R628 863 693 100 R629 864 693 100 R630 865 693 100 R631 866 693 100 R632 867 693 100 R633 868 693 100 R634 869 693 100 R635 870 693 100 R636 871 693 100 R637 872 693 100 R638 873 693 100 R639 874 693 100 R640 875 693 100 R641 876 693 100 R642 877 693 100 R643 878 693 100 R644 879 693 100 R645 880 693 100 R646 881 693 100 R647 882 693 100 R648 883 693 100 R649 884 693 100 R650 885 693 100 R651 886 693 100 R652 887 693 100 R653 888 694 100 R654 889 694 100 R655 890 694 100 R656 891 694 100 R657 892 694 100 R658 893 694 100 R659 894 694 100 R660 895 694 100 R661 896 694 100 R662 897 694 100 R663 898 694 100 R664 899 694 100 R665 900 694 100 R666 901 694 100 R667 902 694 100 R668 903 694 100 R669 904 694 100 R670 905 694 100 R671 906 694 100 R672 907 694 100 R673 908 694 100 R674 909 694 100 R675 910 694 100 R676 911 694 100 R677 912 694 100 R678 913 694 100 R679 914 694 100 R680 915 694 100 R681 916 694 100 R682 917 694 100 R683 918 694 100 R684 919 694 100 R685 920 695 100 R686 921 695 100 R687 922 695 100 R688 923 695 100 R689 924 695 100 R690 925 695 100 R691 926 695 100 R692 927 695 100 R693 928 695 100 R694 929 695 100 R695 930 695 100 R696 931 695 100 R697 932 695 100 R698 933 695 100 R699 934 695 100 R700 935 695 100 R701 936 695 100 R702 937 695 100 R703 938 695 100 R704 939 695 100 R705 940 695 100 R706 941 695 100 R707 942 695 100 R708 943 695 100 R709 944 695 100 R710 945 695 100 R711 946 695 100 R712 947 695 100 R713 948 695 100 R714 949 695 100 R715 950 695 100 R716 951 695 100 V269 952 0 DC 2.510 V270 953 0 DC 2.613 V271 954 0 DC 2.709 V272 955 0 DC 2.768 V273 956 0 DC 2.788 V274 957 0 DC 2.768 V275 958 0 DC 2.690 V276 959 0 DC 2.593 V277 960 0 DC 2.471 V278 961 0 DC 2.355 V279 962 0 DC 2.244 V280 963 0 DC 2.162 V281 964 0 DC 2.083 V282 965 0 DC 2.006 V283 966 0 DC 1.963 V284 967 0 DC 1.764 V285 968 0 DC 2.593 V286 969 0 DC 2.690 V287 970 0 DC 2.768 V288 971 0 DC 2.807 V289 972 0 DC 2.609 V290 973 0 DC 2.589 V291 974 0 DC 2.530 V292 975 0 DC 2.438 V293 976 0 DC 2.337 V294 977 0 DC 2.239 V295 978 0 DC 2.142 V296 979 0 DC 2.079 V297 980 0 DC 2.006 V298 981 0 DC 1.948 V299 982 0 DC 1.904 V300 983 0 DC 1.870 V301 984 0 DC 2.410 V302 985 0 DC 2.510 V303 986 0 DC 2.589 V304 987 0 DC 2.632 V305 988 0 DC 2.632 V306 989 0 DC 2.613 V307 990 0 DC 2.536 V308 991 0 DC 2.453 V309 992 0 DC 2.337 V310 993 0 DC 2.239 V311 994 0 DC 2.020 V312 995 0 DC 1.943 V313 996 0 DC 1.904 V314 997 0 DC 1.865 V315 998 0 DC 1.827 V316 999 0 DC 1.807 V317 1000 0 DC 2.356 V318 1001 0 DC 2.453 V319 1002 0 DC 2.510 V320 1003 0 DC 2.530 V321 1004 0 DC 2.530 V322 1005 0 DC 2.477 V323 1006 0 DC 2.293 V324 1007 0 DC 2.221 V325 1008 0 DC 2.138 V326 1009 0 DC 2.061 V327 1010 0 DC 2.001 V328 1011 0 DC 1.943 V329 1012 0 DC 1.886 V330 1013 0 DC 1.865 V331 1014 0 DC 1.827 V332 1015 0 DC 1.807 V333 1016 0 DC 2.134 V334 1017 0 DC 2.254 V335 1018 0 DC 2.356 V336 1019 0 DC 2.293 V337 1020 0 DC 2.307 V338 1021 0 DC 2.274 V339 1022 0 DC 2.254 V340 1023 0 DC 1.959 V341 1024 0 DC 1.915 V342 1025 0 DC 1.857 V343 1026 0 DC 1.823 V344 1027 0 DC 1.803 V345 1028 0 DC 1.803 V346 1029 0 DC 1.803 V347 1030 0 DC 1.682 V348 1031 0 DC 1.687 V349 1032 0 DC 1.157 V350 1033 0 DC 1.196 V351 1034 0 DC 1.234 V352 1035 0 DC 1.235 V353 1036 0 DC 1.190 V354 1037 0 DC 1.214 V355 1038 0 DC 1.099 V356 1039 0 DC 1.098 V357 1040 0 DC 1.078 V358 1041 0 DC 1.039 V359 1042 0 DC 1.019 V360 1043 0 DC 0.918 V361 1044 0 DC 1.827 V362 1045 0 DC 1.788 V363 1046 0 DC 1.764 V364 1047 0 DC 1.745 V365 1048 0 DC 0.000 V366 1049 0 DC 0.000 V367 1050 0 DC 0.000 V368 1051 0 DC 0.000 V369 1052 0 DC 0.000 V370 1053 0 DC 0.000 V371 1054 0 DC 0.000 V372 1055 0 DC 0.000 V373 1056 0 DC 0.000 V374 1057 0 DC 0.000 V375 1058 0 DC 0.000 V376 1059 0 DC 0.000 V377 1060 0 DC 1.663 V378 1061 0 DC 1.682 V379 1062 0 DC 1.682 V380 1063 0 DC 1.682 V381 1064 0 DC 0.000 V382 1065 0 DC 2.300 V383 1066 0 DC 3.513 V384 1067 0 DC 2.484 V385 1068 0 DC 2.464 V386 1069 0 DC 2.328 V387 1070 0 DC 2.368 V388 1071 0 DC 0.000 V389 1072 0 DC 0.000 V390 1073 0 DC 1.035 V391 1074 0 DC 1.935 V392 1075 0 DC 1.896 V393 1076 0 DC 1.740 V394 1077 0 DC 1.740 V395 1078 0 DC 1.740 V396 1079 0 DC 1.586 V397 1080 0 DC 0.000 V398 1081 0 DC 2.375 V399 1082 0 DC 4.755 V400 1083 0 DC 4.759 V401 1084 0 DC 4.773 V402 1085 0 DC 4.791 V403 1086 0 DC 4.791 V404 1087 0 DC 0.000 V405 1088 0 DC 0.000 V406 1089 0 DC 2.376 V407 1090 0 DC 4.763 V408 1091 0 DC 4.790 V409 1092 0 DC 4.785 V410 1093 0 DC 4.771 V411 1094 0 DC 4.776 V412 1095 0 DC 4.757 V413 1096 0 DC 4.150 V414 1097 0 DC 4.150 V415 1098 0 DC 4.150 V416 1099 0 DC 4.150 V417 1100 0 DC 4.136 V418 1101 0 DC 4.136 V419 1102 0 DC 4.132 V420 1103 0 DC 2.071 V421 1104 0 DC 2.065 V422 1105 0 DC 2.051 V423 1106 0 DC 4.082 V424 1107 0 DC 4.079 V425 1108 0 DC 4.062 V426 1109 0 DC 4.061 V427 1110 0 DC 4.044 V428 1111 0 DC 4.060 V429 1112 0 DC 3.741 V430 1113 0 DC 3.757 V431 1114 0 DC 3.741 V432 1115 0 DC 3.737 V433 1116 0 DC 3.723 V434 1117 0 DC 3.718 V435 1118 0 DC 3.702 V436 1119 0 DC 3.683 V437 1120 0 DC 3.681 V438 1121 0 DC 3.662 V439 1122 0 DC 3.645 V440 1123 0 DC 3.639 V441 1124 0 DC 3.622 V442 1125 0 DC 3.603 V443 1126 0 DC 3.605 V444 1127 0 DC 3.604 V445 1128 0 DC 3.474 V446 1129 0 DC 3.474 V447 1130 0 DC 3.456 V448 1131 0 DC 3.454 V449 1132 0 DC 3.436 V450 1133 0 DC 3.416 V451 1134 0 DC 3.415 V452 1135 0 DC 3.400 V453 1136 0 DC 3.380 V454 1137 0 DC 3.359 V455 1138 0 DC 3.358 V456 1139 0 DC 3.338 V457 1140 0 DC 3.323 V458 1141 0 DC 3.316 V459 1142 0 DC 3.300 V460 1143 0 DC 3.299 V461 1144 0 DC 3.264 V462 1145 0 DC 3.244 V463 1146 0 DC 3.211 V464 1147 0 DC 3.205 V465 1148 0 DC 3.185 V466 1149 0 DC 3.170 V467 1150 0 DC 3.152 V468 1151 0 DC 3.131 V469 1152 0 DC 3.129 V470 1153 0 DC 3.110 V471 1154 0 DC 3.094 V472 1155 0 DC 3.089 V473 1156 0 DC 3.073 V474 1157 0 DC 3.086 V475 1158 0 DC 3.090 V476 1159 0 DC 3.089 V477 1160 0 DC 3.072 V478 1161 0 DC 3.072 V479 1162 0 DC 3.052 V480 1163 0 DC 3.037 V481 1164 0 DC 3.033 V482 1165 0 DC 3.017 V483 1166 0 DC 2.998 V484 1167 0 DC 2.978 V485 1168 0 DC 2.977 V486 1169 0 DC 2.956 V487 1170 0 DC 2.940 V488 1171 0 DC 2.921 V489 1172 0 DC 2.919 V490 1173 0 DC 2.918 V491 1174 0 DC 2.898 V492 1175 0 DC 2.883 V493 1176 0 DC 2.943 V494 1177 0 DC 2.923 V495 1178 0 DC 2.904 V496 1179 0 DC 2.898 V497 1180 0 DC 2.898 V498 1181 0 DC 2.883 V499 1182 0 DC 2.863 V500 1183 0 DC 2.848 V501 1184 0 DC 2.842 V502 1185 0 DC 2.827 V503 1186 0 DC 2.821 V504 1187 0 DC 2.801 V505 1188 0 DC 2.785 V506 1189 0 DC 2.765 V507 1190 0 DC 2.765 V508 1191 0 DC 2.764 V509 1192 0 DC 2.842 V510 1193 0 DC 2.828 V511 1194 0 DC 2.824 V512 1195 0 DC 2.822 V513 1196 0 DC 2.803 V514 1197 0 DC 2.787 V515 1198 0 DC 2.768 V516 1199 0 DC 2.766 V517 1200 0 DC 2.747 V518 1201 0 DC 2.727 V519 1202 0 DC 2.727 V520 1203 0 DC 2.706 V521 1204 0 DC 2.691 V522 1205 0 DC 2.671 V523 1206 0 DC 2.670 V524 1207 0 DC 2.650 *start scheme R717 260 1 100 C1 254 340 100m X2 180 877 593 TRANS_SAFE X3 781 280 DIODE_SAFE L1 331 340 223m L2 607 435 100m R718 822 21 100m R719 3 112 100m L3 555 479 776m L4 815 304 100m C2 135 503 100m L5 56 581 100m L6 785 268 100m R720 845 947 100m L7 776 2 100m L8 3 765 100m C3 505 784 100m X4 632 561 DIODE_SAFE C4 914 350 100m L9 241 890 100m X5 669 467 208 TRANS_SAFE L10 131 913 100m X6 286 138 126 TRANS_SAFE R721 190 707 100m .TRAN 1 1.5 1 1 .control set filetype=ascii set rchar="," run print v(257) v(258) > output_1.txt print v(259) v(260) > output_1.txt.ctl print v(688) v(689) > output_1.txt.or1 print v(690) v(691) > output_1.txt.or2 print v(692) v(693) > output_1.txt.or3 print v(694) v(695) > output_1.txt.or4 .endc .end
Давайте посмотрим, как в программе устроены случайные изменения («мутации»).
Это как "генератор случайных изменений" для мозга машинки - он может добавить новую часть, убрать существующую, изменить её свойства или переставить в другое место.
"генератор случайных изменений" для мозга машинки
public string mutationCurcuit(string circuit) { Int a = UnityEngine.Random.Range(0,100); string s = “”; If(a<70) { s=mutationAddCurcuit(circuit); } else if(a<80) { s=mutationDeleteCurcuit(circuit); } else if(a<90) { s=mutationChangeCurcuit(circuit); } else { s=mutationMoveCurcuit(circuit); } return s; }
Рассмотрим каждую функцию по отдельности.
Первой будет рассмотрена функция,которая перемещает радиоэлемент в случайное место
Этот код описывает номер трансформатора. Находится максимальный номер трансформатора
код описывает номер трансформатора.
public string mutationMoveCurcuit(string circuit) { List<string> arr = new List<string>(circuit.Split('\n')); List<string> code = new List<string>(); Dictionary<char, int> radioElement = new Dictionary<char, int>(); List<char> element = new List<char>() { 'R', 'C', 'L', 'K','X' }; radioElement['R'] = 0; radioElement['C'] = 0; radioElement['L'] = 0; radioElement['K'] = 0; radioElement['X'] = 0; int k = 0; bool flag2 = false; int max = 0; for(int i = 0;i<arr.Count;i++) { if (string.IsNullOrEmpty(arr[i])) break; if (arr[i][0] == 'K') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value; }
Этот код находит максимальный номер транзистора или диода(которые загружаются через .subckt в связке с резисторами)
код находит максимальный номер транзистора или диода
if (arr[i][0] == 'X') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value; string[] r = arr[i].Split(' '); if (r[r.Length - 1] == "TRANS_SAFE") { if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]); if (max < Convert.ToInt32(arr[i].Split(' ')[3])) max = Convert.ToInt32(arr[i].Split(' ')[3]); } if (r[r.Length - 1] == "DIODE_SAFE") { if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]); } }
Этот код находит максимальный номер сопротивления, конденсатора, индуктивности.
код находит максимальный номер сопротивления, конденсатора, индуктивности.
if (arr[i][0] == 'R' || arr[i][0] == 'C' || arr[i][0] == 'L') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value; if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]); }
Этот код считывает схему после строки *start scheme
код считывает схему после строки *start scheme
if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { max++; } } for (int i = 0; i < arr.Count; i++) { if (arr[i] == "*start scheme") { k = i + 1; flag2 = true; continue; } if (!string.IsNullOrEmpty(arr[i])) { if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { break; } } if (flag2) code.Add(arr[i]);
Этот код меняет расположение резистора,конденсатора,индуктивности
код меняет расположение резистора,конденсатора,индуктивности
} int move = UnityEngine.Random.Range(0, code.Count); string val = ""; if (code.Count > 0) { int r1 = 0, r2 = 0,r3=0; while (true) { r1 = UnityEngine.Random.Range(0, max); r2 = UnityEngine.Random.Range(0, max); r3 = UnityEngine.Random.Range(0, max); if (r1 == r2||r2==r3) continue; else break; } string[] a = arr[move + k].Split(' '); if (a[0][0] != 'K') { if (a[0][0] != 'X') { a[a.Length - 2] = r1.ToString(); a[a.Length - 3] = r2.ToString(); }
Этот код меняет положение диода
код меняет положение диода
else { if (a[a.Length - 1] == "DIODE_SAFE") { a[a.Length - 2] = r1.ToString(); a[a.Length - 3] = r2.ToString(); }
Этот код меняет расположение транзистора
код меняет расположение транзистора
else if(a[a.Length-1]== "TRANS_SAFE") { a[a.Length - 2] = r1.ToString(); a[a.Length - 3] = r2.ToString(); a[a.Length - 4] = r3.ToString(); } } }
Этот код добавляет трансформатор(формируется из двух индуктиностей,если они есть)
код добавляет трансформатор
else { if (radioElement['L'] >= 2) { int k1 = 0, k2 = 0; while (true) { k1 = UnityEngine.Random.Range(1, radioElement['L']+1); k2 = UnityEngine.Random.Range(1, radioElement['L']+1); if (k1 == k2) continue; a[a.Length - 2] = "L" + k1.ToString(); a[a.Length - 3] = "L" + k2.ToString(); break; } } }
Это конец функции mutationMoveCurcuit
конец функции mutationMoveCurcuit
val = string.Join(" ", a); arr[move + k] = val; } return string.Join("\n", arr.ToArray()); } } } }
Этот код меняет параметры деталей в радиосхеме.
Этот код считывает радиосхему,начиная с комментария start scheme
public string mutationChangeCurcuit(string circuit) { List<string> arr = new List<string>(circuit.Split('\n')); List<string> code = new List<string>(); int k = 0; bool flag2 = false; for (int i = 0; i < arr.Count; i++) { if (arr[i] == "*start scheme") { k = i + 1; flag2 = true; continue; }
Эта программа случайно изменяет характеристики резисторов, конденсаторов или катушек
программа случайно изменяет характеристики резисторов, конденсаторов или катушек
if (!string.IsNullOrEmpty(arr[i])) { if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { break; } } if (flag2) code.Add(arr[i]); } int changed = UnityEngine.Random.Range(0, code.Count-1); string val=""; if (code.Count > 0) { string[] a = arr[changed + k].Split(' '); if (a[0][0] != 'K' && a[0][0]!='X') { int value = UnityEngine.Random.Range(1, 1000); a[a.Length - 1] = value.ToString() + "m"; val = string.Join(" ", a); arr[changed + k] = val; }
Это конец функции
конец функции mutationChangeCurcuit
} return string.Join("\n", arr.ToArray()); }
Это функция mutationDeleteCurcuit.Она удаляет случайный радиоэлемент
Этот код читает описание схемы после строки *start scheme
код читает описание схемы после строки *start scheme
public string mutationDeleteCurcuit(string circuit) { List<string> arr = new List<string>(circuit.Split('\n')); List<string> code = new List<string>(); int k = 0; bool flag2 = false; for (int i = 0; i < arr.Count; i++) { if (arr[i] == "*start scheme") { k = i + 1; flag2 = true; continue; } if (!string.IsNullOrEmpty(arr[i])) { if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { break; } } if (flag2) code.Add(arr[i]);
И удаляет случайный радиоэлемент
удаляет случайный радиоэлемент
int deleted = UnityEngine.Random.Range(0, code.Count-1); if(code.Count>0) arr.RemoveAt(deleted+k); return string.Join("\n", arr.ToArray()); }
Эта функция добавляет случайный радиоэлемент Этот код считает номер трансформатора
код считает номер трансформатора
public string mutationAddCurcuit(string circuit) { List<string> arr = new List<string>(circuit.Split('\n')); Dictionary<char,int> radioElement = new Dictionary<char, int>(); List<char> element = new List<char>() { 'R', 'C','L','K','X' }; radioElement['R'] = 0; radioElement['C'] = 0; radioElement['L'] = 0; radioElement['K'] = 0; radioElement['X'] = 0; //find max value //add 1 //random int max = 0; for (int i = 0; i < arr.Count; i++) { if (!string.IsNullOrEmpty(arr[i])) { if (arr[i][0] == 'K') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value;
Этот код определяет, сколько всего транзисторов и диодов в схеме.
код определяет, сколько всего транзисторов и диодов в схеме.
} if (arr[i][0] == 'X') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value; string[] r = arr[i].Split(' '); if (r[r.Length - 1] == "TRANS_SAFE") { if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]); if (max < Convert.ToInt32(arr[i].Split(' ')[3])) max = Convert.ToInt32(arr[i].Split(' ')[3]); } if (r[r.Length - 1] == "DIODE_SAFE") { if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]); }
Этот код определяет: Сколько всего деталей (резисторов, конденсаторов, катушек) К каким узлам схемы они подключены
определяет:сколько всего деталей
} if (arr[i][0] == 'R' || arr[i][0] == 'C' || arr[i][0] == 'L') { int value = Convert.ToInt32(arr[i].Split(' ')[0].Substring(1)); if (radioElement[arr[i][0]] < value) radioElement[arr[i][0]] = value; if (max < Convert.ToInt32(arr[i].Split(' ')[1])) max = Convert.ToInt32(arr[i].Split(' ')[1]); if (max < Convert.ToInt32(arr[i].Split(' ')[2])) max = Convert.ToInt32(arr[i].Split(' ')[2]);
Мы заранее резервируем номера для будущих деталей, чтобы схему можно было свободно расширять.
резервируем номера для будущих деталей
} if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { max++; max++;
Здесь мы добавляем случайно радиоэлемент в радиосхему(от транформаторов я позже отказался,но их добавлять также можно)
добавляем случайно радиоэлемент в радиосхему
int r1 = 0, r2 = 0,r3=0; while (true) { r1 = UnityEngine.Random.Range(0, max); r2 = UnityEngine.Random.Range(0, max); r3 = UnityEngine.Random.Range(0, max); if (r1 == r2||r2==r3) continue; int index = UnityEngine.Random.Range(0, element.Count); char e = element[index]; int value = radioElement[e] + 1; if (e == 'K') { continue; /* if (radioElement['L'] >= 2) { int k1 = 0, k2 = 0; while (true) { k1 = UnityEngine.Random.Range(1, radioElement['L'] + 1); k2 = UnityEngine.Random.Range(1, radioElement['L'] + 1); if (k1 == k2) continue; arr.Insert(i, e.ToString() + value + " " + "L" + k1.ToString() + " " + "L" + k2.ToString() + " " + "0.99"); break; } } */ } else if (e == 'L' || e == 'C' || e == 'R') { arr.Insert(i, e.ToString() + value + " " + r1.ToString() + " " + r2.ToString() + " " + "100m"); } else if (e == 'X') { int rnd = UnityEngine.Random.Range(0, 2); if (rnd == 0) { arr.Insert(i, e.ToString() + value + " " + r1.ToString() + " " + r2.ToString() + " " + "DIODE_SAFE"); } else { arr.Insert(i, e.ToString() + value + " " + r1.ToString() + " " + r2.ToString() + " " + r3.ToString() + " " + "TRANS_SAFE"); } } break; } break; } } } print("max value" + max); string result = string.Join("\n", arr.ToArray()); return result;
После того как мы научились изменять отдельные элементы, переходим к объединению целых схем(скрещиванию). Вот как устроена эта функция: Программа произвольно соединяет радиодетали между собой.
произвольно соединям радиодетали между собой.
string summoming(string data, string data2,string output) { List<string> arr = new List<string>(data.Split('\n')); List<string> arr2 = new List<string>(data2.Split('\n')); List<string> arr3 = new List<string>(); List<string> temp = new List<string>(); int r=1, c=1, l=1, k=1; for (int i = 0; i < arr.Count; i++) { if (!string.IsNullOrEmpty(arr[i])) { if (arr[i][0] == '.' && arr[i][1] == 'T' && arr[i][2] == 'R' && arr[i][3] == 'A' && arr[i][4] == 'N') { break; } } temp.Add(arr[i]); } arr = temp; temp.Clear(); for (int i = 0; i < arr2.Count; i++) { if (!string.IsNullOrEmpty(arr2[i])) { if (arr2[i][0] == '.' && arr2[i][1] == 'T' && arr2[i][2] == 'R' && arr2[i][3] == 'A' && arr2[i][4] == 'N') { break; } } temp.Add(arr2[i]); } arr2 = temp; int max = arr.Count; if (max < arr2.Count) max = arr2.Count; int min = 0; if (min > arr2.Count) min = arr2.Count; for (int i = 0; i < min; i++) { if (arr[i] != arr2[i]) { int j = UnityEngine.Random.Range(0, 2); if (j == 0) { arr3.Add(arr[i]); } else { arr3.Add(arr2[i]); } } else { arr3.Add(arr[i]); } }
Программа проверяет, нет ли ошибок в нумерации деталей.
проверка нет ли ошибок в нумерации деталей.
for (int i = min; i < max; i++) { if(arr.Count==max && arr2.Count==max) { arr3.Add(arr[i]); } if (arr.Count==min && arr2.Count == max) { arr3.Add(arr2[i]); } } for (int j = 0; j < arr3.Count; j++) { if(!string.IsNullOrEmpty(arr3[j])) { if (arr3[j][0] == 'R') { int val = Convert.ToInt32((arr3[j].Split(' ')[0].Substring(1))); if (val != r) { string s = "R" + r.ToString(); string[] ss = arr3[j].Split(' '); ss[0] = s; arr3[j]=string.Join(" ", ss); } r++; } if (arr3[j][0] == 'L') { int val = Convert.ToInt32((arr3[j].Split(' ')[0].Substring(1))); if (val != l) { string s = "L" + l.ToString(); string[] ss = arr3[j].Split(' '); ss[0] = s; arr3[j] = string.Join(" ", ss); } l++; } if (arr3[j][0] == 'C') { int val = Convert.ToInt32((arr3[j].Split(' ')[0].Substring(1))); if (val != c) { string s = "C" + c.ToString(); string[] ss = arr3[j].Split(' '); ss[0] = s; arr3[j] = string.Join(" ", ss); } c++; } if (arr3[j][0] == 'K') { int val = Convert.ToInt32((arr3[j].Split(' ')[0].Substring(1))); if (val != k) { string s = "K" + k.ToString(); string[] ss = arr3[j].Split(' '); ss[0] = s; arr3[j] = string.Join(" ", ss); } k++; } } }
Завершаем создание схемы и добавляем инструкции для её моделирования.
Конец функции
string str = string.Join("\n", arr3.ToArray()); str+= ".TRAN 1u 10u\n" + ".control\n" + "set filetype=ascii\n" + "set rchar=\",\"\n" + "run\n" + "print v(257) v(258) > " + output + "\n" + "print v(259) v(260) > " + output + ".ctl" + "\n" + "print v(688) v(689) > " + output + ".or1" + "\n" + "print v(690) v(691) > " + output + ".or2" + "\n" + "print v(692) v(693) > " + output + ".or3" + "\n" + "print v(694) v(695) > " + output + ".or4" + "\n" + ".endc\n" + ".end\n"; return str; }
Что можно сделать дальше (продолжение эксперимента):
Техническое улучшение: Переписать симулятор схем (NGspice) прямо на C# для Unity, чтобы всё работало быстрее и стабильнее в моей версии программы.
Обучение рисованию: Сделать из кубиков фигуры в виде цифр и букв и попробовать научить машинки тыкать в них или даже рисовать их самим.
Эксперимент "как у собаки Павлова":
Суть: Давать машинке сигнал (например, звук) каждый раз, когда она хватает определённую часть буквы или цифры.
Цель: Со временем, просто услышав этот звук, машинка должна "вспомнить" и нарисовать ту самую букву или цифру. Это будет как условный рефлекс у собак Павлова, но у машинок.
Идея, если эксперимент сработает:
Если машинки смогут так научиться, то этот метод можно применить и для людей.
Например, строить в парках большие памятники в виде букв и цифр, которые складываются в строки из важных книг (художественных или технических).
Как это поможет: Человек, прогуливаясь мимо таких памятников, будет невольно запоминать информацию. Это будет работать как тренажёр для памяти, использующий пространство вокруг.
Я понимаю, что моя идея не единственно возможная. Для эволюции робомашинок можно использовать нейросети или цифровую логику — но я сознательно выбрал аналоговые радиосхемы. Мой подход лучше, потому что аналоговые схемы зависят от времени. Это значит, что машинка может использовать ощущение времени для ориентирования в пространстве. Нейросети и цифровые схемы так не умеют — они не привязаны ко времени так же тесно. Оказалось, что живые нервные клетки (нейроны) работают очень похоже на аналоговые схемы из транзисторов и конденсаторов — такие же, как в моём проекте.
Список литературы:
1.Книга по изучению радиоэлектроники
Гололобов В.Н. радиоэлектроника от азов до создания практических устройств
2.Мануал по ngspice -> Ngspice
3.Книга по изучению юнити
Бонд Д.Г. unity и c# геймдизайн от идеи до реализации.
4.Мануал по созданию машинки с колесиками в среде unity3d
Wheel collider
5.Омельяненко Я. – Эволюционные нейросети на языке python
6.Статья на хабре – как я нейроны паял.
В своей работе я использовал среду unity 2017,visual studio 2017,windows 10.Под линуксом не тестировал.
