﻿

# parse a pdf in c# : Create pdf bookmarks from word application Library utility html asp.net .net visual studio CVX3-part1413

The CVX Users’ Guide, Release 2.1
y =
cvx dual variable (20x1 vector)
It is not necessary to place the dual variable on the left side of the constraint; for example, the line above
can also be written in this way:
A
*
x <= b : y;
In addition, dual variables for inequalityconstraints will always be nonnegative, which means thatthesense
of the inequality can be reversedwithout changing the dual variable’s value;i.e.,
b >= A
*
x : y;
yields an identical result. For equality constraints, on the other hand, swapping the left- and right- hand
sides of an equality constraintwill negate the optimal value of the dual variable.
After the cvx_end statement is processed, and assuming the optimization was successful, CVX assigns
numerical values to x and y—the optimal primal anddual variable values, respectively. Optimal primaland
dual variables for this LPmustsatisfy the complementary slackness conditions
y
i
(b  Ax)
i
=0; i = 1;:::;m:
You can checkthis in Matlab withthe line
y .
*
(b-A
*
x)
which prints out the products of the entries of y and b-A
*
x, which should be nearly zero. This line must
be executed after the cvx_end command (which assigns numerical values to x and y); it will generate an
error if it is executed inside the CVX speciﬁcation, where y andb-A
*
xare still justabstract expressions.
If the optimization is not successful, because either the problem is infeasible or unbounded, then x and y
will have different values. In the unbounded case, x will contain an unbounded direction; i.e., a point x
satisfying
c
T
x=  1; Ax  0;
and y will be ﬁlled with NaN values, reﬂecting the fact thatthe dual problem is infeasible. In the infeasible
case, x is ﬁlled with NaN values, while y contains an unbounded dual direction;i.e., a point y satisfying
b
T
y=  1; A
T
y= 0; y  0
Of course, the precise interpretation of primal and dualpoints and/or directions depends on the structure of
the problem. Seereferences such asConvexOptimizationfor more ontheinterpretationof dualinformation.
CVX also supports the declaration of indexed dual variables. These prove useful when the number of con-
straints in a model (and, therefore, the number of dual variables) depends upon the parameters themselves.
For more informationon indexed dual variables, seeIndexeddualvariables.
4.8 Assignment and expression holders
Anyone with experience with C or Matlab understands the difference between the single-equal assignment
operator = and the double-equal equality operator ==. This distinction is vitally important in CVX as
4.8. Assignment and expression holders
25
Create pdf bookmarks from word - 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
bookmarks in pdf reader; how to create bookmark in pdf with
Create pdf bookmarks from word - 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
how to bookmark a page in pdf document; editing bookmarks in pdf
The CVX Users’ Guide, Release 2.1
well, and CVX takes steps to ensure that assignments are not used improperly. For instance, consider the
following code snippet:
variable X(n,n) symmetric;
X = semidefinite(n);
At ﬁrst glance, the statement X = semidefinite(n); may look like it constrains X to be positive
semideﬁnite. Butsince theassignmentoperator is used, X isactuallyoverwrittenby theanonymoussemidef-
inite variable instead. Fortunately,CVXforbids declaredvariables frombeingoverwritten inthis way;when
cvx_end is reached, this modelwould issue the following error:
??? Error using ==> cvx_end
The following cvx variable(s) have been overwritten:
X
This is often an indication that an equality constraint was
written with one equals '=' instead of two '=='. The model
must be rewritten before cvx can proceed.
Wehopethatthis checkwillpreventatleastsometypographicalerrors fromhavingfrustratingconsequences
in your models.
Despite this warning, assignments can be genuinelyuseful, sowe encourage their usewith appropriate care.
For instance, consider the following excerpt:
variables x y
z = 2
*
x - y;
square( z ) <= 3;
quad_over_lin( x, z ) <= 1;
The construction z = 2
*
x - y is not an equality constraint; it is an assignment. It is storing an
intermediate calculation2
*
x - y,whichisanafﬁneexpression, whichis then usedlater intwodifferent
constraints. We callz an expression holder to differentiate itfrom a formally declared CVX variable.
Often it will be useful to accumulate an array of expressions into a single Matlab variable. Unfortunately,
asomewhat technical detail of the Matlab object model can cause problems in such cases. Consider this
construction:
variable u(9);
x(1) = 1;
for k = 1 : 9,
x(k+1) = sqrt( x(k) + u(k) );
end
This seems reasonableenough: x shouldbea vector whose ﬁrst value is 1, and whosesubsequentvalues are
concave CVX expressions. But if you try this in a CVX model, Matlab will give you a rather cryptic error:
??? The following error occurred converting from cvx to double:
Error using ==> double
Conversion to double from cvx is not possible.
The reason this occurs is that the Matlab variable x is initialized as a numeric array when the assignment
x(1)=1 is made;and Matlab will not permitCVX objects to be subsequently insertedinto numeric arrays.
The solution is to explicitly declare x to be an expression holder before assigning values to it. We have
26
Chapter 4. The Basics
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Bookmarks. inputFilePath = Program.RootPath + "\\" 3.pdf"; String outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; 'create optimizing options
creating bookmarks in pdf documents; create bookmark 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.
add bookmarks to pdf file; export pdf bookmarks
The CVX Users’ Guide, Release 2.1
provided keywords expression and expressions for just this purpose, for declaring a single or multiple ex-
pression holders for future assignment. Once an expressionholder has beendeclared, youmay freely insert
bothnumeric andCVX expressions into it. For example, the previous example can be corrected as follows:
variable u(9);
expression x(10);
x(1) = 1;
for k = 1 : 9,
x(k+1) = sqrt( x(k) + u(k) );
end
CVX willacceptthis constructionwithouterror. Youcanthenusethe concave expressionsx(1), ...,x(10)
in any appropriate ways; for example, you could maximize x(10).
The differences between a variable object and an expression object are quite signiﬁcant. A variable object
holds an optimization variable, and cannot be overwritten or assigned intheCVXspeciﬁcation. (After solv-
ing the problem, however, CVX will overwrite optimization variables with optimal values.) An expression
object, on the other hand, is initialized to zero, and should be thought of as a temporary place to store CVX
expressions;it can be assigned to, freely re-assigned, and overwritten ina CVX speciﬁcation.
Of course, as our ﬁrstexample shows, it is not always necessary to declare an expression holder before itis
created or used. But doing so provides an extra measure of clarity to models, so we strongly recommend it.
4.8. Assignment and expression holders
27
VB.NET PDF File Split Library: Split, seperate PDF into multiple
how to split a PDF file into multiple ones by PDF bookmarks or outlines Valid value for each index: 1 to (Page Count - 1). ' Create output PDF file path
create pdf bookmarks from word; copy pdf bookmarks
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Bookmarks. inputFilePath = Program.RootPath + "\\" 3.pdf"; String outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; // create optimizing options
create bookmarks pdf file; convert word pdf bookmarks
The CVX Users’ Guide, Release 2.1
28
Chapter 4. The Basics
C# Create PDF Library SDK to convert PDF from other file formats
Create multipage PDF from OpenOffice and CSV file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc.
bookmarks in pdf reader; how to bookmark a pdf file in acrobat
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
bookmark pdf in preview; create bookmark in pdf automatically
CHAPTER
FIVE
THE DCP RULESET
CVX enforces the conventions dictated by the disciplined convex programming ruleset, or DCP ruleset for
short. CVX will issue an error message whenever it encounters a violation of any of the rules, so it is
important to understand them before beginning to build models. The rules are drawn from basic principles
of convex analysis, and are easy to learn, once you’ve had an exposure to convex analysis and convex
optimization.
The DCP ruleset is a set of sufﬁcient, but not necessary, conditions for convexity. So it is possible to
construct expressions that violate the ruleset but are in fact convex. As an example consider the entropy
function,
P
n
i=1
x
i
logx
i
,deﬁned for x > 0, which is concave. If it is expressed as
- sum( x .
*
log( x ) )
CVX will reject it, because its concavity does not follow from any of the composition rules. (Speciﬁcally,
it violates the no-product rule described inExpressionrules.) Problems involving entropy, however, can be
solved, by explicitly using the entropy function,
sum( entr( x ) )
which is inthe base CVX library,and thus recognizedas concave byCVX. If aconvex(or concave) function
is not recognized as convex or concave by CVX, it can be added as a new atom; seeAddingnewfunctions
to the atom library.
As another example consider the function
p
x2 + 1 = k[x 1]k
2
,which is convex. If it is written as
norm( [ x 1 ] )
(assuming x is a scalar variable or afﬁne expression) it willbe recognized by CVX as a convex expression,
and therefore can be used in (appropriate) constraints and objectives. Butif it is written as
sqrt( x^2 + 1 )
CVX will reject it, since convexityof this function does notfollow from the CVX ruleset.
5.1 A taxonomy of curvature
In disciplined convex programming, a scalar expression is classiﬁed by its curvature. There are four cate-
gories of curvature: constant, afﬁne, convex, and concave. For a function f : R
n
!R deﬁned on all R
n
,
29
.NET PDF SDK - Description of All PDF Processing Control Feastures
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. PDF Create. Create PDF from Word (docx, doc
how to bookmark a pdf document; adding bookmarks to pdf reader
VB.NET Create PDF Library SDK to convert PDF from other file
Create multipage PDF from OpenOffice and CSV file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc.
export pdf bookmarks to text file; bookmarks pdf documents
The CVX Users’ Guide, Release 2.1
the categories have the following meanings:
constant f(x +(1  )y) = f(x)
8x;y 2 R
n
; 2 R
afﬁne
f(x +(1  )y) = f(x)+ (1  )f(y) 8x;y 2 R
n
; 2 R
convex
f(x +(1  )y)  f(x)+ (1  )f(y) 8x;y 2 R
n
; 2 [0;1]
concave f(x +(1  )y)  f(x)+ (1  )f(y) 8x;y 2 R
n
; 2 [0;1]
Of course, there is signiﬁcantoverlap in these categories. For example, constant expressions are also afﬁne,
and (real) afﬁne expressions are both convex and concave.
Convex and concave expressions are real by deﬁnition. Complex constant and afﬁne expressions can be
constructed, but their usage is more limited; for example, they cannot appear as the left- or right-hand side
of an inequality constraint.
5.2 Top-level rules
CVX supports three differenttypes of disciplined convex programs:
• A minimization problem, consisting of a convex objective function andzero or more constraints.
• A maximization problem, consisting of a concave objective function and zero or more constraints.
• A feasibility problem, consisting of one or more constraints and no objective.
5.3 Constraints
Three types of constraints may be speciﬁed in disciplined convex programs:
• An equality constraint, constructed using ==, where both sides are afﬁne.
• A less-than inequality constraint, using <=, where the leftside is convex andthe right sideis concave.
• A greater-than inequality constraint, using >=, where the left side is concave and the right side is
convex.
Non-equality constraints, constructed using ~=, are never allowed. (Such constraints are not convex.)
One or both sides of an equality constraint may be complex; inequalityconstraints, on the other hand, must
be real. A complex equality constraint is equivalent to two real equality constraints, one for the real part
and one for the imaginary part. An equality constraint with a realside and a complex side has the effect of
constraining the imaginary part of the complex side to be zero.
As discussed inSetmembership, CVX enforces set membership constraints (e.g., x 2 S) using equality
constraints. The rule that both sides of an equality constraint must be afﬁne applies to set membership
constraints as well. In fact, the returned value of set atoms like semidefinite() and lorentz()
is afﬁne, so it is sufﬁcient to simply verify the remaining portion of the set membership constraint. For
composite values like { x, y }, each elementmust be afﬁne.
30
Chapter 5. The DCP ruleset
The CVX Users’ Guide, Release 2.1
5.3.1 Strict inequalities
As mentioned inConstraints, strict inequalities <, > are interpreted in an identical fashion to nonstrict
inequalities >=, <=. It is important to note that CVX cannot guarantee that an inequality will be strictly
satisﬁed at the solution it computes. This is not simply a choice we have made in CVX; it is a natural
consequence of both the underlying mathematics and the design of convex optimization solvers. For that
reason, we strongly discourage the use of strictinequalities in CVX, and a future version may remove them
altogether.
When a strict inequality is essential to your model, you may need to take additional steps to ensure com-
pliance. In some cases, this can be accomplished through normalization. For instance, consider a set of
homogeneous equations andinequalities:
Ax = 0; Cx  0; x  0
Except for the strict inequality, x = 0 would be an acceptable solution; indeed the need to avoid the origin
is the very reason for the strict inequality. However, note that if a given x satisﬁes these constraints, then
so does x for all  > 0. By eliminating this degree of freedom with normalization, we can eliminate the
strict inequality; for instance:
Ax = 0; Cx  0; x  0; 1
T
x= 1
If normalizationis nota valid approach for your model, youmay simply need toconvertthestrict inequality
into a non-strict one by adding a small offset; e.g., convert x > 0 to, say, x >= 1e-4. Note that the
bound needs to be large enough so that the underlying solver considers itnumericallysigniﬁcant.
Finally, note that for some functions like log(x) and inv_pos(x), which have domains deﬁned by
strict inequalities, the domain restriction is handledbythe function itself. You do notneed to addan explicit
constraint x > 0 to your model toguarantee that the solution is positive.
5.4 Expression rules
So far, the rules as stated are not particularly restrictive, in that all convex programs (disciplined or oth-
erwise) typically adhere to them. What distinguishes disciplined convex programming from more general
convex programming are the rules governing the constructionof the expressions used in objective functions
and constraints.
Disciplinedconvex programmingdetermines thecurvature of scalar expressions by recursively applyingthe
followingrules. Whilethislistmayseem long, itis for themostpartanenumerationof basicrules of convex
analysis for combining convex, concave, and afﬁne forms: sums, multiplication by scalars, and so forth.
• A valid constant expression is
– any well-formed Matlab expression thatevaluates to a ﬁnite value.
• A valid afﬁne expression is
– a valid constant expression;
– a declared variable;
– a valid calltoa function in the atom library with an afﬁne result;
5.4. Expression rules
31
The CVX Users’ Guide, Release 2.1
– the sum or difference of afﬁne expressions;
– the product of an afﬁne expression and a constant.
• A valid convexexpression is
– a valid constant or afﬁne expression;
– a valid calltoa function in the atom library with a convex result;
– an afﬁne scalar raised to a constantpower p  1, p 6= 3;5;7;9;:::;
– the sum of two or more convex expressions;
– the difference between a convex expressionand a concave expression;
– the product of a convex expression and a nonnegative constant;
– the product of a concave expression and a nonpositive constant;
– the negation of a concave expression.
• A valid concave expression is
– a valid constant or afﬁne expression;
– a valid calltoa function in the atom library with a concave result;
– a concave scalar raised to a power p 2 (0;1);
– the sum of two or more concave expressions;
– the difference between a concave expression and a convex expression;
– the product of a concave expression and a nonnegative constant;
– the product of a convex expression and a nonpositive constant;
– the negation of a convex expression.
If an expression cannot be categorized by this ruleset, it is rejected by CVX. For matrix and array expres-
sions, these rules are applied onanelementwisebasis. Wenotethatthesetof rules listed above is redundant;
there are much smaller, equivalent sets of rules.
Of particular note is thatthese expressionrules generally forbid products between nonconstant expressions,
with the exception of scalar quadratic forms. For example, the expression x
*
sqrt(x) happens to be a
convex function of x, but its convexity cannot be veriﬁed using the CVX ruleset, and so is rejected. (It can
be expressed as pow_p(x,3/2), however.) We call this the no-product rule, and paying close attention to
it will go a long waytoinsuring thatthe expressions you constructare valid.
5.5 Functions
In CVX, functions are categorized in two attributes: curvature (constant, afﬁne, convex, or concave) and
monotonicity (nondecreasing, nonincreasing, or nonmonotonic). Curvature determines the conditions under
32
Chapter 5. The DCP ruleset
The CVX Users’ Guide, Release 2.1
which they can appear in expressions according to the expression rules given above. Monotonicity deter-
mines how they can be used in function compositions, as we shall see in the next section.
For functions with only one argument, the categorization is straightforward. Some examples are given in
the table below.
Function
Meaning
Curvature
Monotonicity
sum( x )
P
i
x
i
afﬁne
nondecreasing
abs( x )
jxj
convex
nonmonotonic
log( x )
logx
concave
nondecreasing
sqrt( x )
p
x
concave
nondecreasing
Following standardpractice in convexanalysis, convex functions are interpreted as +1 when the argument
is outside the domain of the function, and concave functions are interpreted as  1 when the argument is
outside its domain. In other words, convex and concave functions in CVX are interpreted as their extended-
valuedextensions.
This has the effect of automatically constraining the argument of a function to be in the function’s domain.
For example, if we form sqrt(x+1) in a CVX speciﬁcation, where x is a variable, then x will automati-
cally be constrained to be larger than or equalto  1. There is no need to add a separate constraint, x>=-1,
to enforce this.
Monotonicity of a function is determined in the extended sense, i.e., including the values of the argument
outside its domain. For example, sqrt(x) is determined to be nondecreasing since its value is constant
( 1) for negative values of its argument; then jumps up to 0 for argument zero, and increases for positive
values of its argument.
CVX does not consider a function to be convex or concave if itis so only over a portion of its domain, even
if the argumentis constrainedto lie inoneof these portions. As an example, consider the function1=x. This
function is convex for x > 0, and concave for x < 0. But you can never write 1/x in CVX (unless x is
constant), even if you have imposed a constraintsuchas x>=1, which restricts x to lie in the convex portion
of function 1=x. You can use the CVX function inv_pos(x), deﬁnedas 1=x for x > 0 and 1 otherwise,
for theconvex portion of 1=x; CVX recognizes this functionas convex andnonincreasing. InCVX, you can
express the concave portion of 1=x, where x is negative, using -inv_pos(-x), which will be correctly
recognizedas concave and nonincreasing.
For functions with multiple arguments, curvature is always considered jointly, but monotonicity can be
considered on an argument-by-argument basis. For example, the function quad_over_lin(x,y)
f
(x;y) =
(
jxj
2
=y y > 0
+1
y 0
is jointly convex in both x and y, butitis monotonic (nonincreasing) only in y.
Some functions are convex, concave, or afﬁne only for a subset of its arguments. For example, the function
norm(x,p) where p \geq 1 is convex only in its ﬁrst argument. Whenever this function is used in a
CVX speciﬁcation, then, the remaining arguments must be constant, or CVX will issue an error message.
Such arguments correspond to a function’s parameters in mathematicalterminology; e.g.,
f
p
(x) : R
n
!R; f
p
(x) , kxk
p
So it seems ﬁtting that we should refer to such arguments as parameters in this context as well. Hence-
forth, whenever we speak of a CVX function as being convex, concave, or afﬁne, we will assume that its
parameters are known and have been givenappropriate, constant values.
5.5. Functions
33