@@ -2,7 +2,7 @@ function t_opf_dc_mosek(quiet)
2
2
% t_opf_dc_mosek - Tests for legacy DC optimal power flow using MOSEK solver.
3
3
4
4
% MATPOWER
5
- % Copyright (c) 2004-2024 , Power Systems Engineering Research Center (PSERC)
5
+ % Copyright (c) 2004-2025 , Power Systems Engineering Research Center (PSERC)
6
6
% by Ray Zimmerman, PSERC Cornell
7
7
%
8
8
% This file is part of MATPOWER.
@@ -17,63 +17,33 @@ function t_opf_dc_mosek(quiet)
17
17
18
18
if s .av
19
19
sc = mosek_symbcon ;
20
- if s .vnum < 7
21
- alg_names = { %% version 6.x
22
- ' default' , %% 0 : MSK_OPTIMIZER_FREE
23
- ' interior point' , %% 1 : MSK_OPTIMIZER_INTPNT
24
- ' <conic>' , %% 2 : MSK_OPTIMIZER_CONIC
25
- ' <qcone>' , %% 3 : MSK_OPTIMIZER_QCONE
26
- ' primal simplex' , %% 4 : MSK_OPTIMIZER_PRIMAL_SIMPLEX
27
- ' dual simplex' , %% 5 : MSK_OPTIMIZER_DUAL_SIMPLEX
28
- ' primal dual simplex' , %% 6 : MSK_OPTIMIZER_PRIMAL_DUAL_SIMPLEX
29
- ' automatic simplex' , %% 7 : MSK_OPTIMIZER_FREE_SIMPLEX
30
- ' <mixed int>' , %% 8 : MSK_OPTIMIZER_MIXED_INT
31
- ' <nonconvex>' , %% 9 : MSK_OPTIMIZER_NONCONVEX
32
- ' concurrent' %% 10 : MSK_OPTIMIZER_CONCURRENT
33
- };
34
- elseif s .vnum < 8
35
- alg_names = { %% version 7.x
36
- ' default' , %% 0 : MSK_OPTIMIZER_FREE
37
- ' interior point' , %% 1 : MSK_OPTIMIZER_INTPNT
38
- ' <conic>' , %% 2 : MSK_OPTIMIZER_CONIC
39
- ' primal simplex' , %% 3 : MSK_OPTIMIZER_PRIMAL_SIMPLEX
40
- ' dual simplex' , %% 4 : MSK_OPTIMIZER_DUAL_SIMPLEX
41
- ' primal dual simplex' , %% 5 : MSK_OPTIMIZER_PRIMAL_DUAL_SIMPLEX
42
- ' automatic simplex' , %% 6 : MSK_OPTIMIZER_FREE_SIMPLEX
43
- ' network simplex' , %% 7 : MSK_OPTIMIZER_NETWORK_PRIMAL_SIMPLEX
44
- ' <mixed int conic>' , %% 8 : MSK_OPTIMIZER_MIXED_INT_CONIC
45
- ' <mixed int>' , %% 9 : MSK_OPTIMIZER_MIXED_INT
46
- ' concurrent' , %% 10 : MSK_OPTIMIZER_CONCURRENT
47
- ' <nonconvex>' %% 11 : MSK_OPTIMIZER_NONCONVEX
48
- };
49
- else
50
- alg_names = { %% version 8.x
51
- ' <conic>' , %% 0 : MSK_OPTIMIZER_CONIC
52
- ' dual simplex' , %% 1 : MSK_OPTIMIZER_DUAL_SIMPLEX
53
- ' default' , %% 2 : MSK_OPTIMIZER_FREE
54
- ' automatic simplex' , %% 3 : MSK_OPTIMIZER_FREE_SIMPLEX
55
- ' interior point' , %% 4 : MSK_OPTIMIZER_INTPNT
56
- ' <mixed int>' , %% 5 : MSK_OPTIMIZER_MIXED_INT
57
- ' primal simplex' %% 6 : MSK_OPTIMIZER_PRIMAL_SIMPLEX
58
- };
59
- end
60
- algs = [ %% v6.x v7.x v8.x
61
- sc .MSK_OPTIMIZER_FREE ; %% 0 0 2
62
- sc .MSK_OPTIMIZER_INTPNT ; %% 1 1 4
63
- sc .MSK_OPTIMIZER_PRIMAL_SIMPLEX ; %% 4 3 6
64
- sc .MSK_OPTIMIZER_DUAL_SIMPLEX ; %% 5 4 1
65
- sc .MSK_OPTIMIZER_FREE_SIMPLEX ; %% 7 6 3
66
- ];
20
+
21
+ alg_name = struct( ...
22
+ ' FREE' , ' default' , ... % v6-11
23
+ ' INTPNT' , ' interior point' , ... % v6-11
24
+ ' CONIC' , ' <conic>' , ... % v6-11
25
+ ' QCONE' , ' <qcone>' , ... % v6
26
+ ' PRIMAL_SIMPLEX' , ' primal simplex' , ... % v6-11
27
+ ' DUAL_SIMPLEX' , ' dual simplex' , ... % v6-11
28
+ ' PRIMAL_DUAL_SIMPLEX' , ' primal dual simplex' , ... % v6-7
29
+ ' FREE_SIMPLEX' , ' automatic simplex' , ... % v6-11
30
+ ' MIXED_INT' , ' <mixed int>' , ... % v6-11
31
+ ' NONCONVEX' , ' <nonconvex>' , ... % v6-7
32
+ ' CONCURRENT' , ' concurrent' , ... % v6-7
33
+ ' NETWORK_PRIMAL_SIMPLEX' , ' network simplex' , ... % v8
34
+ ' NEW_DUAL_SIMPLEX' , ' new dual simplex' , ... % v11
35
+ ' NEW_PRIMAL_SIMPLEX' , ' new primal simplex' ... % v11
36
+ );
37
+
38
+ %% versions 6.x-11.x
39
+ algs = {' FREE' , ' INTPNT' , ' PRIMAL_SIMPLEX' , ' DUAL_SIMPLEX' , ' FREE_SIMPLEX' };
67
40
if s .vnum < 8
68
- algs(end + 1 ) = ...
69
- sc .MSK_OPTIMIZER_PRIMAL_DUAL_SIMPLEX ; %% 6 5 -
70
- algs(end + 1 ) = ...
71
- sc .MSK_OPTIMIZER_CONCURRENT ; %% 10 10 -
41
+ %% versions 6.x, 7.x
42
+ algs = {algs{: }, ' PRIMAL_DUAL_SIMPLEX' , ' CONCURRENT' };
43
+ elseif s .vnum >= 11 && s .vnum < 12
44
+ %% version 11.x
45
+ algs = {algs{: }, ' NEW_PRIMAL_SIMPLEX' , ' NEW_DUAL_SIMPLEX' };
72
46
end
73
- % if s.vnum >= 7 && s.vnum < 8 %% MOSEK claims OPF is not a network problem
74
- % algs(end+1) = ...
75
- % sc.MSK_OPTIMIZER_NETWORK_PRIMAL_SIMPLEX;%% - 7 -
76
- % end
77
47
else
78
48
algs = 0 ;
79
49
end
@@ -104,8 +74,9 @@ function t_opf_dc_mosek(quiet)
104
74
%% run DC OPF
105
75
if s .av %% if have_feature('mosek')
106
76
for k = 1 : length(algs )
107
- mpopt = mpoption(mpopt , ' mosek.lp_alg' , algs(k ));
108
- t0 = sprintf(' DC OPF (MOSEK %s ): ' , alg_names{algs(k )+1 });
77
+ alg = sc.([' MSK_OPTIMIZER_' algs{k }]);
78
+ mpopt = mpoption(mpopt , ' mosek.lp_alg' , alg );
79
+ t0 = sprintf(' DC OPF (MOSEK %s ): ' , alg_name.(algs{k }));
109
80
110
81
%% set up indices
111
82
ib_data = [1 : BUS_AREA BASE_KV : VMIN ];
0 commit comments