Лабораторная работа №1

по предмету "оптимальное управление"

Выполнил: студент гр. А-14м-16 Мигаль И.А
Проверил: Зубков Павел Валерьевич

In [ ]:
import sys
sys.path.insert(0, '/home/ivmig/OneDrive/Documents/A-14m-16/2CURSE3SEM/optimal_control/lab_1/')
print(sys.path)

In [1]:
print(__doc__)

# Author: Ivan Migal ivan.migal@mail.ru
# License: BSD 3 clause

import math
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from pylab import rcParams
from matplotlib import colors as mcolors
import utils

from utils import array
from utils import TDMA


colors = list(mcolors.BASE_COLORS)
colors += list(mcolors.CSS4_COLORS.keys())


Automatically created module for IPython interactive environment

In [2]:
%matplotlib inline
rcParams['figure.figsize'] = 12, 12
plt.style.use('ggplot')
# Настройка шрифта
font = {'family' : 'DejaVu Sans',
        'weight' : 'bold',
        'size'   : 16}

matplotlib.rc('font', **font)

Инициализация данных

    Обозначения см. в описании Л.Р. №1

In [3]:
# Словарь параметров
p_d = {}

In [4]:
# Заданные положительные величины
p_d['a'], p_d['l'], p_d['v'], p_d['T'] = 1., 1., 1., 50.

# Решение тестового примера
def x(s, t):
    return math.sin(t) + math.sin(s + math.pi / 2.)

# Плотность источников тепла
def f(s, t):
    return math.cos(t) + p_d['a'] ** 2 * math.sin(s + math.pi / 2.)
    
# Температура внешней среды
def p(t):
    #return 1. / p_d['v'] * math.cos(p_d['l'] + math.pi / 2) + math.sin(t) + math.sin(p_d['l'] + math.pi / 2)
    return 0.
    
# Распределение температуры в начальный момент времени
def fi(s):
    return math.sin(s + math.pi / 2.)

p_d['p(t)'] = p

p_d['f(s, t)'] = f

# Заданные числа
p_d['p_min'], p_d['p_max'], p_d['R'] = -100., 100., 100.

p_d['fi(s)'] = fi

# Желаемое распределение температуры
def y(s):
    #return s * math.sin(s + math.pi / 2.)
    return math.sin(p_d['T']) + math.sin(s + math.pi / 2.)

p_d['y(s)'] = y

# Число точек на пространственной и временной сетке соответственно
N = 10
p_d['N'], p_d['M'] = N, 10 + N * N

# Шаг на пространственной и временной сетке соответственно
p_d['dh'], p_d['dt'] = p_d['l'] / p_d['N'], p_d['T'] / p_d['M']
p_d['l'], p_d['T'], p_d['dh'], p_d['dt']


Out[4]:
(1.0, 50.0, 0.1, 0.45454545454545453)

Создание модели и управление


In [5]:
model = utils.Lab1OptCtrlModel(p_d)

In [6]:
criterion = utils.criterion_3
get_alpha = utils.get_alpha_5

In [7]:
model.solve(criterion, get_alpha, eps=10**-5)


