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.

8.1. PORTFOLIO OPTIMIZATION 103<br />

15<br />

16 def streamprinter(text):<br />

17 print("%s" % text),<br />

18<br />

19 if name == ’ main ’:<br />

20<br />

21 n = 3<br />

22 gamma = 0.05<br />

23 mu = [0.1073, 0.0737, 0.0627]<br />

24 GT = [[0.1667, 0.0232, 0.0013],<br />

25 [0.0000, 0.1033, -0.0022],<br />

26 [0.0000, 0.0000, 0.0338]]<br />

27 x0 = [0.0, 0.0, 0.0]<br />

28 w = 1.0<br />

29<br />

30 inf = 0.0 # This value has no significance<br />

31<br />

32 with mosek.Env() as env:<br />

33 with env.Task(0,0) as task:<br />

34 task.set Stream(mosek.streamtype.log,streamprinter)<br />

35<br />

36 rtemp = w<br />

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

38 rtemp += x0[j]<br />

39<br />

40 # Constraints.<br />

41 task.appendcons(1+n)<br />

42 task.putconbound(0,mosek.boundkey.fx,rtemp,rtemp)<br />

43 task.putconname(0,"budget")<br />

44<br />

45 task.putconboundlist(range(1+0,1+n),n*[mosek.boundkey.fx],n*[0.0],n*[0.0])<br />

46 for j in range(1,1+n) :<br />

47 task.putconname(j,"GT[%d]" % j)<br />

48<br />

49 # Variables.<br />

50 task.appendvars(1+2*n)<br />

51<br />

52 # Offset of variables into the <strong>API</strong> variable.<br />

53 offsetx = 0<br />

54 offsets = n<br />

55 offsett = n+1<br />

56<br />

57 # x variables.<br />

58 task.putclist(range(offsetx+0,offsetx+n),mu)<br />

59 task.putaijlist(n*[0],range(offsetx+0,offsetx+n),n*[1.0])<br />

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

61 task.putaijlist(n*[1+j],range(offsetx+0,offsetx+n),GT[j])<br />

62<br />

63 task.putvarboundlist(range(offsetx+0,offsetx+n),n*[mosek.boundkey.lo],n*[0.0],n*[inf])<br />

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

65 task.putvarname(offsetx+j,"x[%d]" % (1+j))<br />

66<br />

67 # s variable.<br />

68 task.putvarbound(offsets+0,mosek.boundkey.fx,gamma,gamma)<br />

69 task.putvarname(offsets+0,"s")<br />

70<br />

71 # t variables.<br />

72 task.putaijlist(range(1,n+1),range(offsett+0,offsett+n),n*[-1.0])

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

Saved successfully!

Ooh no, something went wrong!