Page 1

The Computational Testing of AC Optimal 

Power Flow Using the Current Voltage 

Formulations 

Optimal Power Flow Paper 3 

Staff paper by 

Richard P. O’Neill 

Anya Castillo 

Mary B. Cain

December 2012

The views presented are the personal views of the authors 

and not the Federal Energy Regulatory Commission or any 

of its Commissioners.

 

 

 

 

 

 
Page 2

 

The Computational Testing of AC Optimal Power Flow 

Using the Current Voltage Formulations 

Optimal Power Flow Paper 3 

Richard P O’Neill, Anya Castillo and Mary Cain 

richard.oneill@ferc.gov; anya.castillo@ferc.gov; mary.cain@ferc.gov

December 2012 

 

 

Abstract and Executive Summary

Solving the iterative linear approximation of the current voltage (IV) ACOPF is 

compared to solving the ILIV-ACOPF with several nonlinear solvers. In general, the 

linear approximation approach is more robust and faster than several of the 

commercial nonlinear solvers. For the nonlinear solvers, the default parameters are 

used. The accuracy of the nonlinear solvers is higher when the optimal solution is 

found. On several starting points, the nonlinear solvers failed to converge or 

contained positive relaxation variables above the threshold value. We find that the 

flat start is superior to the average of the random starts. The iterative linear 

program approximation is more robust and consistent across starting points. The 

iterative linear program approach finds a near feasible near optimal in almost all 

problems and all starting points. Using the linear approximation approach opens up 

the possibility of solving the AC optimal topology and AC optimal unit commitment 

problems faster as a mixed integer linear program (MIP). The ranked performance 

of the nonlinear solvers changes depending on the test problem. 

 

Disclaimer: The views presented are the personal views of the authors and not the 

Federal Energy Regulatory Commission or any of its Commissioners.
Page 3

Table of Contents 

 

1. Introduction 4 

2. Test Design 5 

3. Results for Each Test Problem 9 

4. Summary of Results and Conclusions 12 

References 13 

Appendix 14 
Page 4

1. Introduction 

After hundreds of papers over the last half century on formulating and 

solving the AC optimal power flow (ACOPF) and many attempts to solve the ACOPF 

commercially, in practice, approximate ‘DC’ models with surrogate AC constraints 

are still widely used. Cain et al (2012)presented a literature review of the history 

and various formulations of the ACOPF. The ACOPF is a continuous-variable 

nonconvex program (see Lesieutre and Hiskens, 2005; Hiskens, 2001). For 

nonconvex problems, most solvers terminate at a local optimal solution or fail to 

converge. Local non-global optimal solutions could cost the electric power industry 

billions of dollars annually because of unrealized gains from suboptimal solutions. 

We often take it on faith that the local solution obtained is also global or at least a 

good one. In this paper, we study small- to medium-size problems to better 

understand the nature and structure of the problem. 

Several small problems are well-studied or at least well-tested. They have 

helped demonstrate that there are high and low voltage solutions to the power flow 

equations on small examples. However, little is known about the high and low 

voltage solutions to the ACOPF with more than several buses. The hypothesis is that 

the low voltage solution is more expensive or is constrained to be infeasible. 

Although academic papers usually address optimal solutions, in practice, we settle 

for near-optimal solutions that can be obtained in a specified time window. Due to 

nonconvexities, there is no guarantee that the software will find an optimal solution. 

Robustness is the ability to find an optimal solution or at least a feasible solution. 

Castillo et al. present a literature review of computational studies and test problem 

performance (Castillo 2012). 

Today, most papers offering algorithms, that solve the ACOPF faster and 

more robustly, test these algorithms on the standard IEEE/MATPOWER test set 

and/or some proprietary problems not generally available. Schecter et al (2012)

present an analysis of the standard test problems. Even though they appear often in 

the literature, we know relatively little about these problems or how representative 

they are of actual electricity networks. For example, are these test sets easier or 

harder to solve relative to the broader universe of actual ACOPFs? Test results on 

proprietary problems require greater trust in the results since they are seldom if 

ever reproduced by independent parties. Since we have no proprietary problems, in 

this paper, we test using generally available test problems. 

To compare nonlinear solvers, one can consider several dimensions 

including the quality of the optimal solution, time to solution, and solution 

robustness, that is, the number of instances a ‘good’ feasible solution is found. In this 

paper, we test the performance of linear approximations of ACOPF-IV formulation 

against the nonlinear ACOPF-IV; both formulations are presented in a companion 

paper (O’Neill et al, 2012).
Page 5

Finally, we note that all models here approximate a physical system. A 

steady-state power-flow model approximates a larger dynamic model. For example, 

power flow models generally do not model frequency excursions and any dynamic 

constraints or contingencies from offline studies, which are achieved by adjusting 

static constraints. Moreover, a feature of the ACOPF is that many of the problem 

constraints are soft, that is, are not absolute. Thermal constraints or constraints that 

often contain significant engineering safety margins, such as the voltage stability 

constraints, are a couple examples of ‘soft’ inequality constraints. As it is common 

accepted practice, penalty slack variables are assigned to these inequalities. Such 

relaxation slack variables are given high objective function costs since exact costs 

and bounds are hard to quantify.

 

2. Test Design 

Approach. We begin by generating a starting point. To test the linear formulation, 

we solve the nonlinear IV formulation with quadratic costs (OPF2) to benchmark 

the solver against the generally accepted optimal solution. Next, we solve the 

nonlinear IV formulation with a linear ten-step objection function (OPF) 

approximating the quadratic costs to benchmark the linear objective function and 

examine how the software performs with a linear objective function. We then solve 

a series of linearized IV formulations (OPFlin). At each step, employing the previous 

optimal solution as the new starting point for linearization, we re-linearize the first 

order approximation and add new constraints that further improve or bound the 

approximations. When any one of three criteria (explained below) is satisfied, the 

algorithm stops. Finally, we make an additional run through the nonlinear IV 

formulation with the linear objective function starting with the optimal solution to 

the last iteration of the linear IV formulation (OPFp). The GAMS code to test the 

solvers is unchanged except for the names of the solvers.

Starting Points. We solve each test problem with ten different starting points. The 

first starting point is a ‘flat’ start (in polar coordinates, voltage magnitude = 1 and 

voltage angle = 0) for all buses. The remaining nine points are uniformly random 

points interior to the voltage magnitude constraints. The starting value for current 

is I = YV where V is the generated point. This I, V point satisfies the current flow 

equations but not necessarily the generator and load constraints. This approach 

helps test the robustness of the solver. In practice, choosing a good starting point 

based on experience is most likely a better strategy, but cannot be easily tested. But 

in a contingency, choosing a starting point using the last available solution may not 

be a good starting point. 

Test Problems. We define small test problems (for example, 14-bus, 30-bus, 57-bus) 

as problems that include between 10 to 99 buses. They are helpful because they 
Page 6

solve fast and allow for a better understanding of what is happening in the solution 

process at the nodal and branch level. We define medium size problems (for 

example, 118-bus, 300-bus) as problems with 100 to 999 buses. These problems are 

difficult to analyze at the nodal and branch level, but solve relatively quickly. Most 

vertically integrated utility transmission networks fit in this category. Large 

problems are between 1,000 and 9,999 buses and most large system operators fit in 

this category. We define very large problems as 10,000 or more buses; large ISOs 

like PJM and MISO fit in this category. 

We solve each of the five now standard IEEE/MATPOWER test problems (14-

bus, 30-bus, 57-bus, 118-bus, and 300-bus). Each test problem contains the same 

voltage magnitude constraints at each bus and contains no constraints on the 

transmission element flows or voltage angles. We scale each objective function. 

Summary parameters, the widely accepted quadratic optimal value, and the step 

function approximation of the objective function for each test problems are in Table 

1. 

Table 1. Test problem parameters and optimal solutions

Nodes Branches Generators demand Vmax Vmin Best Known

Number Capacity Optimal Value

Step

Function

Quadratic

14 20 5 7.724 2.590 1.06 0.94 82.76 80.81

30 41 6 326.80 42.42 1.10 0.95 5.918 5.745

57 80 7 326.78 235.26 1.06 0.94 423.7 417.4

118 186 54 99.66 42.42 1.06 0.94 1311 1297

300 411 69 19.76 12.51 1.06 0.94 7488 7197

Additional information on the test problems and solutions is available at the 

