parse a pdf in c# : Excel pdf bookmarks software application project winforms windows wpf UWP CVX5-part1415

CHAPTER
EIGHT
SOLVERS
8.1 Supported solvers
This version of CVX supports four solvers, each with different capabilities:
Solver name
LP
QP
SOCP
SDP
GP
Integer
MATLAB
Octave
SeDuMi
Y
Y
Y
Y
E
N
Y
soon
SDPT3
Y
Y
Y
Y
E
N
Y
soon
Gurobi
Y
Y
Y
N
N
Y
P
soon
MOSEK
Y
Y
Y
Y*
E
Y
P
soon
GLPK
Y
N
N
N
N
Y
N
soon
(key: Y = Yes, N = No, E = Experimental, P = CVX Professional license required, * = Mosek 7 or later is
required.)
Each solver has different capabilities and different levels of performance. For instance, SeDuMi[Stu99],
SDPT3[TTT03],andMOSEK 7supportallof thecontinuous (non-integer) modelsthatCVXitself supports,
while Gurobi is more limited, in thatit does notsupport semidefinite constraints; andGLPK is limited even
further. On the other hand, Gurobi, GLPK, and MOSEK support integer consraints, while SeDuMi and
SDPT3do not.
SeDuMi and SDPT3 are included with the standard CVX distribution, so you do not need to download an
additionalsolverto startusingCVX.Wehavealsoentered intocontractualarrangements withthe developers
of Gurobi and MOSEK that allow us to ship their binaries with CVX as well, but using those solvers
requires a CVX Professional license. Due to license differences, we are not able to supply GLPK with
CVX. However,
If you are havingdifficultywithone solver, please tryanother. Noonesolver performsbetterthan theothers
on every model CVX can generate—including commercial solvers. That said, if you encounter a problem
that one solver can handle well and another cannot, please send us a bug report (seeSupport) and we will
forward the results to the solver’s authors.
We have created special sections in this user guide for using Gurobiand MOSEK with CVX:
• Gurobi:UsingGurobiwithCVX
• Mosek:UsingMOSEKwithCVX
Supportfor GLPK should be considered experimental, and has beenprovidedprimarlyto supportupcoming
Octave capability (that is notready yet.)
45
Excel pdf bookmarks - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
bookmark pdf documents; copy pdf bookmarks to another pdf
Excel pdf bookmarks - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
edit pdf bookmarks; create bookmarks pdf
The CVX Users’ Guide, Release 2.1
8.2 Selecting a solver
The default solver is currently SDPT3. We have found thatSeDuMi is faster for most problems, but unfor-
tunatelynotas reliable. None of the solvers are perfect, however, and youmay find for your applicationthat
another solver is preferred.
To see which solver is currentlyselected, simply type
cvx_solver
To change the current solver, simply follow the cvx_solver with the name of your chosen solver. For
example, to select SeDuMi, type
cvx_solver sedumi
The cvx_solver command is case insensitive, so cvx_solver SeDuMi will work just fine as well.
If you issue this command inside a model—thatis, between cvx_begin andcvx_end it willchange the
solver only for that model; the next model will use the previous choice. If, only the other hand, you issue a
cvx_solvercommandoutside of a model, itwillchangethesolver used for the remainder of your Matlab
session (or until you change it again).
If you wouldliketo changethedefaultsolver permanently—thatis, so that itremains thedefaultevenif you
quitand re-start Matlab—then make sure it is set properly, and then issue the command
cvx_save_prefs
This command saves not only your solver choice, but also your settings for cvx_expert,
cvx_power_warning, and cvx_precision as well.
8.3 Controlling screen output
Once yougainconfidence inusingCVX andstart incorporatingit into your larger algorithms andprograms,
you are likely going to want to silence the messages it delivers to the screen. To do so, simply add the
quiet keyword to the cvx_begin command; thatis,
cvx_begin quiet
...
cvx_end
Previous versions of CVX utilized a separate cvx_quiet command and that command is still available
in this version as well, if you prefer it. Entering cvx_quiet true suppresses screen output from the
solver, whileenteringcvx_quiet false restores the screenoutput. If youenter these commands within
amodel—that is, between cvx_begin and cvx_end—it will affect only that model. If you enter it
outside of a model, it will affect all subsequent models. Entering cvx_quiet with no arguments returns the
current setting.
46
Chapter 8. Solvers
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
document file. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview
excel hyperlink to pdf bookmark; how to add a bookmark in pdf
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
create bookmarks in pdf reader; auto bookmark pdf
The CVX Users’ Guide, Release 2.1
8.4 Interpreting the results
After a complete CVX specificationhas beenentered and the cvx_endcommand issued, the solver is called
to generate a numerical result. It proceeds to replace the variables in your model with the computed nu-
merical values, and creates the variable cvx_optval containing the value of the objective function. It also
summarizes the result of its efforts in the form of a string named cvx_status. The possible values of
cvx_status are as follows:
Solved A complementary (primal and dual) solution has been found. The primal and dual variables are
replaced withtheir computed values, andthe the optimal value of the problem is placed in cvx_optval
(which, by convention, is 0 for feasibility problems).
Unbounded The solver has determined that the problem is unbounded. The value of cvx_optval is
set to -Inf for minimizations, and +Inf for maximizations. (Feasibility problems, byconstruction,
never produce an Unbounded status.) The values of any dual variables are replaced with NaN, as
the dualproblem is in fact infeasible.
For unbounded problems, CVX stores an unbounded direction into the problem variables. This is is
adirection along which the feasible set is unbounded, and the optimal value approaches 1. It is
importanttounderstandthatthisvalueis verylikelynotafeasible point. If a feasiblepointis required,
the problem should be re-solved as a feasibility problem by omitting the objective. Mathematically
speaking, given an unbounded direction v and a feasible point x, x +tv is feasible for all t  0, and
the objective tends to 1 (for minimizations;+1 for maximizations) as t ! +1 itself.
Infeasible The problem has beenproven tobeinfeasible through the discovery of an unbounded direc-
tion. The values of the variables are filled with NaN, and the value of cvx_optval is set to +Inf
for minimizations andfeasibility problems, and -Inf for maximizations.
Associated with a provably infeasible problem is an unbounded dual direction. Appropriate com-
ponents of this direction are stored in the dual variables. Similarly to the Unbounded case, it is
important to understand thatthe unbounded dual direction is very likely not a feasible dualpoint.
Inaccurate/Solved, Inaccurate/Unbounded, Inaccurate/Infeasible These three sta-
tus values indicate thatthe solver was unable to make a determination to within the default numerical
tolerance. However, it determined that the results obtained satisfied a “relaxed” tolerance leve and
therefore may still be suitable for further use. If this occurs, you should test the validity of the com-
puted solution before using it in further calculations. SeeControllingprecisionfor a more advanced
discussion of solver tolerances and how to make adjustments.
Suboptimal This status is possible only for mixed-integer problems. It is returned when the branching
algorithmhas discoveredatleastonefeasible integer solution, butitwas unable to continue the search
process to global optimality. This will occur if the solver is required to terminate due to a time limit
or a forced interruption (for example, if the user types Ctrl-C.)
Failed The solver failed to make sufficient progress towards a solution, even to within the “relaxed” tol-
erance setting. The values of cvx_optvalandprimaland dualvariables arefilledwith NaN. This result
can occur because of numerical problems within SeDuMi, often because the problem is particularly
“nasty” in some way (e.g., a non-zero duality gap).
Overdetermined The presolver has determined that the problem has more equality constraints than
variables, which means that the coefficient matrix of the equality constraints is singular. In practice,
such problems are often, but not always, infeasible. Unfortunately, solvers typically cannot handle
8.4. Interpreting the results
47
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
creating bookmarks in pdf from word; add bookmark to pdf reader
C# PDF File Compress Library: Compress reduce PDF size in C#.net
NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. C# class demo
bookmark page in pdf; acrobat split pdf bookmark
The CVX Users’ Guide, Release 2.1
suchproblems, soa preciseconclusioncannotbereached. Thesituationsthatmostcommonlyproduce
an Overdetermined result are discussed inOverdeterminedproblems.
8.5 Controlling precision
Note: We consider the modification of solver precision to be an advanced feature, to be used sparingly, if
at all—and only after you have become comfortable building models in CVX.
Numerical methods for convex optimization are not exact;they compute their results to withina predefined
numerical precision or tolerance. Upon solution of your model, the tolerance level the solver has achieved
is returned in the cvx_slvtol variable. Attempts to interpret this tolerance level in any absolute sense
are notrecommended. For one thing, each solver computes it differently. For another, itdepends heavilyon
the considerable transformations that CVX applies toyour model beforedeliveringit tothesolver. So while
youmay find its value interesting we strongly discourage dependence upon it within your applications.
The tolerance levels that CVX selects by default have been inherited from some of the underlying solvers
being used, with minor modifications. CVX actually considers three different tolerance levels 
solver
standard

