parse a pdf in c# : How to bookmark a pdf document Library software component .net winforms wpf mvc CVX1-part1411

CHAPTER
TWO
INSTALLATION
2.1 Supported platforms
CVX is supported on 32-bit and 64-bit versions of Linux, Mac OSX, and Windows. For 32-bit platforms,
MATLAB version 7.5 (R2007b) or later is required; for 64-bit platforms, MATLAB version 7.8 (R2009a)
or later is required. There are some important platform-specific cautions, however:
• Gurobisupportrequires Matlab 7.7 (R2008b) or later.
• 32-bit Linux: the Gurobi solver is not available for this platform, as Gurobi is phasing out support for
32-bit Linux altogether.
• Older versions of Mac OS X (e.g. 10.5) ship with Java 1.5. The standard version of CVX works
properly on this platform, but CVX Professional support requires Java 1.6. To restore this support,
upgrade your operating system or Java installation.
Asof version2.0, supportfor versions 7.4(R2007a) or older has beendiscontinued. If you needto useCVX
withtheseolder versions of Matlab,please use CVX 1.22or earlier, whichwillremain available indefinitely
on the CVX Research web site. However, this version is no longer supported, and will not receive bug
fixes or improvements. We strongly encourage you to update your Matlab installation to the latest version
possible.
Note: If you wish to use CVX with Gurobi or MOSEK, they must be installed and accessible from MAT-
LAB before running cvx_setup. Seebelow for more details.
1. Retrievethelatestversion of CVX fromthewebsite. You candownloadthe package as either a .zip
file or a .tar.gz file.
2. Unpack the file anywhere you like; a directory called cvx will be created. There are two important
exceptions:
• Do not place CVX in Matlab’s own toolbox directory, Octave’s built-in scripts directory.
• Do not unpack a new version of CVX on top of an old one. We recommend moving the old
version out of the way, but do notdelete it untilyou are sure the new version is working as you
expect.
3. StartMatlab or Octave. Do not add CVX to your path by hand.
5
How to bookmark a pdf document - 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
copy bookmarks from one pdf to another; how to create bookmark in pdf automatically
How to bookmark a pdf document - 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
split pdf by bookmark; bookmarks in pdf
The CVX Users’ Guide, Release 2.1
4. Change directories to the top of the CVX distribution, and run the cvx_setup command. For
example, if you installed CVX into C\personal\cvx on Windows, type these commands:
cd C:\personal\cvx
cvx_setup
at the MATLAB/Octave command prompt. If you installed CVX into ~/MATLAB/cvx on Linux or
aMac, type these commands:
cd ~/MATLAB/cvx
cvx_setup
The cvx_setup function performs a variety of tasks to verify that your installation is correct, sets
your Matlab/Octave search path so it can find all of the CVX program files, and runs a simple test
problemtoverify the installation.
5. In some cases—usually on Linux—the cvx_setup command may instruct you to create or modify
astartup.m file that allows you to use CVX without having to type cvx_setup every time you
re-startMatlab.
2.2 Installing a CVX Professional license
If you acquire a license key for CVX Professional, the only change required to the above steps is to include
the nameofthelicense fileasaninputtothecvx_setup command. For example, if yousavedyour license
file to ~/licenses/cvx_license.mat on a Mac, this would be the modified command:
cd ~/MATLAB/cvx
cvx_setup ~/licenses/cvx_license.mat
If you have previously run cvx_setup without a license, or you need to replace your current license
with a new one, simply run cvx_setup again with the filename. Once the license has been accepted and
installed, you are free to move your license file anywhere you wish for safekeeping—CVX saves a copy in
its preferences.
2.3 Solvers included with CVX
Allversions of CVX include copies of thesolversSeDuMiandSDPT3in the directories cvx/sedumi and
cvx/sdpt3, respectively. Whenyou runcvx_setup, CVX will automaticallyaddthese solvers to its solver
list.
If you have downloaded a CVX Professional Solver Bundle, then the solversGurobiand/orMOSEKwill
be included with CVX as well. Use of these solvers requires a CVX Professional license. You may also
use your existing copies of these solvers with CVX as well. We have created special sections of this users’
guide for each solver:
• Gurobi:UsingGurobiwithCVX
• MOSEK:UsingMOSEKwithCVX
6
Chapter 2. Installation
C# PDF Converter Library SDK to convert PDF to other file formats
NET. How to Use C#.NET XDoc.PDF Component to Convert PDF Document to Various Document and Image Forms in Visual C# .NET Application.
pdf bookmarks; create bookmarks pdf files
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Split PDF document by PDF bookmark and outlines in VB.NET. Independent component for splitting PDF document in preview without using external PDF control.
creating bookmarks pdf files; bookmarks pdf
The CVX Users’ Guide, Release 2.1
For moregeneral informationonthesolvers supportedbyCVX, an how toselect asolver for your particular
problem, see theSolverssection.
2.3. Solvers included with CVX
7
C# PDF Library SDK to view, edit, convert, process PDF file for C#
RasterEdge PDF SDK for .NET package offers robust APIs for editing PDF document hyperlink (url) and quick navigation link in PDF bookmark.
create bookmark pdf; create pdf with bookmarks from word
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit Document Protect. Password: Set File Permissions. Password:
adding bookmarks to a pdf; copy pdf bookmarks to another pdf
The CVX Users’ Guide, Release 2.1
8
Chapter 2. Installation
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
watermark and save PDF text, image, table, hyperlink and bookmark to Word library control (XDoc.PDF) is a mature and effective PDF document converting utility.
copy pdf bookmarks; add bookmarks to pdf online
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET allows C# developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
add bookmarks pdf; how to add a bookmark in pdf
CHAPTER
THREE
AQUICK START
Once you have installedCVX(seeInstallation), you canstartusing itby entering aCVX specification into a
Matlab scriptor function, or directly from the command prompt. Todelineate CVX specifications from sur-
rounding Matlab code, they are preceded with the statement cvx_begin and followed with the statement
cvx_end. A specification can include any ordinary Matlab statements, as well as special CVX-specific
commands for declaring primal and dual optimization variables and specifying constraints and objective
functions.
WithinaCVXspecification, optimizationvariableshave nonumericalvalue;instead,theyare specialMatlab
objects. This enables Matlab to distinguish between ordinary commands and CVX objective functions and
constraints. As CVX reads a problem specification, it builds an internal representation of the optimization
problem. If it encounters a violation of the rules of disciplined convex programming (suchas an invalid use
of a composition rule or an invalid constraint), an error message is generated. When Matlab reaches the
cvx_end command, it completes the conversion of the CVX specification to a canonical form, and calls
the underlying core solver to solve it.
If the optimization is successful, the optimization variables declared in the CVX specification are converted
from objects to ordinary Matlab numerical values that can be used in any further Matlab calculations. In
addition, CVX also assigns a few other related Matlab variables. One, for example, gives the status of the
problem (i.e., whether an optimal solution was found, or the problem was determined to be infeasible or
unbounded). Another gives the optimalvalue of the problem. Dual variables can also be assigned.
This processing flow will become clearer as we introduce a number of simple examples. We invite the
reader to actually follow along with these examples in Matlab, by running the quickstart script found
in the examples subdirectory of theCVXdistribution. For example, if you are on Windows, and you have
installed the CVX distribution in the directory D:\Matlab\cvx, then youwould type
cd D:\Matlab\cvx\examples
quickstart
at the Matlab command prompt. The script will automatically print key excerpts of its code, and pause
periodically so you can examine its output. (Pressing “Enter” or “Return” resumes progress.)
3.1 Least squares
We first consider the most basic convex optimization problem, least-squares (also known as linear regres-
sion). In a least-squares problem, we seek x 2 R
n
that minimizes kAx   bk
2
,where A 2 R
mn
is skinny
and fullrank (i.e., m  n and Rank(A) = n). Letus create the data for a smalltestproblem in Matlab:
9
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Change Word hyperlink to PDF hyperlink and bookmark. DOCXDocument doc = new DOCXDocument(inputFilePath); // Convert it to PDF document.
export pdf bookmarks; create pdf bookmarks
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET Program. Free PDF document processing SDK supports PDF page extraction, copying and pasting in Visual Studio .NET project.
how to bookmark a pdf file; create bookmarks in pdf reader
The CVX Users’ Guide, Release 2.1
m = 16; n = 8;
A = randn(m,n);
b = randn(m,1);
Then the least-squares solution x = (A
T
A)
1
A
T
bis easilycomputedusing the backslash operator:
x_ls = A \ b;
Using CVX, the same problem can be solved as follows:
cvx_begin
variable x(n)
minimize( norm(A
*
x-b) )
cvx_end
(The indentation is used for purely stylistic reasons and is optional.) Let us examine this specification line
by line:
• cvx_begin creates a placeholder for the new CVX specification, and prepares Matlab to accept
variable declarations, constraints, an objective function, andso forth.
• variable x(n) declares x to be an optimization variable of dimension n. CVX requires that all
problemvariables be declared before they are usedinthe objective function or constraints.
• minimize( norm(A
*
x-b) ) specifies the objective function to be minimized.
• cvx_end signals the end of the CVX specification, and causes the problem to be solved.
Clearly there is no reason to use CVX to solve a simple least-squares problem. But this example serves
as sort of a “Hello world!” program in CVX; i.e., the simplest code segment that actually does something
useful.
When Matlabreaches thecvx_end command, the least-squares problemis solved, andthe Matlab variable
xis overwritten with the solution of the least-squares problem, i.e., (A
T
A)
1
A
T
b. Now x is an ordinary
length-n numericalvector, identicalto what wouldbe obtained in the traditional approach, at leastto within
the accuracy of the solver. In addition, severaladditional Matlab variables are created; for instance,
• cvx_optval contains the value of the objective function;
• cvx_status contains a string describingthe status of the calculation (seeInterpretingtheresults).
All of these quantities—x, cvx_optval, and cvx_status, etc.—may now be freely used in other
Matlab statements, justlike any other numeric or string values.
1
There is not much room for error in specifying a simple least-squares problem, but if you make one, you
willget an error or warning message. For example, if you replace the objective function with
maximize( norm(A
*
x-b) );
which asks for the norm to be maximized, you will get an error message stating that a convex function
cannotbe maximized (at leastin disciplined convex programming):
1
Ifyoutypewho orwhosat the commandprompt,youmaysee other,unfamiliarvariables aswell. Anyvariable that begins
withtheprefixcvx_isreservedforinternalusebyCVXitself,andshouldnot bechanged.
10
Chapter 3. A quick start
The CVX Users’ Guide, Release 2.1
??? Error using ==> maximize
Disciplined convex programming error:
Objective function in a maximization must be concave.
3.2 Bound-constrained least squares
Suppose we wish to add some simple upper and lower bounds to the least-squares problem above: i.e.,
minimize kAx  bk
2
subject to l  x  u
where l and u are given data vectors with the same dimension as x. The vector inequality u  v means
componentwise, i.e., u
i
v
i
for all i. We can no longer use the simple backslash notation to solve this
problem, but it can be transformed into a quadratic program (QP) which can be solved without difficulty
witha standard QP solver.
2
Let us provide some numeric values for l and u:
bnds = randn(n,2);
l = min( bnds, [], 2 );
u = max( bnds, [], 2 );
If you have theMatlabOptimizationToolbox, you can use quadprog to solve the problem as follows:
x_qp = quadprog( 2
*
A'
*
A, -2
*
A'
*
b, [], [], [], [], l, u );
This actuallyminimizes the square of the norm, which isthesameasminimizing thenormitself. Incontrast,
the CVX specification is given by
cvx_begin
variable x(n)
minimize( norm(A
*
x-b) )
subject to
l <= x <= u
cvx_end
Two new lines of CVX code have beenadded to the CVX specification:
• The subject to statement does nothing—CVX provides this statement simply to make specifica-
tions more readable. As with indentation, it is optional.
• The line l <= x <= u represents the 2n inequality constraints.
As before, when the cvx_end command is reached, the problem is solved, and the numerical solution is
assigned to the variable x. Incidentally, CVX will not transform this problem into a QP by squaring the
objective; instead, it will transform it into an SOCP. The result is the same, and the transformation is done
automatically.
In this example, as in our first, the CVX specification is longer than the Matlab alternative. On the other
hand, it is easier to read the CVX version and relate it to the original problem. In contrast, the quadprog
2
Thereare alsoanumberofsolvers specificallydesignedtosolvebound-constrainedleast-squaresproblems,suchasBCLSby
MichaelFriedlander.
3.2. Bound-constrained least squares
11
The CVX Users’ Guide, Release 2.1
version requires us to know in advance the transformation to QP form, including the calculations such as
2
*
A’
*
Aand -2
*
A’
*
b. For all but the simplest cases, a CVX specification is simpler, more readable, and
more compactthan equivalent Matlabcode to solve the same problem.
3.3 Other norms and functions
Now letus consider somealternatives to the least-squares problem. Norm minimization problems involving
the ‘
1
or ‘
1
norms can be reformulated as LPs, and solved using a linear programming solver such as
linprog in the Matlab Optimization Toolbox; see, e.g., Section 6.1 ofConvexOptimization. However,
because these norms are part of CVX’s base library of functions, CVX can handle these problems directly.
For example, to find the value of x that minimizes the Chebyshev norm kAx   bk
1
,we can employ the
linprog command from the Matlab Optimization Toolbox:
f
= [ zeros(n,1); 1
];
Ane
= [ +A,
-ones(m,1)
; ...
-A,
-ones(m,1) ];
bne
= [ +b;
-b
];
xt
= linprog(f,Ane,bne);
x_cheb = xt(1:n,:);
With CVX, the same problem is specified as follows:
cvx_begin
variable x(n)
minimize( norm(A
*
x-b,Inf) )
cvx_end
The code based on linprog, and the CVX specification above will both solve the Chebyshev norm mini-
mization problem, i.e., each willproduce an x that minimizes kAx  bk
1
.Chebyshev norm minimization
problems canhave multiple optimal points, however, sothe particular x‘s produced by the two methods can
be different. The two points, however, musthave the same value of kAx  bk
1
.
Similarly, tominimize the ‘
1
norm k k
1
,we can use linprog as follows:
f
= [ zeros(n,1); ones(m,1);
ones(m,1)
];
Aeq
= [ A,
-eye(m),
+eye(m)
];
lb
= [ -Inf(n,1);
zeros(m,1); zeros(m,1) ];
xzz
= linprog(f,[],[],Aeq,b,lb,[]);
x_l1 = xzz(1:n,:) - xzz(n+1:end,:);
The CVX version is, not surprisingly,
cvx_begin
variable x(n)
minimize( norm(A
*
x-b,1) )
cvx_end
CVX automatically transforms both of these problems into LPs, not unlike those generated manually for
linprog.
12
Chapter 3. A quick start
The CVX Users’ Guide, Release 2.1
The advantage that automatic transformation provides is magnified if we consider functions (and their re-
sulting transformations) that are less well-known than the ‘
1
and ‘
1
norms. For example, consider the
norm
kAx  bk
lgst;k
=jAx  bj
[1]
++jAx  bj
[k]
;
where jAx   bj
[i]
denotes the ith largest element of the absolute values of the entries of Ax   b. This is
indeed a norm, albeit a fairly esoteric one. (When k = 1, it reduces to the ‘
1
norm; when k = m, the
dimension of Ax   b, it reduces to the ‘
1
norm.) The problem of minimizing kAx   bk
lgst;k
over x can
be cast as an LP, but the transformation is by no means obvious so we will omit it here. But this norm is
provided in the base CVX library, and has the name norm_largest, so to specify and solve the problem
using CVX is easy:
k = 5;
cvx_begin
variable x(n);
minimize( norm_largest(A
*
x-b,k) );
cvx_end
Unlike the ‘
1
,‘
2
,or ‘
1
norms, this norm is not part of the standard Matlab distribution. Once you have
installed CVX, though, the norm is available as an ordinary Matlab function outside a CVX specification.
For example, once the code above is processed, x is a numerical vector, sowe can type
cvx_optval
norm_largest(A
*
x-b,k)
The firstline displays the optimalvalueas determined by CVX; the second recomputes the same value from
the optimalvector x as determinedby CVX.
The list of supported nonlinear functions in CVX goes well beyond norm and norm_largest. For
example, consider the Huber penalty minimization problem
minimize
P
m
i=1
((Ax  b)
i
) ;
withvariable x 2 R
n
,where  is the Huber penalty function
(z) =
(
jzj
2
jzj  1
2jzj  1 jzj  1
:
The Huber penalty function is convex, and has been provided in the CVX function library. So solving the
Huber penaltyminimization problem in CVX is simple:
cvx_begin
variable x(n);
minimize( sum(huber(A
*
x-b)) );
cvx_end
CVX automatically transforms this problem into an SOCP, which the core solver then solves. (The CVX
user, however, does notneed to know how the transformation is carried out.)
3.3. Other norms and functions
13
The CVX Users’ Guide, Release 2.1
3.4 Other constraints
We hope that, by now, itis notsurprising that adding the simple bounds l  x  u tothe problems above is
as simple as inserting the line l <= x <= u before the cvx_end statement in each CVX specification.
In fact, CVX supports more complex constraints as well. For example, let us define new matrices C and d
in Matlab as follows,
p = 4;
C = randn(p,n);
d = randn(p,1);
Now let us add an equality constraint and a nonlinear inequality constraint to the original least-squares
problem:
cvx_begin
variable x(n);
minimize( norm(A
*
x-b) );
subject to
C
*
x == d;
norm(x,Inf) <= 1;
cvx_end
Both of the added constraints conform to the DCP rules, and so are accepted by CVX. After the cvx_end
command, CVX converts this problem to an SOCP, and solves it.
Expressions using comparison operators (==, >=, etc.) behave quite differently when they involve CVX
optimizationvariables,orexpressions constructedfromCVX optimizationvariables,thanwhen theyinvolve
simple numeric values. For example, because x is a declared variable, the expression C
*
x==d causes a
constraint to be includedinthe CVX specification, and returns no value atall. Onthe other hand, outside of
aCVX specification, if x has an appropriate numeric value—for example immediately after the cvx_end
command—thatsame expression would return a vector of 1s and0s, corresponding tothe truth or falsity of
each equality.
3
Likewise, within a CVX specification, the statement norm(x,Inf)<=1 adds a nonlinear
constraint to the specification; outside of it, it returns a 1 or a 0 depending on the numeric value of x
(specifically, whether its ‘
1
-normis less than or equal to, or more than, 1).
Because CVXis designed tosupportconvex optimization, itmustbeable toverify thatproblems areconvex.
Tothat end, CVX adopts certain rules that govern how constraintand objective expressions are constructed.
For example, CVX requires that the left- and right-hand sides of an equality constraint be affine. So a
constraint such as
norm(x,Inf) == 1;
results in the following error:
??? Error using ==> cvx.eq
Disciplined convex programming error:
Both sides of an equality constraint must be affine.
3
In fact, immediately after the cvx_end command above, you would likely find that most ifnot all ofthe values returned
wouldbe0. Thisisbecause,as is thecasewithmanynumericalalgorithms,solutions aredeterminedonlytowithinsomenonzero
numerictolerance. Sotheequalityconstraintswill besatisfiedclosely,butoftennotexactly.
14
Chapter 3. A quick start
Documents you may be interested
Documents you may be interested