2272727.2727272725
0.0190629141294
0.00747586478874
0.00620693089366
0.0055548857026
0.00506176955535
0.00465664204073
0.00431439666333
0.00402064562716
0.00376546974092
0.00354155911382
0.00334335831729
0.00316656178428
0.0030077808041
0.00286431245342
0.00273397481525
0.00261498723314
0.00250588194596
0.00240543798656
0.00231263111402
0.00222659544767
0.00214659374767
0.00207199415888
0.00200225183921
0.00193689431716
0.0018755097242
0.00181773726387
0.00176325943585
0.00171179564831
0.00166309693692
0.00161694157219
0.00157313138503
0.00153148867637
0.00149185360499
0.00145408196881
0.00141804331191
0.00138361930249
0.0013507023373
0.00131919433627
0.00128900569766
0.00126005438901
0.0012322651538
0.00120556881673
0.00117990167357
0.00115520495379
0.0011314243458
0.00110850957661
0.00108641403855
0.00106509445703
0.00104451059416
0.00102462498375
0.00100540269382
0.00098681111335
0.000968819760401
0.000951400109172
0.000934525433762
0.000918170666825
0.000902312271452
0.000886928124864
0.000871997412641
0.000857500532387
0.000843419005866
0.000829735398729
0.000816433247088
0.000803496990253
0.000790911909036
0.000778664069081
0.000766740268758
0.000755127991181
0.000743815359987
0.000732791098513
0.000722044492096
0.000711565353189
0.000701343989078
0.000691371171948
0.000681638111121
0.000672136427275
0.000662858128472
0.000653795587864
0.000644941522929
0.000636288976116
0.000627831296794
0.000619562124397
0.000611475372678
0.000603565214977
0.000595826070448
0.000588252591147
0.000580839649937
0.00057358232914
0.000566475909893
0.000559515862143
0.000552697835246
0.000546017649131
0.000539471285975
0.000533054882369
0.000526764721941
0.000520597228389
0.000514548958915
0.00050861659803
0.000502796951699
0.000497086941804
0.000491483600917
0.000485984067349
0.000480585580466
0.000475285476251
0.000470081183104
0.000464970217851
0.000459950181971
0.000455018758006
0.000450173706153
0.000445412861038
0.000440734128636
0.000436135483353
0.000431614965248
0.000427170677386
0.000422800783326
0.000418503504723
0.000414277119045
0.000410119957398
0.000406030402452
0.00040200688646
0.000398047889377
0.00039415193705
0.000390317599504
0.000386543489295
0.000382828259941
0.000379170604421
0.00037556925374
0.000372022975557
0.000368530572867
0.00036509088275
0.00036170277516
0.00035836515178
0.000355076944908
0.000351837116407
0.000348644656683
0.000345498583716
0.000342397942122
0.000339341802263
0.000336329259379
0.00033335943277
0.000330431464999
0.000327544521129
0.000324697787996
0.000321890473499
0.00031912180593
0.000316391033318
0.000313697422808
0.000311040260055
0.000308418848648
0.000305832509549
0.00030328058056
0.000300762415802
0.00029827738522
0.000295824874099
0.000293404282606
0.00029101502534
0.000288656530905
0.000286328241493
0.000284029612486
0.000281760112067
0.00027951922085
0.000277306431521
0.000275121248488
0.000272963187547
0.000270831775559
0.000268726550136
0.00026664705934
0.000264592861389
0.000262563524378
0.000260558626
0.000258577753289
0.00025662050236
0.000254686478162
0.000252775294243
0.000250886572514
0.000249019943027
0.00024717504376
0.000245351520403
0.00024354902616
0.000241767221548
0.000240005774207
0.000238264358719
0.000236542656423
0.000234840355245
0.00023315714953
0.000231492739879
0.000229846832989
0.0002282191415
0.000226609383847
0.000225017284118
0.000223442571908
0.000221884982188
0.000220344255173
0.00021882013619
0.000217312375559
0.000215820728467
0.000214344954854
0.0002128848193
0.000211440090912
0.000210010543215
0.000208595954052
0.000207196105481
0.000205810783674
0.000204439778824
0.00020308288505
0.000201739900306
0.000200410626296
0.000199094868382
0.00019779243551
0.000196503140119
0.000195226798068
0.000193963228557
0.000192712254054
0.00019147370022
0.000190247395839
0.00018903317275
0.000187830865779
0.000186640312672
0.000185461354035
0.000184293833269
0.00018313759651
0.00018199249257
0.000180858372883
0.000179735091444
0.000178622504755
0.000177520471778
0.000176428853875
0.000175347514763
0.000174276320463
0.000173215139253
0.000172163841619
0.000171122300212
0.000170090389801
0.00016906798723
0.000168054971381
0.000167051223122
0.000166056625276
0.00016507106258
0.00016409442164
0.000163126590904
0.000162167460616
0.000161216922785
0.00016027487115
0.000159341201145
0.000158415809864
0.000157498596034
0.000156589459975
0.000155688303578
0.000154795030267
0.000153909544975
0.000153031754111
0.000152161565535
0.000151298888528
0.000150443633766
0.000149595713294
0.000148755040499
0.000147921530086
0.000147095098054
0.000146275661668
0.000145463139442
0.000144657451109
0.000143858517604
0.000143066261037
0.000142280604676
0.000141501472925
0.000140728791299
0.00013996248641
0.000139202485944
0.00013844871864
0.000137701114277
0.000136959603648
0.000136224118547
0.00013549459175
0.000134770956997
0.000134053148975
0.000133341103304
0.000132634756516
0.000131934046043
0.000131238910198
0.000130549288165
0.000129865119977
0.000129186346508
0.000128512909453
0.000127844751318
0.000127181815406
0.000126524045799
0.00012587138735
0.000125223785668
0.000124581187104
0.000123943538741
0.000123310788381
0.00012268288453
0.000122059776392
0.000121441413852
0.000120827747469
0.000120218728461
0.000119614308697
0.000119014440687
0.000118419077568
0.000117828173096
0.000117241681638
0.000116659558158
0.000116081758209
0.000115508237927
0.000114938954014
0.000114373863739
0.000113812924918
0.000113256095915
0.000112703335627
0.00011215460348
0.000111609859416
0.000111069063888
0.000110532177854
0.000109999162763
0.000109469980554
0.000108944593643
0.000108422964919
0.000107905057736
0.000107390835905
0.000106880263689
0.000106373305792
0.000105869927359
0.00010537009396
0.000104873771595
0.000104380926676
0.00010389152603
0.000103405536886
0.000102922926875
0.000102443664018
0.000101967716726
0.000101495053789
0.000101025644374
0.000100559458019
0.000100096464624
9.96366344523e-05
9.91799381179e-05
9.87263465859e-05
9.82758311645e-05
9.78283635014e-05
9.73839155779e-05
9.69424597048e-05
9.65039685173e-05
9.60684149705e-05
9.56357723348e-05
9.52060141912e-05
9.47791144274e-05
9.43550472328e-05
9.39337870946e-05
9.35153087938e-05
9.30995874004e-05
9.268659827e-05
9.22763170395e-05
9.18687196231e-05
9.14637822088e-05
9.10614812541e-05
9.06617934826e-05
9.02646958804e-05
8.9870165692e-05
8.94781804173e-05
8.90887178078e-05
8.87017558633e-05
8.83172728284e-05
8.7935247189e-05
8.75556576695e-05
8.71784832293e-05
8.68037030594e-05
8.64312965797e-05
8.60612434357e-05
8.56935234954e-05
8.53281168467e-05
8.49650037939e-05
8.46041648553e-05
8.42455807602e-05
8.38892324459e-05
8.35351010554e-05
8.31831679344e-05
8.28334146284e-05
8.24858228806e-05
8.21403746292e-05
8.17970520045e-05
8.14558373266e-05
8.11167131031e-05
8.07796620265e-05
8.0444666972e-05
8.01117109947e-05
7.97807773277e-05
7.945184938e-05
7.91249107335e-05
7.87999451414e-05
7.84769365262e-05
7.81558689767e-05
7.78367267467e-05
7.75194942526e-05
7.72041560714e-05
7.68906969386e-05
7.65791017463e-05
7.6269355541e-05
7.59614435223e-05
7.56553510402e-05
7.53510635937e-05
7.50485668289e-05
7.47478465372e-05
7.44488886532e-05
7.41516792534e-05
7.38562045541e-05
7.35624509098e-05
7.32704048117e-05
7.29800528856e-05
7.26913818907e-05
7.24043787177e-05
7.21190303874e-05
7.18353240488e-05
7.1553246978e-05
7.12727865763e-05
7.09939303691e-05
7.07166660038e-05
7.04409812489e-05
7.01668639923e-05
6.98943022399e-05
6.96232841143e-05
6.93537978533e-05
6.90858318086e-05
6.88193744442e-05
6.85544143358e-05
6.82909401685e-05
6.80289407363e-05
6.77684049405e-05
6.75093217884e-05
6.72516803921e-05
6.69954699676e-05
6.67406798331e-05
6.6487299408e-05
6.6235318212e-05
6.59847258635e-05
6.57355120789e-05
6.54876666709e-05
6.52411795482e-05
6.49960407137e-05
6.47522402637e-05
6.45097683868e-05
6.4268615363e-05
6.40287715623e-05
6.37902274443e-05
6.35529735564e-05
6.33170005335e-05
6.30822990965e-05
6.28488600518e-05
6.261667429e-05
6.2385732785e-05
6.21560265933e-05
6.19275468529e-05
6.17002847822e-05
6.14742316795e-05
6.12493789221e-05
6.1025717965e-05
6.08032403405e-05
6.0581937657e-05
6.03618015985e-05
6.01428239235e-05
5.99249964643e-05
5.97083111263e-05
5.94927598869e-05
5.92783347951e-05
5.90650279705e-05
5.88528316024e-05
5.86417379493e-05
5.84317393384e-05
5.82228281639e-05
5.80149968875e-05
5.78082380368e-05
5.7602544205e-05
5.73979080499e-05
5.71943222937e-05
5.69917797218e-05
5.67902731824e-05
5.65897955857e-05
5.63903399036e-05
5.61918991686e-05
5.59944664731e-05
5.57980349695e-05
5.56025978687e-05
5.54081484401e-05
5.52146800106e-05
5.50221859642e-05
5.48306597414e-05
5.46400948386e-05
5.44504848075e-05
5.42618232545e-05
5.407410384e-05
5.38873202784e-05
5.37014663368e-05
5.3516535835e-05
5.33325226446e-05
5.31494206889e-05
5.29672239419e-05
5.2785926428e-05
5.26055222216e-05
5.24260054465e-05
5.22473702752e-05
5.20696109287e-05
5.18927216759e-05
5.17166968332e-05
5.15415307638e-05
5.13672178773e-05
5.11937526294e-05
5.10211295215e-05
5.08493430998e-05
5.06783879553e-05
5.05082587231e-05
5.03389500822e-05
5.01704567548e-05
5.0002773506e-05
4.98358951434e-05
4.96698165166e-05
4.95045325169e-05
4.93400380769e-05
4.91763281697e-05
4.90133978092e-05
4.88512420491e-05
4.86898559829e-05
4.85292347431e-05
4.83693735014e-05
4.82102674678e-05
4.80519118903e-05
4.78943020549e-05
4.77374332848e-05
4.75813009405e-05
4.74259004188e-05
4.7271227153e-05
4.71172766125e-05
4.69640443021e-05
4.6811525762e-05
4.66597165674e-05
4.65086123279e-05
4.63582086877e-05
4.62085013248e-05
4.60594859508e-05
4.59111583107e-05
4.57635141824e-05
4.56165493767e-05
4.54702597366e-05
4.53246411374e-05
4.51796894859e-05
4.50354007206e-05
4.48917708112e-05
4.47487957581e-05
4.46064715927e-05
4.44647943762e-05
4.43237602004e-05
4.41833651866e-05
4.40436054854e-05
4.39044772771e-05
4.37659767706e-05
4.36281002036e-05
4.34908438422e-05
4.33542039807e-05
4.32181769413e-05
4.30827590739e-05
4.29479467557e-05
4.28137363912e-05
4.26801244115e-05
4.25471072748e-05
4.24146814654e-05
4.22828434938e-05
4.21515898966e-05
4.20209172361e-05
4.18908220998e-05
4.17613011008e-05
4.1632350877e-05
4.15039680913e-05
4.13761494309e-05
4.12488916076e-05
4.11221913573e-05
4.09960454396e-05
4.08704506381e-05
4.07454037598e-05
4.0620901635e-05
4.0496941117e-05
4.03735190821e-05
4.02506324292e-05
4.01282780798e-05
4.00064529775e-05
3.98851540882e-05
3.97643783995e-05
3.96441229209e-05
3.95243846832e-05
3.94051607387e-05
3.92864481608e-05
3.91682440439e-05
3.90505455029e-05
3.89333496737e-05
3.88166537124e-05
3.87004547953e-05
3.85847501189e-05
3.84695368995e-05
3.83548123732e-05
3.82405737956e-05
3.81268184417e-05
3.80135436056e-05
3.79007466008e-05
3.77884247592e-05
3.76765754319e-05
3.75651959883e-05
3.74542838163e-05
3.7343836322e-05
3.72338509297e-05
3.71243250816e-05
3.70152562377e-05
3.69066418756e-05
3.67984794906e-05
3.6690766595e-05
3.65835007187e-05
3.64766794084e-05
3.63703002277e-05
3.62643607573e-05
3.61588585942e-05
3.60537913521e-05
3.59491566609e-05
3.58449521668e-05
3.57411755323e-05
3.56378244355e-05
3.55348965705e-05
3.54323896472e-05
3.5330301391e-05
3.52286295426e-05
3.51273718582e-05
3.50265261091e-05
3.49260900817e-05
3.48260615772e-05
3.47264384119e-05
3.46272184167e-05
3.45283994367e-05
3.44299793321e-05
3.4331955977e-05
3.42343272598e-05
3.41370910831e-05
3.40402453635e-05
3.39437880313e-05
3.38477170309e-05
3.37520303199e-05
3.365672587e-05
3.35618016659e-05
3.34672557058e-05
3.33730860012e-05
3.32792905766e-05
3.31858674695e-05
3.30928147305e-05
3.30001304228e-05
3.29078126223e-05
3.28158594178e-05
3.27242689104e-05
3.26330392134e-05
3.25421684528e-05
3.24516547667e-05
3.23614963051e-05
3.22716912302e-05
3.21822377162e-05
3.2093133949e-05
3.20043781263e-05
3.19159684574e-05
3.18279031632e-05
3.17401804761e-05
3.16527986398e-05
3.15657559093e-05
3.14790505508e-05
3.13926808418e-05
3.13066450706e-05
3.12209415364e-05
3.11355685496e-05
3.10505244309e-05
3.09658075122e-05
3.08814161355e-05
3.07973486538e-05
3.07136034302e-05
3.06301788384e-05
3.05470732621e-05
3.04642850956e-05
3.03818127431e-05
3.02996546188e-05
3.02178091469e-05
3.01362747618e-05
3.00550499072e-05
2.99741330371e-05
2.98935226147e-05
2.98132171131e-05
2.9733215015e-05
2.96535148122e-05
2.95741150062e-05
2.94950141077e-05
2.94162106368e-05
2.93377031224e-05
2.9259490103e-05
2.91815701258e-05
2.9103941747e-05
2.9026603532e-05
2.89495540546e-05
2.88727918978e-05
2.8796315653e-05
2.87201239204e-05
2.86442153086e-05
2.85685884351e-05
2.84932419255e-05
2.84181744139e-05
2.83433845427e-05
2.82688709627e-05
2.81946323327e-05
2.81206673198e-05
2.80469745993e-05
2.79735528542e-05
2.79004007757e-05
2.78275170629e-05
2.77549004226e-05
2.76825495697e-05
2.76104632266e-05
2.75386401233e-05
2.74670789977e-05
2.73957785952e-05
2.73247376684e-05
2.72539549779e-05
2.71834292913e-05
2.71131593837e-05
2.70431440375e-05
2.69733820423e-05
2.69038721951e-05
2.68346132996e-05
2.67656041672e-05
2.66968436158e-05
2.66283304706e-05
2.65600635637e-05
2.6492041734e-05
2.64242638274e-05
2.63567286963e-05
2.62894352003e-05
2.62223822053e-05
2.61555685841e-05
2.6088993216e-05
2.60226549868e-05
2.59565527889e-05
2.58906855212e-05
2.5825052089e-05
2.57596514039e-05
2.56944823838e-05
2.56295439532e-05
2.55648350424e-05
2.55003545882e-05
2.54361015335e-05
2.53720748273e-05
2.53082734245e-05
2.52446962863e-05
2.51813423798e-05
2.5118210678e-05
2.50553001597e-05
2.49926098098e-05
2.49301386189e-05
2.48678855833e-05
2.48058497052e-05
2.47440299923e-05
2.46824254583e-05
2.46210351222e-05
2.45598580086e-05
2.44988931479e-05
2.44381395758e-05
2.43775963335e-05
2.43172624677e-05
2.42571370304e-05
2.4197219079e-05
2.41375076764e-05
2.40780018904e-05
2.40187007944e-05
2.39596034669e-05
2.39007089915e-05
2.38420164571e-05
2.37835249575e-05
2.37252335919e-05
2.36671414641e-05
2.36092476833e-05
2.35515513635e-05
2.34940516236e-05
2.34367475875e-05
2.3379638384e-05
2.33227231466e-05
2.32660010138e-05
2.32094711286e-05
2.31531326391e-05
2.30969846977e-05
2.3041026462e-05
2.29852570937e-05
2.29296757594e-05
2.28742816304e-05
2.28190738824e-05
2.27640516955e-05
2.27092142547e-05
2.2654560749e-05
2.26000903721e-05
2.25458023221e-05
2.24916958014e-05
2.24377700169e-05
2.23840241797e-05
2.23304575051e-05
2.22770692129e-05
2.2223858527e-05
2.21708246754e-05
2.21179668906e-05
2.2065284409e-05
2.20127764712e-05
2.19604423219e-05
2.19082812098e-05
2.18562923879e-05
2.18044751129e-05
2.17528286457e-05
2.17013522511e-05
2.16500451978e-05
2.15989067586e-05
2.15479362101e-05
2.14971328326e-05
2.14464959104e-05
2.13960247317e-05
2.13457185884e-05
2.12955767761e-05
2.12455985942e-05
2.11957833459e-05
2.1146130338e-05
2.10966388811e-05
2.10473082893e-05
2.09981378803e-05
2.09491269757e-05
2.09002749003e-05
2.08515809828e-05
2.08030445551e-05
2.07546649529e-05
2.07064415152e-05
2.06583735847e-05
2.06104605072e-05
2.05627016323e-05
2.05150963128e-05
2.04676439048e-05
2.0420343768e-05
2.03731952652e-05
2.03261977627e-05
2.02793506301e-05
2.02326532402e-05
2.01861049689e-05
2.01397051957e-05
2.0093453303e-05
2.00473486766e-05
2.00013907054e-05
1.99555787814e-05
1.99099122999e-05
1.9864390659e-05
1.98190132604e-05
1.97737795083e-05
1.97286888105e-05
1.96837405775e-05
1.96389342229e-05
1.95942691633e-05
1.95497448183e-05
1.95053606105e-05
1.94611159655e-05
1.94170103117e-05
1.93730430804e-05
1.9329213706e-05
1.92855216255e-05
1.9241966279e-05
1.91985471092e-05
1.9155263562e-05
1.91121150857e-05
1.90691011316e-05
1.90262211537e-05
1.89834746089e-05
1.89408609567e-05
1.88983796594e-05
1.88560301818e-05
1.88138119917e-05
1.87717245594e-05
1.8729767358e-05
1.86879398629e-05
1.86462415525e-05
1.86046719077e-05
1.85632304119e-05
1.85219165511e-05
1.8480729814e-05
1.84396696918e-05
1.8398735678e-05
1.8357927269e-05
1.83172439633e-05
1.82766852623e-05
1.82362506695e-05
1.81959396912e-05
1.81557518359e-05
1.81156866145e-05
1.80757435405e-05
1.80359221297e-05
1.79962219003e-05
1.79566423729e-05
1.79171830704e-05
1.78778435181e-05
1.78386232436e-05
1.77995217767e-05
1.77605386498e-05
1.77216733973e-05
1.76829255561e-05
1.76442946651e-05
1.76057802657e-05
1.75673819014e-05
1.7529099118e-05
1.74909314634e-05
1.74528784878e-05
1.74149397435e-05
1.73771147851e-05
1.73394031693e-05
1.73018044548e-05
1.72643182026e-05
1.72269439758e-05
1.71896813396e-05
1.71525298613e-05
1.71154891102e-05
1.70785586578e-05
1.70417380775e-05
1.7005026945e-05
1.69684248378e-05
1.69319313355e-05
1.68955460198e-05
1.68592684742e-05
1.68230982844e-05
1.6787035038e-05
1.67510783246e-05
1.67152277356e-05
1.66794828645e-05
1.66438433068e-05
1.66083086597e-05
1.65728785224e-05
1.65375524962e-05
1.6502330184e-05
1.64672111907e-05
1.64321951231e-05
1.63972815899e-05
1.63624702014e-05
1.63277605701e-05
1.629315231e-05
1.62586450371e-05
1.62242383692e-05
1.61899319259e-05
1.61557253284e-05
1.61216181999e-05
1.60876101652e-05
1.60537008511e-05
1.60198898859e-05
1.59861768996e-05
1.59525615243e-05
1.59190433934e-05
1.58856221422e-05
1.58522974076e-05
1.58190688284e-05
1.57859360449e-05
1.5752898699e-05
1.57199564344e-05
1.56871088965e-05
1.56543557322e-05
1.56216965901e-05
1.55891311204e-05
1.55566589749e-05
1.55242798071e-05
1.5491993272e-05
1.54597990261e-05
1.54276967278e-05
1.53956860367e-05
1.53637666142e-05
1.53319381232e-05
1.53002002281e-05
1.52685525948e-05
1.52369948908e-05
1.52055267852e-05
1.51741479484e-05
1.51428580525e-05
1.5111656771e-05
1.50805437789e-05
1.50495187527e-05
1.50185813702e-05
1.4987731311e-05
1.49569682558e-05
1.4926291887e-05
1.48957018884e-05
1.48651979451e-05
1.48347797436e-05
1.48044469721e-05
1.477419932e-05
1.4744036478e-05
1.47139581383e-05
1.46839639947e-05
1.4654053742e-05
1.46242270765e-05
1.45944836961e-05
1.45648232998e-05
1.45352455878e-05
1.45057502622e-05
1.44763370258e-05
1.44470055831e-05
1.44177556398e-05
1.4388586903e-05
1.4359499081e-05
1.43304918834e-05
1.43015650213e-05
1.42727182067e-05
1.42439511532e-05
1.42152635756e-05
1.41866551899e-05
1.41581257133e-05
1.41296748644e-05
1.4101302363e-05
1.40730079301e-05
1.4044791288e-05
1.401665216e-05
1.3988590271e-05
1.39606053467e-05
1.39326971144e-05
1.39048653022e-05
1.38771096397e-05
1.38494298577e-05
1.38218256878e-05
1.37942968632e-05
1.3766843118e-05
1.37394641877e-05
1.37121598087e-05
1.36849297188e-05
1.36577736566e-05
1.36306913622e-05
1.36036825766e-05
1.3576747042e-05
1.35498845018e-05
1.35230947004e-05
1.34963773833e-05
1.34697322971e-05
1.34431591897e-05
1.34166578098e-05
1.33902279074e-05
1.33638692333e-05
1.33375815398e-05
1.331136458e-05
1.3285218108e-05
1.3259141879e-05
1.32331356495e-05
1.32071991768e-05
1.31813322192e-05
1.31555345362e-05
1.31298058882e-05
1.31041460367e-05
1.30785547443e-05
1.30530317744e-05
1.30275768916e-05
1.30021898615e-05
1.29768704504e-05
1.2951618426e-05
1.29264335568e-05
1.29013156123e-05
1.28762643629e-05
1.28512795802e-05
1.28263610364e-05
1.28015085051e-05
1.27767217605e-05
1.2752000578e-05
1.27273447337e-05
1.27027540049e-05
1.26782281697e-05
1.26537670072e-05
1.26293702974e-05
1.26050378211e-05
1.25807693603e-05
1.25565646977e-05
1.25324236169e-05
1.25083459025e-05
1.24843313401e-05
1.24603797159e-05
1.24364908173e-05
1.24126644325e-05
1.23889003503e-05
1.23651983609e-05
1.23415582549e-05
1.23179798241e-05
1.2294462861e-05
1.2271007159e-05
1.22476125124e-05
1.22242787162e-05
1.22010055664e-05
1.21777928599e-05
1.21546403942e-05
1.2131547968e-05
1.21085153804e-05
1.20855424317e-05
1.20626289228e-05
1.20397746556e-05
1.20169794325e-05
1.19942430572e-05
1.19715653337e-05
1.19489460671e-05
1.19263850633e-05
1.1903882129e-05
1.18814370714e-05
1.18590496989e-05
1.18367198205e-05
1.18144472459e-05
1.17922317858e-05
1.17700732513e-05
1.17479714548e-05
1.17259262089e-05
1.17039373274e-05
1.16820046247e-05
1.16601279158e-05
1.16383070168e-05
1.16165417442e-05
1.15948319154e-05
1.15731773487e-05
1.15515778627e-05
1.15300332772e-05
1.15085434125e-05
1.14871080897e-05
1.14657271304e-05
1.14444003573e-05
1.14231275935e-05
1.14019086629e-05
1.13807433903e-05
1.13596316009e-05
1.13385731207e-05
1.13175677767e-05
1.1296615396e-05
1.1275715807e-05
1.12548688384e-05
1.12340743198e-05
1.12133320812e-05
1.11926419536e-05
1.11720037685e-05
1.11514173582e-05
1.11308825554e-05
1.11103991939e-05
1.10899671077e-05
1.10695861317e-05
1.10492561015e-05
1.10289768533e-05
1.10087482238e-05
1.09885700506e-05
1.09684421717e-05
1.0948364426e-05
1.09283366529e-05
1.09083586923e-05
1.0888430385e-05
1.08685515722e-05
1.08487220959e-05
1.08289417985e-05
1.08092105234e-05
1.07895281142e-05
1.07698944154e-05
1.07503092719e-05
1.07307725294e-05
1.07112840341e-05
1.06918436328e-05
1.0672451173e-05
1.06531065027e-05
1.06338094704e-05
1.06145599255e-05
1.05953577176e-05
1.05762026972e-05
1.05570947153e-05
1.05380336234e-05
1.05190192736e-05
1.05000515186e-05
1.04811302117e-05
1.04622552068e-05
1.04434263582e-05
1.04246435209e-05
1.04059065505e-05
1.0387215303e-05
1.03685696351e-05
1.03499694041e-05
1.03314144676e-05
1.03129046841e-05
1.02944399122e-05
1.02760200115e-05
1.02576448419e-05
1.02393142638e-05
1.02210281384e-05
1.0202786327e-05
1.01845886918e-05
1.01664350955e-05
1.01483254011e-05
1.01302594723e-05
1.01122371734e-05
1.00942583689e-05
1.00763229242e-05
1.00584307049e-05
1.00405815774e-05
1.00227754083e-05
1.00050120649e-05
9.98729141508e-06
Out[7]:
<utils.Lab1OptCtrlModel at 0x7ffba2f3e3c8>

