????????????????????????欢迎来到本博客❤️❤️❤️????????????
????博主优势:????????????博客内容尽量做到思维缜密,逻辑清晰,为了方便读者
????目前更新:????????????电力系统相关知识,期刊论文,算法,机器学习和人工智能学习。
????支持:????????????如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!????????博主课外兴趣:中西方哲学,送予读者:
????????做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“真理”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......????????????
????????????本文目录如下:⛳️⛳️⛳️
目录
1 概述
2 Matlab代码实现
3 写在最后
1 概述
动态规划是一种机器学习方法,它利用环境、计算资源和马尔可夫特性等知识来创建在环境中最佳执行的策略。有了这项强大的技术,一个看似复杂的问题就可以用几行代码来分析和解决。在本文告中,介绍了使用基于Matlab的动态程序解决多队列网络问题的整个过程。基于所得结果,最后得出结论,具有策略迭代的动态规划是解决该类问题有效方法。
2 Matlab代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106clear all , clc state2state = zeros ( 9 , 9 , 9 , 9 ) rewardfor1 = zeros ( 9 , 9 , 9 , 9 ) rewardfor2 = zeros ( 9 , 9 , 9 , 9 ) policy = zeros ( 9 , 9 ) values = zeros ( 9 , 9 ) none= .7 * .4 just1= .3 * .4 just2= .6 * .7 both= .6 * .3 for i = 1 : 9 for j = 1 : 9 state2state = applyProb(state2state, i , j ); end end stateDone = 1 for i = 1 : 9 for j = 1 : 9 rewardfor1 = applyReward(rewardfor1, i , j , 1 ); end end reward1Done = 1 for i = 1 : 9 for j = 1 : 9 rewardfor2 = applyReward(rewardfor2, i , j , 2 ); end end %randomize policy for i = 1 : 9 for j = 1 : 9 policy( i , j ) = 1 ; %policy(i,j) = binornd(1,.5) + 1; end end reward2Done = 1 setupDone = 1 %policyIteration.m run setup.m iterating = 1 total = 0 ; while iterating == 1 total=total + 1 %evaluation evaluating = 1 while evaluating == 1 theta = 0.001 ; delta = 0 ; discount = .4 ; for q2 = 1 : 9 for q1 = 1 : 9 v = values(q2,q1); sumOfValues = 0 ; for nextq2 = 1 : 9 for nextq1 = 1 : 9 myProb = tranP(q1 - 1 ,q2 - 1 ,policy(q2,q1),nextq1 - 1 ,nextq2 - 1 ,state2state); myReward = tranR(q1 - 1 ,q2 - 1 ,policy(q2,q1),nextq1 - 1 ,nextq2 - 1 ,rewardfor1,rewardfor2); myNextVal = values(nextq2,nextq1); sumOfValues = sumOfValues + myProb * (myReward + discount * myNextVal); end end values(q2,q1) = sumOfValues; delta = max (delta, abs (v - values(q2,q1))) end end if (delta < theta) evaluating = 0 ; end end %improvment policyStable = 1 for q2 = 1 : 9 for q1 = 1 : 9 b = policy(q2,q1); action1sumOfValues = 0 ; action2sumOfValues = 0 ; for nextq2 = 1 : 9 for nextq1 = 1 : 9 myProb = tranP(q1 - 1 ,q2 - 1 , 1 ,nextq1 - 1 ,nextq2 - 1 ,state2state); myReward = tranR(q1 - 1 ,q2 - 1 , 1 ,nextq1 - 1 ,nextq2 - 1 ,rewardfor1,rewardfor2); myNextVal = values(nextq2,nextq1); action1sumOfValues = action1sumOfValues + myProb * (myReward + discount * myNextVal); end end for nextq2 = 1 : 9 for nextq1 = 1 : 9 myProb = tranP(q1 - 1 ,q2 - 1 , 2 ,nextq1 - 1 ,nextq2 - 1 ,state2state); myReward = tranR(q1 - 1 ,q2 - 1 , 2 ,nextq1 - 1 ,nextq2 - 1 ,rewardfor1,rewardfor2); myNextVal = values(nextq2,nextq1); action2sumOfValues = action2sumOfValues + myProb * (myReward + discount * myNextVal); end end if (action1sumOfValues > action2sumOfValues) policy(q2,q1) = 1 ; elseif (action2sumOfValues >=action1sumOfValues) policy(q2,q1) = 2 ; end if (b ~= policy(q2,q1)) policyStable = 0 ; end end end if (policyStable == 1 ) iterating = 0 end end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26function [ matrix ] = applyProb ( matrix,row,col ) matrix(row,col,row,col) = .28 if (row < 9), matrix(row + 1 ,col,row,col) = .42 else end if (col < 9), matrix(row,col + 1 ,row,col) = .12 end if (row < 9), if (col < 9), matrix(row + 1 ,col + 1 ,row,col) = .18 end end if (row == 9 & col == 9 ) matrix(row,col,row,col) = 1 end if (row ~= 9 & col == 9 ) matrix(row + 1 , 9 ,row,col) = .42 + .18 matrix(row, 9 ,row,col) = .28 + .12 end if (row == 9 & col ~= 9 ) matrix( 9 ,col + 1 ,row,col) = .12 + .18 matrix( 9 ,col,row,col) = .28 + .42 end end
function [ matrix ] = applyProb ( matrix,row,col )
matrix(row,col,row,col) = .28
if (row < 9),
matrix(row + 1 ,col,row,col) = .42
else
end
if (col < 9),
matrix(row,col + 1 ,row,col) = .12
end
if (row < 9),
if (col < 9),
matrix(row + 1 ,col + 1 ,row,col) = .18
end
end
if (row == 9 & col == 9 )
matrix(row,col,row,col) = 1
end
if (row ~= 9 & col == 9 )
matrix(row + 1 , 9 ,row,col) = .42 + .18
matrix(row, 9 ,row,col) = .28 + .12
end
if (row == 9 & col ~= 9 )
matrix( 9 ,col + 1 ,row,col) = .12 + .18
matrix( 9 ,col,row,col) = .28 + .42
end
end
3 写在最后
部分理论引用网络文献,若有侵权请联系博主删除。
最后
以上就是积极小伙最近收集整理的关于动态规划及马尔可夫特性最佳调度策略(Matlab完整代码实现)的全部内容,更多相关动态规划及马尔可夫特性最佳调度策略(Matlab完整代码实现)内容请搜索靠谱客的其他文章。
发表评论 取消回复