The MOSEK Python optimizer API manual Version 7.0 (Revision 141)
Optimizer API for Python - Documentation - Mosek Optimizer API for Python - Documentation - Mosek
368 APPENDIX A. API REFERENCE A.3.12 Env.putlicensepath() Env.putlicensepath(licensepath) Set the path to the license file. Arguments licensepath : str A path specifycing where to search for the license. Description: Set the path to the license file. A.3.13 Env.putlicensewait() Env.putlicensewait(licwait) Control whether mosek should wait for an available license if no license is available. Arguments licwait : int If this argument is non-zero, then MOSEK will wait for a license if no license is available. Moreover, licwait-1 is the number of milliseconds to wait between each check for an available license. Description: If licwait is non-zero, then MOSEK will wait for a license if no license is available. Moreover, licwait-1 is the number of milliseconds to wait between each check for an available license. A.4 Callback functions and related methods Callbacks from task methods are performed by attaching a function to the task object. A.4.1 Progress callback When MOSEK is optimizing or doing other tasks that may potentially take a long time, it is possible to recieve periodical calls from MOSEK indicating the current status. This achieved by attaching a callback handler to the task. A callback handler is simply a function that accepts one integer argument and returns an integer.
A.4. CALLBACK FUNCTIONS AND RELATED METHODS 369 The argument is an integer indicating the current location in MOSEK. If the function returns a nonzero value or raises an exception, MOSEK will attempt to stop the current task and return as fast as possible. def myCallback(caller, dinf, iinf, liinf): print "Caller : %d, intpnt iteration = %d" % (caller, iinf[iinfitem.intpnt iter]) return 0 task.set Progress(myCallback) The arguments dinf, iinf and liinf are arrays of values containing information items for the current state of the solver. The Progress callback can be detached by calling task.set Progress(None) NOTE: Due to the way the Python garbage collector works, it is necessary to hold a reference to the callback function for the duration of the lifetime of the Task object. This means that a construction as #NOTE: WRONG way to attach callback! task.set Progress(lambda caller, dinf, iinf, liinf: print "Caller : %d" % caller) will not work. A.4.2 Stream callback Text written to specific MOSEK streams can be intercepted by attaching a stream handler to the specific stream. A stream handler is simply a function that accepts one string argument. To attach a stream callback to a Task, use: def myStream(msg): sys.stdout.write(msg) sys.stdout.flush() task.set Stream(streamtype.log,myStream) The Stream object can be detached by calling task.set Stream(None) In this example we attached to the log stream; see streamtype for other options. NOTE: As for Progress callbacks, it is necessary to hold a reference to the callback function for the duration of the lifetime of the Task or ttEnv object.
- Page 339 and 340: A.2. CLASS TASK 317 bkc : boundkey
- Page 341 and 342: A.2. CLASS TASK 319 Arguments j : i
- Page 343 and 344: A.2. CLASS TASK 321 parvalue : int
- Page 345 and 346: A.2. CLASS TASK 323 A.2.207 Task.pu
- Page 347 and 348: A.2. CLASS TASK 325 Sets a string p
- Page 349 and 350: A.2. CLASS TASK 327 Description: Re
- Page 351 and 352: A.2. CLASS TASK 329 qosubj : int[]
- Page 353 and 354: A.2. CLASS TASK 331 Sets the status
- Page 355 and 356: A.2. CLASS TASK 333 A.2.224 Task.pu
- Page 357 and 358: A.2. CLASS TASK 335 Arguments sux :
- Page 359 and 360: A.2. CLASS TASK 337 y : double[] Ve
- Page 361 and 362: A.2. CLASS TASK 339 A.2.233 Task.pu
- Page 363 and 364: A.2. CLASS TASK 341 last : int Last
- Page 365 and 366: A.2. CLASS TASK 343 See also • Ta
- Page 367 and 368: A.2. CLASS TASK 345 A.2.243 Task.pu
- Page 369 and 370: A.2. CLASS TASK 347 Description: Se
- Page 371 and 372: A.2. CLASS TASK 349 Sets a slice of
- Page 373 and 374: A.2. CLASS TASK 351 A.2.254 Task.re
- Page 375 and 376: A.2. CLASS TASK 353 wux : double[]
- Page 377 and 378: A.2. CLASS TASK 355 See also • Ta
- Page 379 and 380: A.2. CLASS TASK 357 isdef : int Is
- Page 381 and 382: A.2. CLASS TASK 359 A.2.269 Task.st
- Page 383 and 384: A.2. CLASS TASK 361 Description: Wr
- Page 385 and 386: A.3. CLASS ENV 363 A.2.278 Task.wri
- Page 387 and 388: A.3. CLASS ENV 365 Arguments code :
- Page 389: A.3. CLASS ENV 367 Arguments keepdl
- Page 393 and 394: A.6. ALL FUNCTIONS BY NAME 371 Task
- Page 395 and 396: A.6. ALL FUNCTIONS BY NAME 373 Task
- Page 397 and 398: A.6. ALL FUNCTIONS BY NAME 375 Task
- Page 399 and 400: A.6. ALL FUNCTIONS BY NAME 377 Task
- Page 401 and 402: A.6. ALL FUNCTIONS BY NAME 379 Task
- Page 403 and 404: A.6. ALL FUNCTIONS BY NAME 381 Task
- Page 405 and 406: A.6. ALL FUNCTIONS BY NAME 383 Task
- Page 407 and 408: A.6. ALL FUNCTIONS BY NAME 385 Task
- Page 409 and 410: A.6. ALL FUNCTIONS BY NAME 387 Task
- Page 411 and 412: Appendix B Parameters Parameters gr
- Page 413 and 414: 391 • iparam.log file. If turned
- Page 415 and 416: 393 • dparam.intpnt nl tol rel st
- Page 417 and 418: 395 • iparam.mio construct sol. C
- Page 419 and 420: 397 • dparam.intpnt nl tol mu red
- Page 421 and 422: 399 • iparam.mio mode. Turns on/o
- Page 423 and 424: 401 • iparam.sim solve form. Cont
- Page 425 and 426: B.1. DPARAM: DOUBLE PARAMETERS 403
- Page 427 and 428: B.1. DPARAM: DOUBLE PARAMETERS 405
- Page 429 and 430: B.1. DPARAM: DOUBLE PARAMETERS 407
- Page 431 and 432: B.1. DPARAM: DOUBLE PARAMETERS 409
- Page 433 and 434: B.1. DPARAM: DOUBLE PARAMETERS 411
- Page 435 and 436: B.1. DPARAM: DOUBLE PARAMETERS 413
- Page 437 and 438: B.1. DPARAM: DOUBLE PARAMETERS 415
- Page 439 and 440: B.1. DPARAM: DOUBLE PARAMETERS 417
A.4. CALLBACK FUNCTIONS AND RELATED METHODS 369<br />
<strong>The</strong> argument is an integer indicating the current location in <strong>MOSEK</strong>. If the function returns a nonzero<br />
value or raises an exception, <strong>MOSEK</strong> will attempt to stop the current task and return as fast as<br />
possible.<br />
def myCallback(caller, dinf, iinf, liinf):<br />
print "Caller : %d, intpnt iteration = %d" % (caller, iinf[iinfitem.intpnt iter])<br />
return 0<br />
task.set Progress(myCallback)<br />
<strong>The</strong> arguments dinf, iinf and liinf are arrays of values containing information items for the current<br />
state of the solver.<br />
<strong>The</strong> Progress callback can be detached by calling<br />
task.set Progress(None)<br />
NOTE: Due to the way the <strong>Python</strong> garbage collector works, it is necessary to hold a reference to the<br />
callback function for the duration of the lifetime of the Task object. This means that a construction<br />
as<br />
#NOTE: WRONG way to attach callback!<br />
task.set Progress(lambda caller, dinf, iinf, liinf: print "Caller : %d" % caller)<br />
will not work.<br />
A.4.2<br />
Stream callback<br />
Text written to specific <strong>MOSEK</strong> streams can be intercepted by attaching a stream handler to the<br />
specific stream. A stream handler is simply a function that accepts one string argument.<br />
To attach a stream callback to a Task, use:<br />
def myStream(msg):<br />
sys.stdout.write(msg)<br />
sys.stdout.flush()<br />
task.set Stream(streamtype.log,myStream)<br />
<strong>The</strong> Stream object can be detached by calling<br />
task.set Stream(None)<br />
In this example we attached to the log stream; see streamtype for other options.<br />
NOTE: As for Progress callbacks, it is necessary to hold a reference to the callback function for the<br />
duration of the lifetime of the Task or ttEnv object.