In [8]:
model.final_step


Out[8]:
1192

In [9]:
X_ = np.arange(0., p_d['l'] + p_d['dh'], p_d['dh'])
Y_ = np.arange(0., p_d['T'] + p_d['dt'], p_d['dt'])

Процесс управления


In [10]:
y_s = model.y_arr
bounds = [min(min(y_s), min(model.x_arr[-1][-1,:])), max(max(y_s), max(model.x_arr[-1][-1,:]))]

In [11]:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(X_, y_s, color='r', label='Желаемое')
part = 1
count = 5
step = int(model.final_step / count / part)
for i in range(0, int(model.final_step / part), step):
    ax.plot(X_, model.x_arr[i][-1,:], color=colors[int(i / step)], linestyle='--', label='{}-я итерация'.format(i))
ax.plot(X_, model.x_arr[-1][-1,:], color='b', label='Последняя итерация')
ax.set_ylim(bounds)
plt.xlabel('s')
plt.ylabel('y(s)')
plt.title('Распределения температуры стержня в процессе управления')
plt.legend(title='Легенда', loc='center left', bbox_to_anchor=(1.0, 0.5))
plt.show()



Желаемое и полученное распределение температур


In [12]:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(X_, y_s, color='r', label='Желаемое')
ax.plot(X_, model.x_arr[-1][-1,:], color='b', label='Полученное')
ax.set_ylim(bounds)
plt.xlabel('s')
plt.ylabel('y(s)')
plt.title('Желаемое и полученное распределения температуры стержня')
plt.legend(title='Легенда', loc='center left', bbox_to_anchor=(1.0, 0.5))
plt.show()



Управление


In [13]:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(Y_, model.p_arr[0], color='b', label='Начальный момент времени')
ax.plot(Y_, model.p_arr[-1], color='r', label='Полученное после управления')
plt.xlabel('t')
plt.ylabel('p(t)')
plt.title('Управление начальный и окончательный момент')
plt.legend(title='Температуры внешней среды', loc='center left', bbox_to_anchor=(1.0, 0.5))
plt.show()



График изменения ошибки


In [14]:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(model.err, color='black', label='Ошибка')
ax.set_ylim([min(model.err), min(model.err) + .1])


Out[14]:
(9.9872914150818623e-06, 0.10000998729141508)