MATPOWER site (http://www.pserc.cornell.edu/matpower/). For the quadratic 

formulation, the local optimal solutions are proved to be global by solving a 

semidefinite program (SDP) dual formulation and finding a solution without a 

duality gap (see Lavaei and Low). For the linear solvers, the BTHETA formulation is 

solved and presented for contrast. Since we test more nonlinear solvers than linear 

solvers, the linear solvers are used more than once in the testing procedure. 

Hardware. The problems were solved on a DELL Latitude laptop with an Intel® 

CoreTM i5-540M (2.53GHz, 3M cache) and 4GB memory. Minor differences in 

solution times were recorded when the problems were run at different times of day 

and with and without network connection but the differences were small enough to 

be considered negligible. 
Page 7

Solvers. The nonlinear programs used solvers MINOS 5.51, SNOPT 7.2-4, IPOPT 

version 3.8, CONOPT version 3.14V and KNITRO version 7.0.0. Three of the solvers 

have overlapping authors/developers see table 2. 

Table 2. Solvers and developers

CONOPT SNOPT MINOS IPOPT KNITRO

Arne Drud X X

Walter Murray X X

Philip Gill X X

Bruce Murtagh X

Michael Saunders X

Carl Laird X

Andreas Wächter X

R.H. Byrd X

J. Nocedal X

R.A. Waltz X

Linear programs used GUROBI version 4.0.0 and CPLEX version 12.2.0.1. Their 

authors/developers also overlap since Robert Bixby, Zonghao Gu and Edward 

Rothberg were principal developers on both.

We used the default settings for all solvers. In today’s market, a generic 

solver is valued, in part, by its ability to internally choose the best strategy for 

solving a problem with default settings while internally choosing solution strategies 

dynamically. Asking the user to set numerous parameters is viewed as a weakness, 

because it requires a level of expertise that should not be a prerequisite for using 

the solver. Nevertheless, expert tuning is important in commercial installations 

where the problem is solved repetitively. In general, a nonlinear solver spends most 

of its time to get close to the optimal solution. For example, the reduced gradient 

generally goes from 10-2 to 10-8 (or less) in less than 10% of the iterations.

Problem Formulations. The problems were formulated in GAMS version 23.6 

starting with code written by Michael Ferris and modified by Richard O’Neill. For all 

formulations, relaxation variables with high penalties, 107, are added to the upper 

and lower bounds for P, Q and V to produce feasible solutions, albeit at times with 

penalties active in the objective function. In actual dispatch markets, penalty slack 

variables are inserted for various reasons, including soft constraints. Often ‘near’ 

feasible solutions are usable. Even though most commercial applications use penalty 

parameters, the linear IV formulation produced better results than the nonlinear 

solvers.

As a quadratic approximation to c(S), we use

C2(P•P) + C1P + a[C2(Q+•Q+) + C2(Q-•Q-) + C1(Q++Q-)].

Generally, 0 < a < .1. For a linear approximation, a step function approximation can 

be used. Here a is set to 0.1.
Page 8

Performance Measures. For power system dispatch, robustness is important to 

operations. An important metric of power systems operation software is a good 

feasible solution within a specified time window. For the test problems, we can 

break this into two dimensions: CPU time to converge, that is, the fraction of the 

time that a ‘good’ usable local optimal solution was found, and robustness, that is, 

the ability to find a good usable solution.

The linear program is a further approximation of the nonlinear program. 

Therefore, we develop a nonlinear ‘feasibility’ test to measure the 1-norm ‘distance’ 

of the linear program optimal solution variables from a nonlinear feasible solution.

Let Vr*, Vj*, Ir*, Ij*, P*, Q* be an optimal solution to the linear program. By the 

formulation, Vr*, Vj*, Ir*, Ij* is a feasible solution to the flow equations. Let 

Vm = (Vr*•Vr* + Vj*•Vj*)1/2

P = Vr*•Ir* + Vj*•Ij* 

Q = Vj*•Ir* - Vr*•Ij*

P and Q are the implied injections from the flow equations and Vm is the voltage 

magnitude. We calculate feasible normalized deviation metrics for V, P, and Q as 

follows. For voltage magnitude feasibility excursions, for each bus, n, set vf

n = 0. 

if vm n > vmax n, vf

n = vm n/vmax n.

if vm n < vmin n, vf

n = -vm n/vmin n.

Therefore if vf

n = 0, the voltage is within its magnitude bounds. if vfn > 0, the voltage 

exceeds its maximum level. If vf

n < 0, the voltage is less than its minimum level. 

We now sum the absolute value of the deviations and normalize by the number of 

buses, obtaining the total infeasibility voltage metric: 

vd = ∑n abs(vf

n)/n. 

The maximum infeasibility voltage metric is:

vdmax = maxn {abs(vf

n)}. 

For nodal real power imbalances, feasibility excursions, for each bus, n, 

set pf

n = 0. 

If pn > pmax n, pf

n = abs(pn/pmax n).

If pn ≠ pmax n and pmax n = pmin n, pf

n = abs(pn/pflow n) 

where pflow n = ∑k abs(pflow kn)/2.

If pn = pmax n and pmax n = pmin n, pf

n = 0.

If pn < pmin n, pf

n = -abs(pn/pmin n).

If pf

n = 0, the real power is within its magnitude bounds. If pfn > 0, the real power 

exceeds its maximum level or pn ≠ pmax n and pmax n = pmin n. If pf

n < 0, the real power 

is less than its minimum level. 

We now sum the absolute value of the deviations and divide by the number of buses, 

obtaining the total infeasibility real power metric: 

pd = ∑n abs(pf

n)/n. 

The total maximum infeasibility real power metric is:
Page 9

pdmax = maxn {abs(pf

n)}. 

We define qf

n, qd , and qdmax in the same way.

Vd, Pd and Qd measure the total infeasibility implied by the nonlinear equations. 

Vdmax , Pdmax and Qdmax measure the maximum infeasibility implied by the nonlinear 

equations. 

We test solvers with and without relaxation slack variables. Relaxation slack 

variables are removed by setting the upper bound on the slack variables to zero. We 

also add an additional norm for active relaxation slack variables:

Tepsinorm = ∑n (pminepsi n+ pmaxepsi n)/pdsum + ∑n (qminepsi n +sqmaxepsi

n)/qdsum+

 ∑n (vminepsi + vmaxepsi n)

 If Tepsinorm is less than epsilon, we consider the solution acceptable and 

remove the penalty values from the objective function. If not, it is recorded as a 

feasibility violation, that is, TEPSIN = TEPSIN +1.

Parameter Setting. The relaxation penalty was set at 107. MaxLin is the maximum 

number of calls to the linear solver. It is set at 10. feasum is the sum of normalized 

infeasibilities. It is set to 0.05. maxfeas is the maximum normalized infeasibilty. It is 

set to 0.01. The LP terminates when any of the three conditions are met. Tepsi is the 

infeasibility test based on the magnitude of the penalty slacks. 

 

 

3. Results for Each Test Problem 

We start by presenting summary results for each test problem. More detailed 

results are in the appendix

14-bus problem. Without relaxation slack variables, all solvers with the exception of 

KNITRO found a near global optimal solution for each starting point. On average, 

SNOPT, CONOPT and MINOS were the fastest solvers. GUROBI was competitive with 

the nonlinear solvers on the OPF. Comparing OPF and OPFp, using the LP 

approximation final solution as the starting point did not lower cpu time. The flat 

start does better than the average random starting point.

With relaxation slack variables, all solvers declare a local optimal solution for 

each starting point, but only CONOPT and IPOPT find the global optimal value. The 

other solvers find local optimal solutions near the global optimal value. On average 

MINOS is the fastest solver followed by CONOPT. SNOPT is erratic, at times, working 

well and at times, appearing to get hung up. Overall, since CONOPT is the second 

fastest and always finds a global optimum, CONOPT outperforms the other 

nonlinear solvers. 

For the linear solvers, GUROBI outperforms CPLEX in cpu time. The optimal 

solution values are within 1 percent of the best nonlinear solvers, converging in 4 to 

7 linear program passes. GUROBI and CPLEX are faster with relaxation slack 

variables.
Page 

10

We compare a CONOPT OPF solution to a GUROBI OPFlin linear 

approximation solution. The OPF solution and OPFlin solution have only minor 

differences in nodal prices for real and reactive power. The objective function values 

differ by less than one percent. The voltage magnitudes and dual variables from the 

bus equations are similar, but the actual generator dispatch (real and reactive) 

differs somewhat. This is not surprising since the surface near the optimal solution 

is relatively flat (see Schecter and O’Neill, 2013). 

 A standard test for robustness is increasing demand. The maximum real 

power generation is 7.724 and the fixed real demand is 2.59. The maximum 

possible demand increase factor is 2.98. We solve the 14-bus problem with demand 

multiplied by 1.5, 2 and 2.5. The problems require increasing CPU time. When 

demand is 2.5 times greater, the penalty slacks are greater than the set threshold. In 

2x and 2.5x demand, CONOPT did not converge on two starting points, but the 

GUROBI solutions were robust. 

30-bus problem. Without relaxation variables, all solvers with the exception of 

KNITRO find the same optimal solution for all starting points. On average, SNOPT, 

CONOPT and MINOS were the fastest solvers and solve OPFp faster than OFP2 and 

OPF. MINOS, CONOPT and IPOPT solve faster than GUROBI solved OPFlin. 

With relaxation slack variables, all solvers declare a local optimal solution, 

but only CONOPT and IPOPT find the global optimal value. The other solvers find 

optimal solutions near the global optimal value. On average, SNOPT is the fastest 

solver followed by CONOPT. CONOPT outperforms the other nonlinear solvers on 

the OPFp where SNOPT appears to get hung up on some problems. KNITRO is very 

erratic at times working well and at times appearing to get hung up. Overall, 

CONOPT outperforms the other nonlinear solvers in finding the global optimal 

solution.

For the linear solvers, GUROBI outperforms CPLEX. The optimal solution 

values are within 1 percent of the best nonlinear solvers. GUROBI is not as fast as 

SNOPT, but finds a better solution on OPF. CONOPT outperforms GUROBI. The linear 

solvers do not to have problems with relaxation slack variables. 

We compare the OPF CONOPT solution to the GUROBI OPFlin solution and 

find differences in P, Q and V and nodal prices for real and reactive power. The 

actual generator dispatch is reasonably close and the objective function value differs 

by less than one percent. We solve the 30-bus problem with demand multiplied by 

1.2, 1.4 and 1.6. The results are not markedly different. 

57-bus Problem. Without relaxation slack variables, all solvers except KNITRO find 

the global optimal value for all starting points. SNOPT, CONOPT and MINOS are the 

fastest nonlinear solvers. GUROBI is faster on OPFlin than any nonlinear solver. 

Without relaxation slack variables for OPF2, CONOPT performs better on the flat 

start than any random starting point. For OPF2 on three starting points, CONOPT 
Page 

11

got hung up. For the OPF, CONOPT performs better on the flat start than on most 

random starting points.

With relaxation slack variables, only CONOPT and IPOPT find the global 

optimal value. The other solvers find optimal solutions near the global optimal 

value. SNOPT is the slowest solver and gets hung up on some problems. CONOPT 

outperforms the other nonlinear solvers on the OPF2 and OPF, but CONOPT fails to 

converge on one problem, and has higher optimal values. For linear solvers, CPLEX 

times bound the GUROBI times. The optimal solution values are within 1 percent of 

the best nonlinear solvers. With demand increased by 1.5, 2 and 2.5, minor 

differences are observed. 

We compare the CONOPT OPF solution to the GUROBI OPFlin solution and 

find only minor differences in P, Q and V and nodal prices for real and reactive 

power. The voltages and dual variables are similar but the actual generator dispatch 

is different, and the objective function value differs by less than one percent. 

118-bus Problem. Without relaxation slack variables, all solvers except KNITRO find 

the global optimal value for all starting points. SNOPT, CONOPT and MINOS are the 

fastest solvers. CPLEX and GUROBI are faster on OPFlin than any nonlinear solver, 

except MINOS. OPFp did not solve faster than the OPF. 

With relaxation slack variables, all nonlinear solvers have trouble. Only 

CONOPT and KNITRO find the optimal solution for the OPF2. CONOPT, IPOPT and 

KNITRO found the optimal solution to the OPF. With relaxation slack variables, 

CONOPT found optimal values near the optimal value and performed better on the 

flat start than the average random starting point for OPF2 and OPF.

With relaxation slack variables, all nonlinear solvers have trouble solving the 

problems. Only CONOPT and KNITRO find the optimal solution for the OPF2. 

CONOPT, IPOPT and KNITRO found the optimal solution to the OPF. For linear 

solvers, GUROBI and CPLEX have similar performance with relaxation slack 

variables. The optimal solution values are within 2 percent of the best nonlinear 

solver performance. With demand increased by 1.2 and 1.4, OPFlin is more robust.

300-bus problem. Without relaxation slack variables, all solvers declare an infeasible 

problem. With relaxation slack variables, all solvers except KNITRO declare a local 

optimal solution, but occasionally fail to remove the penalty slacks. Only CONOPT 

and IPOPT find the global optimal value. 

For linear solvers, CPLEX outperforms, GUROBI. The optimal solution values 

are within 3 percent of the best nonlinear solvers. All linear approximations took 

the full 10 passes and did not meet the other convergence criteria. The linear solvers 

were more robust than the nonlinear solvers. With demand increased by 1.2 and 

1.4, the problems require more CPU time, the penalty slacks are greater than the set 

threshold and convergence becomes more difficult. 

 
Page 

12

4. Summary of Results and Conclusions. 

In general, the IV linear approximation solves faster than the nonlinear 

solvers used in this study. The iterative linear program approach appears to find a 

near feasible and near optimal solution in almost all problems and starting points. 

The accuracy of the nonlinear solvers is better when the optimal solution is found. 

On several starting points, the nonlinear solvers failed to converge or contained 

positive relaxation variables above the threshold. The flat start is superior to 

random starts. OPF solves faster than OPF2. The ranked performance of the 

nonlinear solvers changes depending on the test problem. 

The linear program approximation is more robust and consistent across 

starting points. In some instances, the linear solution variables do not match closely 

to the nonlinear solution variables, but are close to feasible solutions. This is not 

surprising since the surface near the optimal is relatively flat (see Schecter and 

O’Neill). Even the crude implementation of the iterative linear program approach is 

faster than the nonlinear solvers. Using the linear approximation approach opens up 

the possibility of solving the AC optimal topology and AC optimal unit commitment 

problems faster using MIP algorithm. 

.
Page 

13

References 

Mary B. Cain, Richard P. O’Neill, Anya Castillo, “History of Optimal Power Flow and 

Formulations,” FERC technical paper, December, 2012 

Javad Lavaei and S. H. Low, “Zero duality gap in optimal power flow problem,” IEEE 

Transactions on Power Systems, 27(1):92-107, February 2012

Richard P. O’Neill, Anya Castillo Mary B. Cain, “The IV Formulation and 

Linearizations of the AC Optimal Power Flow Problem,” FERC staff technical paper, 

December, 2012 

A. Schecter and R. P. O’Neill, “Exploration of the ACOPF Feasible Region for the 

Standard IEEE Test Set,” FERC Technical Conference, Docket No. AD10-12-003, 

available at http://www.ferc.gov/EventCalendar/Files/20120626084625-

Tuesday,%20Session%20TC-1,%20Schecter%20.pdf, June 26, 2012.

B.C. Lesieutre, I.A. Hiskens. “Convexity of the Set of Feasible Injections and Revenue 

Adequacy in FTR Markets.” IEEE Transactions on Power Systems, 20(4), 1790-1798, 

2005.

I. A. Hiskens, R.J. Davy. ”Exploring the power flow solution space boundary.” IEEE 

Transactions on Power Systems, 16(3), 389-395, 2001.
Page 

14

Appendix 

Solution Statistics. The summary statistics are over the set of starting points. They include 

OPTVAVG is the average optimal solution. 

CPUAVG is the average cpu time. 

CPUMAX is the maximum cpu time., 

CONVRG for non-linear solvers is the number that reported convergence over the 

ten starting points. For linear solvers is the number of linear programs solved over 

the ten starting points. 

OPTVSDV is the standard deviation from the average optimal solution. 

CPUSDV is the standard deviation from the average cpu time. 

OPTVCV is the coefficient of variation (standard deviation/mean) of optimal values 

CPUCV is the coefficient of variation (standard deviation/mean) of CPU times 

ITER is the number of different starting points. 

MINOPF is the minimum objective function value found. 

OPTVAL is the optimal value returned by the solver. 

OPTM is the objective solution value less the penalty value.

Pflow is the real power flow through the bus

Qflow is the reactive power flow through the bus

In tables with the dual variables, they are from the bus equations, 

P = Vr*•Ir* + Vj*•Ij* 

Q = Vj*•Ir* - Vr*•Ij*

 
Page 

15

14-bus problem

All solvers with the exception of KNITRO found the global optimal solution for each 

starting point, see Table 14.1. On average, SNOPT , CONOPT and MINOS were the fastest 

solvers. Comparing OPF and OPFp, the LP approximation starting point did seem to help. 

GUROBI was competitive with the nonlinear solvers on the OPF.

Table 14.1. Solution Statistics for the 14-Bus Problem for the Nonlinear Solvers 

Without Relaxation Slack Variables.

date 2012 329

type optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

CONOPT 80.8150 0.0000 0.0520 0.1360 0.1090 10 0

MINOS 80.8150 0.0000 0.0690 0.0800 0.0940 10 0

SNOPT 80.8150 0.0000 0.0750 0.1340 0.1250 10 0

KNITRO 81.8780 0.0020 0.2530 0.2040 0.7330 10 0

IPOPT 80.8150 0.0000 0.3700 0.0660 0.5000 10 0

OPF 

SNOPT 82.7620 0.0000 0.0390 0.0850 0.0620 10 0

CONOPT 82.7620 0.0000 0.0510 0.1150 0.0940 10 0

MINOS 82.7620 0.0000 0.0520 0.0960 0.0780 10 0

IPOPT 82.7620 0.0000 0.6080 0.1460 1.3100 10 0

KNITRO 84.0920 0.0050 2.5850 0.7350 20.6080 10

OPFp

MINOS 82.7620 0.0000 0.0440 0.1580 0.0780 10 0

CONOPT 82.7620 0.0000 0.0470 0.2230 0.1100 10 0

SNOPT 82.7620 0.0000 0.0760 0.2070 0.2030 10 0

IPOPT 82.7620 0.0000 0.3560 0.0580 0.4840 10 0

KNITRO 83.0780 0.0020 0.3650 0.0680 0.5150 10 0

Btheta

GUROBI 76.5910 0.0000 0.0030 0.0400 0.0040 10 0

GUROBI 76.5910 0.0000 0.0040 0.0550 0.0050 10 0

GUROBI 76.5910 0.0000 0.0040 0.0820 0.0060 10 0

CPLEX 76.5910 0.0000 0.0180 0.0300 0.0210 10 0

CPLEX 76.5910 0.0000 0.0190 0.1170 0.0400 10 0

OPFlin

GUROBI 82.2900 0.0030 0.0410 0.3260 0.0090 60 0

GUROBI 82.2900 0.0030 0.0410 0.3700 0.0060 60 0

GUROBI 82.2900 0.0030 0.0410 0.3800 0.0060 60 0

CPLEX 82.3300 0.0040 0.0970 0.3130 0.0180 51 0

CPLEX 82.3300 0.0040 0.1070 0.3100 0.0350 51 0

Table 14.1a. Linear Program Passes for GUROBI by Starting Point 

With and Without Relaxation Slack Variables

Starting point 1 2 3 4 5 6 7 8 9 10 Total

Without 4 4 5 9 5 8 7 8 6 4 60

With 5 9 7 9 8 8 8 8 9 9 80
Page 

16

With relaxation slack variables, all solvers declare a local optimal solution for each 

starting point, but only CONOPT and IPOPT find the global optimal value see Table 14.1r. 

The other solvers find local optimal solutions near the global optimal value. On average 

MINOS is the fastest solver followed by CONOPT. SNOPT is erratic, at times working well 

and at times appearing to get hung up. Overall, since it is the second fastest and always 

finds a global optimum, CONOPT outperforms the remaining nonlinear solvers. 

Table 14.1r. Solution Statistics for the 14-Bus Problem with the Nonlinear Solvers 

With Relaxation Slack Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN MINOPT

OPF2

MINOS 82.279 0.002 0.052 0.234 0.094 10 0 81.849

CONOPT 80.815 0.000 0.083 0.065 0.109 10 0 80.815

KNITRO 81.148 0.001 0.197 0.261 0.670 10 0 81.009

IPOPT 80.815 0.000 0.432 0.062 0.562 10 0 80.815

SNOPT 83.051 0.005 14.137 0.714 104.17 10 0 81.267

OPF 

MINOS 85.077 0.002 0.042 0.129 0.063 10 0 84.382

CONOPT 82.762 0.000 0.056 0.152 0.109 10 0 82.762

KNITRO 85.585 0.015 0.170 0.053 0.234 10 0 83.042

IPOPT 82.762 0.000 0.446 0.058 0.546 10 0 82.762

SNOPT 84.249 0.002 28.238 0.947 281.89 10 0 83.346

OPFp

MINOS 83.540 0.001 0.008 0.317 0.016 10 0 82.894

CONOPT 82.762 0.000 0.020 0.307 0.062 10 0 82.762

KNITRO 84.767 0.018 0.136 0.173 0.328 10 0 82.954

IPOPT 82.762 0.000 0.237 0.039 0.281 10 0 82.762

SNOPT 82.954 0.001 44.842 0.948 448.17 10 0 82.762

For the linear solvers, GUROBI outperforms CPLEX in cpu time. The optimal solution 

values are within 1 percent of the best nonlinear solvers. Generally, converging in 4 to 7 

linear program passes (see table 14.2r). GUROBI and CPLEX are faster with relaxation slack 

variables.
Page 

17

Table 14.2r. Solution statistics for the 14-bus problem with the linear solvers

with relaxation slack variables.

Date 2012 315

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG

BTHETA

GUROBI 76.591 0.000 0.002 0.050 0.002 10

GUROBI 76.591 0.000 0.002 0.050 0.002 10

GUROBI 76.591 0.000 0.002 0.153 0.004 10

CPLEX 76.591 0.000 0.009 0.049 0.011 10

CPLEX 76.591 0.000 0.010 0.111 0.020 10

OPFlin

GUROBI 82.402 0.003 0.022 0.306 0.003 56

GUROBI 82.402 0.003 0.022 0.281 0.003 56

GUROBI 82.402 0.003 0.024 0.332 0.004 56

CPLEX 82.368 0.003 0.063 0.125 0.008 62

CPLEX 82.368 0.003 0.065 0.214 0.008 62

Table 14.3 reports the test results run on a different day. The notable difference is in the 

reported times. 

Table 14.3. Solution statistics at a different time with relaxation slack variables.

OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2

MINOS 82.279 0.002 0.054 0.205 0.109 10 0

CONOPT 80.815 0 0.067 0.147 0.109 10 0

KNITRO 81.48 0.004 0.194 0.187 0.484 10 0

IPOPT 80.815 0 0.495 0.049 0.624 10 0

SNOPT 83.051 0.005 16.429 0.734 125.612 10 0

OPF 

CONOPT 82.762 0 0.053 0.178 0.094 10 0

MINOS 85.077 0.002 0.059 0.127 0.094 10 0

KNITRO 125.766 0.263 0.222 0.158 0.483 10 0

IPOPT 82.773 0 0.516 0.061 0.655 10 0

SNOPT 84.249 0.002 32.032 0.947 319.848 10 0

OPFp

MINOS 83.54 0.001 0.016 0.444 0.078 10 0

CONOPT 82.762 0 0.033 0.227 0.063 10 0

KNITRO 87.747 0.033 0.135 0.074 0.171 10 0

IPOPT 82.762 0 0.251 0.068 0.359 10 0

SNOPT 82.967 0.001 46.272 0.948 462.496 10 0

OPFlin

GUROBI 82.407 0.003 0.022 0.247 0.004 57 0

CPLEX 82.368 0.003 0.063 0.175 0.02 62 0

BTHETA

GUROBI 76.591 0 0.002 0.097 0.002 10 0

CPLEX 76.591 0 0.011 0.131 0.018 10 0
Page 

18

CONOPT. With relaxation slack variables, the OPF2 formulation had 211 rows, 239 columns 

884 non-zeroes, 145 non-constant first derivatives with 365 evaluation operations. The OPF 

and OPFp formulations had 225 rows, 379 columns, 1,139 non-zeroes, 140 non-constant 

first derivatives non-zeroes with 322 evaluation operations. The difference is due to the 

linear objective function. With and without relaxation slack variables for all starting points, 

CONOPT found the optimal solutions of 80.81 for OPF2 and 82.76 for OPF and OPFp. 

CONOPT performed considerably faster on OPF and OPFp. The flat starting point did not 

improve the process.

Table 14.4. CONOPT performance on the 14-bus with and without relaxation slack variables.

OPF2 OPF OPFp

without with without With without with

start iterations iterations iterations iterations iterations iterations

1 53 122 29 33 21 20

2 47 93 38 42 27 29

3 50 117 28 27 35 24

4 50 112 35 38 42 19

5 67 87 29 39 25 28

6 38 129 36 56 20 24

7 39 64 28 33 21 20

8 50 86 35 30 31 36

9 48 103 35 33 21 20

10 50 102 31 29 23 18

average 49 102 33 36 27 24

KNITRO. With relaxation slack variables, the OPF2 formulation had 238 variables, 210 

constraints (28 linear equalities, 42 nonlinear equalities, 140 linear inequalities), 794 

nonzeros in the Jacobian, and 89 nonzeros in the Hessian OPF and OPFp 378 variables, 224

constraints, (42 linear equalities, 42 nonlinear equalities, 140 linear inequalities) 948 

nonzeros in the Jacobian and 84 nonzeros in the Hessian. The flat start does better than the 

average random starting point. 

Table 14.4. KNITRO performance on the 14-bus without relaxation slack variables.

start OPF2 OPF OPFp

point iterations opt-valu iterations opt-valu iterations opt-valu

1 144 80.815 102 82.762 84 82.762

2 169 80.815 153 82.762 90 82.762

3 166 80.815 133 82.762 87 82.762

4 202 80.815 143 82.762 86 82.762

5 159 80.815 126 82.762 87 82.762

6 222 80.815 151 82.762 91 82.762

7 184 80.815 92 82.762 89 82.762

8 189 80.815 158 82.762 91 82.762

9 172 80.815 99 82.762 89 82.762

10 162 80.815 132 82.762 91 82.762

avg 177 80.815 129 82.762 89 82.762
Page 

19

With relaxation slack variables for one random starting point KNITRO declared 

convergence with an objective value of 169.80 with relaxation slack variables active at very 

low levels and an objective value of 99.014 when the penalty values are removed. KNITRO 

also had trouble with the reactive power formulation of Q = Q+ - Q- not driving one member 

of each pair to zero in the optimal solution.

Table 14.4. KNITRO performance on the 14-bus with relaxation slack variables.

Start OPF2 OPF OPFp

point Iteration value Iteration value Iteration value

1 20 8.101 24 8.788 27 18.640

2 18 8.142 21 8.304 21 8.304

3 21 8.100 26 9.391 24 8.304

4 20 8.101 25 14.210 19 8.304

5 24 8.147 25 8.304 42 11.020

6 14 9.721 43 169.800 22 8.304

7 30 8.110 32 8.310 21 8.304

8 21 8.101 25 8.304 23 8.304

9 36 8.137 24 8.304 21 8.304

10 24 8.101 24 8.305 24 8.470

avg 23 8.276 27 25.202 24 9.626

SNOPT. With relaxation variables, the OPF2 formulation had 211 rows, 239 columns, 884 

non-zeroes, and 145 non-constant first derivatives with 365 evaluation operations. The OPF 

and OPFp formulations had 225 rows, 379 columns, 1,139 non-zeroes, and 140 with 322 

evaluation operations. The flat start does better than the average random point. With 

relaxation slack variables, SNOPT occasionally got hung up on the OPF2 and OPF (see Table 

14.6).

Table 14.6 SNOPT performance on the 14-bus with and without relaxation slack variables.

OPF2 OPF OPFp

without with without with without with

start iters optval Iters optval iters optval Iters optval iters optval Iters optval

1 159 80.82 7 84.03 85 82.76 6 76.59 63 82.76 2 82.89

2 183 80.82 >e5 84.03 106 82.76 4 83.34 71 82.76 2 82.88

3 233 80.82 8 84.16 149 82.76 >e6 83.79 66 82.76 5 82.76

4 175 80.82 5 84.28 141 82.76 8 81.27 70 82.76 3 83.05

5 214 80.82 8 81.27 116 82.76 8 84.29 67 82.76 5 82.76

6 199 80.82 8 85.30 135 82.76 5 83.56 66 82.76 5 82.76

7 190 80.82 8 84.01 149 82.76 5 84.01 66 82.76 6 82.76

8 200 80.82 8 81.27 154 82.76 6 84.11 77 82.76 5 82.76

9 222 80.82 9 81.47 100 82.76 4 84.19 67 82.76 5 87.45

10 215 80.82 8 84.07 100 82.76 4 83.75 64 82.76 5 82.76

avg 199 80.82 8 83.39 124 82.76 6 82.93 68 82.76 5 83.43

 
Page 

20

MINOS. Without relaxation slack variables, the flat start does better than the average 

random point. With relaxation slack variable, MINOS was fast, but never found the optimal 

value.

Table 14.7 MINOS performance on the 14-bus with and without relaxation slack variables.

OPF2 OPF OPFp

without with without with without with

start iters optval Iters optval iters optval Iters optval iters optval Iters optval

1 18 80.82 6 82.35 29 82.76 6 85.61 16 82.76 6 83.78

2 29 80.82 7 82.34 46 82.76 6 85.03 15 82.76 6 83.82

3 28 80.82 6 81.85 42 82.76 6 84.38 24 82.76 5 83.65

4 23 80.82 6 81.87 55 82.76 7 84.88 37 82.76 5 83.88

5 25 80.82 6 81.87 95 82.76 6 85.30 15 82.76 4 82.90

6 19 80.82 6 81.85 19 82.76 6 86.11 27 82.76 5 83.94

7 20 80.82 6 81.87 28 82.76 6 84.63 22 82.76 5 83.79

8 32 80.82 6 82.48 34 82.76 7 84.89 16 82.76 5 83.68

9 44 80.82 5 82.13 35 82.76 5 85.22 16 82.76 4 82.89

10 28 80.82 6 82.23 35 82.76 6 84.73 30 82.76 5 83.40

avg 28 80.82 6 82.08 43 82.76 6 85.08 22 82.76 5 83.57

GUROBI. GUROBI produces a BTHETA formulation with 247 rows, 503 columns and 1,117 

non-zeroes. GUROBI presolve resulted in 23 rows, 63 columns, 85 nonzeros. GUROBI found 

an optimal solution in 13 iterations with an objective value of 7.659 in less than .005s. 

GUROBI produces an OPFlin formulation with 394 rows, 379 columns and 1,365 nonzeroes. Depending on the starting point, takes 4 to 9 passes of the linear program. 
Page 

21

Table 14.8. Linear Approximation Nonzeros, Iterations and Optimal Value by LP Pass and 

Starting Point for the 14-Bus Using GUROBI with Relaxation Slack Variables

pass nonzerositers optval nonzerositers optval nonzerositers optval

start point 1 2 3

1 1281 56 77.22 1303 64 79.41 1303 62 78.93

2 1359 71 81.69 1363 67 78.91 1363 65 78.47

3 1391 71 82.46 1387 62 77.33 1387 63 77.52

4 1419 76 82.34 1417 69 78.99 1417 71 80.95

5 1447 70 82.30 1445 71 82.29 1445 70 82.48

6 1475 74 82.33 1473 71 82.56 1473 86 82.56

start point 4 5 6

1 1303 56 78.28 1303 62 79.13 1303 63 78.48

2 1363 68 77.57 1363 62 78.32 1363 60 78.17

3 1391 70 79.98 1387 67 77.49 1387 58 77.56

4 1419 73 82.27 1417 73 81.81 1417 66 81.82

5 1447 75 82.54 1445 70 82.60

6 1475 70 82.52 1473 69 82.57

7 1503 68 82.32 1501 71 82.63

start point 7 8 9

1 1303 59 77.98 1303 62 79.53 1303 57 78.13

2 1363 61 77.56 1363 62 78.96 1363 67 77.63

3 1391 68 82.07 1387 68 78.42 1391 71 82.32

4 1419 76 82.04 1413 58 77.89 1419 68 82.60

5 1439 67 78.81 1447 66 82.57

6 1469 66 82.25 1475 83 82.62

7 1503 71 82.55

8 1531 77 82.62

start point 10

1 1303 56 77.75

2 1363 71 78.77

3 1391 70 82.72

4 1419 77 82.64

5 1447 81 82.61

6 1475 73 82.55

7 1503 84 82.62

8 1531 70 82.55

 
Page 

22

CPLEX. CPLEX produces a BTHETA formulation with 247 rows, 503 columns, and 1,117 

non-zeroes that was reduced to 23 rows, 64 columns, and 86 nonzeros. Almost identical to 

GUROBI, At CPLEX-defined iteration 1, CPLEX found an optimal solution with a value of 

76.59. CPLEX is very similar to GUROBI. 

Table 14.9. Linear approximation nonzeros, iterations and optimal value by LP pass and 

starting point for the 14-bus using CPLEX

pass nonzerositerations optval nonzerositerations optval nonzerositerations optval

start point 1 2 3

1 1281 87 77.22 1303 75 79.41 1303 75 78.93

2 1359 81 81.69 1363 93 78.91 1363 85 78.47

3 1391 90 82.65 1387 105 77.33 1387 102 77.52

4 1419 87 82.54 1417 85 78.99 1413 143 78.71

5 1447 91 82.62 1445 80 82.16 1439 189 82.18

6 1475 82 82.56 1473 83 82.57 1465 101 82.49

start point 4 5 6

1 1303 73 78.28 1303 80 79.13 1303 70 78.48

2 1363 77 77.57 1363 80 78.32 1363 70 78.17

3 1391 86 81.61 1387 102 77.49 1387 120 77.56

4 1419 102 82.66 1417 117 81.81 1417 185 81.82

5 1447 85 82.66 1445 107 82.60

6 1475 79 82.52 1473 91 82.57

7 1503 84 82.28 1501 84 82.63

8 1529 80 82.55

start point 7 8 9

1 1303 81 77.98 1303 77 79.53 1303 71 78.13

2 1363 83 77.56 1363 84 78.96 1363 86 77.63

3 1391 86 82.07 1387 115 78.42 1391 92 82.29

4 1419 79 82.06 1413 76 77.89 1419 83 82.45

5 1447 106 82.36 1439 124 78.81 1447 86 82.42

6 1469 118 82.25

start point 10

1 1303 76 77.75

2 1363 89 78.77

3 1391 85 82.72

Comparing the OPF to the linear approximation. We compare the OPF solution to the OPFlin

solution and find only minor differences in P, Q and V and nodal prices for real and reactive 

power. We examine a CONOPT solution and linear approximation using GUROBI. The 

objective function values differ by less than one percent. In tables 14.10 and 14.11, the 

voltage magnitudes and dual variables from the bus equations are similar but the actual 

generator dispatch (real and reactive) differs somewhat. 
Page 

23

Table 14.10 Solution Information from The CONOPT Solver With Objective Value Of 82.76

bus Voltage generation load Lambda ($/MVA-hr)

no. Mag

(pu)

Ang

(deg)

P

(MW)

Q

(MVAR)

P

(MW)

Q

(MVAR)

P Q

1 1.06 0 1.826 0.1 0 0 35.733 2.536

2 1.04 -3.73 0.42 0.5 0.217 0.127 37.672 2.924

3 0.984 -9.19 0.3 0 0.942 0.19 40.637 3.951

4 0.999 -8.134 0 0 0.478 -0.039 40.092 3.685

5 1.004 -6.936 0 0 0.076 0.016 39.396 3.665

6 1.032 -12.038 0.033 0.047 0.112 0.075 40.1 4.001

7 1.02 -10.596 0 0 0 0 40.412 4.042

8 1.025 -9.631 0.1 0.032 0 0 40.277 4.001

9 1.017 -12.504 0 0 0.295 0.166 40.682 4.238

10 1.012 -12.729 0 0 0.09 0.058 40.883 4.389

11 1.018 -12.523 0 0 0.035 0.018 40.658 4.287

12 1.016 -12.937 0 0 0.061 0.016 40.94 4.285

13 1.011 -13.002 0 0 0.135 0.058 41.18 4.449

14 0.996 -13.8 0 0 0.149 0.05 42.002 4.726

totals 2.679 0.679 2.59 0.735 losses 0.089

Table 14.11 Solution Information from Linear Approximation Using GUROBI 

With Objective Value Of 82.65

bus Voltage generation load Lambda ($/MVA-hr)

no. Mag

(pu)

Ang

(deg)

P

(MW)

Q

(MVAR)

P

(MW)

Q

(MVAR)

P Q

1 1.073 0 1.662 0.1 0 0 35.631 2.358

2 1.053 -3.41 0.42 0.5 0.217 0.127 37.539 2.868

3 0.996 -9.145 0.184 0 0.942 0.19 40.3 3.961

4 1.011 -7.202 0 0 0.478 -0.039 40.192 3.627

5 1.016 -6.087 0 0 0.076 0.016 39.487 3.618

6 1.033 -10.221 0.1 0 0.112 0.075 40.274 3.989

7 1.023 -8.164 0 0 0 0 40.593 3.983

8 1.02 -5.321 0.3 0.003 0 0 40.523 4.001

9 1.022 -10.449 0 0 0.295 0.166 40.872 4.144

10 1.016 -10.722 0 0 0.09 0.058 41.111 4.29

11 1.021 -10.614 0 0 0.035 0.018 40.881 4.219

12 1.017 -11.122 0 0 0.061 0.016 41.208 4.203

13 1.013 -11.173 0 0 0.135 0.058 41.477 4.346

14 0.998 -11.866 0 0 0.149 0.05 42.356 4.525

totals 2.666 0.603 2.59 0.735 losses 0.076

 
Page 

24

Increasing Demand. A standard test for robustness is increasing demand. The maximum real 

power generation is 7.724 and the fixed real demand is 2.59. The maximum possible 

demand increase factor is 2.98. We solve the 14-bus problem with demand multiplied by 

1.5, 2 and 2.5. The results are in table 14.12. The problems require increasing CPU time. 

When demand is 2.5 times greater, the penalty slacks are greater than the set threshold. In 

2x and 2.5x demand, CONOPT did not converge on two starting points. The GUROBI 

solutions were robust. 

Table 14.12. Solution Statistics for 14-Bus Problem With Increased Demand Using CONOPT 

and GUROBI With Relaxation Slack Variables

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 80.815 0.000 0.067 0.145 0.125 10 0

OPF 82.762 0.000 0.061 0.133 0.094 10 0

OPFlin 81.584 0.018 0.013 0.321 0.003 35 0

OPFp 82.762 0.000 0.041 0.220 0.094 10 0

BTHETA 76.591 0.000 0.002 0.100 0.003 10

1.5*demand

OPF2 133.668 0.000 0.080 0.156 0.125 10 0

OPF 137.152 0.000 0.078 0.063 0.094 10 0

OPFlin 135.965 0.003 0.015 0.368 0.004 39 0

OPFp 137.152 0.000 0.048 0.221 0.109 10 0

BTHETA 128.607 0.000 0.002 0.097 0.002 10

2*demand

OPF2 217.458 0.000 0.094 0.094 0.140 9 1

OPF 222.310 0.000 0.069 0.141 0.125 10 0

OPFlin 212.053 0.017 0.031 0.480 0.003 72 0

OPFp 222.310 0.000 0.078 0.185 0.125 10 0

BTHETA 181.925 0.000 0.002 0.085 0.002 10

2.5*demand

OPF2 268.552 0.000 0.081 0.119 0.125 8 10

OPF 273.322 0.000 0.090 0.068 0.125 10 10

OPFlin 272.321 0.001 0.019 0.363 0.004 45 10

OPFp 273.322 0.000 0.058 0.184 0.110 10 10

BTHETA 236.973 0.000 0.002 0.070 0.002 10 
Page 

25

30-bus problem 

Without relaxation variables, all solvers with the exception of KNITRO find the same 

optimal solution for all starting points see table 30.1. MINOS, CONOPT and IPOPT are faster 

than the GUROBI solution. On average, SNOPT, CONOPT and MINOS were the fastest solvers. 

OPFp solves faster than OFP2 and OPF .

Table 30.1. Solution Statistics for the 30-Bus Problem Without Relaxation Slack Variables.

type optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

MINOS 5.745 0.000 0.103 0.072 0.141 10 0

CONOPT 5.745 0.000 0.117 0.087 0.156 10 0

SNOPT 5.745 0.000 0.136 0.067 0.172 10 0

IPOPT 5.745 0.000 0.532 0.061 0.734 10 0

KNITRO 7.565 0.105 0.674 0.221 1.716 10 0

OPF 

SNOPT 5.918 0.000 0.059 0.062 0.078 10 0

CONOPT 5.918 0.000 0.075 0.125 0.140 10 0

MINOS 5.918 0.000 0.083 0.097 0.110 10 0

IPOPT 5.918 0.000 0.722 0.076 1.030 10 0

KNITRO 10.018 0.083 1.247 0.382 5.585 10 0

OPFp

SNOPT 5.918 0.000 0.024 0.104 0.032 10 0

MINOS 5.918 0.000 0.027 0.119 0.047 10 0

CONOPT 5.918 0.000 0.034 0.214 0.078 10 0

IPOPT 5.918 0.000 0.431 0.087 0.656 10 0

KNITRO 8.180 0.106 0.546 0.224 1.576 10 0

OPFlin

GUROBI 5.914 0.002 0.126 0.312 0.013 83 0

GUROBI 5.914 0.002 0.129 0.292 0.013 83 0

GUROBI 5.914 0.002 0.133 0.320 0.013 83 0

CPLEX 5.914 0.002 0.233 0.289 0.031 87 0

CPLEX 5.914 0.002 0.235 0.300 0.029 87 0

Table 30.1a. LP Passes By Starting Point for the 30-Bus Using GUROBI 

With And Without Relaxation Slack Variables

Start point 1 2 3 4 5 6 7 8 9 10 total

Without 2 10 10 10 10 7 9 7 9 9 83

with 5 9 7 9 8 8 8 8 9 9 80

With relaxation slack variables, all solvers declare a local optimal solution, but only 

CONOPT and IPOPT find the global optimal value see Table 30.1r. The other solvers find 

optimal solutions near the global optimal value. On average SNOPT is the fastest solver 

followed by CONOPT. CONOPT outperforms the other nonlinear solvers on the OPFp where 

SNOPT appears to get hung up on some problems. KNITRO is very erratic at times working 
Page 

26

well and at times appearing to get hung up. Overall, CONOPT outperforms the other 

nonlinear solvers in finding the global optimal solution. 

Table 30.1r. Solution Statistics for the 30-Bus Problem with The Nonlinear Solvers.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN MINOPT

OPF2

SNOPT 6.722 0.010 0.067 0.099 0.109 10 0 6.319

CONOPT 5.745 0.000 0.175 0.098 0.296 10 0 5.745

MINOS 6.803 0.008 0.204 0.376 0.858 10 0 6.459

KNITRO 7.472 0.086 0.626 0.216 1.575 10 0 5.807

IPOPT 5.745 0.000 1.019 0.084 1.700 10 0 5.745

OPF 

SNOPT 6.216 0.007 0.056 0.149 0.094 10 0 6.042

CONOPT 5.918 0.000 0.097 0.138 0.188 10 0 5.918

MINOS 6.683 0.010 0.173 0.255 0.468 10 0 6.298

KNITRO 620.6 0.918 0.726 0.162 1.404 10 0 6.492

IPOPT 5.919 0.000 201.272 0.628 1000.2 8 0 5.918

OPFp

CONOPT 5.918 0.000 0.040 0.189 0.078 10 0 5.918

KNITRO 15.492 0.166 0.377 0.117 0.624 10 0 6.495

MINOS 6.727 0.017 0.512 0.345 1.840 10 0 6.141

IPOPT 5.919 0.000 0.772 0.070 1.154 10 0 5.918

SNOPT 5.928 0.001 87.056 0.743 675.1 10 0 5.918

 

For linear solvers, GUROBI outperforms CPLEX see table 30.2. The optimal solution 

values are within 1 percent of the best nonlinear solvers. GUROBI is not as fast as SNOPT, 

but finds a better solution on OPF. CONOPT outperforms GUROBI. The linear solvers appear 

not to have problems with relaxation variables. 

Table 30.2. Solution Statistics for the 30-Bus Problem with the Linear Solvers. 

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPFlin

GUROBI 5.909 0.004 0.167 0.185 0.020 80 0

GUROBI 5.909 0.004 0.185 0.191 0.028 80 0

GUROBI 5.909 0.004 0.189 0.216 0.019 80 0

CPLEX 5.910 0.004 0.300 0.202 0.030 88 0

CPLEX 5.910 0.004 0.308 0.181 0.045 88 0

BTHETA

GUROBI 5.659 0.000 0.008 0.026 0.009 10 0

GUROBI 5.659 0.000 0.009 0.075 0.013 10 0

GUROBI 5.659 0.000 0.009 0.048 0.011 10 0

CPLEX 5.659 0.000 0.024 0.017 0.028 10 0

CPLEX 5.659 0.000 0.028 0.110 0.056 10
Page 

27

Table 30.3 reports the test results run at a different day. The only notable difference 

is in the reported times. 

Table 30.3 Solution Statistics for the 30-Bus Problem with Relaxation Slack Variables From 

Another Day.

OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2

SNOPT 6.713 0.01 0.055 0.221 0.109 10 0

CONOPT 5.745 0 0.1 0.136 0.172 10 0

MINOS 6.865 0.009 0.151 0.385 0.655 10 0

KNITRO 8.492 0.118 0.462 0.337 1.716 10 0

IPOPT 5.746 0 0.616 0.081 0.936 10 0

OPF 

SNOPT 6.211 0.007 0.05 0.139 0.094 10 0

CONOPT 5.918 0 0.069 0.107 0.109 10 0

MINOS 6.718 0.017 0.165 0.348 0.546 10 0

KNITRO 8.974 0.243 0.441 0.186 0.936 10 0

IPOPT 5.918 0 200.61 0.63 1000.153 8 0

OPFp

CONOPT 5.918 0 0.075 0.111 0.11 10 0

KNITRO 12.104 0.111 0.188 0.089 0.28 10 0

MINOS 6.893 0.014 0.329 0.22 0.796 10 0

IPOPT 5.92 0 0.37 0.071 0.514 10 0

SNOPT 6.091 0.011 10.103 0.636 56.893 10 0

BTHETA

GUROBI 5.659 0 0.004 0.043 0.004 10

CPLEX 5.659 0 0.011 0.037 0.014 10

OPFlin

GUROBI 5.801 0.005 0.022 0.109 0.01 29 0

CPLEX 5.811 0.006 0.056 0.441 0.013 38 0

 
Page 

28

CONOPT. The OPF2 formulation had 451 rows, 511 columns, 1,891 non-zeroes, and 306 

non-constant first derivatives with 739 evaluation operations. The OPF and OPFp 

formulations had 481 rows, 811 columns, 2,395 non-zeroes, and 300 non-constant first 

derivatives with 690 evaluation operations. With relaxation slack variables for the flat start 

(starting point 1), CONOPT found an optimal solution equal to 5.745 with a reduced 

gradient of 5.7E-09 in 69 iterations. For the first random start (starting point 2), CONOPT 

found an optimal solution equal to 5.745 with a reduced gradient of 6.6E-10 in 104 

iterations. For the second random start (starting point 3), CONOPT found an optimal 

solution equal to 5.745 with a reduced gradient of 2.3E-8 in 110 iterations. 

CONOPT found an optimal solution of 5.745 for OPF2 and 5.918 for OPF and OPFp. 

The flat start does better than the average random point for OPF2 and OPF. 

Table 30.4. CONOPT Performance on the 30-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF OPFp

start without with without with without with

point iterations iterations iterations iterations iterations iterations

1 45 69 20 20 28 39

2 108 90 89 120 17 35

3 48 92 83 100 9 37

4 121 103 95 52 10 45

5 52 40 95 60 12 46

6 178 126 84 42 11 52

7 40 148 40 38 12 154

8 118 95 64 42 26 26

9 146 212 24 35 10 60

10 133 118 74 52 29 46

avg 99 109 67 56 16 54

 
Page 

29

KNITRO. KNITRO does not return iterations. For several starting points, KNITRO declared 

convergence with an objective value of with relaxation slack variables active and solutions 

far off the optimal value when the penalty values are removed (see Table 30.5).

Table 30.5. KNITRO Performance on the 30-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF OPFp

start without with without with without with

point optval optval optm optval optval optm optval optval optm

1 11.21 80.338 5.807 10.042 45.228 29.64 12.592 23.35 14.691

2 11.124 6.18 6.18 12.034 6.495 6.495 11.654 6.495 6.495

3 5.753 6.176 6.176 11.786 18.537 18.537 6.09 73.662 26.125

4 63.74 411.272 5.889 6.159 21260 6023.5 12.39 6.495 6.495

5 5.751 17.702 7.653 11.772 6.495 6.495 6.089 6.496 6.496

6 5.758 11.695 11.07 6.173 6.492 6.492 6.089 70.23 25.913

7 5.817 26.614 11.583 11.079 6.5 6.5 6.148 96.968 24.631

8 5.766 6.18 6.18 12.068 95.50 95.503 6.089 6.495 6.495

9 5.752 38.626 7.529 13.256 6.508 6.508 6.02 21.51 20.674

10 11.726 30.805 6.654 6.21 6.495 6.495 8.639 16.905 16.905

avg 13.240 63.559 7.472 10.058 2145.8 620.62 8.180 32.861 15.492

 

SNOPT. SNOPT without relaxation slack variables perform better on the flat start than any 

random starting point. With different starting points, SNOPT declared many different 

solution values optimal on OPF2 and OPF (see Table 30.6). SNOPT perform better on the 

flat start than on any starting point for OPF2 and OPF. With different starting points, SNOPT 

declared many different solution values optimal on any starting point for OPF2 and OPF see 

table 30.6. SNOPT found the optimal solutions of 5.745 for OPF2 and 5.918 for OPF and 

OPFp.

Table 30.6 SNOPT Performance on the 30-Bus With and Without Relaxation Slack Variables

OPF2 OPF2 OPF OPF OPFp OPFp

start without with without with without with

point iters iters optval iters iters optval iters iters optval

1 193 92 6.707 115 84 6.042 113 123 5.918

2 430 207 6.889 229 168 6.101 141 105 5.989

3 347 237 6.757 277 204 6.094 92 65 5.918

4 398 223 6.840 237 159 6.337 95 112 5.918

5 353 174 6.527 196 158 6.372 97 120 5.918

6 485 212 6.319 289 292 6.34 104 86 5.932

7 318 247 6.962 222 190 6.102 123 71 5.933

8 443 169 6.862 238 134 6.254 129 95 5.918

9 368 171 6.471 223 177 6.117 89 66 5.918

10 364 206 6.885 232 172 6.406 90 98 5.918

avg 370 194 6.722 226 174 6.217 107 94 5.928

 
Page 

30

MINOS. Without relaxation slack variables, MINOS always found the optimal value and 

performs better on the flat start than any random starting point on OPF2 and OPF. With 

relaxation slack variables, MINOS never found the optimal value for any problem for any 

starting point. MINOS found the optimal solutions of 5.745 for OPF2 and 5.918 for OPF and 

OPFp.

Table 30.7 MINOS Performance on the 30-Bus Without Relaxation Slack Variables

OPF2 OPF OPFp

start without with without with without with

point iters iters optval iters iters optval iters iters optval

1 258 534 6.966 142 187 6.496 153 3846 6.358

2 308 180 6.864 231 251 6.665 139 217 6.141

3 356 1299 6.603 251 763 6.838 146 1895 6.677

4 346 2462 6.954 185 1346 7.014 156 1799 7.150

5 381 196 6.898 225 215 6.729 137 6052 6.875

6 358 592 6.727 262 235 6.298 162 588 7.067

7 285 164 6.459 191 1315 6.929 139 684 6.734

8 258 170 6.861 210 189 6.415 159 755 7.038

9 341 217 6.706 229 207 6.657 161 212 6.215

10 268 256 6.989 215 826 6.788 139 536 7.014

avg 316 607 6.803 214 553 6.683 149 1658 6.727

GUROBI. The BTHETA formulation had 517 rows, 1,553 columns and 3,283 non-zeroes. 

GUROBI presolve resulted in 41 rows, 120 columns, 160 nonzeros and found an optimal 

solution in 23 iterations with objective value of 5.659. The first pass of OPFlin had 842 

rows 811 columns and 2,881 non-zeroes. GUROBI finds the linear IV solution value is within 

1 percent of the OPF solution value. 

Table 30.8r. Linear Approximation Nonzeros, Iterations and Optimal Value by LP Pass and 

Starting Point for the 30-Bus Using GUROBI with Relaxation Slack Variables

pass nonzeros iters optval nonzeros iters optval nonzeros iters optval

start point 1 2 3

1 2701 232 5.774 2749 145 5.802 2749 168 5.798

2 2859 157 5.880 2875 142 5.803 2875 163 5.793

3 2923 139 5.842 2931 156 5.803 2931 154 5.785

4 2983 151 5.855 2989 163 5.782 2989 167 5.786

5 3043 152 5.835 3047 183 5.914 3051 164 5.905

6 3105 168 5.918 3111 167 5.917

7 3167 176 5.917 3171 156 5.917

8 3227 183 5.918

9 3287 173 5.918

start point 4 5 6

1 2749 160 5.793 2749 144 5.816 2749 165 5.794

2 2875 147 5.792 2875 148 5.811 2875 136 5.790

3 2931 147 5.787 2931 155 5.792 2931 150 5.787

4 2989 160 5.831 2989 166 5.787 2989 163 5.800
Page 

31

5 3051 177 5.870 3047 168 5.905 3051 171 5.899

6 3111 177 5.917 3105 168 5.917 3111 178 5.917

7 3171 162 5.917 3163 180 5.918 3171 186 5.917

8 3231 169 5.918 3221 173 5.918 3231 172 5.918

9 3285 175 5.918

start point 7 8 9

1 2749 145 5.810 2749 155 5.806 2749 186 5.816

2 2875 152 5.807 2875 149 5.801 2875 141 5.814

3 2931 153 5.795 2931 145 5.789 2931 173 5.804

4 2989 166 5.789 2989 172 5.793 2989 154 5.788

5 3051 166 5.906 3051 169 5.903 3047 163 5.907

6 3111 172 5.917 3111 171 5.917 3105 171 5.887

7 3171 183 5.917 3171 163 5.917 3167 173 5.918

8 3231 164 5.918 3231 172 5.918 3227 171 5.918

start point 10

1 2749 188 5.796

2 2875 154 5.793

3 2931 151 5.787

4 2989 170 5.840

5 3051 170 5.851

6 3111 183 5.915

7 3171 155 5.907

8 3231 176 5.918

9 3291 159 5.917

 
Page 

32

CPLEX. CPLEX produced essentially the same as GUROBI. 

Comparing the OPF to the linear approximation. We compare the CONOPT OPF solution to 

the GUROBI OPFlin solution and find differences in P, Q and V and nodal prices for real and 

reactive power. The actual generator dispatch is different, but the objective function value 

differs by less than one percent. 

Table 30.10 Solution Information from CONOPT With Objective Value Of 5.918

bus Voltage generation load Lambda($/MVA-hr)

no. Mag

(pu)

Ang

(deg)

P

(MW)

Q

(MVAR)

P

(MW)

Q

(MVAR)

P Q

1 1.05 0 0.444 0 0 0 3.76 0.175

2 1.048 -0.785 0.56 0.389 0.217 0.127 3.795 0.177

3 1.027 -1.907 0 0 0.024 0.012 3.866 0.22

4 1.023 -2.269 0 0 0.076 0.016 3.887 0.228

5 1.029 -2.218 0 0 0 0 3.862 0.208

6 1.017 -2.68 0 0 0 0 3.905 0.235

7 1.013 -2.993 0 0 0.228 0.109 3.926 0.242

8 1.005 -3.076 0 0 0.3 0.3 3.928 0.261

9 1.03 -3.825 0 0 0 0 3.929 0.202

10 1.037 -4.414 0 0 0.058 0.02 3.94 0.185

11 1.03 -3.825 0 0 0 0 3.929 0.202

12 1.011 -3.548 0 0 0.112 0.075 3.911 0.271

13 1.011 -2.292 0.16 0 0 0 3.899 0.271

14 1.003 -4.097 0 0 0.062 0.016 3.97 0.286

15 1.008 -3.937 0 0 0.082 0.025 3.948 0.275

16 1.015 -4.234 0 0 0.035 0.018 3.95 0.247

17 1.025 -4.578 0 0 0.09 0.058 3.96 0.213

18 1.006 -4.855 0 0 0.032 0.009 4.009 0.263

19 1.008 -5.188 0 0 0.095 0.034 4.026 0.251

20 1.014 -5.046 0 0 0.022 0.007 4.008 0.236

21 1.05 -4.602 0 0 0.175 0.112 3.934 0.13

22 1.058 -4.546 0.25 0.608 0 0 3.919 0.106

23 1.023 -2.741 0.18 0 0.032 0.016 3.866 0.266

24 1.028 -3.444 0 0 0.087 0.067 3.923 0.234

25 1.017 -1.667 0 0 0 0 3.869 0.287

26 0.999 -2.092 0 0 0.035 0.023 3.945 0.338

27 1.019 -0.298 0.33 0 0 0 3.805 0.291

28 1.017 -2.525 0 0 0 0 3.891 0.247

29 0.999 -1.55 0 0 0.024 0.009 3.925 0.325

30 0.987 -2.428 0 0 0.106 0.019 4.008 0.339

totals 1.924 0.997 1.892 1.072 real power loss 0.032
Page 

33

Table 30.11 Solution Information from Linear Approximation Using GUROBI Objective 

Value of 5.88.

bus Voltage generation load Lambda($/MVA-hr)

no. mag(pu) ang(deg) P(MW) Q(MVAR) P(MW) Q(MVAR) P Q

1 1.08 0 0.4 0.331 0 0 3.738 0.202

2 1.068 -0.726 0.56 0.6 0.217 0.127 3.775 0.199

3 1.029 -1.947 0 0 0.024 0.012 3.853 0.206

4 1.018 -2.329 0 0 0.076 0.016 3.875 0.206

5 1.034 -2.345 0 0 0 0 3.845 0.202

6 1.007 -2.77 0 0 0 0 3.893 0.205

7 1.009 -3.191 0 0 0.228 0.109 3.913 0.206

8 0.993 -3.285 0 0 0.3 0.3 3.921 0.22

9 0.983 -4.337 0 0 0 0 3.904 0.173

10 0.97 -5.189 0 0 0.058 0.02 3.909 0.156

11 0.983 -4.337 0 0 0 0 3.904 0.173

12 0.971 -4.426 0 0 0.112 0.075 3.909 0.24

13 0.968 -2.774 0.183 0 0 0 3.9 0.244

14 0.959 -5.177 0 0 0.062 0.016 3.966 0.232

15 0.96 -4.865 0 0 0.082 0.025 3.948 0.227

16 0.964 -5.17 0 0 0.035 0.018 3.936 0.205

17 0.963 -5.485 0 0 0.09 0.058 3.934 0.173

18 0.951 -5.984 0 0 0.032 0.009 3.994 0.195

19 0.949 -6.374 0 0 0.095 0.034 4.003 0.179

20 0.954 -6.149 0 0 0.022 0.007 3.983 0.173

21 0.967 -5.079 0 0 0.175 0.112 3.89 0.108

22 0.97 -4.851 0.25 0 0 0 3.869 0.09

23 0.963 -3.29 0.18 0 0.032 0.016 3.887 0.241

24 0.957 -4.012 0 0 0.087 0.067 3.916 0.198

25 0.965 -2.109 0 0 0 0 3.875 0.265

26 0.946 -2.749 0 0 0.035 0.023 3.957 0.284

27 0.979 -0.562 0.33 0 0 0 3.814 0.291

28 1.003 -2.612 0 0 0 0 3.884 0.219

29 0.959 -2.163 0 0 0.024 0.009 3.927 0.281

30 0.948 -3.276 0 0 0.106 0.019 4.001 0.265

totals 1.903 0.931 1.892 1.072 real power loss 0.011

 
Page 

34

Increasing Demand. A standard test for robustness is increasing demand. We solve the 30-

bus problem with demand multiplied by 1.2, 1.4 and 1.6. The results are in Table 30.12. The 

problems require increasing CPU time. For OPFlin, CONVRG is the number of linear 

programs solved over the ten starting points.

Table 30.12. Solution Statistics for 30-Bus Problem with Increased Demand 

Using CONOPT and GUROBI with Relaxation Slack Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 5.745 0.000 0.105 0.087 0.141 10 0

OPF 5.918 0.000 0.076 0.154 0.140 10 0

OPFlin 5.801 0.005 0.021 0.104 0.009 29 0

OPFp 5.918 0.000 0.058 0.197 0.109 10 0

BTHETA 5.659 0.000 0.004 0.081 0.006 10

1.200*demand

OPF2 7.274 0.000 0.103 0.105 0.171 10 0

OPF 7.504 0.000 0.046 0.111 0.078 10 0

OPFlin 7.366 0.010 0.027 0.289 0.010 34 0

OPFp 7.504 0.000 0.041 0.224 0.093 10 0

BTHETA 7.133 0.000 0.003 0.046 0.004 10

RatioNlLp 1.701

1.400*demand

OPF2 8.912 0.000 0.112 0.076 0.156 10 0

OPF 9.208 0.000 0.058 0.136 0.109 10 0

OPFlin 9.050 0.013 0.030 0.286 0.010 38 0

OPFp 9.208 0.000 0.064 0.126 0.094 9 1

BTHETA 8.706 0.000 0.004 0.067 0.006 10

1.600*demand

OPF2 10.719 0.000 0.097 0.113 0.140 9 1

OPF 11.085 0.000 0.058 0.195 0.140 10 0

OPF lin 10.851 0.013 0.030 0.215 0.010 36 0

OPFp 11.085 0.000 0.075 0.125 0.109 10 0

BTHETA 10.415 0.000 0.004 0.071 0.006 10
Page 

35

57-bus Problem

The results with different nonlinear solvers are in Table 57.1. Without relaxation 

slack variables, all solvers except KNITRO find the global optimal value for all starting 

points. SNOPT, CONOPT and MINOS are the fastest nonlinear solvers. GUROBI is faster on 

OPF than any nonlinear solver. 

Table 57.1. Solution Statistics for the 57-Bus Problem without Relaxation Slack Variables.

type optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

SNOPT 417.378 0.000 0.374 0.064 0.500 10 0

CONOPT 417.378 0.000 0.451 0.060 0.592 10 0

MINOS 417.378 0.000 0.484 0.242 1.498 10 0

IPOPT 417.378 0.000 0.951 0.161 1.887 10 0

KNITRO 420.574 0.003 1.789 0.404 8.222 10 0

OPF 

CONOPT 423.750 0.000 0.242 0.108 0.390 10 0

SNOPT 423.750 0.000 0.315 0.072 0.406 10 0

MINOS 423.750 0.000 0.454 0.212 1.092 10 0

IPOPT 423.750 0.000 1.878 0.245 6.069 10 0

KNITRO 430.938 0.003 2.440 0.125 4.820 10 0

OPFp

SNOPT 423.750 0.000 0.106 0.028 0.125 10 0

MINOS 423.750 0.000 0.118 0.038 0.140 10 0

CONOPT 423.750 0.000 0.242 0.108 0.390 10 0

IPOPT 423.750 0.000 0.777 0.036 0.905 10 0

KNITRO 426.248 0.004 1.718 0.185 3.744 10 0

Btheta

GUROBI 410.582 0.000 0.019 0.042 0.024 10 0

GUROBI 410.582 0.000 0.020 0.054 0.027 10 0

CPLEX 410.582 0.000 0.043 0.030 0.053 10 0

CPLEX 410.582 0.000 0.044 0.042 0.057 10 0

CPLEX 410.582 0.000 0.044 0.023 0.048 10 0

OPFlin

GUROBI 420.021 0.003 0.193 0.323 0.054 58 0

GUROBI 420.021 0.003 0.196 0.317 0.056 58 0

CPLEX 420.377 0.002 0.203 0.262 0.045 52 0

CPLEX 420.377 0.002 0.208 0.277 0.040 52 0

CPLEX 420.377 0.002 0.213 0.292 0.061 52 0

With relaxation slack variables, only CONOPT and IPOPT find the global optimal 

value. The other solvers find optimal solutions near the global optimal value. SNOPT is the 

slowest solver and had difficulty on some starting points. CONOPT outperforms the other 

nonlinear solvers on the OPF2 and OPF but CONOPT fails to converge on one problem, but 

has higher optimal values. KNITRO is very erratic at times working well and at times 

appearing to get hung up. 
Page 

36

Table 57.1r. Solution Statistics for the 57-Bus Problem with Relaxation Slack Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN MINOPT

OPF2

CONOPT 456.718 0.054 0.817 0.13 1.279 9 2 417.378

KNITRO 419.15 0.001 1.321 0.149 2.886 10 0 417.849

IPOPT 417.378 0 2.861 0.085 4.18 10 0 417.378

MINOS 420.322 0.001 2.961 0.61 17.176 10 0 418.442

SNOPT 420.322 0.001 5.749 0.608 33.01 10 0 418.442

OPF 

CONOPT 423.75 0 0.445 0.122 0.671 10 0 423.75

KNITRO 610.439 0.242 2.012 0.208 4.462 10 0 424.827

IPOPT 423.758 0 2.718 0.073 4.15 10 0 423.75

MINOS 428.053 0.001 100.128 0.947 999.998 9 0 426.227

SNOPT 428.12 0.001 100.268 0.946 999.998 9 0 426.205

OPFp

MINOS 425.004 0 0.064 0.171 0.141 10 0 424.249

CONOPT 423.75 0 0.226 0.087 0.343 10 0 423.75

KNITRO 425.211 0 0.85 0.05 1.06 10 0 424.824

IPOPT 423.758 0 2.348 0.178 6.022 10 0 423.75

SNOPT 425.222 0.001 44.557 0.947 444.712 10 0 423.965

For linear solvers, CPLEX times bound the GUROBI times see Table 57.2. The 

optimal solution values are within 1 percent of the best nonlinear solvers. Both linear 

solvers are faster and more robust than the nonlinear solvers.

Table 57.2. Solution Statistics for the 57-Bus Problem with the Linear Solvers.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVERG TEPSIN

OPFlin

CPLEX 420.588 0.003 0.153 0.223 0.043 56 0

GUROBI 420.878 0.003 0.278 0.171 0.046 50 0

GUROBI 420.878 0.003 0.280 0.185 0.044 50 0

GUROBI 420.878 0.003 0.288 0.171 0.043 50 0

CPLEX 420.588 0.003 0.384 0.257 0.102 56 0

BTHETA

CPLEX 410.582 0.000 0.019 0.031 0.024 10 0

GUROBI 410.582 0.000 0.020 0.032 0.025 10 0

GUROBI 410.582 0.000 0.021 0.045 0.027 10 0

GUROBI 410.582 0.000 0.024 0.060 0.030 10 0

CPLEX 410.582 0.000 0.047 0.049 0.063 10 0

Table 57.1a. Linear Approximation Nonzeros, Iterations and Optimal Value By LP Pass and 

Starting Point for the 57-Bus Using GUROBI With And Without Relaxation Slack Variables.

Start 1 2 3 4 5 6 7 8 9 10 Total 

Without 3 6 5 5 7 6 9 6 5 6 58

With 3 6 5 5 5 5 6 5 5 5 50
Page 

37

Table 57.3 reports the test results run at a different day. The only notable difference 

is in the reported times. 

Table 57.3. Solution Statistics for the 57-Bus Problem with Different Solvers at Another 

Time Without Relaxation Slack Variables.

type optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

SNOPT 417.378 0.000 0.374 0.064 0.500 10 0

CONOPT 417.378 0.000 0.451 0.060 0.592 10 0

MINOS 417.378 0.000 0.484 0.242 1.498 10 0

IPOPT 417.378 0.000 0.951 0.161 1.887 10 0

KNITRO 420.574 0.003 1.789 0.404 8.222 10 0

OPF 

CONOPT 423.750 0.000 0.242 0.108 0.390 10 0

SNOPT 423.750 0.000 0.315 0.072 0.406 10 0

MINOS 423.750 0.000 0.454 0.212 1.092 10 0

IPOPT 423.750 0.000 1.878 0.245 6.069 10 0

KNITRO 430.938 0.003 2.440 0.125 4.820 10 0

OPFp

SNOPT 423.750 0.000 0.106 0.028 0.125 10 0

MINOS 423.750 0.000 0.118 0.038 0.140 10 0

CONOPT 423.750 0.000 0.242 0.108 0.390 10 0

IPOPT 423.750 0.000 0.777 0.036 0.905 10 0

KNITRO 426.248 0.004 1.718 0.185 3.744 10 0

Btheta

GUROBI 410.582 0.000 0.019 0.042 0.024 10 0

GUROBI 410.582 0.000 0.020 0.054 0.027 10 0

CPLEX 410.582 0.000 0.043 0.030 0.053 10 0

CPLEX 410.582 0.000 0.044 0.042 0.057 10 0

CPLEX 410.582 0.000 0.044 0.023 0.048 10 0

OPFlin

GUROBI 420.021 0.003 0.193 0.323 0.054 58 0

GUROBI 420.021 0.003 0.196 0.317 0.056 58 0

CPLEX 420.377 0.002 0.203 0.262 0.045 52 0

CPLEX 420.377 0.002 0.208 0.277 0.040 52 0

CPLEX 420.377 0.002 0.213 0.292 0.061 52 0

CONOPT. The OPF2 formulation had 856 rows, 970 columns, 3,587 non-zeroes, and 577 

non-constant first derivatives with 1,370 evaluation operations occupying 4 Mb. CONOPT 

has 0 pre-triangular equations and 73 post-triangular equations. For the flat start with 

relaxation slack variables, at iteration 42 CONOPT found a feasible solution and at iteration 

166 found an optimal solution with an optimal value of 4.174E2 with a reduced gradient of 

1.4E-08. With relaxation slack variables for starting point 2, at iteration 343 CONOPT found 

an optimal solution value of 417.4 .

The OPF and OPFp formulations had 913 rows, 1,540 columns, 4,505 non-zeroes, 

and 570 non-constant first derivatives with 1,311 function evaluations. CONOPT found 50 

pre-triangular equations and 138 post-triangular equations. At iteration 15, CONOPT found

a feasible solution and at 44 an optimal solution of 4.237E2. At starting point 2, CONOPT 
Page 

38

found a feasible solution at iteration 100 and at 151 found an optimal solution of 4.237E2 

for OPFp.

Without relaxation slack variables for OPF2, CONOPT performs better on the flat 

start than any random starting point. For the OPF, CONOPT performs better on the flat start 

than most random starting points. Without relaxation variables, CONOPT finds the optimal 

values of 417.378 for OPF2 and 423.750 for OPF and OPFp. On three points, CONOPT got 

hung up on OPF2.

Table 57.4. CONOPT Performance on the 57-Bus without Relaxation Slack Variables.

OPF2 OPF OPFp

start without with without with without with

point iters iters optval optml iters iters optval iters iters optval

1 81 166 4.17E2 417.4 48 44 423.8 77 50 423.8

2 259 343 4.17E2 417.4 153 151 423.8 34 38 423.8

3 186 110 1.36E8 521.5 267 73 423.8 56 53 423.8

4 222 262 4.17E2 417.4 64 59 423.8 99 84 423.8

5 212 562 4.17E2 417.4 95 258 423.8 33 128 423.8

6 206 116 4.17E2 417.4 46 343 423.8 29 46 423.8

7 143 559 4.17E2 417.4 151 144 423.8 42 108 423.8

8 182 430 1.37E8 594.4 189 171 423.8 54 156 423.8

9 151 305 1.37E8 594.4 56 153 423.8 57 104 423.8

10 132 483 4.17E2 417.4 70 93 423.8 34 64 423.8

avg 177 334 4.10E7 463.2 114 149 423.8 52 83 423.8

KNITRO. Without relaxation slack variables, KNITRO finds local optima near the global 

optimal with the exception of the OPF problem. With relaxation slack variables, KNITRO 

finds local optima near the global optimal.

Table 57.4. KNITRO Performance on the 57-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF2 OPF OPF OPFp OPFp

start without with without with without with

point optval optval optm optval optval optm optval optval optm

1 417.5 418.2 418.2 429.1 424.8 424.8 424.0 426.1 426.1

2 421.0 421.4 421.4 437.9 474.2 474.2 423.9 425.9 425.9

3 423.9 419.8 419.8 435.6 438.6 438.6 423.9 426.3 426.3

4 417.4 418.7 418.7 430.1 454.5 454.5 423.9 424.8 424.8

5 424.4 420.8 420.8 426.5 424.8 424.8 424.0 424.8 424.8

6 498.0 418.2 418.2 434.6 2009.2 2001.1 430.0 424.8 424.8

7 439.6 418.2 418.2 424.0 424.8 424.8 423.9 424.8 424.8

8 417.4 420.2 420.2 435.6 424.9 424.9 423.9 424.8 424.8

9 421.6 481.7 417.8 424.7 424.8 424.8 445.2 424.8 424.8

10 417.4 418.2 418.2 432.8 857.5 611.7 424.0 424.8 424.8

avg 429.8 425.5 419.2 431.1 635.8 610.4 426.7 425.2 425.2

SNOPT. Without relaxation slack variables, SNOPT performs better on the flat start than any 

random starting point for OPF2 and OPF. With relaxation slack variables, SNOPT performs 
Page 

39

better on the flat start than any random starting point for OPF2, OPF and OPFp. Without 

relaxation variables, SNOPT found the optimal solutions of 417.4 for OPF2 and 423.8 for 

OPF and OPFp.

Table 57.6 SNOPT Performance on the 57-Bus With and Without Relaxation Slack Variables.

OPF2 OPF OPFp

start without with without with without with

point iters iters optval iters iters optval iters iters optval

1 658 729 421.6 298 450 426.2 268 136 424.3

2 1029 890 419.3 859 728 427.8 283 285 425.0

3 1403 1072 418.4 971 957 427.9 255 355 426.2

4 1132 6490 419.7 617 777 426.6 303 222 425.6

5 1287 1107 423.2 825 1235 430.9 258 1379 425.4

6 1053 1140 419.8 866 1004 427.3 240 226 424.7

7 1137 1081 419.9 970 896 428.6 273 407 424.0

8 1040 5182 419.7 961 824 430.1 257 208 425.2

9 1102 1419 420.1 854 4367 426.7 253 281 427.2

10 1107 1299 421.6 896 877 427.7 234 249 424.6

avg 1095 2041 420.3 812 1212 428.0 262 375 425.2

MINOS. Without relaxation slack variables, MINOS always found the optimal value and 

perform better on the flat start than the average random starting point for OPF2 and OPF. 

With relaxation slack variables, MINOS found optimal values near the the optimal value and 

perform better on the flat start than the average random starting point for OPF2 and OPF. 

Without relaxation variables, MINOS found the optimal solutions of 417.4 for OPF2 and 

423.8 for OPF and OPFp.

Table 57.7 MINOS Performance on the 57-Bus With and Without Relaxation Slack Variables.

OPF2 OPF OPFp

start without with without with without with

point iters iters optval iters iters optval iters iters optval

1 1386 4217 422.9 415 337 426.9 356 2609 428.2

2 1287 3193 418.4 1829 925 425.9 344 2609 430.6

3 1052 969 422.6 1128 5972 428.4 313 490 426.2

4 3738 1241 419.9 2178 2552 427.0 346 907 431.6

5 1285 2599 420.1 1103 1286 430.3 358 549 424.9

6 1080 3429 420.8 833 8550 426.1 372 520 427.7

7 932 772 418.8 1080 3139 428.2 328 2550 426.9

8 1492 1106 418.5 2627 924 428.1 388 1512 429.3

9 2035 709 420.0 1000 851 427.3 327 496 425.9

10 1062 1499 419.8 1457 2378 428.3 348 3147 430.9

avg 1535 1973 420.2 1365 2691 427.7 348 1539 428.2

IPOPT. Without relaxation slack variables, IPOPT always found the optimal value and does 

not perform better on the flat start than the average random starting point for OPF2 and 

OPF. With relaxation slack variables, IPOPT found the optimal value and perform better on 

the flat start than the average random starting point for OPF2 and OPF. With and without 
Page 

40

relaxation variables, IPOPT found the optimal solutions of 417.4 for OPF2 and 423.8 for OPF 

and OPFp.

Table 57.7 IPOPT Performance on the 57-Bus With and Without Relaxation Slack Variables.

OPF2 OPF OPFp

start without with without with without with

point iters iters iters iters iters optval iters

1 33 48 44 65 21 39

2 19 57 40 66 23 35

3 58 75 128 49 19 37

4 51 80 41 56 19 45

5 19 97 28 65 20 46

6 26 41 38 55 22 52

7 29 75 33 45 23 154

8 21 51 46 53 20 26

9 21 83 25 70 23 60

10 21 64 25 71 20 46

avg 30 67 45 60 21 54

 
Page 

41

GUROBI. The BTHETA formulation had 82 rows, 4,489 columns, and 9,272 non-zeroes 

occupying 5 Mb. Presolve time took 0.02s and resulted in 85 rows, 176 columns, 260 

nonzeros. GUROBI solved in 46 iterations and 0.02 seconds objective of 4.106e 2. OPFlin

had 1,598 rows, 1,540 columns and 5,451 non-zeroes. Presolve resulted in 612 rows, 731 

columns, and 2750 nonzeros. For OPFlin, the progression of the linear optimal values is not 

monotonic because the problem has non-nonconvex constraints, but the terminal values are 

within a 1 percent range.

Table 57.8. Linear Approximation Nonzeros, Iterations and Optimal Value By LP Pass and 

Starting Point for the 57-Bus Using GUROBI With Relaxation Slack Variables.

pass nonzeros iters optval nonzeros iter optval nonzeros iters optval

start-point 1 2 3

1 5109 410 413.92 5187 307 416.87 5187 287 417.02

2 5413 384 421.68 5417 360 416.75 5417 314 417.25

3 5527 315 421.93 5531 378 416.21 5527 394 416.28

4 5645 339 415.05 5639 408 416.61

5 5759 319 422.17 5751 340 417.74

6 5873 342 421.38

start-point 4 start-point 5 start-point 6

1 5187 292 416.67 5187 282 416.85 5187 286 416.89

2 5417 352 414.85 5417 333 417.54 5417 320 417.14

3 5531 307 414.56 5527 322 417.59 5527 378 416.42

4 5645 304 420.74 5639 397 414.98 5639 361 415.44

5 5759 303 421.10 5755 424 422.42 5751 343 421.53

start-point 7 start-point 8 start-point 9

1 5187 279 417.39 5187 293 416.84 5187 303 417.37

2 5417 320 417.68 5417 322 417.24 5417 304 416.39

3 5527 396 417.34 5527 350 416.56 5527 354 415.13

4 5639 347 415.09 5639 393 415.15 5639 363 418.27

5 5751 344 422.25 5751 402 421.32 5751 385 420.93

6 5863 346 420.65

start-point 10

1 5187 315 417.23

2 5417 315 416.76

3 5527 376 415.60

4 5639 357 415.14

5 5751 364 419.78

 
Page 

42

Increasing Demand. A standard test for robustness is increasing demand. The maximum 

possible demand increase is 2.98. We solve the 57-bus problem with demand increased by 

1.5, 2 and 2.5. The results are in table 57.9. 

Table 57.9. Solution Statistics for 57-Bus Problem with Increased Demand Using CONOPT 

And GUROBI .

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 456.718 0.054 0.530 0.156 1.045 9 2

OPF 423.750 0.000 0.267 0.146 0.484 10 0

OPFlin 417.658 0.008 0.086 0.249 0.031 39 0

OPFp 423.750 0.000 0.136 0.152 0.234 10 0

BTHETA 410.582 0.000 0.009 0.025 0.010 10

1.2*demand

OPF2 565.941 0.000 0.479 0.124 0.811 9 1

OPF 575.347 0.000 0.304 0.143 0.608 10 0

OPFlin 532.646 0.008 0.103 0.554 0.016 45 0

OPFp 575.347 0.000 0.187 0.086 0.266 10 0

BTHETA 519.450 0.000 0.009 0.037 0.011 10

1.4*demand

OPF2 741.424 0.000 0.382 0.160 0.749 8 2

OPF 753.168 0.000 0.248 0.122 0.421 10 0

OPFlin 705.462 0.014 0.077 0.239 0.032 36 0

OPFp 753.168 0.000 0.133 0.134 0.234 10 0

BTHETA 678.164 0.000 0.009 0.034 0.011 10

1.6*demand

OPF2 885.914 0.000 0.627 0.132 1.232 9 1

OPF 899.774 0.000 0.365 0.130 0.718 10 0

OPFlin 899.339 0.000 0.097 0.131 0.024 38 0

OPFp 899.774 0.000 0.183 0.068 0.250 10 0

BTHETA 885.907 0.000 0.008 0.035 0.011 10

Comparing the OPF to the linear approximation. We compare the CONOPT OPF solution to 

the GUROBI OPFlin solution and find only minor differences in P, Q and V and nodal prices 

for real and reactive power. The voltages and dual variables are similar but the actual 

generator dispatch is not as close, but the objective function value differs by less than one 

percent. 

Table 57.10 Solution Information from CONOPT with Objective Value Of 423.7. 

bus Voltage generation load Lambda Bus flow

no. Mag

(pu)

Ang

(deg)

P

(MW)

Q

(MVAR)

P

(MW)

Q

(MVAR)

P Q Pflow Qflow

1 1.012 0.000 1.439 0.884 0.550 0.170 42.338 2.008 1.357 0.794

2 0.999 1.029 0.915 0.000 0.030 0.880 41.900 2.538 0.885 0.827

3 1.003 -1.286 0.420 0.413 0.410 0.210 42.899 2.025 0.479 0.291

4 1.005 -1.182 0.000 0.000 0.000 0.000 42.872 2.083 0.386 0.081

5 1.013 -0.145 0.000 0.000 0.130 0.040 42.320 2.165 0.268 0.030

6 1.022 0.777 0.806 0.000 0.750 0.020 41.700 2.129 0.522 0.072

7 1.023 1.311 0.000 0.000 0.000 0.000 41.507 2.265 0.773 0.273
Page 

43

8 1.043 4.173 4.400 0.964 1.500 0.220 40.532 2.002 2.900 0.777

9 1.002 -0.337 1.000 0.000 1.210 0.260 42.306 2.345 1.711 0.684

10 0.984 -3.666 0.000 0.000 0.050 0.020 43.741 2.307 0.388 0.551

11 0.983 -2.406 0.000 0.000 0.000 0.000 43.475 2.451 0.443 0.180

12 0.992 -3.445 3.690 0.427 3.770 0.240 43.769 2.003 0.235 0.262

13 0.977 -3.242 0.000 0.000 0.180 0.023 43.889 2.209 0.682 0.423

14 0.970 -3.605 0.000 0.000 0.105 0.053 43.971 1.966 0.534 0.838

15 0.988 -2.628 0.000 0.000 0.220 0.050 43.485 2.066 1.006 0.532

16 0.992 -3.914 0.000 0.000 0.430 0.030 43.955 2.036 0.430 0.029

17 0.994 -2.868 0.000 0.000 0.420 0.080 43.534 2.122 0.475 0.061

18 1.025 -5.421 0.000 0.000 0.272 0.098 43.223 2.166 0.323 0.109

19 0.988 -6.794 0.000 0.000 0.033 0.006 45.365 2.815 0.049 0.021

20 0.976 -6.968 0.000 0.000 0.023 0.010 45.799 3.020 0.023 0.035

21 1.015 -6.646 0.000 0.000 0.000 0.000 45.897 2.723 0.007 0.026

22 1.015 -6.584 0.000 0.000 0.000 0.000 45.838 2.699 0.039 0.028

23 1.014 -6.596 0.000 0.000 0.063 0.021 45.917 2.739 0.063 0.030

24 1.017 -6.051 0.000 0.000 0.000 0.000 46.219 3.141 0.176 0.445

25 1.000 -10.967 0.000 0.000 0.063 0.032 46.871 3.577 0.145 0.051

26 0.976 -5.550 0.000 0.000 0.000 0.000 46.250 3.210 0.176 0.415

27 1.012 -3.154 0.000 0.000 0.093 0.005 43.961 2.861 0.274 0.034

28 1.032 -1.832 0.000 0.000 0.046 0.023 42.628 2.644 0.325 0.064

29 1.049 -0.965 0.000 0.000 0.170 0.026 41.600 2.381 0.680 0.290

30 0.979 -11.549 0.000 0.000 0.036 0.018 48.086 4.255 0.080 0.046

31 0.950 -12.334 0.000 0.000 0.058 0.029 49.836 5.237 0.058 0.029

32 0.960 -11.704 0.000 0.000 0.016 0.008 48.910 4.888 0.069 0.017

33 0.957 -11.743 0.000 0.000 0.038 0.019 49.084 4.975 0.038 0.019

34 0.966 -7.748 0.000 0.000 0.000 0.000 48.395 4.371 0.069 0.021

35 0.973 -7.528 0.000 0.000 0.060 0.030 47.973 4.137 0.129 0.063

36 0.982 -7.271 0.000 0.000 0.000 0.000 47.350 3.816 0.154 0.104

37 0.990 -7.116 0.000 0.000 0.000 0.000 46.895 3.490 0.186 0.135

38 1.016 -6.545 0.000 0.000 0.140 0.070 45.670 2.615 0.368 0.257

39 0.988 -7.142 0.000 0.000 0.000 0.000 46.985 3.547 0.031 0.022

40 0.979 -7.263 0.000 0.000 0.000 0.000 47.393 3.928 0.024 0.023

41 1.006 -6.570 0.000 0.000 0.063 0.030 43.825 3.055 0.227 0.067

42 0.974 -8.192 0.000 0.000 0.071 0.044 46.303 3.798 0.096 0.044

43 1.019 -3.640 0.000 0.000 0.020 0.010 43.571 2.623 0.147 0.149

44 1.019 -6.019 0.000 0.000 0.120 0.018 45.218 2.564 0.271 0.026

45 1.035 -4.160 0.000 0.000 0.000 0.000 43.555 2.306 0.275 0.244

46 1.060 -5.186 0.000 0.000 0.000 0.000 43.982 0.918 0.429 0.850

47 1.034 -6.401 0.000 0.000 0.297 0.116 44.875 1.725 0.424 0.243

48 1.029 -6.435 0.000 0.000 0.000 0.000 45.127 2.040 0.156 0.176

49 1.038 -6.439 0.000 0.000 0.180 0.085 44.850 2.086 0.331 0.333

50 1.024 -6.496 0.000 0.000 0.210 0.105 45.444 2.678 0.210 0.105

51 1.052 -4.905 0.000 0.000 0.180 0.053 43.779 2.295 0.338 0.585

52 1.017 -2.485 0.000 0.000 0.049 0.022 44.088 3.077 0.176 0.032

53 1.007 -3.142 0.000 0.000 0.200 0.100 45.118 3.254 0.200 0.068

54 1.027 -2.478 0.000 0.000 0.041 0.014 43.988 2.893 0.116 0.043
Page 

44

55 1.057 -1.482 0.000 0.000 0.068 0.034 42.380 2.330 0.187 0.296

56 0.974 -8.915 0.000 0.000 0.076 0.022 47.263 3.457 0.113 0.029

57 0.969 -9.569 0.000 0.000 0.067 0.020 47.903 3.476 0.067 0.020

totals 12.670 2.688 12.508 3.364 real-power-loss 0.162

Table 57.11. Solution Information from Linear Approximation Using GUROBI 

Objective Value of 421.9 and Third Pass 

bus Voltage generation load Lambda Bus flow

no. Mag

(pu)

Ang

(deg)

P

(MW)

Q

(MVAR)

P

(MW)

Q

(MVAR)

P Q Pflow Qflow

1 1.033 0.000 1.152 1.192 0.550 0.170 41.974 2.008 1.115 1.175

2 1.012 1.125 0.800 0.000 0.030 0.880 41.529 2.466 0.786 0.945

3 0.992 -0.270 0.420 0.000 0.410 0.210 42.745 1.486 0.497 0.317

4 0.988 0.237 0.000 0.000 0.000 0.000 42.863 1.392 0.513 0.208

5 0.987 2.001 0.000 0.000 0.130 0.040 42.582 1.246 0.314 0.102

6 0.992 3.308 1.000 0.000 0.750 0.020 42.091 1.122 0.673 0.146

7 0.985 3.879 0.000 0.000 0.000 0.000 41.782 1.236 0.762 0.266

8 0.997 7.057 4.577 0.000 1.500 0.220 40.778 1.016 3.047 0.175

9 0.986 1.474 1.000 0.000 1.210 0.260 42.466 1.604 1.841 0.725

10 0.997 -2.532 0.000 0.000 0.050 0.020 43.816 1.846 0.414 0.735

11 0.980 -1.065 0.000 0.000 0.000 0.000 43.575 1.863 0.477 0.259

12 1.031 -2.654 3.690 1.399 3.770 0.240 43.809 2.003 0.289 1.241

13 0.987 -2.232 0.000 0.000 0.180 0.023 43.930 1.808 0.756 0.780

14 0.977 -2.698 0.000 0.000 0.105 0.053 43.983 1.537 0.548 0.855

15 0.993 -1.853 0.000 0.000 0.220 0.050 43.377 1.699 0.898 0.617

16 1.026 -3.287 0.000 0.000 0.430 0.030 43.919 2.019 0.434 0.050

17 1.023 -2.527 0.000 0.000 0.420 0.080 43.360 2.113 0.426 0.067

18 1.009 -4.202 0.000 0.000 0.272 0.098 43.119 1.421 0.324 0.106

19 0.977 -5.783 0.000 0.000 0.033 0.006 45.382 2.063 0.048 0.013

20 0.969 -6.052 0.000 0.000 0.023 0.010 45.867 2.317 0.023 0.035

21 1.014 -5.639 0.000 0.000 0.000 0.000 45.971 2.026 0.009 0.030

22 1.015 -5.595 0.000 0.000 0.000 0.000 45.916 2.028 0.049 0.079

23 1.014 -5.587 0.000 0.000 0.063 0.021 46.002 2.039 0.064 0.077

24 1.003 -4.684 0.000 0.000 0.000 0.000 46.382 2.014 0.173 0.484

25 0.988 -9.822 0.000 0.000 0.063 0.032 46.870 2.313 0.147 0.047

26 0.960 -4.175 0.000 0.000 0.000 0.000 46.439 2.108 0.174 0.434

27 0.983 -1.203 0.000 0.000 0.093 0.005 44.166 1.740 0.273 0.021

28 0.999 0.376 0.000 0.000 0.046 0.023 42.837 1.542 0.324 0.023

29 1.014 1.420 0.000 0.000 0.170 0.026 41.805 1.293 0.683 0.273

30 0.968 -10.471 0.000 0.000 0.036 0.018 48.144 2.908 0.081 0.042

31 0.941 -11.384 0.000 0.000 0.058 0.029 49.982 3.817 0.059 0.029

32 0.954 -10.852 0.000 0.000 0.016 0.008 49.034 3.791 0.071 0.022

33 0.952 -10.893 0.000 0.000 0.038 0.019 49.219 3.860 0.038 0.019

34 0.966 -6.752 0.000 0.000 0.000 0.000 48.667 3.463 0.071 0.027

35 0.973 -6.539 0.000 0.000 0.060 0.030 48.218 3.293 0.132 0.069

36 0.982 -6.287 0.000 0.000 0.000 0.000 47.553 3.040 0.157 0.113

37 0.991 -6.141 0.000 0.000 0.000 0.000 47.059 2.760 0.188 0.146
Page 

45

38 1.018 -5.600 0.000 0.000 0.140 0.070 45.733 2.006 0.382 0.313

39 0.989 -6.164 0.000 0.000 0.000 0.000 47.156 2.809 0.030 0.025

40 0.980 -6.273 0.000 0.000 0.000 0.000 47.609 3.149 0.023 0.025

41 1.004 -5.379 0.000 0.000 0.063 0.030 43.862 2.435 0.234 0.068

42 0.972 -7.085 0.000 0.000 0.071 0.044 46.444 3.013 0.099 0.044

43 1.017 -2.347 0.000 0.000 0.020 0.010 43.647 2.018 0.152 0.149

44 1.022 -5.120 0.000 0.000 0.120 0.018 45.235 2.024 0.264 0.017

45 1.039 -3.353 0.000 0.000 0.000 0.000 43.434 1.935 0.270 0.247

46 1.066 -4.314 0.000 0.000 0.000 0.000 43.957 0.491 0.440 0.867

47 1.039 -5.509 0.000 0.000 0.297 0.116 44.891 1.215 0.428 0.268

48 1.033 -5.522 0.000 0.000 0.000 0.000 45.158 1.501 0.169 0.213

49 1.044 -5.513 0.000 0.000 0.180 0.085 44.860 1.576 0.342 0.339

50 1.033 -5.510 0.000 0.000 0.210 0.105 45.541 2.120 0.212 0.107

51 1.066 -3.837 0.000 0.000 0.180 0.053 43.815 1.761 0.361 0.603

52 0.984 -0.360 0.000 0.000 0.049 0.022 44.325 1.964 0.177 0.022

53 0.975 -1.142 0.000 0.000 0.200 0.100 45.363 2.138 0.201 0.078

54 1.002 -0.634 0.000 0.000 0.041 0.014 44.181 1.968 0.119 0.064

55 1.037 0.246 0.000 0.000 0.068 0.034 42.496 1.578 0.192 0.286

56 0.972 -7.872 0.000 0.000 0.076 0.022 47.385 2.599 0.115 0.032

57 0.967 -8.573 0.000 0.000 0.067 0.020 48.027 2.575 0.068 0.022

totals 12.639 2.591 12.508 3.364 real-power-loss 0.131

 
Page 

46

118-bus Problem

Without relaxation slack variables, all solvers except KNITRO find the global optimal 

value for all starting points see Table 118.1. SNOPT, CONOPT and MINOS are the fastest 

solvers. CPLEX and GUROBI are faster on OPF than any nonlinear solver but MINOS. OPFp 

did not solve faster than the OPF. 

Table 118.1. Solution statistics for the 118-bus problem with different nonlinear solvers 

without relaxation slack variables.

optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

SNOPT 1297 0 2.90 0.06 3.9 10 0

MINOS 1297 0 3.06 0.10 5.0 10 0

IPOPT 1297 0 3.19 0.14 6.5 10 0

CONOPT 1297 0 5.19 0.09 8.9 10 0

KNITRO 1298 0.001 173.97 0.52 755.1 8 0

OPF 

MINOS 1311 0 0.87 0.15 1.8 10 0

SNOPT 1311 0 1.52 0.05 1.8 10 0

CONOPT 1311 0 1.75 0.05 2.2 10 0

IPOPT 1311 0 4.63 0.12 7.7 10 0

KNITRO 1315 0.001 202.69 0.62 1000.1 8 2

OPFp

MINOS 1311 0 1.09 0.35 3.5 9 0

CONOPT 1311 0 1.21 0.11 2.1 9 0

IPOPT 1311 0 3.22 0.31 12.5 9 0

SNOPT 1311 0 3.47 0.38 12.7 7 0

KNITRO 1319 0.002 277.41 0.48 1000.1 7 3

OPFlin

CPLEX 1293 0.006 0.91 0.32 0.1 82 0

CPLEX 1293 0.006 0.92 0.33 0.1 82 0

CPLEX 1293 0.006 0.93 0.35 0.1 82 0

GUROBI 1292 0.007 1.15 0.28 0.2 89 0

GUROBI 1292 0.007 1.16 0.30 0.1 89 0

Btheta

GUROBI 1261 0 0.08 0.04 0.1 10 0

GUROBI 1261 0 0.08 0.05 0.1 10 0

CPLEX 1261 0 0.14 0.06 0.2 10 0

CPLEX 1261 0 0.14 0.04 0.2 10 0

CPLEX 1261 0 0.14 0.02 0.2 10 0

Without relaxation slack variables, the results with different nonlinear solvers are in 

table 118.1r. With relaxation slack variables, all nonlinear solvers have trouble solving the 

problems. Only CONOPT and KNITRO find the optimal solution for the OPF2. CONOPT, 

IPOPT and KNITRO found the optimal solution to the OPF. 
Page 

47

Table 118.1r. Solution Statistics for the 118-Bus Problem with Different Nonlinear Solvers 

with Relaxation Slack Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN MINOPF

OPF2

SNOPT 1339.832 0.001 1.652 0.056 2.137 10 0 1330.587

MINOS 1694.146 0.052 3.424 0.195 9.079 5 9 1342.095

CONOPT 1807.122 0.049 8.441 0.103 14.227 9 9 1296.607

IPOPT 1955.824 0.038 10.906 0.113 20.327 10 10 1510.022

KNITRO 1370.009 0.049 129.387 0.722 1000.044 9 2 1297.639

OPF 

MINOS 1394.883 0.004 2.788 0.176 6.178 10 0 1365.595

CONOPT 1467.377 0.056 6.204 0.335 25.053 10 3 1311.498

IPOPT 1311.517 0 9.076 0.037 10.764 10 0 1311.499

SNOPT 1395.91 0.005 10.143 0.857 92.571 10 0 1361.567

KNITRO 3682.3 0.544 140.969 0.691 1000.044 8 1 1311.498

OPFp

SNOPT 1380.287 0.038 1.256 0.487 6.957 10 1 1320.675

CONOPT 1327.655 0.012 1.911 0.232 5.99 10 1 1313.965

MINOS 1392.89 0.021 2.442 0.121 3.729 10 1 1334.394

KNITRO 1419.399 0.04 4.271 0.305 15.694 10 1 1313.963

IPOPT 1366.839 0.038 5.022 0.204 13.977 10 1 1311.499

For linear solvers, GUROBI and CPLEX have similar performance with relaxation 

slack variables see Table 118.2. The optimal solution values are within 2 percent of the best 

nonlinear solver performance. 

Table 118.2. Solution Statistics for the 118-Bus Problem with the Linear Solvers 

with Relaxation Slack Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPFlin

GUROBI 1293 0.006 1.89 0.41 0.15 86 0

GUROBI 1293 0.006 1.89 0.41 0.15 86 0

CPLEX 1295 0.006 1.89 0.43 0.17 82 0

GUROBI 1293 0.006 1.95 0.41 0.16 86 0

CPLEX 1295 0.006 1.97 0.45 0.18 82 0

BTHETA

GUROBI 1261 0 0.09 0.03 0.10 10 0

GUROBI 1261 0 0.09 0.03 0.11 10 0

GUROBI 1261 0 0.09 0.03 0.11 10 0

CPLEX 1261 0 0.13 0.01 0.14 10 0

CPLEX 1261 0 0.15 0.07 0.21 10 0

When run at different times, the results were similar with the exception of cpu 

times. 

Table 118.3. Solution Statistics for the 118-Bus Problem with Relaxation Slack Variables at 

A Different Time.

OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2

SNOPT 1,342 0.00 0.69 0.05 0.83 10 0

CONOPT 1,797 0.04 3.39 0.06 4.52 10 9

IPOPT 1,931 0.04 3.91 0.06 4.96 10 10

MINOS 1,768 0.04 3.97 0.58 25.52 9 9

KNITRO 1,348 0.03 30.11 0.66 212.05 9 2

OPF 
Page 

48

MINOS 1,429 0.03 1.31 0.17 2.47 10 1

CONOPT 1,573 0.06 2.99 0.19 6.35 10 5

IPOPT 1,312 0.00 3.57 0.06 4.70 10 0

SNOPT 1,392 0.01 4.17 0.86 38.22 10 0

KNITRO 7,349 0.76 50.71 0.93 497.64 9 1

OPFp

SNOPT 1,381 0.04 0.43 0.55 2.65 10 1

CONOPT 1,352 0.03 0.86 0.22 2.61 10 1

MINOS 1,393 0.02 1.06 0.12 1.95 10 1

KNITRO 410,600 0.95 1.46 0.30 5.15 10 1

IPOPT 1,367 0.04 1.86 0.17 4.63 10 1

BTHETA

GUROBI 1,261 0.00 0.04 0.02 0.04 10 0

CPLEX 1,261 0.00 0.06 0.02 0.07 10 0

OPFlin

GUROBI 1,289 0.01 0.51 0.63 0.06 62 0

CPLEX 1,288 0.01 0.62 0.62 0.08 61 0

 
Page 

49

CONOPT. The OPF2 formulation had 1,771 rows, 2,007 columns, 7,705 non-zeroes, and 

1,234 non-constant first derivatives with 3,149 evaluation operations. CONOPT found 138 

post-triangular equations. The results are presented in Table 118.4. At iteration 411, 

CONOPT finds a feasible solution and at iteration 710 found the optimal solution of 8.427E7. 

At iteration 805, CONOPT found a feasible solution and at iteration 1262, found an optimal 

solution with value of 1.889E8 with the following message: The error in the optimal 

objective function value. Hessian is less than the minimal tolerance on the objective. With 

another starting point, at iteration 931, CONOPT found a feasible solution and at iteration 

1357, an optimal solution of 1.297E3 Reduced gradient 4.8E-08. The OPF and OPFp 

formulations had 1,889 rows, 3,187 columns, 9,961 non-zeroes, and 1,180 non-constant 

first derivatives with 2,714 evaluation operations. CONOPT found 64 pre-triangular 

equations and 212 post-triangular equations.

With relaxation slack variables, at iteration 216, CONOPT found a feasible solution 

and at iteration 291 found a local optimal solution with a value of 1.311E3. For starting 

point 2, at iteration 126, CONOPT found a feasible solution and at iteration 225 found an 

optimal solution with a value of 1.311E3. For starting point of 3, at iteration 185, CONOPT 

found a feasible solution and at iteration 780 found an optimal solution with a value of 

7.044E7 with a reduced gradient of .5E-09. For OPFp, at iteration 91, CONOPT found a 

feasible solution and at iteration 151, CONOPT found an optimal solution with a value of 

1.312E3 with a reduced gradient less than tolerance. 

With relaxation slack variables, CONOPT found optimal values near the optimal 

value and performed better on the flat start than the average random starting point for 

OPF2 and OPF. Without relaxation variables, CONOPT found the optimal solutions of 1297 

for OPF2 and 1311 for OPF. The performance with and without relaxation slack variables 

are in Table 118.3.

Table 118.3. CONOPT Performance on the 118-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF OPFp

star without with without with without with

pt iter iter opt opt iter iter opt opt iter opt iter opt opt

1 69 710 8E 198 20 198 1E 131 11 131 11 1E 131

2 58 121 3E 167 30 402 1E 155 92 131 21 1E 131

3 56 131 1E 129 30 313 1E 131 19 131 25 1E 131

4 51 980 1E 202 38 664 7E 197 24 165 52 2E 147

5 53 107 1E 151 32 342 1E 131 15 131 24 1E 131

6 60 170 6E 171 22 311 1E 131 33 131 38 1E 131

7 43 122 1E 218 27 395 1E 131 13 131 16 1E 131

8 56 133 1E 204 43 359 1E 131 20 131 37 1E 131

9 80 611 2E 192 19 360 1E 131 88 131 13 1E 131

10 75 135 9E 195 21 103 7E 196 13 131 16 1E 131

avg 60 115 8E 183 28 438 2E 146 16 134 25 2E 132

 
Page 

50

KNITRO. The performance with and without relaxation slack variables are in Table 118.4.

Table 118.4. KNITRO Performance on the 118-Bus without Relaxation Slack Variables.

OPF2 OPF2 OPF OPF OPFp OPFp

start without with without with without with 

point optval optval optm optval optval optm optval optval optm

1 1297 1.3E3 1298 1338 1.3E3 1314 1312 1.3E3 1314

2 1297 1.3E3 1300 1317 1.3E3 1314 1312 1.3E3 1314

3 1297 1.3E3 1299 1314 1.3E3 1314 1312 1.3E3 1314

4 1324 1.3E3 1298 1312 2.0E4 18600 1312 1.5E7 1859

5 1297 8.6E7 1853 1312 1.5E8 64250 1312 1.9E3 1571

6 1297 1.2E8 1941 1312 3.3E+10 3.3E+10 1312 1.3E3 1314

7 1297 1.3E3 1298 1312 1.6E3 1375 1312 2.8E3 1566

8 1297 1.3E3 1299 1312 2.9E3 2909 1313 1.3E3 1314

9 1297 1.3E3 1298 1320 1.3E3 1314 1312 1.3E3 1314

10 1298 1.3E3 1298 1312 1.3E3 1320 1312 1.3E3 1314

avg 1300 2.0E7 1418 1316 3.3E9 3.3E9 1312 1.5E6 1419

SNOPT. Without relaxation slack variables, SNOPT always found the optimal value OPF2 of 

1297, and OPF of 1311. SNOPT performed better on the flat start than each random starting 

point for OPF2, OPF and OPFp. With relaxation slack variables, SNOPT had difficulty (see 

Table 118.5).

Table 118.5 SNOPT Performance on the 118-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF OPFp

start without with without with without with

point iter iter opt iter iter opt iter opt iter opt optm

1 1768 1433 1342 1396 927 1362 691 1311 489 1321 1322

2 3838 2462 1336 2434 1476 1399 808 1311 717 1329 1329

3 3327 2980 1347 2509 1703 1438 651 1311 570 1326 1326

4 3652 3029 1331 2612 1818 1430 17839 2048 8802 3E7 1878

5 3189 2853 1335 2365 1992 1385 883 1311 629 1326 1326

6 3911 2701 1348 2357 1923 1375 11621 1311 760 1322 1322

7 3535 2949 1339 2639 1862 1389 5565 1704 643 1321 1321

8 3460 3359 1341 2580 1886 1403 931 1311 506 1326 1326

9 3306 2569 1338 2626 1714 1376 799 1311 700 1326 1326

10 4804 2589 1342 2537 1735 1403 9647 1828 775 1328 1328

avg 3479 2692 1340 2406 1704 1396 4944 1476 1459 3E6 1380

 
Page 

51

MINOS. Without relaxation slack variables, MINOS always found the optimal value of 1297 

for OPF2 and 1311 for OPF and OPFp. MINOS performs better on the flat start than the 

average random starting point. With relaxation slack variables, MINOS had dificulty (see 

Table 118.6).

Table 118.6 MINOS Performance on the 118-Bus With and Without Relaxation Slack 

Variables.

OPF2 OPF OPFp

start withou with withou with without With

poin iter iter opt opt iter iter opt iter opt iter opt omp

1 1765 234 3E 1677 792 605 140 665 131 404 137 137

2 2082 242 4E 1846 882 294 140 675 131 283 136 136

3 1808 580 1E 1342 938 281 137 690 131 400 138 138

4 3609 301 4E 1735 847 181 141 839 199 268 3E7 167

5 2875 895 1E 1609 921 498 139 710 131 139 134 134

6 4157 291 4E 2013 2137 234 136 703 131 340 135 135

7 2835 256 3E 1809 997 159 136 683 131 149 133 133

8 1874 330 5E 1864 877 462 141 711 131 154 134 134

9 2792 347 3E 1696 1907 193 140 712 131 318 136 136

10 2244 249 3E 1745 917 225 141 692 131 328 139 139

avg 2604 373 3E 1734 1122 313 139 209 138 278 3E6 139

IPOPT. Without relaxation slack variables, IPOPT always found the optimal value and 

perform better on the flat start than the average random starting point for OPF2 and OPF 

(see Table 118.7).

Table 118.7 IPOPT Performance on the 118-Bus without Relaxation Slack Variables.

start OPF2 OPF OPFp

point iterations optval iterations optval iterations optval

1 38 1296.607 60 1311.498 26 1311.498

2 84 1296.607 83 1311.498 22 1311.498

3 57 1296.607 50 1311.498 23 1311.498

4 28 1296.607 28 1311.498 167 4651.809

5 42 1296.607 43 1311.498 23 1311.498

6 55 1296.607 77 1311.498 47 1311.498

7 39 1296.607 80 1311.498 23 1311.498

8 38 1296.607 72 1311.498 28 1311.498

9 31 1296.607 46 1311.498 28 1311.498

10 29 1296.607 51 1311.498 26 1311.498

avg 44 1296.607 59 1311.498 41 1645.529
Page 

52

With relaxation slack variables, IPOPT had difficulty (see Table 118.8). 

Table 118.8 IPOPT Performance on the 118-Bus with Relaxation Slack Variables.

start OPF2 OPF OPFp

point iters optval optm iters optval optm iters optval optm

1 76 1.08E8 2086.1 97 1.31E3 1311.5 39 1.31E3 1311.6

2 82 4.10E7 1847.1 96 1.31E3 1311.5 47 1.31E3 1311.5

3 100 4.10E7 1847.1 81 1.31E3 1311.5 41 1.31E3 1311.5

4 185 6.01E7 2026.7 94 1.31E3 1311.5 120 3.11E7 1864.8

5 110 1.48E8 2250.0 96 1.31E3 1311.5 38 1.31E3 1311.5

6 81 6.95E7 1917.3 112 1.31E3 1311.5 71 1.31E3 1311.5

7 102 5.81E7 1686.8 107 1.31E3 1311.5 39 1.31E3 1311.5

8 160 4.54E8 2306.5 93 1.31E3 1311.5 59 1.31E3 1311.5

9 82 1.45E7 1510.0 100 1.31E3 1311.5 44 1.31E3 1311.5

10 91 2.74E8 2080.7 98 1.31E3 1311.5 46 1.31E3 1311.5

GUROBI. The BTHETA formulation had 2,137 rows, 16,525 columns and 34,195 non-zeroes. 

GUROBI Presolve reduced the problem size to 199 rows, 497 columns, 695 nonzeros in 

0.03s. GUROBI solved in 103 iterations and 0.05 seconds with an optimal objective of 

1.261e3. OPFlin started with 3070 rows, 3187 columns and 11273 non-zeroes. presolve 

resulted in 1240 rows, 1961 columns and 6046 non-zeroes. OPFlin pass 3 had 3,306 rows, 

3,187 columns and 12,085 non-zeroes and presolve 1240 rows, 1961 columns and 6046 

non-zeroes. 

Table 118.9. Linear Approximation LP Passes By Starting Point for The 118-Bus 

Using GUROBI without Relaxation Slack Variables.

start 1 2 3 4 5 6 7 8 9 10

Without 3 10 6 10 10 10 10 10 10 10
Page 

53

Table 118.10. Linear Approximation Nonzeros, Iterations and Optimal Value by LP Pass and 

Starting Point for the 118-Bus Using GUROBI.

pass Nonzeros iters optval Nonzeros iters optval Nonzeros iters optval

start point 1 2 3

1 11273 711 1266 11377 691 1280 11377 692 1282

2 11849 578 1297 11845 597 1269 11845 702 1271

3 12085 536 1304 12083 578 1273 12079 610 1275

4 12319 567 1284 12317 626 1281

5 12555 595 1276 12553 620 1283

6 12791 666 1296 12789 619 1305

7 13027 647 1289

8 13263 671 1287

9 13499 615 1279

10 13735 800 1291

start point 4 5 6

1 11377 708 1283 11377 679 1283 11377 700 1278

2 11849 800 1270 11849 599 1274 11845 673 1268

3 12069 653 1278 12085 625 1276 12083 693 1277

4 12305 1021 1299 12321 625 1288 12315 636 1299

5 12537 978 1291 12557 624 1285 12553 628 1276

6 12769 1275 1282 12793 605 1280 12785 700 1294

7 13001 987 1296 13029 656 1291 13019 686 1286

8 13233 1517 1287 13265 600 1281 13253 711 1285

9 13461 735 1291 13501 723 1294 13491 665 1296

10 13703 689 1296 13737 666 1287 13727 692 1286

start point 7 8 9

1 11377 673 1280 11377 660 1281 11377 694 1286

2 11845 659 1270 11849 610 1275 11841 761 1269

3 12079 696 1276 12085 1014 1269 12073 623 1271

4 12317 615 1290 12321 654 1275 12313 713 1280

5 12553 664 1272 12557 603 1302 12545 988 1282

6 12789 691 1287 12793 644 1290 12783 600 1286

7 13025 601 1278 13029 632 1285 13019 657 1273

8 13261 639 1298 13265 645 1279 13255 658 1297

9 13501 1418 1290 13491 572 1298

10 13737 705 1283

start point 10

1 11377 684 1281

2 11845 712 1277

3 12083 612 1288

4 12319 629 1278

5 12555 713 1293

6 12791 619 1284

7 13027 764 1293

8 13263 640 1282

9 13499 723 1290

10 13735 721 1283
Page 

54

Increased Demand. With demand increased by 1.2 and 1.4, the results are in table 118.11. 

OPFlin is more robust.

Table 118.11. Solution Statistics for 118-Bus Problem with Relaxation Slack Variables with 

Increased Demand Using CONOPT and GUROBI.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 1797 0.044 3.65 0.06 4.65 10 9

OPF 1573 0.059 3.23 0.19 6.69 10 5

OPFlin 1289 0.007 0.53 0.60 0.07 62 0

OPFp 1352 0.028 0.93 0.21 2.61 10 1

BTHETA 1261 0.000 0.04 0.02 0.04 10 0

1.2*demand

OPF2 1888 0.030 4.74 0.18 9.86 8 9

OPF 1814 0.043 2.18 0.24 6.07 10 3

OPFlin 1630 0.007 0.64 0.57 0.07 69 0

OPFp 1707 0.027 0.99 0.35 4.23 10 1

BTHETA 1601 0.000 0.04 0.02 0.04 10 0

1.4*demand

OPF2 2141 0.024 3.85 0.12 7.13 10 6

OPF 2142 0.030 2.58 0.17 5.54 10 3

OPFlin 1978 0.006 0.82 0.40 0.07 84 0

OPFp 2059 0.020 1.37 0.22 3.84 10 1

BTHETA 1946 0.000 0.04 0.03 0.04 10 0
Page 

55

300-bus problem 

Without relaxation slack variables, all solvers declare an infeasible problem. The 

results with different nonlinear solvers with relaxation slack variables are in table 300.1r. 

All solvers (except KNITRO) declare a local optimal solution, but occasionally fail to remove 

the penalty slacks. Only CONOPT and IPOPT find the global optimal value. 

Table 300.1r. Solution Statistics for the 300-Bus Problem with the Nonlinear Solvers 

with Relaxation Variables.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN MINOPT

OPF2

SNOPT 7307 0.007 14.1 0.147 28.3 10 2 7203

CONOPT 7229 0.004 24.5 0.061 30 10 1 7197

MINOS 7305 0.004 32.5 0.315 129 10 1 7271

IPOPT 7345 0.008 34.7 0.13 73 10 4 7197

KNITRO 7550 0.018 529.3 0.25 1000.3 5 6 7205

OPF 

MINOS 7574 0.003 6.4 0.121 12.2 10 1 7531

CONOPT 7488 0 6.6 0.086 11.1 10 0 7488

SNOPT 7671 0.006 14.7 0.201 28.5 10 4 7551

IPOPT 7488 0 16 0.209 34.5 10 0 7488

KNITRO 14300 0.271 713.6 0.184 1000.1 3 8 7537

OPFp

MINOS 7732 0.009 4.9 0.192 9.2 10 5 7503

SNOPT 7588 0.007 8.1 0.25 17.1 10 1 7499

IPOPT 7776 0.027 8.3 0.091 13.1 10 2 7488

CONOPT 7731 0.01 8.7 0.227 18.3 10 5 7488

KNITRO 90890 0.842 6940 0.916 67220 7 5 7494

For linear solvers, CPLEX outperforms GUROBI see table 300.2. The optimal solution 

values are within 3 percent of the best nonlinear solvers. All linear approximation took the 

full 10 passes and did not meet the other convergence criteria. The linear solvers were more 

robust than the nonlinear solvers. 
Page 

56

Table 300.2. Solution Statistics for the 300-Bus Problem with the Linear Solvers.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPFlin

CPLEX 7528 0.012 9.9 0.338 0.4 100 0

CPLEX 7528 0.012 10 0.328 0.5 100 0

GUROBI 7615 0.042 16.2 0.161 0.5 100 0

GUROBI 7615 0.042 16.4 0.146 0.5 100 0

GUROBI 7615 0.042 16.6 0.163 0.4 100 0

GUROBI 7615 0.042 16.6 0.148 0.4 100 0

BTHETA

GUROBI 7195 0 0.3 0.011 0.3 10 0

GUROBI 7195 0 0.3 0.012 0.3 10 0

CPLEX 7195 0 0.3 0.022 0.4 10 0

GUROBI 7195 0 0.3 0.009 0.3 10 0

GUROBI 7195 0 0.3 0.034 0.4 10 0

CPLEX 7195 0 0.3 0.027 0.4 10 0

Table 300.3. Solution Statistics for the 300-Bus Problem from Another Day.

optvavg optvcv cpuavg cpucv cpumax CONVRG Tepsin

OPF2

CONOPT 7291 0.009 22.97 0.081 31.9 10 2

MINOS 7277 0.000 34.00 0.296 128.8 10 0

SNOPT 7266 0.005 13.14 0.129 28.9 10 1

IPOPT 7420 0.008 70.15 0.157 123.2 10 6

KNITRO 7360 0.010 592.33 0.247 1000.2 5 6

KNITRO 7360 0.010 613.38 0.226 1000.1 5 6

OPF 

CONOPT 7488 0.000 6.58 0.081 8.7 10 0

MINOS 7580 0.003 6.43 0.108 11.4 9 1

SNOPT 7696 0.006 17.13 0.186 31.2 10 5

IPOPT 7488 0.000 32.86 0.274 107.8 10 0

KNITRO 52080 0.659 572.12 0.230 1000.1 5 7

KNITRO 8507 0.047 7260.10 0.855 66150.0 3 7

OPFp

CONOPT 7682 0.010 9.86 0.282 28.8 10 4

MINOS 7733 0.009 5.34 0.203 10.2 10 5

SNOPT 7589 0.007 8.21 0.254 17.1 10 1

IPOPT 7776 0.027 18.83 0.217 41.4 10 2

KNITRO 31810 0.698 275.20 0.483 1000.0 8 5

OPFlin

CPLEX 7520 0.013 7.76 0.681 0.4 77 0

GUROBI 7608 0.043 12.42 0.555 0.5 77 0

BTHETA

GUROBI 7195 0.000 0.33 0.014 0.4 10

CPLEX 7195 0.000 0.34 0.015 0.4 10
Page 

57

CONOPT. The OPF2 formulation had 4,501 rows, 5,101 columns, 18,938 non-zeroes, and 

3,069 non-constant first derivatives with 7,455 evaluation operations and occupied 29 Mb. 

CONOPT had 410 post-triangular equations. With relaxation slack variables, CONOPT found 

a feasible solution at 1020 iterations and an optimal solution at iteration 2404 with a 

reduced gradient of 2.9E-08. For starting point 2, CONOPT found an optimal solution of 

3.219E7 at iteration 2110. 

The OPF and OPFp formulations with relaxation slack variables had 4,801 rows, 

8,101 columns, 24,059 non-zeroes, and 3,000 non-constant first derivatives with 6,900 

evaluation operations occupying 29 Mb with 231 pre-triangular equations and 716 posttriangular equations. For OPF, at iteration 601, CONOPT found optimal solution of 3.219E7 

with a reduced gradient 4.0E-09 and with active penalty slacks. For OPFp, at 126, CONOPT 

found a feasible solution and at iteration 459, an optimal solution of 3.219E7 with reduced 

gradient of 1.1E-08 with active penalty slacks.

Table 300.4. CONOPT Performance on the 300-Bus Problem.

start OPF2 OPF OPFp

point iters optval optm iters optval optm iters optval optm

1 2404 3.2E7 7197 644 3.2E7 7488 393 3.2E7 7488

2 1992 3.2E7 7197 518 3.2E7 7488 1507 4.8E7 7866

3 3084 5.3E7 7511 1088 3.2E7 7488 186 3.2E7 7488

4 2943 3.2E7 7197 454 3.2E7 7488 1432 8.7E7 7950

5 3248 3.2E7 7197 732 3.2E7 7488 1705 1.2E8 8026

6 3143 3.2E7 7197 850 3.2E7 7488 2115 4.1E7 7923

7 3025 3.2E7 7197 887 3.2E7 7488 523 3.2E7 7488

8 2977 3.2E7 7197 742 3.2E7 7488 434 3.2E7 7488

9 3654 3.2E7 7197 862 3.2E7 7488 374 3.2E7 7488

10 1713 3.2E7 7197 780 3.2E7 7488 1699 9.2E7 8100

avg 2818 3.4E7 7228 756 3.2E7 7488 1037 5.5E7 7731

 
Page 

58

KNITRO With relaxation slack variables, KNITRO performed poorly.

Table 300.4. KNITRO Performance on the 300-Bus.

start OPF2 OPF OPFp

point optval optm optval optm optval optm

1 3.22E7 7205 3.22E7 7537 3.22E7 7494

2 3.22E7 7236 9.14E7 12160 4.88E7 586700

3 4.40E14 1.10E9 1.40E13 9.48E7 3.22E7 11400

4 3.51E8 7765 8.35E7 490500 8.69E7 8270

5 6.63E8 7833 5.60E7 235400 1.12E8 8404

6 1.37E9 7867 5.01E7 492000 1.04E8 200900

7 4.30E13 5927000 1.00E13 255300 3.22E7 7494

8 4.14E7 7522 3.22E7 23440 3.22E7 7494

9 3.22E7 7230 6.62E7 11920 3.22E7 7535

10 9.63E8 7919 3.58E8 189700 7.06E7 8152

avg 4.83E13 1.11E8 2.40E12 9.65E6 5.83E7 8.54E4

 

SNOPT 

Table 300.6 SNOPT Performance on the 300-bus.

start OPF2 OPF OPFp

point iters optval optm iters optval optm iters optval optm

1 15478 3.2E7 7203 6307 3.2E7 7551 2302 3.2E7 7499

2 38329 5.6E7 7647 9966 3.2E7 7566 23643 3.2E7 7602

3 16815 3.2E7 7240 19742 3.2E7 7579 2988 3.2E7 7506

4 19695 3.2E7 7231 18787 3.2E7 7583 8845 3.2E7 7551

5 18051 3.2E7 7209 29142 5.6E7 7850 21500 3.2E7 7564

6 43060 5.6E7 7603 39031 7.3E7 7895 18142 3.2E7 7538

7 14882 3.2E7 7213 38342 5.1E7 7823 3066 3.2E7 7500

8 13259 3.2E7 7250 7478 3.2E7 7554 2893 3.2E7 7505

9 14162 3.2E7 7226 10238 3.2E7 7554 3061 3.2E7 7505

10 14195 3.2E7 7243 39834 4.1E7 7758 17940 9.2E7 8114

avg 20793 3.7E7 7307 21887 4.1E7 7671 10438 3.8E7 7588
Page 

59

MINOS 

Table 300.7 MINOS Performance on the 300-bus.

start OPF2 OPF OPFp

point iters optval optm iters optval optm iters optval optm

1 24650 3.2E7 7277 5172 3.2E7 7537 2224 3.2E7 7503

2 24140 3.2E7 7271 6564 3.2E7 7540 8228 4.8E7 7858

3 128759 3.2E7 7278 8076 3.2E7 7613 4362 3.2E7 7526

4 18723 3.2E7 7287 6151 3.2E7 7560 5931 8.7E7 7973

5 23902 3.2E7 7273 5412 3.2E7 7545 9107 1.2E8 8074

6 26338 3.2E7 7278 12799 4.1E7 7794 9113 1.0E8 8059

7 23924 3.2E7 7278 7768 3.2E7 7531 3332 3.2E7 7528

8 27414 3.2E7 7272 7279 3.2E7 7545 2414 3.2E7 7513

9 19071 3.2E7 7274 8209 3.2E7 7537 2561 3.2E7 7514

10 19975 4.1E7 7567 5376 3.2E7 7541 9800 4.3E7 7767

avg 33690 3.3E7 7306 7281 3.3E7 7574 5707 5.7E7 7732

 

IPOPT 

Table 300.8 IPOPT Performance on the 300-bus.

start OPF2 OPF OPFp

point iters optval optm iters optval optm iters optval optm

1 161 3.2E7 7197 127 3.2E7 7488 73 3.2E7 7488

2 381 3.2E7 7197 148 3.2E7 7488 124 3.2E7 7488

3 475 1.8E8 7627 331 3.2E7 7488 102 3.2E7 7488

4 325 5.8E7 7493 100 3.2E7 7488 76 8.7E7 9671

5 350 6.3E7 7520 95 3.2E7 7488 81 3.2E7 7488

6 453 3.2E7 7197 483 3.2E7 7488 126 1.0E8 8189

7 772 3.2E7 7197 71 3.2E7 7488 86 3.2E7 7488

8 500 3.2E7 7197 78 3.2E7 7488 74 3.2E7 7488

9 339 1.9E8 7630 106 3.2E7 7488 71 3.2E7 7488

10 409 3.2E7 7197 324 3.2E7 7488 74 3.2E7 7488

avg 417 6.8E7 7345 186 3.2E7 7488 89 4.5E7 7776

GUROBI. The BTHETA formulation had 5,155 rows, 96,519 columns, 194,899 non-zeroes 

and occupied 32 Mb. in 0.22s GUROBI Presolve resulted in 383 rows, 1089 columns, 1471 

non-zeros. GUROBI solved in 196 iterations and 0.28 seconds with an optimal objective of 

3.219e7 with active penalty slacks. 

For GUROBI, OPFlin had 8,402 rows 8,101 columns and 29,105 non-zeroes 

occupying 27 Mb. Presolve resulted in 2906 rows, 4126 columns and 13385 nonzeroes. 

During the solution process, the following warning was issued Markowitz tolerance 

tightened to 0.03125. The sequence of optimal values is not monotonic due to linear 

approximations to the nonconvex constraints. 
Page 

60

Table 300.9. Linear Approximation Nonzeros, Iterations and Optimal Value by LP Pass and 

Starting Point for the 300-Bus Using GUROBI.

pass nonzeros iters optval optm nonzeros iters optval optm

Start 1 Start 2

1 27305 2575 3.22E7 7247 27611 3189 3.22E7 7297

2 28813 2680 3.22E7 7444 28855 5352 3.22E7 7333

3 29439 7004 3.22E7 7471 29449 9296 3.59E7 7931

4 30039 5601 3.22E7 7474 30031 7152 3.33E7 7718

5 30639 3988 3.22E7 7470 30627 6902 3.26E7 7933

6 31239 4742 3.22E7 7474 31215 4284 3.26E7 8171

7 31839 4339 3.22E7 7465 31813 4434 3.22E7 7670

8 32435 5001 3.22E7 7475 32415 5061 3.45E7 7918

9 33023 4668 3.22E7 7473 33017 3834 3.22E7 7384

10 33533 2674 3.22E7 7474 33613 3052 3.22E7 7572

Start 3 Start 4

1 27611 2175 3.22E7 7297 27611 2519 3.22E7 7253

2 28859 5221 3.22E7 7321 28855 7615 3.22E7 7443

3 29459 4625 3.22E7 7320 29445 5499 3.22E7 7398

4 30059 2838 3.22E7 7388 30039 4080 3.22E7 7353

5 30659 3625 3.22E7 7452 30641 2644 3.22E7 7445

6 31259 4212 3.22E7 7462 31239 4839 3.22E7 7360

7 31859 5865 3.22E7 7470 31837 4633 3.22E7 7493

8 32459 5503 3.22E7 7466 32435 8338 3.22E7 7495

9 33059 2819 3.22E7 7471 33021 4817 3.22E7 7471

10 33659 4149 3.22E7 7465 33613 3771 3.22E7 7495

Start 5 Start 6

1 27611 3721 3.22E7 7288 27611 2070 3.22E7 7284

2 28851 4615 3.22E7 7432 28855 5346 3.23E7 8027

3 29451 4606 3.42E7 7957 29437 7343 3.40E7 7965

4 29941 4902 3.25E7 7821 29925 6543 3.37E7 8042

5 30509 5235 3.22E7 7569 30483 9820 3.46E7 8073

6 31101 4919 3.25E7 7523 31067 6179 3.24E7 8154

7 31687 7197 3.28E7 8049 31649 7690 3.60E7 8012

8 32267 5424 3.24E7 8129 32259 4593 3.23E7 8083

9 32843 7576 3.23E7 8015 32859 4309 3.25E7 8406

10 33389 6546 3.23E7 7740 33447 4149 3.35E7 8496

Start 7 Start 8

1 27611 4455 3.22E7 7284 27611 5215 3.22E7 7293

2 28859 3698 3.22E7 7347 28859 6209 3.22E7 7348

3 29459 4057 3.22E7 7375 29459 4506 3.22E7 7353

4 30059 3434 3.22E7 7324 30057 2792 3.22E7 7399

5 30659 2623 3.22E7 7406 30659 4018 3.22E7 7449

6 31259 2716 3.22E7 7464 31259 2948 3.22E7 7475

7 31859 2512 3.22E7 7465 31859 7125 3.22E7 7467

8 32459 5434 3.22E7 7473 32459 7940 3.22E7 7474

9 33059 4714 3.22E7 7466 33059 5049 3.22E7 7467

10 33657 4016 3.22E7 7474 33659 3519 3.22E7 7473

Start 9 Start 10

1 27611 2803 3.22E7 7271 27611 2340 3.22E7 7266
Page 

61

2 28859 4538 3.22E7 7366 28855 3313 3.22E7 7403

3 29459 3458 3.22E7 7377 29453 5261 3.23E7 7762

4 30059 6661 3.22E7 7356 30047 3017 3.22E7 7484

5 30659 5502 3.22E7 7336 30647 5591 3.36E7 8198

6 31255 5052 3.22E7 7425 31221 6963 3.34E7 8154

7 31857 4591 3.22E7 7449 31799 5930 3.22E7 7421

8 32457 2256 3.22E7 7460 32393 5451 3.27E7 7632

9 33057 2230 3.22E7 7470 32945 7055 3.22E7 7359

10 33657 3081 3.22E7 7469 33563 3904 3.22E7 7497

Increasing Demand. With demand increased by 1.2 and 1.4, the results are in table 300.12. 

When demand is 1.2 or 1.4 times greater, the penalty slacks are greater than the set 

threshold and convergence becomes more difficult. 

Table 300.12. Solution Statistics for 300-Bus Problem with Increased Demand 

Using CONOPT and GUROBI.

type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 7291.214 0.009 23.447 0.071 31.637 10 2

OPF 7488.069 0.000 6.830 0.077 8.923 10 0

OPFlin 7607.635 0.043 11.670 0.545 0.463 77 0

OPFp 7681.821 0.010 9.607 0.252 23.962 10 4

BTHETA 7195.254 0.000 0.320 0.015 0.348 10 0

1.2*demand

OPF2 9403.831 0.000 20.247 0.069 29.157 10 10

OPF 9817.016 0.000 9.805 0.093 14.555 9 10

OPFlin 9783.840 0.010 18.072 0.675 0.680 76 9

OPFp 9826.498 0.000 7.839 0.164 13.385 8 10

BTHETA 9189.562 0.000 0.334 0.015 0.367 10 0

1.4*demand

Type OPTVAVG OPTVCV CPUAVG CPUCV CPUMAX CONVRG TEPSIN

OPF2 10360.000 0.000 27.110 0.072 36.130 7 10

OPF 10640.000 0.000 11.906 0.057 14.196 10 10

OPFlin 10750.000 0.022 25.323 0.228 0.963 100 10

OPFp 10640.000 0.000 8.731 0.078 13.931 10 10

BTHETA 11720.000 0.000 0.328 0.022 0.377 10 0