編譯後帶有示例。
qpoases是乙個可結構開發的有效集qp求解器(structure-exploiting active-set qp solver)。 本文詳細介紹了如何選擇最有效的qpoases求解方案,來求解特定型別的qp。 為此,可以使用三個與qproblem類相似,且具有過載建構函式的類。
通常qpoases期望qp以下列標準形式出現:
x mi
n12x
thx+
xtg(
w0)s
.t.l
ba(w
0)≤a
x≤ub
a(w0
)lb(
w0)≤
x≤ub
(w0)
_^\ \ \ \ \ \fracx^hx+x^g(w_0)\\ s.t.\ \ lba(w_0)\leq ax\leq uba(w_0)\\ \ \ \ \ \ \ \ lb(w_0)\leq x\leq ub(w_0)
xmin2
1xt
hx+x
tg(w
0)s
.t.l
ba(w
0)≤
ax≤u
ba(w
0)l
b(w0
)≤x
≤ub(
w0)
如果您的qp中使用(半)正定的hessian矩陣h
hh,您應該簡單地使用標準qproblem類。假如,你的qp符合以下要求,那麼他也可以有效的求解:
通過使用sqproblem類的建構函式和合適的init函式,建立sqproblem類的例項(而不是qproblem)。 兩者都採用與qproblem類完全相同的引數。
呼叫調整後的函式,從乙個qp過渡到下乙個qp。它還將新的hessian矩陣h_new以及新的約束矩陣a_new作為引數。
returnvalue hotstart
(const real_t*
const h_new,
const real_t*
const g_new,
const real_t*
const a_new,
const real_t*
const lb_new,
const real_t*
const ub_new,
const real_t*
const lba_new,
const real_t*
const uba_new,
int_t& nwsr,
real_t*
const cputime
);
可以在檔案/examples/example1a.cpp
中找到使用sqproblem類的完整示例。
當二次規劃不包含約束但有界時,我們稱二次規劃「簡單有界(奇怪的翻譯,為什麼不是 僅僅有界)」,有如下形式:
x mi
n12x
thx+
xtg(
w0)s
.t.l
b(w0
)≤x≤
ub(w
0)
_^\ \ \ \ \ \fracx^hx+x^g(w_0)\\ s.t.\ \ \ \ \ \ lb(w_0)\leq x\leq ub(w_0)
xmin2
1xt
hx+x
tg(w
0)s
.t.l
b(w0
)≤x
≤ub(
w0)
可以在求解演算法中利用這種特殊形式來加速計算,速度通常是標準形式的三到五倍。 因此,qpoases軟體包實現了特殊類qproblemb,用於解決簡單有界的qp。
為了利用此功能,請執行以下操作:
必須使用以下建構函式qproblemb(int_t nv)
建立qproblemb物件;
之後,可以初始化qproblemb物件,同時通過呼叫函式解決第乙個簡單有界的qp,例如:
returnvalue init
(const real_t*
const h,
const real_t*
const g,
const real_t*
const lb,
const real_t*
const ub,
int_t& nwsr,
real_t*
const cputime
);
與qproblem類的唯一區別在於指定約束的引數,即缺少a,lba,uba和nc。
returnvalue hotstart
(const real_t*
const g_new,
const real_t*
const lb_new,
const real_t*
const ub_new,
int_t& nwsr,
real_t*
const cputime
);
同樣,除了兩個引數lba_new,uba_new之外,它與相應的qproblem成員函式具有完全相同的引數。
可以在檔案/examples/example1b.cpp
中找到使用qproblemb類的完整示例。
特殊的OSPF區域型別
本文摘自 ccnp學習指南 bsci 區域的型別決定了它將收到什麼樣的路由資訊。使用末節區域旨在通告預設路由,這樣外部lsa和彙總lsa將不會擴散到該區域中。這將縮小該區域中路由器lsdb和路由選擇表的規模 末節區域 接收鏈路更新和彙總路由,不接受外部路由 主幹區域 將其他區域互聯起來,接收所有ls...
C string 特殊的引用型別
net 框架程式設計 修訂版 中有這樣一段描述 string型別直接繼承自object,這使得它成為乙個引用型別,也就是說執行緒上的堆疊上不會駐留有任何字串。譯註 注意這裡的 直接繼承 直接繼承自object的型別一定是引用型別,因為所有的值型別都繼承自system.valuetype。值得指出的是...
string是特殊的引用型別,特殊在何處
對於string這個引用型別是非常特殊乙個引用型別。它有兩點特殊的地方。第一點物件分配的特殊。例如 string str1 abcd string str2 abcd 那麼.net在分配string型別的時候,先檢視當前string型別列表是否有相同的,如果有的話,直接返回其的引用,否則重新分配。第...