問題:資源離散分配問題
動態規劃的思想在於把乙個大問題化成一些同型別的子問題,然後逐個求解。從邊界條件開始遞推,每乙個子問題的解決,均使用到了前面子問題的最優結果,對於本題而言,就是要在逆向遞推的過程中,不斷更新**表與問題的最佳選擇,具體的**如下:
import numpy as np
#動態規劃
#資源離散分配問題
#某工業部門根據國家計畫的安排,擬將某種高效率的裝置五颱,
#分配給所屬的甲、乙、丙三個工廠,各工廠若獲得這種裝置之後,可以為國家提供的盈利如下表所示。
#問:這五颱裝置如何分配給各工廠,才能使國家得到的盈利最大。
mat = np.array([[
0,0,
0,],
[3,5
,4],
[7,10
,6],
[9,11
,11],
[12,11
,12],
[13,11
,12]]
)mat_new = mat.copy(
)m = mat.shape[0]
n = mat.shape[1]
bestchoice = np.zeros(
(m,n)
).astype(
int)
for k in
range
(n-1):
for i in
range
(m):
max=
0for j in
range
(i+1):
if mat[j]
[n-2
-k]+ mat_new[i-j]
[n-1
-k]>
max:
max= mat[j]
[n-2
-k]+ mat_new[i-j]
[n-1
-k] bestchoice[i]
[n-2
-k]= j
bestchoice[i]
[n-1
-k]= i-j
mat_new[i]
[n-2
-k]=
max#根據算出來的每一階段的最優**不斷更新**表與最佳選擇表
print
("最大盈利為:"
)print
(mat_new[m-1]
[0])
print
("最佳分配方案為:"
)print
(bestchoice[m-1]
[0])
for i in
range
(n-2):
print
(bestchoice[m-1]
[i+1
]- bestchoice[m-1]
[i+2])
print
(bestchoice[-1
][-1
])
動態規劃 資源分配問題
資源分配問題是考慮如何把有限分配給若干個工程的問題。參考 演算法設計與分析 下面直接貼 為了和書上的內容一致,我的變數名 變數所代表的意思和書上的幾本一致 include include define m 8 可分配資源份額 define n 3 工程專案個數 using namespace std...
動態規劃 資源分配
動態規劃的決策不是線性的而是全面考慮到各種不同情況分別進行決策,最後通過多階段決策逐步找出問題最優解。而當前決策也會依賴於上一階段的決策,此時便會發生狀態的轉移。動態規劃演算法可以說是一種 聰明的蠻力法 因為動態規劃是會考慮到每一種可能,而聰明的地方是相對於蠻力法,它去掉了很多沒必要的運算。例1 資...
43 動態規劃 機器分配問題
import random as rd from pyscipopt import model,quicksum def sub ll print l,digit s for i in range len l s s str l i temp l i digit temp 1 while temp ...