我想優化一組框w.r.t的佈局。他們的衣架地點s.t.箱子與衣架大部分對齊,不會互相擠出。使用quadprog。quadprog無法找到一個解決方案
吉文斯:
1. box hanger x-locations (P). =710 850 990 1130
2. box-sizes (W). =690 550 690 130
3. usable x-spread tuple (S). =-150 2090
4. number of boxes (K). =4
5. minimum interbox spread (G). =50
6. box x-locations (X). =objective
我們可以看到,所需的總的X傳播是總和(W)+ 3G = 2060 + 150 = 2210,而可用的x傳播是S [2] - S 1 = 2240.所以,應該存在一個解決方案。
敏:
sumof (P[i] – X[i])^2
s.t.:
(1)X [I + 1] - X [I]> = G +½(W [I + 1] + W [1]); I = 1 ..(K-1),即框不排擠彼此
-X[i] + X[i+1] >= -(-G – ½ (W[i+1] + W[i]))
(2)X 1> = S [左] +½W¯¯1,和(3)X [K ] < = S [右] - ½W [K],即,盒是內給定的x傳播
X[1] >= - (S[left] + ½ W[1])
-X[K] >= - (S[right] – ½ W[K])
總共5個約束 - 3爲盒間傳播,和2四肢。
在R:
> Dmat = matrix(0,4,4)
> diag(Dmat) = 1
> dvec = P, the hanger locations
[1] 710 850 990 1130
> bvec
[1] -670 -670 -460 -195 2025
> t(Amat)
[,1] [,2] [,3] [,4]
[1,] -1 1 0 0
[2,] 0 -1 1 0
[3,] 0 0 -1 1
[4,] 1 0 0 0
[5,] 0 0 0 -1
> solve.QP(Dmat, dvec, Amat, bvec)
Error in solve.QP(Dmat, dvec, Amat, bvec) :
constraints are inconsistent, no solution!
很顯然我已經錯過或誤規定的問題(Package 'quadprog')!我正在使用quadprog,因爲我找到了它的JavaScript端口。
非常感謝。
你的聲明,S [2] - S1 = 2240不是S的給定值正確[1]和S [2]。然而,如果你改變了S [1]的符號,那麼S [1] = -150,那麼你的數學運作並求解。QP返回一個解。 – WaltS
你是對的,應該是-150。 – Dinesh