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.

5.5. QUADRATIC OPTIMIZATION 51<br />

81 asub[j], # Row index of non-zeros in column j.<br />

82 aval[j]) # Non-zero Values of column j.<br />

83<br />

84 for i in range(numcon):<br />

85 task.putbound(mosek.accmode.con,i,bkc[i],blc[i],buc[i])<br />

86<br />

87 # Set up and input quadratic objective<br />

88<br />

89 qsubi = [ 0, 1, 2, 2 ]<br />

90 qsubj = [ 0, 1, 0, 2 ]<br />

91 qval = [ 2.0, 0.2, -1.0, 2.0 ]<br />

92<br />

93 task.putqobj(qsubi,qsubj,qval)<br />

94<br />

95 # <strong>The</strong> lower triangular part of the Q^0<br />

96 # matrix in the first constraint is specified.<br />

97 # This corresponds to adding the term<br />

98 # - x0^2 - x1^2 - 0.1 x2^2 + 0.2 x0 x2<br />

99<br />

100 qsubi = [ 0, 1, 2, 2 ]<br />

101 qsubj = [ 0, 1, 2, 0 ]<br />

102 qval = [ -2.0, -2.0, -0.2, 0.2 ]<br />

103<br />

104 # put Q^0 in constraint with index 0.<br />

105<br />

106 task.putqconk (0, qsubi,qsubj, qval);<br />

107<br />

108 # Input the objective sense (minimize/maximize)<br />

109 task.putobjsense(mosek.objsense.minimize)<br />

110<br />

111 # Optimize the task<br />

112 task.optimize()<br />

113<br />

114 # Print a summary containing information<br />

115 # about the solution for debugging purposes<br />

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

117<br />

118 prosta = task.getprosta(mosek.soltype.itr)<br />

119 solsta = task.getsolsta(mosek.soltype.itr)<br />

120<br />

121 # Output a solution<br />

122 xx = zeros(numvar, float)<br />

123 task.getxx(mosek.soltype.itr,<br />

124 xx)<br />

125<br />

126 if solsta == mosek.solsta.optimal or solsta == mosek.solsta.near optimal:<br />

127 print("Optimal solution: %s" % xx)<br />

128 elif solsta == mosek.solsta.dual infeas cer:<br />

129 print("Primal or dual infeasibility.\n")<br />

130 elif solsta == mosek.solsta.prim infeas cer:<br />

131 print("Primal or dual infeasibility.\n")<br />

132 elif solsta == mosek.solsta.near dual infeas cer:<br />

133 print("Primal or dual infeasibility.\n")<br />

134 elif solsta == mosek.solsta.near prim infeas cer:<br />

135 print("Primal or dual infeasibility.\n")<br />

136 elif mosek.solsta.unknown:<br />

137 print("Unknown solution status")<br />

138 else:

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

Saved successfully!

Ooh no, something went wrong!