25.11.2015 Views

The MOSEK Python optimizer API manual Version 7.0 (Revision 141)

Optimizer API for Python - Documentation - Mosek

Optimizer API for Python - Documentation - Mosek

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

116 CHAPTER 8. A CASE STUDY<br />

114 task.putaijlist(range(1+6*n+2,1+9*n+2,3),range(offsetv,offsetv+n),n*[1.0])<br />

115 task.putvarboundlist(range(offsetv,offsetv+n),n*[mosek.boundkey.fr],n*[-inf],n*[inf])<br />

116 for j in range(0,n):<br />

117 task.putvarname(offsetv+j,"v[%d]" % (1+j))<br />

118<br />

119 # z variables.<br />

120 task.putaijlist(range(1+1*n,1+2*n),range(offsetz,offsetz+n),n*[1.0])<br />

121 task.putaijlist(range(1+2*n,1+3*n),range(offsetz,offsetz+n),n*[1.0])<br />

122 task.putaijlist(range(1+3*n+2,1+6*n+2,3),range(offsetz,offsetz+n),n*[1.0])<br />

123 task.putaijlist(range(1+6*n+0,1+9*n+0,3),range(offsetz,offsetz+n),n*[1.0])<br />

124 task.putvarboundlist(range(offsetz,offsetz+n),n*[mosek.boundkey.fr],n*[-inf],n*[inf])<br />

125 for j in range(0,n):<br />

126 task.putvarname(offsetz+j,"z[%d]" % (1+j))<br />

127<br />

128 # f variables.<br />

129 for j in range(0,n):<br />

130 for k in range(0,n):<br />

131 task.putaij(1+3*n+3*j+k,offsetf+3*j+k,-1.0)<br />

132 task.putvarbound(offsetf+3*j+k,mosek.boundkey.fr,-inf,inf)<br />

133 task.putvarname(offsetf+3*j+k,"f[%d,%d]" % (1+j,1+k))<br />

134<br />

135 # g variables.<br />

136 for j in range(0,n):<br />

137 for k in range(0,n):<br />

138 task.putaij(1+6*n+3*j+k,offsetg+3*j+k,-1.0)<br />

139 task.putvarbound(offsetg+3*j+k,mosek.boundkey.fr,-inf,inf)<br />

140 task.putvarname(offsetg+3*j+k,"g[%d,%d]" % (1+j,1+k))<br />

<strong>141</strong><br />

142 task.appendcone(mosek.conetype.quad,0.0,[offsets] + range(offsett,offsett+n))<br />

143 task.putconename(0,"stddev")<br />

144<br />

145 for k in range(0,n):<br />

146 task.appendconeseq(mosek.conetype.rquad,0.0,3,offsetf+3*k)<br />

147 task.putconename(1+k,"f[%d]" % (1+k))<br />

148<br />

149 for k in range(0,n):<br />

150 task.appendconeseq(mosek.conetype.rquad,0.0,3,offsetg+3*k)<br />

151 task.putconename(1+n+k,"g[%d]" % (1+k))<br />

152<br />

153 task.putobjsense(mosek.objsense.maximize)<br />

154<br />

155 # Turn all log output off.<br />

156 # task.putintparam(mosek.iparam.log,0)<br />

157<br />

158 # Dump the problem to a human readable OPF file.<br />

159 #task.writedata("dump.opf")<br />

160<br />

161 task.optimize()<br />

162<br />

163 # Display the solution summary for quick inspection of results.<br />

164 task.solutionsummary(mosek.streamtype.msg)<br />

165<br />

166 expret = 0.0<br />

167 x = zeros(n,float)<br />

168 task.getxxslice(mosek.soltype.itr,offsetx+0,offsetx+n,x)<br />

169 for j in range(0,n):<br />

170 expret += mu[j]*x[j]<br />

171

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!