他用z_k,u_k,目的就是去掉约束条件里面的max(y_j * x),z_k,u_k都是auxiliary variables,需要和x,\zeta一起解出来
你把v = (x,z,u,\zeta)看成一个整个要求的向量
objective function现在就是
1/dC * y_N * x + 0 * z + 0 * u + 0 * \zeta
0是1 by N vector,z,u都是N by 1 vector,y_N是1 by m vector,x是m by 1 vector
相当于c * v,c是(y_N,0),1 by (m + 2 * N + 1) vector,v是(x, z,u,\zeta),(m + 2 * N + 1) by 1 vector
然后把所有的约束条件写成A * v <= b的形式,比如第二条z_k >= u_k - y_k * x - \zeta,现在写成
- y_{1,1} * x_1 - y_{1,2} * x_2 - ... - y_{1,m} * x_m + 1 * z_1 + 0 * z_2 + ... + 0 * z_N + 1 * u_1 + 0 * u_2 + ... + 0 * u_N - \zeta <= 0
- y_{2,1} * x_1 - y_{2,2} * x_2 - ... - y_{2,m} * x_m + 0 * z_1 + 1 * z_2 + ... + 0 * z_N + 0 * u_1 + 1 * u_2 + ... + 0 * u_N - \zeta <= 0
...
- y_{N,1} * x_1 - y_{N,2} * x_2 - ... - y_{N,m} * x_m + 0 * z_1 + 0 *z_2 + ... + 1 * z_N + 0 * u_1 + 0 * u_2 + ... + 1 * u_N - \zeta <= 0
以此类推,所以你最后拿到一个巨大的sparse matrix A
最后的形式是
max c * v
s.t. A * v <= b
标准的linear programming,用linprog
[此贴子已经被作者于2007-4-4 13:17:03编辑过]