The MOSEK Python optimizer API manual Version 7.0 (Revision 141)
Optimizer API for Python - Documentation - Mosek Optimizer API for Python - Documentation - Mosek
94 CHAPTER 7. ADVANCED API TUTORIAL 31 # Since the value infinity is never used, we define 32 # ’infinity’ symbolic purposes only 33 infinity = 0 34 35 skx = [mosek.stakey.bas] * numvar 36 skc = [mosek.stakey.fix] * numvar 37 38 task.appendvars(numvar) 39 task.appendcons(numvar) 40 41 42 for i in range(len(asub)): 43 task.putacol(i,asub[i],aval[i]) 44 45 for i in range(numvar): 46 task.putconbound(i,mosek.boundkey.fx,0.0,0.0) 47 48 for i in range(numvar): 49 task.putvarbound(i, 50 mosek.boundkey.fr, 51 -infinity, 52 infinity) 53 54 # Define a basic solution by specifying 55 # status keys for variables & constraints. 56 57 for i in range(numvar): 58 task.putsolutioni (mosek.accmode.var, 59 i, 60 mosek.soltype.bas, 61 skx[i], 62 0.0, 63 0.0, 64 0.0, 65 0.0) 66 67 for i in range(numvar): 68 task.putsolutioni (mosek.accmode.con, 69 i, 70 mosek.soltype.bas, 71 skc[i], 72 0.0, 73 0.0, 74 0.0, 75 0.0) 76 77 task.initbasissolve(basis) 78 79 80 81 def main(): 82 numcon = 2 83 numvar = 2 84 85 aval = [ [ -1.0 ], 86 [ 1.0, 1.0 ] ] 87 asub = [ [ 1 ], 88 [ 0, 1 ] ]
7.2. SOLVING LINEAR SYSTEMS INVOLVING THE BASIS MATRIX 95 89 90 ptrb = [ 0,1 ] 91 ptre = [ 1,3 ] 92 93 #int[] bsub = new int[numvar]; 94 #double[] b = new double[numvar]; 95 #int[] basis = new int[numvar]; 96 97 98 with mosek.Env() as env: 99 with mosek.Task(env) as task: 100 # Directs the log task stream to the user specified 101 # method task msg obj.streamCB 102 task.set Stream(mosek.streamtype.log, 103 lambda msg : sys.stdout.write(msg)) 104 # Put A matrix and factor A. 105 # Call this function only once for a given task. 106 107 basis = [0] * numvar 108 b = [ 0.0, -2.0 ] 109 bsub = [ 0, 1 ] 110 111 put a(task, 112 aval, 113 asub, 114 ptrb, 115 ptre, 116 numvar, 117 basis) 118 119 # now solve rhs 120 b = [ 1, -2] 121 bsub = [ 0, 1 ] 122 nz = task.solvewithbasis(0,2,bsub,b) 123 print("\nSolution to Bx = b:\n") 124 125 # Print solution and show correspondents 126 # to original variables in the problem 127 for i in range(nz): 128 if basis[bsub[i]] < numcon: 129 print("This should never happen") 130 else: 131 print("x%d = %d" % (basis[bsub[i]] - numcon, b[bsub[i]])) 132 133 b[0] = 7 134 bsub[0] = 0 135 136 nz = task.solvewithbasis(0,1,bsub,b); 137 138 print("\nSolution to Bx = b:\n") 139 # Print solution and show correspondents 140 # to original variables in the problem 141 for i in range(nz): 142 if basis[bsub[i]] < numcon: 143 print ("This should never happen") 144 else: 145 print ("x%d = %d" % (basis[bsub[i]] - numcon, b[bsub[i]] )) 146
- Page 65 and 66: 5.4. SEMIDEFINITE OPTIMIZATION 43 1
- Page 67 and 68: 5.5. QUADRATIC OPTIMIZATION 45 with
- Page 69 and 70: 5.5. QUADRATIC OPTIMIZATION 47 68 #
- Page 71 and 72: 5.5. QUADRATIC OPTIMIZATION 49 5.5.
- Page 73 and 74: 5.5. QUADRATIC OPTIMIZATION 51 81 a
- Page 75 and 76: 5.6. THE SOLUTION SUMMARY 53 • Th
- Page 77 and 78: 5.7. INTEGER OPTIMIZATION 55 21 # f
- Page 79 and 80: 5.7. INTEGER OPTIMIZATION 57 137 sy
- Page 81 and 82: 5.8. THE SOLUTION SUMMARY FOR MIXED
- Page 83 and 84: 5.9. RESPONSE HANDLING 61 Note that
- Page 85 and 86: 5.10. PROBLEM MODIFICATION AND REOP
- Page 87 and 88: 5.10. PROBLEM MODIFICATION AND REOP
- Page 89 and 90: 5.11. SOLUTION ANALYSIS 67 151 # Pu
- Page 91 and 92: 5.13. CONVENTIONS EMPLOYED IN THE A
- Page 93 and 94: 5.13. CONVENTIONS EMPLOYED IN THE A
- Page 95 and 96: 5.13. CONVENTIONS EMPLOYED IN THE A
- Page 97 and 98: 5.13. CONVENTIONS EMPLOYED IN THE A
- Page 99 and 100: Chapter 6 Nonlinear API tutorial Th
- Page 101 and 102: 6.1. SEPARABLE CONVEX (SCOPT) INTER
- Page 103 and 104: 6.1. SEPARABLE CONVEX (SCOPT) INTER
- Page 105 and 106: 6.1. SEPARABLE CONVEX (SCOPT) INTER
- Page 107 and 108: Chapter 7 Advanced API tutorial Thi
- Page 109 and 110: 7.1. THE PROGRESS CALL-BACK 87 71 p
- Page 111 and 112: 7.2. SOLVING LINEAR SYSTEMS INVOLVI
- Page 113 and 114: 7.2. SOLVING LINEAR SYSTEMS INVOLVI
- Page 115: 7.2. SOLVING LINEAR SYSTEMS INVOLVI
- Page 119 and 120: Chapter 8 A case study 8.1 Portfoli
- Page 121 and 122: 8.1. PORTFOLIO OPTIMIZATION 99 e T
- Page 123 and 124: 8.1. PORTFOLIO OPTIMIZATION 101 is
- Page 125 and 126: 8.1. PORTFOLIO OPTIMIZATION 103 15
- Page 127 and 128: 8.1. PORTFOLIO OPTIMIZATION 105 63
- Page 129 and 130: 8.1. PORTFOLIO OPTIMIZATION 107 8.1
- Page 131 and 132: 8.1. PORTFOLIO OPTIMIZATION 109 110
- Page 133 and 134: 8.1. PORTFOLIO OPTIMIZATION 111 z j
- Page 135 and 136: 8.1. PORTFOLIO OPTIMIZATION 113 Var
- Page 137 and 138: 8.1. PORTFOLIO OPTIMIZATION 115 56
- Page 139 and 140: 8.1. PORTFOLIO OPTIMIZATION 117 172
- Page 141 and 142: Chapter 9 Usage guidelines The purp
- Page 143 and 144: 9.3. WRITING TASK DATA TO A FILE 12
- Page 145 and 146: Chapter 10 Problem formulation and
- Page 147 and 148: 10.1. LINEAR OPTIMIZATION 125 be a
- Page 149 and 150: 10.2. CONIC QUADRATIC OPTIMIZATION
- Page 151 and 152: 10.2. CONIC QUADRATIC OPTIMIZATION
- Page 153 and 154: 10.3. SEMIDEFINITE OPTIMIZATION 131
- Page 155 and 156: 10.4. QUADRATIC AND QUADRATICALLY C
- Page 157 and 158: Chapter 11 The optimizers for conti
- Page 159 and 160: 11.1. HOW AN OPTIMIZER WORKS 137 11
- Page 161 and 162: 11.2. LINEAR OPTIMIZATION 139 11.2.
- Page 163 and 164: 11.2. LINEAR OPTIMIZATION 141 Whene
- Page 165 and 166: 11.2. LINEAR OPTIMIZATION 143 11.2.
94 CHAPTER 7. ADVANCED <strong>API</strong> TUTORIAL<br />
31 # Since the value infinity is never used, we define<br />
32 # ’infinity’ symbolic purposes only<br />
33 infinity = 0<br />
34<br />
35 skx = [mosek.stakey.bas] * numvar<br />
36 skc = [mosek.stakey.fix] * numvar<br />
37<br />
38 task.appendvars(numvar)<br />
39 task.appendcons(numvar)<br />
40<br />
41<br />
42 for i in range(len(asub)):<br />
43 task.putacol(i,asub[i],aval[i])<br />
44<br />
45 for i in range(numvar):<br />
46 task.putconbound(i,mosek.boundkey.fx,0.0,0.0)<br />
47<br />
48 for i in range(numvar):<br />
49 task.putvarbound(i,<br />
50 mosek.boundkey.fr,<br />
51 -infinity,<br />
52 infinity)<br />
53<br />
54 # Define a basic solution by specifying<br />
55 # status keys for variables & constraints.<br />
56<br />
57 for i in range(numvar):<br />
58 task.putsolutioni (mosek.accmode.var,<br />
59 i,<br />
60 mosek.soltype.bas,<br />
61 skx[i],<br />
62 0.0,<br />
63 0.0,<br />
64 0.0,<br />
65 0.0)<br />
66<br />
67 for i in range(numvar):<br />
68 task.putsolutioni (mosek.accmode.con,<br />
69 i,<br />
70 mosek.soltype.bas,<br />
71 skc[i],<br />
72 0.0,<br />
73 0.0,<br />
74 0.0,<br />
75 0.0)<br />
76<br />
77 task.initbasissolve(basis)<br />
78<br />
79<br />
80<br />
81 def main():<br />
82 numcon = 2<br />
83 numvar = 2<br />
84<br />
85 aval = [ [ -1.0 ],<br />
86 [ 1.0, 1.0 ] ]<br />
87 asub = [ [ 1 ],<br />
88 [ 0, 1 ] ]