reduced
when solvinga model:
• The solver tolerance 
solver
is the level requested of the solver. The solver will stop as soon as it
achieves this level, or untilno further progress is possible.
• Thestandardtolerance
standard
is thelevelatwhichCVXconsiders themodel solvedto fullprecision.
• The reduced tolerance 
reduced
is the level at which CVX considers the model “inaccurately” sovled,
returning a status with the Inaccurate/ prefix. If this tolerance cannot be achieved, CVX returns
astatus of Failed, and the values of the variables shouldnot be considered reliable.
(SeeInterpretingtheresults for more information about the status messages.) Typically, 
solver
=
standard
,
but setting 
standard
< 
solver
has a useful interpretation: it allows the solver to search for more accurate
solutions without causingan Inaccurate/ or Failed conditionif itcannotdoso. The default values of
[
solver
;
standard
;
reduced
]are set to [
1=2
;
1=2
;
1=4
], where  = 2:22 10
16
is the machine precision. This
shouldbe quite sufficient for mostapplications.
If you wish to modify the tolerances, you may do so using the cvx_precision command. There are
three ways to invoke this command. Called with no arguments, it will print the current tolerance levels to
the screen;or if called as a function, itwillreturn those levels in a 3-element row vector.
Calling cvx_precision with a string argument allows you to select from a set of predefined precision
modes:
• cvx_precision low: [
3=8
;
1=4
;
1=4
]
• cvx_precision medium: [
1=2
;
3=8
;
1=4
]
• cvx_precision default: [
1=2
;
1=2
;
1=4
]
• cvx_precision high: [
3=4
;
3=4
;
3=8
]
• cvx_precision best: [0;
1=2
;
1=4
]
48
Chapter 8. Solvers
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
zooming & rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Excel Convert. Convert Excel to PDF; Convert Excel
add bookmarks to pdf preview; add bookmark pdf file
.NET PDF SDK - Description of All PDF Processing Control Feastures
bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. PDF Create. Create PDF from Word (docx, doc); Create PDF from Excel
how to bookmark a pdf file; creating bookmarks in pdf files
The CVX Users’ Guide, Release 2.1
In function mode, these calls look like cvx_precision(’low’), etc. Note that the best precision
settings sets the solver target tozero, whichmeans thatthe solver continues as longas it canmake progress.
It will often be slower than default, but it is just as reliable, and sometimes produces more accurate
solutions.
Finally, thecvx_precision command canbecalled with ascalar, a length-2vector, or a length-3 vector.
If you pass it a scalar, it will set the solver and standard tolerances to that value, and it will compute a
default reduced precision value for you. Roughly speaking, that reduced precision will be the square root
of the standard precision, with some bounds imposed to make sure that it stays reasonable. If you supply
two values, the smaller will be used for the solver and standard tolerances, and the larger for the reduced
tolerance. If you supply three values, their values willbe sorted, and each tolerance will be set separately.
The cvx_precision command can be used either within a CVX model or outside of it; and its behavior
differs in eachcase. If youcall it from within a model, e.g.,
cvx_begin
cvx_precision high
...
cvx_end
then the setting you choose willapply only until cvx_end is reached. If you call it outside a model, e.g.,
cvx_precision high
cvx_begin
...
cvx_end
thenthe setting you choosewillapplyglobally;thatis, toanysubsequentmodels thatarecreated and solved.
The localapproach should be preferred in an application where multiple models are constructed and solved
at differentlevels of precision.
If you call cvx_precision in function mode, either with a string or a numeric value, it will return as its
output the previous precision vector—the same result you would obtain if you called it with no arguments.
This may seem confusing at first, but this is done so that you can save the previous value in a variable, and
restore it at the end of your calculations;e.g.,
cvxp = cvx_precision( 'high' );
cvx_begin
...
cvx_end
cvx_precision( cvxp );
This is considered good coding etiquette in a larger application where multiple CVX models at multi-
ple precision levels may be employed. Of course, a simpler but equally courteous approach is to call
cvx_precision within the CVX model, as describedabove, so that its effect lasts only for that model.
8.5. Controlling precision
49
XDoc.Word for .NET, Advanced .NET Word Processing Features
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. Word Create. Create Word from PDF; Create Word
creating bookmarks pdf; create bookmarks in pdf from excel
XDoc.PowerPoint for .NET, All Mature Features Introductions
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. PowerPoint Convert. Convert PowerPoint to PDF; Convert
create bookmarks pdf files; export bookmarks from pdf to excel
The CVX Users’ Guide, Release 2.1
8.6 Advanced solver settings
Warning: This is an advancedtopic for users who have a deepunderstanding of the underlying solver
they are using, or who have received specific advice from the solver’s developer for improving perfor-
mance. Improper use of the cvx_solver_settings command can cause unpredictable results.
Solvers can be tuned and adjusted in a variety of ways. Solver vendors attemptto select defaultsettings that
will provide good performance across a broad range of problems. But no solver, and no choice of settings,
will perform well for every possible model. On occasion, it may be worthwhile to give a particular special
instructions to improve its performance for a specific application. Unfortunately, such settings differ from
solver to solver, so there is no wayfor CVX to provide this ability in a verifiable, reliable, global fashion.
Nevertheless, using the new cvx_solver_settings command, you can customize a solver’s settings
whena specificmodeldemandsit. Wecannotemphasizeenoughthatthis is anexpertfeature tobe employed
by experienced modelers only. Indeed, if youare an expert,youunderstandthatthese warnings are essential:
• CVX does not check the correctness of the settings you supply. If the solver rejects the settings, CVX
will fail until you change or remove those settings.
• There is no guarantee that altering the settings will improve performance in any way; indeed, it can
make the performance worse.
• CVX Research provides no documentation on the specific settings available for each solver; you will
have to consult the solver’s own documentation for this.
• The settings set here override any default values CVX may have chosen for each solver. Thus in
certaincases, usingthisfeature this mayactually confuse CVX and causeit tomisinterprettheresults.
For this reason, we cannot support allpossible combinations of custom settings.
• Unless you have turned off solver output completely, CVX will warn you if any custom settings are
in effect every time you solve model.
With this warning outof the way, let us introduce cvx_solver_settings. Typing
cvx_solver_settings
at the command prompt provides a listing of the custom settings that have been provided for the active
solver. Custom settings are specific to each solver. Typing
cvx_solver_settings -all
willprovide a full listof the custom settings provided for all solvers.
To create a new custom setting for the current solver, use this syntax:
cvx_solver_settings( '{name}', {value} )
{name} must be a valid MATLAB variable/field name. {value} can be any valid Matlab object; CVX
does not check its value in any way.
To clear all custom settings for the active solver, type
50
Chapter 8. Solvers
The CVX Users’ Guide, Release 2.1
cvx_solver_settings -clear
To clear justa single setting, type
cvx_solver_settings -clear {<name>}
To clear all settings for all solvers, type
cvx_solver_settings -clearall
The settings created by the cvx_solver_settings command enjoy the same scope as cvx_solver,
cvx_precision, and so forth. For instance, if you use this command within a model—between
cvx_begin and cvx_end—the changes will apply only to that particular model. If you issue the com-
mand outside of a particular model, the change will persist through the end of the MATLAB session (or
until you change it again). Finally, if you use the cvx_save_prefs command, any custom settings you
have added willbe saved andrestored the next time you startMatlab.
8.6. Advanced solver settings
51
The CVX Users’ Guide, Release 2.1
52
Chapter 8. Solvers
CHAPTER
NINE
REFERENCE GUIDE
In this section we describe each operator, function, set, and command that you are likely to encounter in
CVX. In some cases, limitations of the underlying solver place certain restrictions or caveats on their use:
• Functions marked with a dagger (†) are not supported natively by the solvers that CVX uses. They
are handled using a successive approximation method which makes multiple calls to the underlying
solver, achieving the same final precision. If you use one of these functions, you will be warned
that successive approximation will be used. This technique is discussed further inThesuccessive
approximation method.Asthissectiondiscusses,thisisanexperimentalapproachthatworkswellin
many cases, but cannotbe guaranteed.
• Functions involving powers (e.g., x^p) and p-norms (e.g., norm(x,p)) are marked with a double
dagger (‡). CVX represents these functions exactly whenp is a rational number. For irrationalvalues
of p, a nearby rational is selected instead. SeePowerfunctionsandp-normsfor details on how both
cases are handled.
9.1 Arithmetic operators
Matlab’s standard arithmetic operations for addition +, subtraction -, multiplication,
*
.
*
,division / ./
\ .\, and exponentiation ^ .^ have been overloaded to work in CVX whenever appropriate—that is,
whenever their use is consistent with both standard mathematical and Matlab conventions and the DCP
ruleset. For example:
• Two CVX expressions can be added together if they are of the same dimension (or one is scalar) and
have the same curvature (i.e., both are convex, concave, or affine).
• A CVX expression can be multiplied or divided by a scalar constant. If the constant is positive, the
curvature is preserved; if it is negative, curvature is reversed.
• An affine column vector CVX expression can be multiplied by a constant matrix of appropriate di-
mensions; or itcan be left-divided by a non-singular constantmatrix of appropriate dimension.
Numerous other combinations are possible, of course. The use of the exponentiation operators ^ .^ are
somewhatlimited; see the definitions of power inNonlinearbelow.
Matlab’s basic matrix manipulation and arithmetic operations have been extended to work with CVX ex-
pressions as well, including:
• Concatenation: [ A, B ; C, D ]
53
The CVX Users’ Guide, Release 2.1
• Indexing: x(n+1:end), X([3,4],:), etc.
• Indexedassignment, including deletion: y(2:4) = 1, Z(1:4,:)
= [], etc.
• Transpose and conjugate transpose: Z.’, y’
9.2 Built-in functions
9.2.1 Linear
Anumber of Matlab’s basic linear and bilinear functions either work automatically with cvx expressions
or have been extendedto do so, including: conj, conv, cumsum, diag, dot, find, fliplr, flipud,
flipdim, horzcat, hankel, ipermute, kron, mean, permute, repmat, reshape, rot90,
sparse, sum, trace, tril, triu, toeplitz, vertcat.
Most should behave identically with CVX expressions as they do with numeric expressions. Those that
perform some sort of summation, such as cumsum, sum, or multiplication, such as conv, dot or kron,
can only be usedin accordance with the disciplined convex programmingrules. For example, kron(X,Y)
is valid only if either X or Y is constant; and trace(Z) is valid only if the elements along the diagonal
have the same curvature.
9.2.2 Nonlinear
abs absolute value for real and complex arrays. Convex.
†exp exponential. Convex and nondecreasing.
†log logarithm. Concave and nondecreasing.
max maximum. Convex andnondecreasing.
min minimum. Concave and nondecreasing.
norm norms for real and complex vectors and matrices. Convex. Thus function follows the Matlab con-
ventions closely. Thus the one-argumentversion norm(x) computes the 2-normfor vectors, and the
2-norm(maximumsingular value) for matrices. The two-argumentversionnorm(x,p) is supported
as follows:
•‡ For vectors, all values p  1 are accepted.
•For matrices, p must be 1, 2, Inf, or ’Fro’.
polyval polynomial evaluation. polyval(p,x), where p is a vector of length n, computes
p(1)
*
x.^(n-1) + p(2)
*
x.^(n-2) + ... + p(n-1)
*
x + p(n)
This function can be usedinCVX in two ways:
•If p is a variable and x is a constant, then polyval(x,p) computes a linear combination of
the elements of p. The combination mustsatisfy the DCPrules for addition and scaling.
54
Chapter 9. Reference guide
Documents you may be interested
Documents you may be interested