<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://tomwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elias</id>
	<title>TomWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://tomwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elias"/>
	<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Special:Contributions/Elias"/>
	<updated>2026-11-01T21:23:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://tomwiki.com/index.php?title=Welcome&amp;diff=3061</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Welcome&amp;diff=3061"/>
		<updated>2014-09-12T13:48:04Z</updated>

		<summary type="html">&lt;p&gt;Elias: /* Standalone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TOMLAB Environment is a modeling platform for solving applied optimization problems in [http://en.wikipedia.org/wiki/MATLAB MATLAB].&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
TOMLAB is a general purpose development and modeling environment in MATLAB for research, teaching and practical solution of optimization problems. It enables a wider range of problems to be solved in MATLAB and provides many additional solvers.&lt;br /&gt;
&lt;br /&gt;
==Optimization problems supported==&lt;br /&gt;
TOMLAB handles a wide range of problem types, among them:&lt;br /&gt;
* Linear programming&lt;br /&gt;
* Quadratic programming&lt;br /&gt;
* Nonlinear programming&lt;br /&gt;
* Mixed-integer programming&lt;br /&gt;
* Mixed-integer quadratic programming with or without convex quadratic constraints&lt;br /&gt;
* Mixed-integer nonlinear programming&lt;br /&gt;
* Linear and nonlinear least squares with L1, L2 and infinity norm&lt;br /&gt;
* Exponential data fitting&lt;br /&gt;
* Global optimization&lt;br /&gt;
* Semi-definite programming problem with bilinear matrix inequalities&lt;br /&gt;
* Constrained goal attainment&lt;br /&gt;
* Geometric programming&lt;br /&gt;
* Genetic programming&lt;br /&gt;
* Costly or expensive black-box global optimization&lt;br /&gt;
* Nonlinear complementarity problems&lt;br /&gt;
&lt;br /&gt;
==TOMLAB Manuals==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[TOMLAB|TOMLAB Manual]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[Quickguide]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[Models]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[SAL]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[Installation]]&lt;br /&gt;
&lt;br /&gt;
==Product User&#039;s Guides==&lt;br /&gt;
&lt;br /&gt;
====Included in the [[SOL|TOMLAB /SOL manual]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[MINOS]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[SOL_NPSOL|NPSOL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[SNOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[SOL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CGO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[Xpress]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CPLEX]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GUROBI]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[MINLP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[PENOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[KNITRO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[OQNLP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CONOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[NLPQL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[LGO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GENO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[MAD]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[AMPL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[PROPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[TomSym]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[MISQP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PDF==&lt;br /&gt;
&lt;br /&gt;
*[[PDF|Manuals in PDF format]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* http://tomopt.com/&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=PDF&amp;diff=2662</id>
		<title>PDF</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=PDF&amp;diff=2662"/>
		<updated>2012-01-22T20:08:27Z</updated>

		<summary type="html">&lt;p&gt;Elias: /* Standalone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Manuals in PDF format.&lt;br /&gt;
&lt;br /&gt;
==TOMLAB Manuals==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[file:users_guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[file:quickguide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[file:models.pdf]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[file:sal.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[file:installation.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Product User&#039;s Guides==&lt;br /&gt;
&lt;br /&gt;
====Included in [[file:sol.pdf]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:Minos.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:npsol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:snopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:sol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cgo.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:xpress.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cplex.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gurobi.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:minlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:penopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:knitro.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:oqnlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:conopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:nlpql.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:lgo.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:geno.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:mad.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:ampl.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:propt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:tomsym.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Welcome&amp;diff=2661</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Welcome&amp;diff=2661"/>
		<updated>2012-01-22T20:02:03Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TOMLAB Environment is a modeling platform for solving applied optimization problems in [http://en.wikipedia.org/wiki/MATLAB MATLAB].&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
TOMLAB is a general purpose development and modeling environment in MATLAB for research, teaching and practical solution of optimization problems. It enables a wider range of problems to be solved in MATLAB and provides many additional solvers.&lt;br /&gt;
&lt;br /&gt;
==Optimization problems supported==&lt;br /&gt;
TOMLAB handles a wide range of problem types, among them:&lt;br /&gt;
* Linear programming&lt;br /&gt;
* Quadratic programming&lt;br /&gt;
* Nonlinear programming&lt;br /&gt;
* Mixed-integer programming&lt;br /&gt;
* Mixed-integer quadratic programming with or without convex quadratic constraints&lt;br /&gt;
* Mixed-integer nonlinear programming&lt;br /&gt;
* Linear and nonlinear least squares with L1, L2 and infinity norm&lt;br /&gt;
* Exponential data fitting&lt;br /&gt;
* Global optimization&lt;br /&gt;
* Semi-definite programming problem with bilinear matrix inequalities&lt;br /&gt;
* Constrained goal attainment&lt;br /&gt;
* Geometric programming&lt;br /&gt;
* Genetic programming&lt;br /&gt;
* Costly or expensive black-box global optimization&lt;br /&gt;
* Nonlinear complementarity problems&lt;br /&gt;
&lt;br /&gt;
==TOMLAB Manuals==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[TOMLAB|TOMLAB Manual]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[Quickguide]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[Models]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[SAL]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[Installation]]&lt;br /&gt;
&lt;br /&gt;
==Product User&#039;s Guides==&lt;br /&gt;
&lt;br /&gt;
====Included in the [[SOL|TOMLAB /SOL manual]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[MINOS]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[SOL_NPSOL|NPSOL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[SNOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[SOL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CGO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[Xpress]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CPLEX]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GUROBI]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[MINLP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[PENOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[KNITRO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[OQNLP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[CONOPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[NLPQL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[LGO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GP]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[GENO]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[MAD]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[AMPL]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[PROPT]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[TomSym]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PDF==&lt;br /&gt;
&lt;br /&gt;
*[[PDF|Manuals in PDF format]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* http://tomopt.com/&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=PDF&amp;diff=2660</id>
		<title>PDF</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=PDF&amp;diff=2660"/>
		<updated>2012-01-22T20:01:47Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Manuals in PDF format.&lt;br /&gt;
&lt;br /&gt;
==TOMLAB Manuals==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[file:users_guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[file:quickguide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[file:models.pdf]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[file:sal.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[file:installation.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Product User&#039;s Guides==&lt;br /&gt;
&lt;br /&gt;
====Included in [[file:sol.pdf]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:Minos.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:npsol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:snopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:sol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cgo.pdf]]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:xpress.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cplex.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gurobi.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:minlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:penopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:knitro.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:oqnlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:conopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:nlpql.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:lgo.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:geno.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:mad.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:ampl.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:propt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:tomsym.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=PDF&amp;diff=2659</id>
		<title>PDF</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=PDF&amp;diff=2659"/>
		<updated>2012-01-22T20:00:29Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Manuals in PDF format==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manuals===&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[file:users_guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[file:quickguide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[file:models.pdf]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[file:sal.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[file:installation.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Product User&#039;s Guides===&lt;br /&gt;
&lt;br /&gt;
====Included in [[file:sol.pdf]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:Minos.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:npsol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:snopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:sol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cgo.pdf]]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:xpress.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cplex.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gurobi.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:minlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:penopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:knitro.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:oqnlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:conopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:nlpql.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:lgo.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:geno.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:mad.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:ampl.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:propt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:tomsym.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=PDF&amp;diff=2658</id>
		<title>PDF</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=PDF&amp;diff=2658"/>
		<updated>2012-01-22T19:59:47Z</updated>

		<summary type="html">&lt;p&gt;Elias: Created page with &amp;quot;==Manuals in PDF format==  ==TOMLAB Manuals==  ===TOMLAB Manual=== Includes general TOMLAB information and solver reference for the TOMLAB Base Module. * file:users_guide.pdf...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Manuals in PDF format==&lt;br /&gt;
&lt;br /&gt;
==TOMLAB Manuals==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Manual===&lt;br /&gt;
Includes general TOMLAB information and solver reference for the TOMLAB Base Module.&lt;br /&gt;
* [[file:users_guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Quickguide===&lt;br /&gt;
Basics associated with solving problems using the TOMLAB Optimization Environment.&lt;br /&gt;
* [[file:quickguide.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A short introduction to the TOMLAB Models.&lt;br /&gt;
* [[file:models.pdf]]&lt;br /&gt;
&lt;br /&gt;
===SAL===&lt;br /&gt;
Standalone execution of TOMLAB. Compilation instructions.&lt;br /&gt;
* [[file:sal.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Guide for installation of demos and permanently licensed TOMLAB components.&lt;br /&gt;
* [[file:installation.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Product User&#039;s Guides==&lt;br /&gt;
&lt;br /&gt;
====Included in [[file:sol.pdf]]====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:Minos.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:npsol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
*[[file:snopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standalone====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:sol.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cgo.pdf]]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:xpress.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:cplex.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gurobi.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:minlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:penopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:knitro.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:oqnlp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:conopt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:nlpql.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:lgo.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:gp.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:geno.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:mad.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:ampl.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:propt.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* [[file:tomsym.pdf]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Xpress.pdf&amp;diff=2657</id>
		<title>File:Xpress.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Xpress.pdf&amp;diff=2657"/>
		<updated>2012-01-22T19:36:14Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Users_guide.pdf&amp;diff=2656</id>
		<title>File:Users guide.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Users_guide.pdf&amp;diff=2656"/>
		<updated>2012-01-22T19:36:04Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Tomsym.pdf&amp;diff=2655</id>
		<title>File:Tomsym.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Tomsym.pdf&amp;diff=2655"/>
		<updated>2012-01-22T19:35:51Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Sol.pdf&amp;diff=2654</id>
		<title>File:Sol.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Sol.pdf&amp;diff=2654"/>
		<updated>2012-01-22T19:35:38Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Snopt.pdf&amp;diff=2653</id>
		<title>File:Snopt.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Snopt.pdf&amp;diff=2653"/>
		<updated>2012-01-22T19:35:22Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Sal.pdf&amp;diff=2652</id>
		<title>File:Sal.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Sal.pdf&amp;diff=2652"/>
		<updated>2012-01-22T19:35:12Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Quickguide.pdf&amp;diff=2651</id>
		<title>File:Quickguide.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Quickguide.pdf&amp;diff=2651"/>
		<updated>2012-01-22T19:35:04Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Propt.pdf&amp;diff=2650</id>
		<title>File:Propt.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Propt.pdf&amp;diff=2650"/>
		<updated>2012-01-22T19:34:51Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Penopt.pdf&amp;diff=2649</id>
		<title>File:Penopt.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Penopt.pdf&amp;diff=2649"/>
		<updated>2012-01-22T19:34:37Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Oqnlp.pdf&amp;diff=2648</id>
		<title>File:Oqnlp.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Oqnlp.pdf&amp;diff=2648"/>
		<updated>2012-01-22T19:34:24Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Npsol.pdf&amp;diff=2647</id>
		<title>File:Npsol.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Npsol.pdf&amp;diff=2647"/>
		<updated>2012-01-22T19:34:15Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Nlpql.pdf&amp;diff=2646</id>
		<title>File:Nlpql.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Nlpql.pdf&amp;diff=2646"/>
		<updated>2012-01-22T19:34:05Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Models.pdf&amp;diff=2645</id>
		<title>File:Models.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Models.pdf&amp;diff=2645"/>
		<updated>2012-01-22T19:33:55Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Minos.pdf&amp;diff=2644</id>
		<title>File:Minos.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Minos.pdf&amp;diff=2644"/>
		<updated>2012-01-22T19:33:45Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Minlp.pdf&amp;diff=2643</id>
		<title>File:Minlp.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Minlp.pdf&amp;diff=2643"/>
		<updated>2012-01-22T19:33:37Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Mad.pdf&amp;diff=2642</id>
		<title>File:Mad.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Mad.pdf&amp;diff=2642"/>
		<updated>2012-01-22T19:33:30Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Lgo.pdf&amp;diff=2641</id>
		<title>File:Lgo.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Lgo.pdf&amp;diff=2641"/>
		<updated>2012-01-22T19:33:20Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Knitro.pdf&amp;diff=2640</id>
		<title>File:Knitro.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Knitro.pdf&amp;diff=2640"/>
		<updated>2012-01-22T19:33:12Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Installation.pdf&amp;diff=2639</id>
		<title>File:Installation.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Installation.pdf&amp;diff=2639"/>
		<updated>2012-01-22T19:33:04Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Gurobi.pdf&amp;diff=2638</id>
		<title>File:Gurobi.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Gurobi.pdf&amp;diff=2638"/>
		<updated>2012-01-22T19:32:54Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Gp.pdf&amp;diff=2637</id>
		<title>File:Gp.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Gp.pdf&amp;diff=2637"/>
		<updated>2012-01-22T19:32:43Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Geno.pdf&amp;diff=2636</id>
		<title>File:Geno.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Geno.pdf&amp;diff=2636"/>
		<updated>2012-01-22T19:00:32Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Cplex.pdf&amp;diff=2635</id>
		<title>File:Cplex.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Cplex.pdf&amp;diff=2635"/>
		<updated>2012-01-22T18:53:16Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Conopt.pdf&amp;diff=2634</id>
		<title>File:Conopt.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Conopt.pdf&amp;diff=2634"/>
		<updated>2012-01-22T18:52:58Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Cgo.pdf&amp;diff=2633</id>
		<title>File:Cgo.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Cgo.pdf&amp;diff=2633"/>
		<updated>2012-01-22T18:52:40Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=File:Ampl.pdf&amp;diff=2632</id>
		<title>File:Ampl.pdf</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=File:Ampl.pdf&amp;diff=2632"/>
		<updated>2012-01-22T18:52:03Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_QPOPT&amp;diff=2631</id>
		<title>SOL QPOPT</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_QPOPT&amp;diff=2631"/>
		<updated>2012-01-22T18:27:14Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
==Direct  Solver Call==&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to [[#Using TOMLAB]] for information on how to use QPOPT with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;qpopt &#039;&#039;solves dense quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x + d^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{n+m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If isempty(H) and isempty(c), then a feasible point problem is solved (FP).&lt;br /&gt;
 &lt;br /&gt;
If isempty(H), then a linear programming problem is solved (LP).&lt;br /&gt;
&lt;br /&gt;
If isempty(c), then a quadratic programming problem is solved (QP1). &lt;br /&gt;
&lt;br /&gt;
Otherwise a standard quadratic programming problem is solved (QP2).&lt;br /&gt;
&lt;br /&gt;
===Calling  Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Inform, Iter, iState, Ax, cLamda, Obj, x] = qpopt (H, A, bl, bu, c, Warm, x, iState, &lt;br /&gt;
SpecsFile, PrintFile,  Summ- File, PriLev, optPar);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;H&#039;&#039;||Matrix  H in quadratic part of objective function (SPARSE or DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A 	&#039;&#039;||Constraint matrix, m x n. (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl	&#039;&#039;||Lower bounds on (x, Ax), m+n x 1 vector (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu	&#039;&#039;||Upper bounds on (x, Ax), m+n x 1 vector (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c	&#039;&#039;||Linear objective function cost coeffs, n x 1. (DENSE) If length(c) &#039;&#039;&amp;lt; &#039;&#039;n, setting c(1:n)=0;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Warm 	&#039;&#039;||If Warm &#039;&#039;&amp;gt; &#039;&#039;0, then warm start, otherwise cold Start. Default 0. If warm start, then x and iState must be set properly. Normally the values from last call to qpopt are used.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;x	&#039;&#039;||Initial  estimate of solution vector x. (DENSE) If length(x) ¡ n, the rest of the elements in x are set to 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iState&#039;&#039;||Working set (if  Warm start)  (n+m)  x 1 (DENSE) If  length(iState) ¡  n+m, setting iState(1:n+m)=0;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=0: 	&#039;&#039;Corresponding constraint not in the initial  QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=1: 	&#039;&#039;Inequality constraint at its lower bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=2: 	&#039;&#039;Inequality constraint at its upper bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=3: 	&#039;&#039;Equality constraint in the initial  QP working set, bl(i)==bu(i).&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SpecsFile 	&#039;&#039;||Name of the OPTIONS File, see TOMLAB  Guide.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile 	&#039;&#039;||Name of the Print file. Name includes the path, maximal number of characters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SummFile&#039;&#039;||Name of the Summary file. Name includes the path, maximal number of char- acters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Print level in the qpopt MEX-interface.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent.&lt;br /&gt;
&lt;br /&gt;
= 1 Summary information.&lt;br /&gt;
&lt;br /&gt;
= 2 More detailed information. if isempty(PriLev), set as 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector with  optimization  parameters overriding defaults and the optionally specified SPECS file. If length(optPar) ¡ 62, qpopt sets the rest of the values to missing value (-999).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description of Outputs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Result of QPOPT run. 0 = Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0:  &#039;&#039;&#039;x is a unique local minimizer.  This means that  x is &#039;&#039;feasible &#039;&#039;(it  satisfies the constraints to  the accuracy requested by the Feasibility tolerance), the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive  definite.  If &#039;&#039;H  &#039;&#039;is positive  definite or positive semidefinite, x is a &#039;&#039;global minimizer &#039;&#039;.  (All  other feasible points give a higher objective value.)  Otherwise, the solution is a &#039;&#039;local minimizer &#039;&#039;, which may or may not be global.  (All  other points in the  immediate neighborhood give a higher objective.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1:  &#039;&#039;&#039;A dead-point was reached. This might occur if &#039;&#039;H  &#039;&#039;is not sufficiently posi- tive definite.  If &#039;&#039;H  &#039;&#039;is positive semidefinite, the solution is a &#039;&#039;weak minimizer &#039;&#039;. (The objective  value is a global optimum, but there may be infinitely  many neighboring points with the same objective value.) If &#039;&#039;H &#039;&#039;is indefinite, a feasible direction of decrease may or may not exist (so the point may not be a local or weak minimizer).&lt;br /&gt;
&lt;br /&gt;
At a dead-point, the necessary conditions for optimality are satisfied (x is fea- sible, the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive semidefinite.) However, the reduced Hes- sian is nearly singular, and/or there are some very small multipliers.  If &#039;&#039;H  &#039;&#039;is indefinite, x is not necessarily a local solution of the problem. Verification of optimality  requires further information, and is in general an NP-hard problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2: &#039;&#039;&#039;The solution appears to be unbounded. The objective is not bounded below in the feasible region, if the elements of x are allowed to be arbitrarily  large. This occurs if a step larger than Infinite Step would have to be taken in order to continue the algorithm, or the next step would result in a component of x having magnitude larger than Infinite Bound. It should not occur if &#039;&#039;H &#039;&#039;is sufficiently positive definite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3: &#039;&#039;&#039;The constraints could not be satisfied. The problem has no feasible solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4: &#039;&#039;&#039;One of the iteration limits was reached before normal termination occurred. See Feasibility Phase Iterations and Optimality Phase Iterations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5: &#039;&#039;&#039;The Maximum  degrees  of  freedom is too small. The reduced Hessian must expand if further progress is to be made.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6: &#039;&#039;&#039;An input parameter was invalid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7: &#039;&#039;&#039;The Problem type was not recognized.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter 	&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iState	&#039;&#039;||Status of working set, se input description of iState.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Ax 	&#039;&#039;||A*x.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cLamda	&#039;&#039;||Lagrangian multipliers (dual solution vector) (m x 1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Obj	&#039;&#039;||Objective function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x	&#039;&#039;||Solution vector with decision variable values (n x 1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Using TOMLAB==&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;qpoptTL &#039;&#039;solves quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calling Syntax===&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = qpAssign( ... );&lt;br /&gt;
Result = tomRun(&#039;qpopt&#039;, Prob ... );&lt;br /&gt;
or&lt;br /&gt;
Prob = ProbCheck( ... ); &lt;br /&gt;
Result = qpoptTL(Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call Prob = qpAssign( ... ) or Prob=ProbDef to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U 	&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U 	&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A 	&#039;&#039;||Linear constraint matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c	&#039;&#039;||Linear coefficients in objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.F 	&#039;&#039;||Quadratic matrix of size nnObj x nnObj. nnObj &#039;&#039;&amp;lt; &#039;&#039;n is OK.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt 	&#039;&#039;||Print level.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart 	&#039;&#039;||If true, use warm start, otherwise cold start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs	&#039;&#039;||Solution and slacks from previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.iState	&#039;&#039;||Working set (if  Warm start)  (n+m)  x 1 (DENSE) If  length(iState) ¡  n+m, setting iState(1:n+m)=0;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=0: 	&#039;&#039; Corresponding constraint not in the initial  QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=1: 	&#039;&#039;Inequality constraint at its lower bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=2: 	&#039;&#039;Inequality constraint at its upper bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=3: 	&#039;&#039;Equality constraint in the initial  QP working set, bl(i)==bu(i).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.cLamda	&#039;&#039;||Lagrangian multipliers from previous run (Warm start). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SpecsFile	&#039;&#039;||Name of user defined SPECS file, read BEFORE optPar() is used. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.PrintFile 	&#039;&#039;||Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SummFile	&#039;&#039;||Name of SOL Summary File.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.optPar	&#039;&#039;||Elements &#039;&#039;&amp;gt; &#039;&#039;-999 takes precedence over corresponding TOMLAB params. See Table 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description of Outputs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Result&#039;&#039;||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k	&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k	&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0	&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k	&#039;&#039;||Exact gradient computed at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState	&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState	&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag	&#039;&#039;||Exit status from qpopt.m (similar to TOMLAB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform 	&#039;&#039;||Result of QPOPT run. 0 = Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0:  &#039;&#039;&#039;x is a unique local minimizer.  This means that  x is &#039;&#039;feasible &#039;&#039;(it  satisfies the constraints to the accuracy requested by the Feasibility tolerance), the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive  definite.  If &#039;&#039;H  &#039;&#039;is positive  definite or positive semidefinite, x is a &#039;&#039;global minimizer &#039;&#039;.  (All  other feasible points give a higher objective value.)  Otherwise, the solution is a &#039;&#039;local minimizer &#039;&#039;, which may or may not be global.  (All  other points in the immediate neighborhood give a higher objective.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1:  &#039;&#039;&#039;A dead-point was reached. This might occur if &#039;&#039;H  &#039;&#039;is not sufficiently posi- tive definite.  If &#039;&#039;H  &#039;&#039;is positive semidefinite, the solution is a &#039;&#039;weak minimizer &#039;&#039;. (The objective  value  is a global optimum, but there may be infinitely  many neighboring points with the same objective value.)  If &#039;&#039;H &#039;&#039;is indefinite, a feasible direction of decrease may or may not exist (so the point may not be a local or weak minimizer).&lt;br /&gt;
&lt;br /&gt;
At a dead-point, the necessary conditions for optimality  are satisfied (x is fea- sible, the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive semidefinite.) However, the reduced Hes- sian is nearly singular, and/or there are some very small multipliers.  If &#039;&#039;H  &#039;&#039;is indefinite, x is not necessarily a local solution of the problem. Verification of optimality  requires further information, and is in general an NP-hard problem \[39\].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2: &#039;&#039;&#039;The solution appears to be unbounded. The objective is not bounded below in the feasible region, if the elements of x are allowed to be arbitrarily  large. This occurs if a step larger than Infinite Step would have to be taken in order to continue the algorithm, or the next step would result in a component of x having magnitude larger than Infinite Bound. It should not occur if &#039;&#039;H &#039;&#039;is sufficiently positive definite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3: &#039;&#039;&#039;The constraints could not be satisfied. The problem has no feasible solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4: &#039;&#039;&#039;One of the iteration limits was reached before normal termination occurred. See Feasibility Phase Iterations and Optimality Phase Iterations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5: &#039;&#039;&#039;The Maximum  degrees  of  freedom is too small. The reduced Hessian must expand if further progress is to be made.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6: &#039;&#039;&#039;An input parameter was invalid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7: &#039;&#039;&#039;The Problem type was not recognized. &#039;&#039;rc                          &#039;&#039;Reduced costs. If ninf=0, last m == -v k. &#039;&#039;Iter                        &#039;&#039;Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv                 &#039;&#039;||Number of function evaluations. Set to Iter. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;GradEv                 &#039;&#039;||Number of gradient evaluations. Set to Iter. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv	&#039;&#039;||Number of constraint evaluations. Set to 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B 	&#039;&#039;||Basis vector in TOMLAB  QP standard. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MinorIter 	&#039;&#039;||Number of minor iterations. Not Set. &#039;&#039;Solver	&#039;&#039;Name of the solver (QPOPT).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm	&#039;&#039;||Description of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs	&#039;&#039;||Solution and slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.cLamda	&#039;&#039;||Lagrangian multipliers.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.iState	&#039;&#039;||State for variables and constraints in iState.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==optPar==&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
&lt;br /&gt;
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by QPOPT, unless the value is altered in the SPECS file.&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
====Table: The following fields are used:====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!#!!SPECS keyword text 	&lt;br /&gt;
!Lower	&lt;br /&gt;
!Default&lt;br /&gt;
!Upper&lt;br /&gt;
!Comment&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Printing&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1.||PRINT LEVEL||0||10||0,1,5,10,20,30&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Convergence Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|||colspan=&amp;quot;6&amp;quot;|In LPOPT/QPOPT: macheps = 2&#039;&#039;-&#039;&#039;53 ; eps in Matlab is = 2&#039;&#039;-&#039;&#039;52 ;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|10.||OPTIMALITY TOLERANCE ||&#039;&#039;&amp;gt; &#039;&#039;0||1.05E-8||sqrt(macheps)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|11.||FEASIBILITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.05E-8||sqrt(macheps)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Other Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|21.||CRASH TOLERANCE||0||0.01||&#039;&#039;&amp;lt; &#039;&#039;1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|27.||RANK TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.1E-14||100\*macheps&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|30.||ITERATION LIMIT||&#039;&#039;&amp;gt;&#039;&#039;0||max(2000,5(n+m))&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|33.||MIN SUM YES (or NO)&lt;br /&gt;
&lt;br /&gt;
IF 1 (MIN  SUM YES), minimize the infeasibilities before return.&lt;br /&gt;
||0||0||1||1=min infeas.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|36.||FEASIBILITY PHASE ITERATIONS ||&#039;&#039;&amp;gt;&#039;&#039;0||max(2000,5(n+m))&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|45.||INFINITE STEP SIZE||&#039;&#039;&amp;gt;&#039;&#039;0||1E20&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|47.||HESSIAN ROWS&lt;br /&gt;
&lt;br /&gt;
Implicitly given by the dimensions of H in the call from Matlab&lt;br /&gt;
||0||n||n||0 if FP or LP &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|48.||MAX  DEGREES OF FREEDOM &lt;br /&gt;
ONLY USED IF HESSIAN ROWS == N&lt;br /&gt;
||0||n||n&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Frequencies&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|51.||CHECK FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||50&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|52.||EXPAND FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SQOPT&amp;diff=2630</id>
		<title>SQOPT</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SQOPT&amp;diff=2630"/>
		<updated>2012-01-22T18:15:28Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
TOMVIEW /SQOPT (hereafter referred to as SQOPT ) is a program for solving the large-scale &#039;&#039;linear or quadratic programming problem&#039;&#039;, which is assumed to be stated in following form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{cccc}&lt;br /&gt;
\min\limits_{x}  &amp;amp;          q(x)     \\&lt;br /&gt;
s/t              &amp;amp;  \le \left(\begin{array}{c}x \\ Ax\end{array}\right) \le u,   \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;l &#039;&#039;and &#039;&#039;u &#039;&#039;are constant lower and upper bounds, and &#039;&#039;A &#039;&#039;is a sparse matrix and &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) is a linear or quadratic function objective  function that  may be specified in a variety of ways, depending upon the particular problem being solved. The optional parameter maximize may be used to specify a problem in which &#039;&#039;q &#039;&#039;is maximized instead of minimized.&lt;br /&gt;
&lt;br /&gt;
Upper and lower bounds are specified for all variables and constraints. This form allows full generality in specifying various types of constraint. In particular, the &#039;&#039;j&#039;&#039;th constraint may be defined as an &#039;&#039;equality &#039;&#039;by setting &#039;&#039;l&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;= &#039;&#039;u&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;. If certain bounds are not present, the associated elements of &#039;&#039;l &#039;&#039;or &#039;&#039;u &#039;&#039;may be set to special values that are treated as &amp;lt;math&amp;gt;-\infty&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;+\infty&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The possible forms for the function &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) are summarized in [[#Table: Choices for the objective function q(x).]]. The most general form for &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) is&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
q(x) = f + \sum_{j= 1}^n c_j x_j + \frac{1}{2} \sum_{i= 1}^n\sum_{j= 1}^n x_i H_{ij} x_j = f + c^T x + \frac{1}{2} x^T H x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;f &#039;&#039;is a constant, &#039;&#039;c &#039;&#039;is a constant &#039;&#039;n &#039;&#039;vector and &#039;&#039;H &#039;&#039;is a constant symmetric &#039;&#039;n × n &#039;&#039;matrix with elements &amp;lt;math&amp;gt;\{H_{ij}\}&amp;lt;/math&amp;gt;. In this form, &#039;&#039;q &#039;&#039;is a quadratic function of &#039;&#039;x &#039;&#039;and Problem LCQP is known as a &#039;&#039;quadratic program &#039;&#039;(QP). SQOPT is suitable for all &#039;&#039;convex &#039;&#039;quadratic programs. The defining feature of a convex QP is that the matrix &#039;&#039;H &#039;&#039;must be &#039;&#039;positive semidefinite &#039;&#039;-i.e., it must satisfy &#039;&#039;x&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;Hx &amp;gt;= &#039;&#039;0 for all &#039;&#039;x&#039;&#039;. If not, &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) is nonconvex and SQOPT will terminate with the error indicator inform = 4.&lt;br /&gt;
&lt;br /&gt;
====Table: Choices for the objective function &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;).====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Problem type||Objective function &#039;&#039;q&#039;&#039;||Hessian matrix&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Quadratic Programming (QP)||&amp;lt;math&amp;gt;f+c^T x+\frac{1}{2} x^T Hx&amp;lt;/math&amp;gt;||Symmetric positive semidefinite&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Linear Programming (LP)||&amp;lt;math&amp;gt;f+c^T x&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;H=0&amp;lt;/math&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Feasible Point (FP)||Not Applicable||&amp;lt;math&amp;gt;f=0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c=0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;H=0&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;H &#039;&#039;= 0, then &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) = &#039;&#039;f &#039;&#039;+ &#039;&#039;c&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;x &#039;&#039;and the problem is known as a &#039;&#039;linear program &#039;&#039;(LP).&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;H  &#039;&#039;= 0, &#039;&#039;f &#039;&#039;= 0, and &#039;&#039;c &#039;&#039;= 0, there is no objective function and the problem is a &#039;&#039;feasible point problem &#039;&#039;(FP), which is equivalent to finding a point that satisfies the constraints on &#039;&#039;x&#039;&#039;.  In the situation where no feasible point exists, several options are available for finding a point that minimizes the constraint violations (see the optional parameter Elastic option).&lt;br /&gt;
&lt;br /&gt;
SQOPT is suitable for large LPs and QPs in which the matrix &#039;&#039;A &#039;&#039;is &#039;&#039;sparse &#039;&#039;-i.e., when there are sufficiently many zero elements in &#039;&#039;A &#039;&#039;to justify storing them implicitly.&lt;br /&gt;
&lt;br /&gt;
SQOPT exploits structure or sparsity in &#039;&#039;H &#039;&#039;by  requiring &#039;&#039;H &#039;&#039;to  be  defined &#039;&#039;implicitly &#039;&#039;in &#039;&#039;&#039;a subroutine that computes the  product &#039;&#039;Hx &#039;&#039;for  any  given  vector &#039;&#039;x. &#039;&#039;In  many cases, the  product &#039;&#039;Hx &#039;&#039;can  be  computed very  efficiently for  any given  &#039;&#039;x-e.g., &#039;&#039;H  &#039;&#039;may  be a sparse matrix, or  a sum of matrices of rank-one.&lt;br /&gt;
&lt;br /&gt;
==Brief description of the method==&lt;br /&gt;
&lt;br /&gt;
Here we briefly describe some features of the algorithm used in SQOPT and introduce some terminology used in the description of the subroutine and its arguments. For further details, see [[#Algorithmic Details]].&lt;br /&gt;
&lt;br /&gt;
===Formulation of the problem===&lt;br /&gt;
&lt;br /&gt;
The upper and lower bounds on the &#039;&#039;m &#039;&#039;components of &#039;&#039;Ax &#039;&#039;are said to define the &#039;&#039;general constraints &#039;&#039;of the problem. Internally  SQOPT converts the general constraints to equalities by introducing a set of &#039;&#039;slack variables s&#039;&#039;, where &amp;lt;math&amp;gt;s = (s_1,&lt;br /&gt;
s_2,\dots, s_m)^T&amp;lt;/math&amp;gt;. For example, the linear constraint &amp;lt;math&amp;gt;5 \le 2x_1 +&lt;br /&gt;
3x_2 \le +\infty&amp;lt;/math&amp;gt; is replaced by &amp;lt;math&amp;gt;2x_1 + 3x_2 - s_1 = 0&amp;lt;/math&amp;gt; together with  the bounded slack &amp;lt;math&amp;gt;5\le s_1 \le +\infty&amp;lt;/math&amp;gt;. Problem LCQP can therefore be rewritten in the following equivalent form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\min_{x,s}\quad q(x)\quad \text{subject to} \quad A x - s = 0, \quad l \le \left(\begin{array}{c}x \\ s\end{array}\right) \le u.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the slack variables &#039;&#039;s &#039;&#039;are subject to the same upper and lower bounds as the components of &#039;&#039;Ax&#039;&#039;, they allow us to think of the bounds on &#039;&#039;Ax &#039;&#039;and &#039;&#039;x &#039;&#039;as simply bounds on the combined vector (&#039;&#039;x, s&#039;&#039;). (In order to indicate their special role in problem QP, the original variables &#039;&#039;x &#039;&#039;are sometimes known as &amp;quot;column variables&amp;quot;, and the slack variables &#039;&#039;s &#039;&#039;are known as &amp;quot;row variables&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Each LP or QP is solved using an &#039;&#039;active-set &#039;&#039;method. This is an iterative procedure with two phases:  a &#039;&#039;phase 1 &#039;&#039;(sometimes called the &#039;&#039;feasibility phase &#039;&#039;), in which the sum of infeasibilities is minimized to find a feasible point; and a &#039;&#039;phase 2 &#039;&#039;(or &#039;&#039;optimality phase &#039;&#039;), in which &#039;&#039;q &#039;&#039;is minimized by constructing a sequence of iterations that lies within the feasible region.&lt;br /&gt;
&lt;br /&gt;
Phase 1 involves solving a linear program of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\min{x,v,w} \ \ \  \sum_{j=1}^{n+m} v_j + w_j  \quad&lt;br /&gt;
\text{subject to} \quad  Ax - s = 0, \quad&lt;br /&gt;
\quad&lt;br /&gt;
l \le&lt;br /&gt;
\left(\begin{array}{c}&lt;br /&gt;
x\\s&lt;br /&gt;
\end{array}\right)&lt;br /&gt;
- v + w \le v,&lt;br /&gt;
\quad&lt;br /&gt;
v \ge 0, w \ge 0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which is equivalent to minimizing the sum of the constraint violations. If the constraints are feasible (i.e., at least one feasible point exists), eventually a point will be found at which both &#039;&#039;v &#039;&#039;and &#039;&#039;w &#039;&#039;are zero. The associated value of (&#039;&#039;x, s&#039;&#039;) satisfies the original constraints and is used as the starting point for the phase 2 iterations for minimizing &#039;&#039;q&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the constraints are infeasible (i.e., &#039;&#039;v &#039;&#039;= 0 or &#039;&#039;w &#039;&#039;= 0 at the end of phase 1), no solution exists for Problem LCQP and the user has the option of either terminating or continuing in so-called &#039;&#039;elastic mode &#039;&#039;(see the discussion of the optional parameter Elastic  option). In elastic mode, a &amp;quot;relaxed&amp;quot; or &amp;quot;perturbed&amp;quot;  problem is solved in which &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) is minimized while allowing some of the bounds to become &amp;quot;elastic&amp;quot;-i.e., to change from their specified values. Variables subject to elastic bounds are known as &#039;&#039;elastic variables&#039;&#039;. An elastic variable is free to violate one or both of its original upper or lower bounds.&lt;br /&gt;
&lt;br /&gt;
To make the relaxed problem meaningful, SQOPT minimizes  &#039;&#039;q &#039;&#039;while (in some sense) finding the &amp;quot;smallest&amp;quot; violation of the elastic variables. In the situation where all the variables are elastic, the relaxed problem has the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\text{Phase2}(\gamma)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\min_{x,v,w} q(x) + \gamma \sum_{j=1}^{n+m}(v_j + w_j)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\text{subject to}&lt;br /&gt;
Ax - s = 0, \quad  l \le&lt;br /&gt;
\left(\begin{array}{c}&lt;br /&gt;
x\\s&lt;br /&gt;
\end{array}\right)&lt;br /&gt;
- v + w \le v,&lt;br /&gt;
\quad&lt;br /&gt;
v \ge 0, w \ge 0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; is a nonnegative parameter known as the &#039;&#039;elastic weight&#039;&#039;, and &amp;lt;math&amp;gt;q(x) + \gamma\sum_j(v_j + w_j)&amp;lt;/math&amp;gt; is called the &#039;&#039;composite&#039;&#039; &#039;&#039;objective&#039;&#039;. In the more general situation where only a subset of the bounds are elastic, the &#039;&#039;v&#039;&#039;&#039;s and &#039;&#039;w&#039;&#039;&#039;s for the non-elastic bounds are fixed at zero.&lt;br /&gt;
&lt;br /&gt;
The elastic weight can be chosen to make the composite objective behave like either the original objective &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) or the sum of infeasibilities. If &#039;&#039;&amp;amp;gamma;&#039;&#039;= 0, SQOPT will attempt to minimize &#039;&#039;q &#039;&#039;subject to the (true) upper and lower bounds on the nonelastic variables (and declare the problem infeasible if the nonelastic variables cannot be made feasible). At the other extreme, choosing &#039;&#039;&amp;amp;gamma;&#039;&#039; sufficiently large, will  have the effect of minimizing the sum of the violations of the elastic variables subject to the original constraints on the non-elastic variables.  Choosing a large value of the elastic weight is useful for defining a &amp;quot;least-infeasible&amp;quot; point for an infeasible problem.&lt;br /&gt;
&lt;br /&gt;
In phase 1 and elastic mode, all calculations involving &#039;&#039;v &#039;&#039;and &#039;&#039;w &#039;&#039;are done implicitly  in the sense that  an elastic variable &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is allowed to violate its lower bound (say) and an explicit value of &#039;&#039;v &#039;&#039;can be recovered as &#039;&#039;v&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;= &#039;&#039;l&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; - x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===The main iteration===&lt;br /&gt;
&lt;br /&gt;
A constraint is said to be &#039;&#039;active &#039;&#039;or &#039;&#039;binding &#039;&#039;at &#039;&#039;x &#039;&#039;if the associated component of either &#039;&#039;x &#039;&#039;or &#039;&#039;Ax &#039;&#039;is equal to one of its upper or lower bounds. Since an active constraint in &#039;&#039;Ax &#039;&#039;has its associated slack variable at a bound, we can neatly describe the status of both simple and general upper and lower bounds in terms of the status of the variables (&#039;&#039;x, s&#039;&#039;). A variable is said to be &#039;&#039;nonbasic &#039;&#039;if it is temporarily fixed at its upper or lower bound. It follows that regarding a general constraint as being &#039;&#039;active &#039;&#039;is equivalent to thinking of its associated slack as being &#039;&#039;nonbasic&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
At each iteration of an active-set method, the constraints &#039;&#039;Ax - s &#039;&#039;= 0 are (conceptually) partitioned into the form &#039;&#039;Bx&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;  &#039;&#039;+ &#039;&#039;Sx&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;+ &#039;&#039;Nx&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; &#039;&#039;= 0, where &#039;&#039;x&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; &#039;&#039;comprises the nonbasic components of (&#039;&#039;x, s&#039;&#039;) and the &#039;&#039;basis matrix  B &#039;&#039;is square and nonsingular. The elements of &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;  &#039;&#039;and &#039;&#039;x&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;are called the &#039;&#039;basic &#039;&#039;and &#039;&#039;superbasic &#039;&#039;variables respectively; with &#039;&#039;x&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; &#039;&#039;they are a permutation of the elements of &#039;&#039;x &#039;&#039;and &#039;&#039;s&#039;&#039;. At a QP solution, the basic and superbasic variables will lie somewhere between their bounds, while the nonbasic variables will be equal to one of their upper or lower bounds. At each iteration, &#039;&#039;x&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;is regarded as a set of independent variables that are free to move in any desired direction, namely one that will improve the value of the QP objective (or sum of infeasibilities). The basis variables are then adjusted in order to ensure that (&#039;&#039;x, s&#039;&#039;) continues to satisfy &#039;&#039;Ax - s &#039;&#039;= 0. The number of superbasic variables (&#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;&#039;&#039; say) therefore indicates the number of degrees of freedom remaining after the constraints have been satisfied. In broad terms, &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;is a measure of &#039;&#039;how nonlinear &#039;&#039;the problem is. In particular, &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;will always be zero for FP and LP problems.&lt;br /&gt;
&lt;br /&gt;
If it appears that no improvement can be made with the current definition of &#039;&#039;B&#039;&#039;, &#039;&#039;S &#039;&#039;and &#039;&#039;N &#039;&#039;, a nonbasic variable is selected to be added to &#039;&#039;S&#039;&#039;, and the process is repeated with the value of &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;increased by one. At all stages, if a basic or superbasic variables encounters one of its bounds, the variable is made nonbasic and the value of &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;is decreased by one.&lt;br /&gt;
&lt;br /&gt;
Associated with each of the &#039;&#039;m &#039;&#039;equality constraints &#039;&#039;Ax - s &#039;&#039;= 0 is a &#039;&#039;dual variable &amp;amp;pi;&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; &#039;&#039;.  Similarly, each variable in (&#039;&#039;x, s&#039;&#039;) has an associated &#039;&#039;reduced gradient d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;(also known as a &#039;&#039;reduced cost &#039;&#039;). The reduced gradients for the variables &#039;&#039;x &#039;&#039;are the quantities &#039;&#039;g - A&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&amp;amp;pi;&#039;&#039;, where &#039;&#039;g &#039;&#039;is the gradient of the QP objective; and the reduced gradients for the slacks &#039;&#039;s &#039;&#039;are the dual variables &#039;&#039;&amp;amp;pi;&#039;&#039;. The QP subproblem is optimal if &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &amp;gt;= &#039;&#039;0 for all nonbasic variables at their lower bounds, &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &amp;lt;= &#039;&#039;0 for all nonbasic variables at their upper bounds, and &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;   &#039;&#039;= 0 for all superbasic variables.  In practice, an &#039;&#039;approximate &#039;&#039;QP solution is found by slightly relaxing these conditions on &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;(see the Optimality tolerance described in [[#Description of the optional parameters]]).&lt;br /&gt;
&lt;br /&gt;
The process of computing and comparing reduced gradients is known as &#039;&#039;pricing &#039;&#039;(a term first introduced in the context of the simplex method for linear programming). To &amp;quot;price&amp;quot; a nonbasic variable &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;means that the reduced gradient  &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;   &#039;&#039;associated with  the relevant  active  upper or lower bound on &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;   &#039;&#039;is computed via the formula &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;   &#039;&#039;= &#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; - a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&amp;amp;pi;&#039;&#039;, where &#039;&#039;a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is the &#039;&#039;j&#039;&#039;th column of ( &#039;&#039;A  - I &#039;&#039;). (The variable selected by the price, and its corresponding value of &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;(i.e., its reduced gradient) are printed in the columns marked +SBS and dj in the Print file output.)  If &#039;&#039;A&#039;&#039; has significantly more columns than rows (i.e., &amp;lt;math&amp;gt;n\gg m&amp;lt;/math&amp;gt;), pricing can be computationally expensive. In this case, a strategy known as &#039;&#039;partial pricing &#039;&#039;can be used to compute and compare only a subset of the &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;&#039;s.&lt;br /&gt;
&lt;br /&gt;
==The SPECS file==&lt;br /&gt;
&lt;br /&gt;
The performance of SQOPT is controlled by a number of parameters or &amp;quot;options&amp;quot;.   These are normally set in &#039;&#039;Prob.SOL.optPar&#039;&#039;. Each option has a default value that should be appropriate for most problems. (The defaults are given in the next section.) For special situations it is possible to specify non-standard values for some or all of the options, using data in the following general form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Begin  SQOPT  options&lt;br /&gt;
   Iterations limit 		500&lt;br /&gt;
   Feasibility  tolerance	1.0e-7&lt;br /&gt;
   Scale  all variables&lt;br /&gt;
End SQOPT  options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We shall call such data a SPECS file, since it specifies various options. The file starts with the keyword Begin and ends with End. The file is in free format. Each line specifies a single option, using one or more items as follows:&lt;br /&gt;
&lt;br /&gt;
# A &#039;&#039;keyword &#039;&#039;(required for all options).&lt;br /&gt;
# A &#039;&#039;phrase &#039;&#039;(one or more words) that qualifies the keyword (only for some options).&lt;br /&gt;
# A &#039;&#039;number &#039;&#039;that specifies an integer or real value (only for some options).  Such numbers may be up to 16 contiguous characters in Fortran 77&#039;s I, F, E or D formats, terminated by a space.&lt;br /&gt;
&lt;br /&gt;
The items may be entered in upper or lower case or a mixture of both. Some of the keywords have synonyms, and certain abbreviations are allowed,  as long as there is no ambiguity. Blank lines and comments may be used to improve readability. A comment begins with an asterisk (*), which may appear anywhere on a line. All subsequent characters on the line are ignored.&lt;br /&gt;
&lt;br /&gt;
It may be useful to include a comment on the first (Begin) line of the file. This line is echoed to the SUMMARY file.&lt;br /&gt;
&lt;br /&gt;
Most of the options described in the next section should be left at their default values for any given model. If experimentation is necessary, we recommend changing just one option at a time.&lt;br /&gt;
&lt;br /&gt;
===SPECS  File Checklist and Defaults===&lt;br /&gt;
&lt;br /&gt;
The following example SPECS file shows all valid &#039;&#039;keywords &#039;&#039;and their &#039;&#039;default values&#039;&#039;. The keywords are grouped according to the function they perform.&lt;br /&gt;
&lt;br /&gt;
Some of the default values depend on &#039;&#039;E&#039;&#039;, the relative precision of the machine being used. The values given here correspond to double-precision arithmetic  on most  current  machines (&#039;&#039;E  ˜ &#039;&#039;2&#039;&#039;.&#039;&#039;22 &#039;&#039;× &#039;&#039;10&#039;&#039;-&#039;&#039;16 ).  Similar values would apply to any machine having about 15 decimal digits of precision.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN checklist of SPECS file parameters and their default values&lt;br /&gt;
* Printing&lt;br /&gt;
  Print level			1 	* 1-line iteration log&lt;br /&gt;
  Print file 			15 	*&lt;br /&gt;
  Summary file 			6 	* typically the screen&lt;br /&gt;
  Print frequency 		1 	* iterations log on PRINT file&lt;br /&gt;
  Summary frequency 		1 	* iterations log on SUMMARY file&lt;br /&gt;
  Solution 			Yes 	* on the PRINT file&lt;br /&gt;
* Suppress options listing 		* default: options are listed&lt;br /&gt;
&lt;br /&gt;
* Convergence Tolerances&lt;br /&gt;
  Feasibility tolerance 	1.0e-6 	* for satisfying the simple bounds&lt;br /&gt;
  Optimality tolerance 		1.0e-6 	* target value for reduced gradients&lt;br /&gt;
&lt;br /&gt;
* Scaling&lt;br /&gt;
Scale option 			2	* All constraints and variables&lt;br /&gt;
Scale tolerance 		0.9 	*&lt;br /&gt;
* Scale Print 				* default: scales are not printed&lt;br /&gt;
&lt;br /&gt;
* Other Tolerances&lt;br /&gt;
Crash tolerance 		0.1 	*&lt;br /&gt;
LU factor tolerance 		10.0 	* limits size of multipliers in L&lt;br /&gt;
LU update tolerance 		10.0	* the same during updates&lt;br /&gt;
LU singularity tolerance 	2.0e-6 	*&lt;br /&gt;
Pivot tolerance 		3.7e-11 * ?^(2/3)&lt;br /&gt;
&lt;br /&gt;
* LP/QP problems&lt;br /&gt;
  Crash option 			0 	* all slack initial basis&lt;br /&gt;
  Elastic weight 		1.0 	* used only during elastic mode&lt;br /&gt;
Iterations limit 		10000 	* or m if that is more&lt;br /&gt;
Minimize				* (opposite of Maximize)&lt;br /&gt;
Partial price 			1 	* 10 for large LPs&lt;br /&gt;
Superbasics limit 		500 	* or n1+1 if that is less&lt;br /&gt;
Reduced Hessian dimension 	500 	* or Superbasics limit&lt;br /&gt;
Unbounded step size 		1.0e+18 *&lt;br /&gt;
&lt;br /&gt;
* Infeasible problems&lt;br /&gt;
  Elastic weight 		100 	* used only during elastic mode&lt;br /&gt;
  Elastic mode 			1 	* use elastic mode when infeasible&lt;br /&gt;
  Elastic objective 		2 	* infinite weight on the elastics&lt;br /&gt;
&lt;br /&gt;
* Frequencies&lt;br /&gt;
  Check frequency 		60 	* test row residuals ||Ax - s||&lt;br /&gt;
  Expand frequency 		10000 	* for anti-cycling procedure&lt;br /&gt;
  Factorization frequency 	100 	*&lt;br /&gt;
  Save frequency 		100 	* save basis map&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Description  of the optional parameters===&lt;br /&gt;
&lt;br /&gt;
The following is an alphabetical list of the options that may appear in the SPECS file, and a description of their effect.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Check frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 60&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Every &#039;&#039;k&#039;&#039;th iteration after the most recent basis factorization, a numerical test is made to see if the current solution &#039;&#039;x &#039;&#039;satisfies the general constraints. The constraints are of the form &#039;&#039;Ax - s &#039;&#039;= 0, where &#039;&#039;s &#039;&#039;is the set of slack variables. To perform the numerical test, the residual vector &#039;&#039;r &#039;&#039;= &#039;&#039;s - Ax &#039;&#039;is computed. If the largest component of &#039;&#039;r &#039;&#039;is judged to be too large, the current basis is refactorized and the basic variables are recomputed to satisfy the general constraints more accurately.&lt;br /&gt;
&lt;br /&gt;
Check frequency 1 is useful for debugging purposes, but otherwise this option should not be needed.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Crash option&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Crash tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 0.1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Except on restarts, a CRASH procedure is used to select an initial  basis from certain rows and columns of the constraint matrix ( &#039;&#039;A  - I &#039;&#039;). The Crash option &#039;&#039;i &#039;&#039;determines which rows and columns of &#039;&#039;A &#039;&#039;are eligible initially, and how many times CRASH is called. Columns of &#039;&#039;-I &#039;&#039;are used to pad the basis where necessary.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i||Meaning&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0||The initial  basis contains only slack variables: &#039;&#039;B &#039;&#039;= &#039;&#039;I &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1||CRASH is called once, looking for a triangular basis in all rows and columns of the matrix &#039;&#039;A&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|2||CRASH is called once, looking for a triangular basis in linear rows.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|3||CRASH is called twice.  The two calls treat &#039;&#039;linear equalities &#039;&#039;and &#039;&#039;linear inequalities &#039;&#039;separately.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;i &amp;gt;= &#039;&#039;1, certain slacks on inequality rows are selected for the basis first.  (If &#039;&#039;i &amp;gt;= &#039;&#039;2, numerical values are used to exclude slacks that are close to a bound.) CRASH then makes several passes through the columns of &#039;&#039;A&#039;&#039;, searching for a basis matrix that is essentially triangular.  A column is assigned to &amp;quot;pivot&amp;quot; on a particular row if the column contains a suitably large element in a row that has not yet been assigned.  (The pivot elements ultimately  form the diagonals of the triangular basis.) For remaining unassigned rows, slack variables are inserted to complete the basis.&lt;br /&gt;
&lt;br /&gt;
The Crash tolerance &#039;&#039;r &#039;&#039;allows the starting procedure CRASH to ignore certain &amp;quot;small&amp;quot;  nonzeros in each column of &#039;&#039;A&#039;&#039;. If &#039;&#039;a&#039;&#039;&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; is the largest element in column &#039;&#039;j&#039;&#039;, other nonzeros &#039;&#039;a&amp;lt;sub&amp;gt;ij&amp;lt;/sub&amp;gt;  &#039;&#039;in the column are ignored if &#039;&#039;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;a&amp;lt;sub&amp;gt;ij&amp;lt;/sub&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; = a&#039;&#039;&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt; &#039;&#039;× r&#039;&#039;. (To be meaningful, &#039;&#039;r &#039;&#039;should be in the range 0 &#039;&#039;&amp;lt;= r &amp;lt; &#039;&#039;1.)&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;r &amp;gt; &#039;&#039;0&#039;&#039;.&#039;&#039;0, the basis obtained by CRASH may not be strictly  triangular, but it is likely to be nonsingular and almost triangular.  The intention is to obtain a starting basis containing more columns of &#039;&#039;A &#039;&#039;and fewer (arbitrary) slacks. A feasible solution may be reached sooner on some problems.&lt;br /&gt;
&lt;br /&gt;
For example, suppose the first &#039;&#039;m &#039;&#039;columns of &#039;&#039;A&#039;&#039; form the matrix  shown under LU factor tolerance; i.e., a tridiagonal matrix with entries &#039;&#039;-&#039;&#039;1, 4, -1. To help CRASH choose all &#039;&#039;m &#039;&#039;columns for the initial  basis, we would specify Crash tolerance &#039;&#039;r &#039;&#039;for some value of r &amp;gt; 1/4.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Elastic moden&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This parameter determines if (and when) elastic mode is to be started. Three elastic modes are available as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i||Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Elastic mode is never invoked. SQOPT will terminate as soon as infeasibility is detected. There may be other points with significantly smaller sums of infeasibilities.&lt;br /&gt;
|-&lt;br /&gt;
|1||Elastic mode is invoked only if the constraints are found to be infeasible (the default).  If the constraints are infeasible, continue in elastic mode with the composite objective determined by the values of Elastic objective and Elastic weight.&lt;br /&gt;
|-&lt;br /&gt;
|2||The iterations start and remain in elastic mode. This option allows you to minimize the composite objective function directly without first performing phase-1 iterations.&lt;br /&gt;
&lt;br /&gt;
The success of this option will depend critically  on your choice of Elastic weight.  If Elastic weight  is sufficiently large and the constraints are feasible, the minimizer of the composite objective and the solution of the original problem are identical. However, if the Elastic weight is not sufficiently large, the minimizer of the composite function may be infeasible,  even though a feasible point for the constraints may exist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Elastic objective&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 2&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This option determines the form of the composite objective. Three types of composite objectives are available.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i||Meaning&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0||Include only the true objective &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) in the composite objective.  This option sets &#039;&#039;? &#039;&#039;= 0 in the composite objective and will allow SQOPT to ignore the elastic bounds and find a solution that minimizes &#039;&#039;q &#039;&#039;subject to the nonelastic constraints. This option is useful if there are some &amp;quot;soft&amp;quot;  constraints that you would like to ignore if the constraints are infeasible.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1||Use a composite objective defined with &#039;&#039;? &#039;&#039;determined by the value of Elastic weight.  This value is intended to be used in conjunction with Elasticmode = 2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|2||Include only the elastic variables in the composite objective.  The elastics are weighted by &#039;&#039;? &#039;&#039;= 1.  This choice minimizes the violations of the elastic variable at the expense of possibly increasing the true objective. This option can be used to find a point that minimizes the sum of the violations of a subset of constraints determined by the parameter helast.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Elastic weight&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This keyword defines the value of &amp;amp;gamma; in the composite objective.&lt;br /&gt;
&lt;br /&gt;
*At each iteration of elastic mode, the composite objective is defined to be &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\min\ \ \sigma q(x) + r(\hbox{sum of infeasibilities}),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&amp;amp;sigma; &#039;&#039;= 1 for Minimize,  &#039;&#039;&amp;amp;sigma; &#039;&#039;= &#039;&#039;-&#039;&#039;1 for Maximize, and &#039;&#039;q &#039;&#039;is the current objective value.&lt;br /&gt;
&lt;br /&gt;
*Note that the effect of &#039;&#039;r &#039;&#039;is &#039;&#039;not &#039;&#039;disabled once a feasible iterate is obtained.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Expand frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 10000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This option is part of the EXPAND anti-cycling procedure designed to make progress even on highly degenerate problems.&lt;br /&gt;
&lt;br /&gt;
The strategy is to force a positive step at every iteration, at the expense of violating the bounds on the variables by a small amount. Suppose that the Feasibility tolerance is &#039;&#039;&amp;amp;delta;&#039;&#039;.  Over a period of &#039;&#039;i &#039;&#039;iterations, the tolerance actually used by SQOPT increases from 0&#039;&#039;.&#039;&#039;5&#039;&#039;&amp;amp;delta; &#039;&#039;to &#039;&#039;&amp;amp;delta; &#039;&#039;(in steps of 0&#039;&#039;.&#039;&#039;5&#039;&#039;&amp;amp;delta;/i&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Increasing &#039;&#039;i &#039;&#039;helps reduce the number of slightly infeasible nonbasic basic variables (most of which are eliminated during a resetting procedure). However, it also diminishes the freedom to choose a large pivot element (see Pivot tolerance).&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Factorization Frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 100 (LP) or 50 (QP)&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
At most &#039;&#039;k &#039;&#039;basis changes will occur between factorizations of the basis matrix.&lt;br /&gt;
&lt;br /&gt;
*With linear programs, the basis factors are usually updated every iteration. The default &#039;&#039;k &#039;&#039;is reasonable for typical problems. Higher values up to &#039;&#039;k &#039;&#039;= 100 (say) may be more efficient on problems that are extremely sparse and well scaled.&lt;br /&gt;
&lt;br /&gt;
*When the objective function is quadratic, fewer basis updates will occur as an optimum is approached. The number of iterations between basis factorizations will  therefore increase. During these iterations a test is made regularly (according to the Check frequency) to ensure that the general constraints are satisfied. If necessary the basis will be refactorized  before the limit  of &#039;&#039;k &#039;&#039;updates is reached.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Feasibility  tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;t&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1.0E-6&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;feasible problem &#039;&#039;is one in which all variables satisfy their upper and lower bounds to within the absolute tolerance &#039;&#039;t&#039;&#039;. (This includes slack variables. Hence, the general constraints are also satisfied to within &#039;&#039;t&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
*SQOPT attempts to find a feasible point for the non-elastic constraints before optimizing the objective. If the sum of the infeasibilities of these constraints cannot be reduced to zero, the problem is declared INFEASIBLE. If sInf is quite small, it may be appropriate to raise &#039;&#039;t &#039;&#039;by a factor of 10 or 100. Otherwise, some error in the data should be suspected.&lt;br /&gt;
&lt;br /&gt;
*Note: if sInf is not small and you have not asked SQOPT to minimize the violations of the elastic variables (i.e., you have not specified Elasticobjective = 2, there may be other points that  have a &#039;&#039;significantly smaller sum of infeasibilities&#039;&#039;. SQOPT will not attempt to find the solution that minimizes the sum unless Elasticobjective = 2.&lt;br /&gt;
&lt;br /&gt;
*If scale is used, feasibility is defined in terms of the scaled problem (since it is then  more likely to be meaningful).&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Infinite Bound Size&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1.0E + 20&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
                                             &lt;br /&gt;
If &#039;&#039;r &amp;gt; &#039;&#039;0, &#039;&#039;r &#039;&#039;defines the &amp;quot;infinite&amp;quot; bound BigBnd in the definition of the problem constraints.  Any upper bound greater than or equal to BigBnd will be regarded as plus infinity  (and similarly for a lower bound less than or equal to &#039;&#039;-&#039;&#039;BigBnd). If &#039;&#039;r &amp;lt;= &#039;&#039;0, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Iterations Limit&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 3 * m&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the maximum number of iterations of the simplex method or the QP reduced-gradient algorithm allowed.&lt;br /&gt;
&lt;br /&gt;
*Itns is an alternative keyword.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;k&#039;&#039; = 0 is valid. Both feasibility and optimality are checked.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Log Frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
see Print Frequency&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;LU factor tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 100.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;LU update tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 10.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These tolerances affect  the stability  and sparsity of the basis factorization &#039;&#039;B  &#039;&#039;= &#039;&#039;LU  &#039;&#039;during refactorization and updating, respectively. They must satisfy &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; , &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &#039;&#039;&amp;gt;= 1.0. The matrix &#039;&#039;L &#039;&#039;is a product of matrices of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left(\begin{array}{cc}&lt;br /&gt;
1 \\ \mu &amp;amp; \ 1&lt;br /&gt;
\end{array}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the multipliers &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; satisfy &amp;lt;math&amp;gt;|\mu| \le r_i&amp;lt;/math&amp;gt;. Smaller values of &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; favor stability, while larger values favor sparsity. The default values usually strike a good compromise.&lt;br /&gt;
&lt;br /&gt;
*For large and relatively dense problems, &#039;&#039;r&#039;&#039;1 = 10&#039;&#039;.&#039;&#039;0 or 5.0 (say) may give a useful improvement in stability without impairing sparsity to a serious degree.&lt;br /&gt;
&lt;br /&gt;
*For certain very regular structures (e.g., band matrices) it may be necessary to reduce &#039;&#039;r&#039;&#039;1 and/or &#039;&#039;r&#039;&#039;2 in order to achieve stability.  For example, if the columns of &#039;&#039;A &#039;&#039;include a submatrix of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left(\begin{array}{rrrrrr}&lt;br /&gt;
4 &amp;amp; -1 \\&lt;br /&gt;
-1 &amp;amp;  4 &amp;amp;  -1 \\&lt;br /&gt;
&amp;amp; -1 &amp;amp;   4   &amp;amp;  -1 \\&lt;br /&gt;
&amp;amp;    &amp;amp; \ddots&amp;amp; \ddots&amp;amp; \ddots\\&lt;br /&gt;
&amp;amp;    &amp;amp;       &amp;amp;  -1   &amp;amp;    4  &amp;amp; -1 \\&lt;br /&gt;
&amp;amp;    &amp;amp;       &amp;amp;       &amp;amp;   -1  &amp;amp;  4&lt;br /&gt;
\end{array}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
one should set both &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; and &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; to values in the range 1.0 &amp;lt;= r&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; &amp;lt; 4.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;LU singularity tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = &amp;amp;epsilon;&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This tolerance should satisfy &amp;lt;math&amp;gt;r_3 \le \epsilon^{1/4} \approx 10^{-4}&amp;lt;/math&amp;gt;. It helps guard against ill-conditioned basis matrices. When the &#039;&#039;LU&#039;&#039; factors of &#039;&#039;B &#039;&#039;are computed directly (not updated), the diagonal elements of &#039;&#039;U &#039;&#039;are tested as follows: if &amp;lt;math&amp;gt;|U_{jj}| \le r_3&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;|U_{jj}| &amp;lt; r_3 \max_i |U_{ij}|&amp;lt;/math&amp;gt;, the &#039;&#039;j&#039;&#039;-th column of the basis is replaced by the corresponding slack variable. (Replacements are rare because the &#039;&#039;LU &#039;&#039;updating method is stable. They are most likely to occur during the first factorization.)&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;LU density tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 0.6&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;LU singularity tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = &amp;lt;math&amp;gt;\epsilon^{2/3}\approx 10^{-11}&amp;lt;/math&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The density tolerance &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; is used during &#039;&#039;LU  &#039;&#039;factorization of the basis matrix.  Columns of &#039;&#039;L &#039;&#039;and rows of &#039;&#039;U &#039;&#039;are formed one at a time, and the remaining rows and columns of the basis are altered appropriately. At any stage, if the density of the remaining matrix exceeds &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, the Markowitz strategy for choosing pivots is altered to reduce the time spent searching for each remaining pivot. Raising the density tolerance towards 1.0 may give slightly sparser &#039;&#039;LU &#039;&#039;factors, with a slight increase in factorization time.&lt;br /&gt;
&lt;br /&gt;
The singularity tolerance &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; helps guard against ill-conditioned basis matrices. When the basis is refactorized, the diagonal elements of &#039;&#039;U &#039;&#039;are tested as follows: if &amp;lt;math&amp;gt;|U_{jj}| \le r_2&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;|U_{jj}| &amp;lt; r_2 \max_i |U_{ij}|&amp;lt;/math&amp;gt;, the &#039;&#039;j&#039;&#039;th column of the basis is replaced by the corresponding slack variable. (This is most likely to occur after a restart, or at the start of a major iteration.)&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Minimize&amp;lt;/tt&amp;gt;||||&amp;lt;tt&amp;gt;Default&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Maximize&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This specifies the required direction of optimization. It applies to both linear and quadratic terms in the objective.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Optimality tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;t&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1.0e-6&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is used to judge the size of the reduced gradients &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; = &#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  - &amp;amp;pi;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;, where &#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; is the &#039;&#039;j&#039;&#039;th  component of the gradient, &#039;&#039;a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; is the associated column of the constraint matrix &#039;&#039;tmatA-I&#039;&#039;, and &#039;&#039;&amp;amp;pi; &#039;&#039;is the set of dual variables.&lt;br /&gt;
&lt;br /&gt;
*By construction, the reduced gradients for basic variables are always zero. The problem will be declared optimal if the reduced gradients for nonbasic variables at their lower or upper bounds satisfy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_j / ||{ \pi }|| \ge -t \quad \text{or} \quad &lt;br /&gt;
d_j / ||{ \pi }|| \le  t&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
respectively, and if &amp;lt;math&amp;gt;\mod{d_j} / ||{ \pi }|| \le t&amp;lt;/math&amp;gt; for superbasic variables.&lt;br /&gt;
&lt;br /&gt;
*In the above tests,   &#039;&#039;p   &#039;&#039;is a measure of the size of the dual variables.  It is included to make the tests independent of a scale factor on the objective function.&lt;br /&gt;
&lt;br /&gt;
*The quantity &#039;&#039;p &#039;&#039;actually used is defined by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
||{\pi}|| =  \max\{\sigma / \sqrt{m}, 1\}, \text{where}&lt;br /&gt;
\sigma     =  \sum_{i=1}^m \mod{\pi_i},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so that only &#039;&#039;large &#039;&#039;scale factors are allowed for.&lt;br /&gt;
&lt;br /&gt;
*If the objective is scaled down to be very &#039;&#039;small&#039;&#039;, the optimality test reduces to comparing &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; against 0.01t.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Partial Price&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 10 (LP) or 1 (QP)&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This parameter is recommended for large problems that have significantly more variables than constraints. It reduces the work required for each &amp;quot;pricing&amp;quot; operation (when a nonbasic variable is selected to become superbasic).&lt;br /&gt;
&lt;br /&gt;
* When &#039;&#039;i &#039;&#039;= 1, all columns of the constraint matrix ( &#039;&#039;A   - I &#039;&#039;) are searched.&lt;br /&gt;
&lt;br /&gt;
* Otherwise, &#039;&#039;A &#039;&#039;and &#039;&#039;I &#039;&#039;are partitioned to give &#039;&#039;i &#039;&#039;roughly equal segments &#039;&#039;A&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;, &#039;&#039;I&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;(&#039;&#039;j  &#039;&#039;= 1 to &#039;&#039;i&#039;&#039;). If the previous pricing search was successful on &#039;&#039;A&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;, &#039;&#039;I&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;, the next search begins on the segments &#039;&#039;A&amp;lt;sub&amp;gt;j&#039;&#039;+1&amp;lt;/sub&amp;gt; , &#039;&#039;I&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039;+1 . (All  subscripts here are modulo &#039;&#039;i&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
*If a reduced gradient is found that is larger than some dynamic tolerance, the variable with  the largest such reduced gradient (of appropriate sign) is selected to become superbasic.  If nothing is found, the search continues on the next segments &#039;&#039;Aj&#039;&#039;+2 , &#039;&#039;Ij&#039;&#039;+2 , and so on.&lt;br /&gt;
&lt;br /&gt;
*Partial price &#039;&#039;t &#039;&#039;(or &#039;&#039;t/&#039;&#039;2 or &#039;&#039;t/&#039;&#039;3) may be appropriate for time-stage models having &#039;&#039;t &#039;&#039;time periods.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Pivot Tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = &amp;lt;math&amp;gt;\epsilon^{2/3}&amp;lt;/math&amp;gt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Broadly speaking, the pivot tolerance is used to prevent columns entering the basis if they would cause the basis to become almost singular.&lt;br /&gt;
&lt;br /&gt;
*When &#039;&#039;x &#039;&#039;changes to &#039;&#039;x &#039;&#039;+ &#039;&#039;&amp;amp;alpha;p &#039;&#039;for some search direction &#039;&#039;p&#039;&#039;, a &amp;quot;ratio  test&amp;quot; is used to determine which component of &#039;&#039;x &#039;&#039;reaches an upper or lower bound first. The corresponding element of &#039;&#039;p &#039;&#039;is called the pivot element.&lt;br /&gt;
&lt;br /&gt;
*For linear problems, elements of &#039;&#039;p &#039;&#039;are ignored (and therefore cannot be pivot elements) if they are smaller than the pivot tolerance &#039;&#039;r&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*It is common for two or more variables to reach a bound at essentially the same time.  In such cases, the Feasibility tolerance (say &#039;&#039;t&#039;&#039;) provides some freedom to maximize the pivot element and thereby improve numerical stability. Excessively small values of &#039;&#039;t &#039;&#039;should therefore not be specified.&lt;br /&gt;
&lt;br /&gt;
*To a lesser extent, the Expand frequency  (say &#039;&#039;f &#039;&#039;) also provides some freedom to maximize the pivot element. Excessively &#039;&#039;large &#039;&#039;values of &#039;&#039;f &#039;&#039;should therefore not be specified.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Print frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
One line of the iteration log will be printed every &#039;&#039;k&#039;&#039;th iteration.  A value such as &#039;&#039;k &#039;&#039;= 10 is suggested for those interested only in the final solution.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Print level&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This controls the amount of printing produced by SQOPT as follows.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||No output except error messages. If you want to suppress all output, set Printfile = 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&amp;gt;= &#039;&#039;1||The set of selected options (including workspace limits), problem statistics, summary of the scaling procedure, information about the initial  basis resulting from a CRASH or a BASIS file.  A single line of output each iteration (controlled by Print frequency), and the exit condition with a summary of the final solution.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&amp;gt;= &#039;&#039;10||Basis factorization statistics.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Save frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 100&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If a NEW BASIS file has been specified, a basis map describing the current solution will be saved on the appropriate file every &#039;&#039;k&#039;&#039;th iteration.  A BACKUP BASIS file will also be saved if specified.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Scale option&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 2 (LP) or 1 (QP)&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Scale tolerance&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;r&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 0.9&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Scale Print&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Three scale options are available as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i||Meaning&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0||No scaling.  This is recommended if it is known that  &#039;&#039;x &#039;&#039;and the constraint  matrix  never have very large elements (say, larger than 1000).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1||The constraints and variables are scaled by an iterative procedure that attempts to make the matrix coef- ficients as close as possible to 1.0. This will sometimes improve the performance of the solution procedures.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|2||The constraints and variables are scaled by the iterative  procedure. Also, a certain additional scaling is performed that may be helpful if the right-hand side &#039;&#039;b &#039;&#039;or the solution &#039;&#039;x &#039;&#039;is large. This takes into account columns of ( &#039;&#039;A   - I &#039;&#039;) that are fixed or have positive lower bounds or negative upper bounds.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Scale  tolerance affects how many passes might be needed through the constraint matrix.   On each pass, the scaling procedure computes the ratio of the largest and smallest nonzero coefficients in each column:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
rho_j = \max_{i} |a_{ij}| / \min_i |a_{ij}| \qquad (a_{ij}\ne 0).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If max&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; p&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; is less than &#039;&#039;r &#039;&#039;times its previous value, another scaling pass is performed to adjust the row and column scales. Raising &#039;&#039;r &#039;&#039;from 0.9 to 0.99 (say) usually increases the number of scaling passes through &#039;&#039;A&#039;&#039;. At most 10 passes are made. &lt;br /&gt;
&lt;br /&gt;
Scale Print causes the row-scales &#039;&#039;r&#039;&#039;(&#039;&#039;i&#039;&#039;) and column-scales &#039;&#039;c&#039;&#039;(&#039;&#039;j&#039;&#039;) to be printed.  The scaled matrix coefficients are &amp;lt;math&amp;gt;\bar{ij} = a_{ij} c(j) / r(i)&amp;lt;/math&amp;gt;,  and the scaled bounds on the variables and slacks are &amp;lt;math&amp;gt;\bar{j} = l_j / c(j),\ \bar{j} = u_j / c(j)&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;c(j) \equiv r(j-n)&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;j&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Solution	&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Yes&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Solution&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;No&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Solution&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;If Optimal, Infeasible,  or  Unbounded&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Summary file&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;f&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 6&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Summary frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 100/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;f &amp;gt; &#039;&#039;0, a brief log will be output to file &#039;&#039;f &#039;&#039;, including one line of information every &#039;&#039;k&#039;&#039;th iteration.  In an interactive environment, it is useful to direct this output to the terminal, to allow a run to be monitored on-line. (If something looks wrong, the run can be manually terminated.) Further details are given in [[#The Summary File]].&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Superbasics limit&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;i&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = min&#039;&#039;{&#039;&#039;500&#039;&#039;, n&#039;&#039;1 + 1&#039;&#039;}&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;Summary frequency&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 100&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This places a limit  on the storage allocated for superbasic variables. Ideally, &#039;&#039;i &#039;&#039;should be set slightly larger than the &amp;quot;number of degrees of freedom&amp;quot; expected at an optimal solution.&lt;br /&gt;
&lt;br /&gt;
For linear programs, an optimum is normally a basic solution with no degrees of freedom. (The number of variables lying strictly  between their bounds is no more than &#039;&#039;m&#039;&#039;, the number of general constraints.) The default value of &#039;&#039;i &#039;&#039;is therefore 1.&lt;br /&gt;
&lt;br /&gt;
For quadratic problems, the number of degrees of freedom is often called the &amp;quot;number of independent variables&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*Normally, &#039;&#039;i &#039;&#039;need not be greater than ncolH + 1, where ncolH is the number of leading nonzero columns of &#039;&#039;H &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*For many problems, &#039;&#039;i &#039;&#039;may be considerably smaller than ncolH. This will save storage if ncolH is very large.&lt;br /&gt;
&lt;br /&gt;
*This parameter also sets the Reduced Hessian dimension, unless the latter is specified explicitly (and conversely).&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;Unbounded Step Size&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;&#039;&#039;a&#039;&#039;&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;Default = 1.0E + 18&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This parameter is intended to detect unboundedness in a quadratic problem.  (It may or may not achieve that purpose!) During a line search, &#039;&#039;q &#039;&#039;is evaluated at points of the form &#039;&#039;x &#039;&#039;+ &#039;&#039;&amp;amp;alpha;p&#039;&#039;, where &#039;&#039;x &#039;&#039;and &#039;&#039;p &#039;&#039;are fixed and &#039;&#039;&amp;amp;alpha; &#039;&#039;varies. if &#039;&#039;a &#039;&#039;exceeds &#039;&#039;&amp;amp;alpha;&#039;&#039;&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;, iterations are terminated with the exit message problem  is unbounded.&lt;br /&gt;
&lt;br /&gt;
Note that unboundedness in &#039;&#039;x &#039;&#039;is best avoided by placing finite upper and lower bounds on the variables.&lt;br /&gt;
&lt;br /&gt;
==File Output==&lt;br /&gt;
&lt;br /&gt;
The following information is output to the PRINT  file during the solution of each problem referred to in the SPECS file.&lt;br /&gt;
&lt;br /&gt;
*A listing of the relevant part of the SPECS file.&lt;br /&gt;
&lt;br /&gt;
*A listing of the parameters that were or could have been set in the SPECS file.&lt;br /&gt;
&lt;br /&gt;
*An estimate of the amount of working storage needed, compared to how much is available.&lt;br /&gt;
&lt;br /&gt;
*Some statistics about the problem.&lt;br /&gt;
&lt;br /&gt;
*The amount of storage available for the &#039;&#039;LU &#039;&#039;factorization of the basis matrix.&lt;br /&gt;
&lt;br /&gt;
*A summary of the scaling procedure, if Scale was specified.&lt;br /&gt;
&lt;br /&gt;
*Notes about the initial  basis resulting from a CRASH procedure or a BASIS file.&lt;br /&gt;
&lt;br /&gt;
*The iteration log.&lt;br /&gt;
&lt;br /&gt;
*Basis factorization statistics.&lt;br /&gt;
&lt;br /&gt;
*The EXIT condition and some statistics about the solution obtained.&lt;br /&gt;
&lt;br /&gt;
*The printed solution, if requested.&lt;br /&gt;
&lt;br /&gt;
The last four items are described in the following sections. Further brief output may be directed to the SUMMARY file, as discussed in [[#The Summary File]].&lt;br /&gt;
&lt;br /&gt;
===The iteration Log===&lt;br /&gt;
&lt;br /&gt;
If Printlevel &#039;&#039;&amp;gt; &#039;&#039;0, one line of information is output to the PRINT  file every &#039;&#039;k&#039;&#039;th iteration, where &#039;&#039;k &#039;&#039;is the specified Print frequency  (default &#039;&#039;k &#039;&#039;= 1). A heading is printed before the first such line following a basis factorization. The heading contains the  items described below. In this description, a PRICE operation is defined to be the process by which one or more nonbasic variables are selected to become superbasic (in addition to those already in the superbasic set). The variable selected will be denoted by jq. If the problem is purely linear, variable jq will usually become basic immediately (unless it should happen to reach its opposite bound and return to the nonbasic set).&lt;br /&gt;
&lt;br /&gt;
If Partial price is in effect, variable jq is selected from &#039;&#039;A&#039;&#039;&amp;lt;sub&amp;gt;pp&amp;lt;/sub&amp;gt;  or &#039;&#039;I&#039;&#039;&amp;lt;sub&amp;gt;pp&amp;lt;/sub&amp;gt; , the ppth segments of the constraint matrix (&#039;&#039;A   - I &#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Itn||The current iteration number.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|pp||The Partial  Price indicator. The variable selected by the last PRICE  operation came from the ppth partition  of &#039;&#039;A &#039;&#039;and &#039;&#039;-I &#039;&#039;. pp is set to zero when the basis is refactored.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|dj||This is dj, the reduced cost (or reduced gradient) of the variable jq selected by PRICE at the start of the present iteration.  Algebraically, dj is &amp;lt;math&amp;gt;d_j=g_j - \pi^T a_ j&amp;lt;/math&amp;gt;, where &#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; is the gradient of the current objective function, &#039;&#039;&amp;amp;pi; &#039;&#039;is the vector of dual variables, and &#039;&#039;a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is the &#039;&#039;j&#039;&#039;th column of the constraint matrix (&#039;&#039;A   - I &#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Note that d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; is the norm of the reduced-gradient vector at the start of the iteration, just after the PRICE operation.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;SBS ||The variable jq selected by PRICE to be added to the superbasic set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;SBS||The variable chosen to leave the set of superbasics. It has become basic if the entry under -B is nonzero; otherwise it has become nonbasic.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;BS||The variable removed from the basis (if any) to become nonbasic.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;B||The variable removed from the basis (if any) to swap with a slack variable made superbasic by the latest PRICE. The swap is done to ensure that there are no superbasic slacks.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Step||The step length &#039;&#039;a &#039;&#039;taken along the current search direction &#039;&#039;p&#039;&#039;. The variables &#039;&#039;x &#039;&#039;have just been changed to &#039;&#039;x &#039;&#039;+ &#039;&#039;&amp;amp;alpha;p&#039;&#039;. If a variable is made superbasic during the current iteration (i.e., +SBS is positive), Step will be the step to the nearest bound. During phase 2, the step can be greater than one only if the reduced Hessian is not positive definite.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Pivot||If column &#039;&#039;a&amp;lt;sub&amp;gt;q&amp;lt;/sub&amp;gt;  &#039;&#039;replaces the &#039;&#039;r&#039;&#039;th column of the basis &#039;&#039;B&#039;&#039;, Pivot is the &#039;&#039;r&#039;&#039;th element of a vector &#039;&#039;y &#039;&#039;satisfying &#039;&#039;By &#039;&#039;= &#039;&#039;aq &#039;&#039;. Wherever possible, Step is chosen to avoid extremely small values of Pivot (since they cause the basis to be nearly singular). In rare cases, it may be necessary to increase the Pivot  tolerance to exclude very small elements of &#039;&#039;y &#039;&#039;from consideration during the computation of Step.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|L||The number of nonzeros representing the basis factor &#039;&#039;L&#039;&#039;. Immediately after a basis factorization &#039;&#039;B &#039;&#039;= &#039;&#039;LU &#039;&#039;, this is lenL, the number of subdiagonal elements in the columns of a lower triangular matrix.  Further nonzeros are added to L when various columns of &#039;&#039;B &#039;&#039;are later replaced. (Thus, L increases monotonically.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|U||The number of nonzeros in the basis factor &#039;&#039;U &#039;&#039;. Immediately after a basis factorization, this is lenU, the number of diagonal and superdiagonal elements in the rows of an upper-triangular matrix.  As columns of &#039;&#039;B &#039;&#039;are replaced, the matrix &#039;&#039;U &#039;&#039;is maintained explicitly (in sparse form). The value of U may fluctuate up or down; in general it will tend to increase.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|ncp||The number of compressions required to recover storage in the data structure for &#039;&#039;U &#039;&#039;. This includes the number of compressions needed during the previous basis factorization.  Normally ncp should increase very slowly. If not, the amount of integer and real workspace available to SQOPT should be increased by a significant amount. As a suggestion, the work arrays iw(*) and rw(*) should be extended  by L + U elements.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|nInf||The number  of infeasibilities &#039;&#039;before  &#039;&#039;the present  iteration.   This number will  not increase unless the iterations are in elastic mode.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Sinf,Objective||If nInf &#039;&#039;&amp;gt; &#039;&#039;0, this is sInf, the sum of infeasibilities before the present iteration.  (It will usually decrease at each nonzero Step, but if  nInf decreases by 2 or more, sInf may occasionally increase. However, in elastic mode, it will decrease monotonically.)&lt;br /&gt;
&lt;br /&gt;
Otherwise, it is the value of the current objective function &#039;&#039;after &#039;&#039;the present iteration. Note: If Elasticmode = 2, the heading is Composite Obj.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|The following items are printed if the problem is a QP or if the superbasic set is non-empty (i.e., if the current solution is nonbasic).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Norm rg||This quantity  is rg,  the  norm of the reduced-gradient  vector  at the start of the iteration.   (It is the Euclidean norm of the vector with elements &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;for variables &#039;&#039;j &#039;&#039;in the superbasic set. During phase 2 this norm will be approximately zero after a unit step.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|nS||The current number of superbasic variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Cond Hz||An estimate of the condition number of the reduced Hessian. It is the square of the ratio of the largest and smallest diagonals of the upper triangular matrix &#039;&#039;R&#039;&#039;. This constitutes a lower bound on the condition number of the reduced Hessian &#039;&#039;R&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;R&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To guard against high values of cond Hz, attention should be given to the scaling of the variables and the constraints.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Basis Factorization Statistics===&lt;br /&gt;
&lt;br /&gt;
When PrintLevel &#039;&#039;= &#039;&#039;20 and Printfile &#039;&#039;&amp;gt; &#039;&#039;0, the following lines of intermediate printout (&#039;&#039;&amp;lt; &#039;&#039;120 characters) are produced on the unit number specified by Print file whenever the matrix  &#039;&#039;B &#039;&#039;or &#039;&#039;B&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &#039;&#039;= (&#039;&#039;B   S &#039;&#039;)&#039;&#039;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;   &#039;&#039;is factorized. Gaussian elimination is used to compute an &#039;&#039;LU &#039;&#039;factorization of &#039;&#039;B &#039;&#039;or &#039;&#039;BS &#039;&#039;, where &#039;&#039;PLP&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;  &#039;&#039;is a lower triangular matrix and &#039;&#039;PUQ&#039;&#039;is an upper triangular matrix for some permutation matrices &#039;&#039;P &#039;&#039;and &#039;&#039;Q&#039;&#039;. This factorization is stabilized in the manner described under LU factor tolerance in [[#Description of the optional parameters]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Factorize||The number of factorizations since the start of the run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Demand||A code giving the reason for the present factorization.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Code||Meaning&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0||First &#039;&#039;LU &#039;&#039;factorization.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1||Number of updates reached the value of the optional parameter Factorization Frequency.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|2||Excessive non-zeros in updated factors.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|7||Not enough storage to update factors.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|10||Row residuals too large (see the description for Check Frequency).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|11||Ill-conditioning has caused inconsistent results.&lt;br /&gt;
|}&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Iteration||The current iteration number.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Infeas||The number of infeasibilities at the &#039;&#039;start &#039;&#039;of the previous iteration.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Objective|| If Infeas &#039;&#039;&amp;gt; &#039;&#039;0, this is the sum of infeasibilities at the start of the previous iteration.&lt;br /&gt;
&lt;br /&gt;
If Infeas = 0, this is the value of the objective function &#039;&#039;after &#039;&#039;the previous iteration. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Nonlinear||The number of nonlinear variables in the current basis &#039;&#039;B&#039;&#039;. (not printed if &#039;&#039;BS  &#039;&#039;is factorized). Linear 	The number of linear variables in &#039;&#039;B&#039;&#039;. (not printed if &#039;&#039;BS  &#039;&#039;is factorized).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Slacks||The number of slack variables in &#039;&#039;B&#039;&#039;. (not printed if &#039;&#039;BS  &#039;&#039;is factorized).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Elems||The number of nonzero matrix elements in &#039;&#039;B&#039;&#039;. (not printed if &#039;&#039;BS  &#039;&#039;is factorized).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Density||The percentage nonzero density of &#039;&#039;B&#039;&#039;, 100 &#039;&#039;× &#039;&#039;Elems&#039;&#039;/&#039;&#039;(m &#039;&#039;× &#039;&#039;m), where m is the number of rows in the problem (m = Linear  + Slacks).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Comprssns||The number of times the data structure holding the partially factored matrix needed to be compressed, to recover unused storage. Ideally this number should be zero. If it is more than 3 or 4, the amount of workspace available to SQOPT should be increased for efficiency.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Merit||The average Markowitz merit count for the elements chosen to be the diagonals of &#039;&#039;P U Q&#039;&#039;.  Each merit count is defined to be (&#039;&#039;c - &#039;&#039;1)(&#039;&#039;r - &#039;&#039;1) where &#039;&#039;c &#039;&#039;and &#039;&#039;r &#039;&#039;are the number of nonzeros in the column and row containing the element  at the time it is selected to be the next diagonal.  Merit is the average of m such quantities.  It gives an indication of how much work was required to preserve sparsity during the factorization.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|lenL||The number of nonzeros in &#039;&#039;L&#039;&#039;.  On most machines, each nonzero is represented by one eight-byte REAL and two two-byte integer data types.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|lenU||The number of nonzeros in &#039;&#039;U &#039;&#039;. The storage required for each nonzero is the same as for the nonzeros of &#039;&#039;L&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|Increase||The percentage increase in the number of nonzeros in &#039;&#039;L &#039;&#039;and &#039;&#039;U &#039;&#039;relative to the number of nonzeros in &#039;&#039;B&#039;&#039;; i.e., 100 &#039;&#039;× &#039;&#039;(lenL + lenU &#039;&#039;- &#039;&#039;Elems)&#039;&#039;/&#039;&#039;Elems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|m||is the number of rows in the problem. Note that m = Ut + Lt + bp.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Ut||is the number of triangular rows of &#039;&#039;B &#039;&#039;at the top of &#039;&#039;U &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|d1||is the number of columns remaining when the density of the basis matrix being factorized reached 0.3.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Lmax||The maximum subdiagonal element  in the columns of &#039;&#039;L&#039;&#039;.  This will  be no larger than the LU factor tolerance.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Bmax||The maximum nonzero element in &#039;&#039;B&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Umax||The maximum nonzero element in &#039;&#039;U &#039;&#039;, excluding elements of &#039;&#039;B &#039;&#039;that remain in &#039;&#039;U &#039;&#039;unaltered. (For example, if a slack variable is in the basis, the corresponding row of &#039;&#039;B &#039;&#039;will become a row of &#039;&#039;U &#039;&#039;without alteration. Elements in such rows will not contribute to Umax. If the basis is strictly triangular, &#039;&#039;none &#039;&#039;of the elements of &#039;&#039;B &#039;&#039;will contribute, and Umax will be zero.)&lt;br /&gt;
&lt;br /&gt;
Ideally, Umax should not be substantially larger than Bmax.  If it is several orders of magnitude larger, it may be advisable to reduce the LU  factor  tolerance to some value nearer 1.0. (The default value is 10.0.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Umax||is not printed if &#039;&#039;BS  &#039;&#039;is factorized.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Umin||The smallest &#039;&#039;diagonal &#039;&#039;element of &#039;&#039;P U Q &#039;&#039;in absolute magnitude.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Growth||The ratio Umax&#039;&#039;/&#039;&#039;Bmax, which should not be too large (see above).&lt;br /&gt;
&lt;br /&gt;
As long as Lmax is not large (say 10.0 or less), the ratio max&#039;&#039;{&#039;&#039;Bmax&#039;&#039;, &#039;&#039;Umax&#039;&#039;} &#039;&#039;/ Umin gives an estimate of the condition number of &#039;&#039;B&#039;&#039;.  If this number is extremely large, the basis is nearly singular and some numerical difficulties could conceivably occur. (However, an effort is made to avoid near-singularity by using slacks to replace columns of &#039;&#039;B &#039;&#039;that would have made Umin extremely small. Messages are issued to this effect, and the modified basis is refactored.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Lt||is the number of triangular columns of &#039;&#039;B &#039;&#039;at the beginning of &#039;&#039;L&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|bp||is the size of the &amp;quot;bump&amp;quot;  or block to be factorized nontrivially  after the triangular rows and columns have been removed.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|d2||is the number of columns remaining when the density of the basis matrix being factorized reached 0.6.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Crash statistics===&lt;br /&gt;
&lt;br /&gt;
When PrintLevel &#039;&#039;= &#039;&#039;20 and Printfile &#039;&#039;&amp;gt; &#039;&#039;0, the following CRASH statistics (&#039;&#039;&amp;lt; &#039;&#039;120 characters) are produced on the unit number specified by Print file whenever Start = &#039;Cold&#039;, see [[#Description of the optional parameters]].  They refer to the number of columns selected by the CRASH procedure during each of several passes through &#039;&#039;A&#039;&#039;, whilst searching for a triangular basis matrix.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label||Description&lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Slacks||is the number of slacks selected initially.&lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Free cols||is the number of free columns in the basis.&lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Preferred||is the number of &amp;quot;preferred&amp;quot; columns in the basis (i.e., hs(&#039;&#039;j&#039;&#039;) = 3 for some &#039;&#039;j = n&#039;&#039;).&lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Unit||is the number of unit columns in the basis.&lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Double||is the number of double columns in the basis. &lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Triangle||is the number of triangular columns in the basis. &lt;br /&gt;
|-colspan=&amp;quot;2&amp;quot;&lt;br /&gt;
|Pad||is the number of slacks used to pad the basis.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===EXIT conditions===&lt;br /&gt;
&lt;br /&gt;
For each problem in the SPECS file, a message of the form EXIT -- message is printed to summarize the final result. Here we describe each message and suggest possible courses of action.&lt;br /&gt;
&lt;br /&gt;
A number is associated with each message below. It is the final value assigned to the integer variable inform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following messages arise when the SPECS file is found to contain no further problems.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-2.  EXIT -- input error.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, the SPECS file may be empty, or cards containing the keywords Skip or Endrun may imply that all problems should be ignored (see [[#the SPECS File]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-1.  ENDRUN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This message is printed at the end of a run if SQOPT terminates of its own accord. Otherwise, the operating system will have intervened for one of many possible reasons (excess time, missing file, arithmetic error in the user routine, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following messages arise when optimization terminates gracefully.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0. 	EXIT -- optimal solution  found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final point seems to be a unique solution of LCQP. This means that x is &#039;&#039;feasible &#039;&#039;(it satisfies the constraints to the accuracy requested by the Feasibility tolerance), the reduced gradient is negligible, the reduced costs are optimal, and &#039;&#039;R &#039;&#039;is nonsingular.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. 	EXIT -- the  problem  is infeasible&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Feasibility is measured with respect to the upper and lower bounds on the variables. The message tells us that among all the points satisfying the general constraints &#039;&#039;Ax - s &#039;&#039;= 0, there is apparently no point that satisfies the bounds on &#039;&#039;x &#039;&#039;and &#039;&#039;s&#039;&#039;. Violations as small as the Feasibility tolerance are ignored, but at least one component of &#039;&#039;x &#039;&#039;or &#039;&#039;s &#039;&#039;violates a bound by more than the tolerance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; Although the objective function is the sum of infeasibilities (when nInf &#039;&#039;&amp;gt; &#039;&#039;0), this sum will  usually not have been &#039;&#039;minimized &#039;&#039;when SQOPT recognizes the situation and exits. There may exist other points that have a significantly lower sum of infeasibilities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2. 	EXIT -- the  problem  is unbounded	(or badly  scaled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For linear problems, unboundedness is detected by the simplex method when a nonbasic variable can apparently be increased or decreased by an arbitrary amount without causing a basic variable to violate a bound. A message prior to the EXIT  message will give the index of the nonbasic variable. Consider adding an upper or lower bound to the variable. Also, examine the constraints that have nonzeros in the associated column, to see if they have been formulated as intended.&lt;br /&gt;
&lt;br /&gt;
Very rarely, the scaling of the problem could be so poor that numerical error will give an erroneous indication of unboundedness. Consider using the Scale option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3. 	EXIT -- iteration limit exceeded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Iterations limit was exceeded before the required solution could be found. Check the iteration log to be sure that progress was being made. If so, restart the run using a basis file that was saved (or &#039;&#039;should &#039;&#039;have been saved!) at the end of the run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. 	EXIT -- QP Hessian appears to be indefinite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The problem appears to be nonconvex and cannot be solved using this version of SQOPT. The matrix &#039;&#039;H &#039;&#039;cannot be positive semidefinite, i.e., there must exist a vector &#039;&#039;y &#039;&#039;such that &#039;&#039;yT H y &amp;lt; &#039;&#039;0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5. 	EXIT -- the  superbasics limit is too  small:	nnn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The problem appears to be more nonlinear than anticipated.  The current set of basic and superbasic variables have been optimized as much as possible and a PRICE  operation is necessary to continue, but there are already nnn superbasics (and no room for any more).&lt;br /&gt;
&lt;br /&gt;
In general, raise the Superbasics  limit &#039;&#039;s &#039;&#039;by a reasonable amount, bearing in mind the storage needed for the reduced Hessian. (The Hessian  dimension &#039;&#039;h &#039;&#039;will also increase to &#039;&#039;s &#039;&#039;unless specified otherwise, and the associated storage will be about 1 &#039;&#039;s&#039;&#039;2  words.) In extreme cases you may have to set &#039;&#039;h &amp;lt; s &#039;&#039;to conserve storage, but beware that the rate of convergence will probably fall off severely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6. 	EXIT -- weak solution  found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The final point is a &#039;&#039;weak minimizer&#039;&#039;.  (The objective value is a global optimum, but it may be achieved by an infinite set of points &#039;&#039;x&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
This exit will  occur when (i)  the problem is feasible, (ii)  the reduced gradient  is negligible, (iii)  the Lagrange multipliers are optimal, and (iv)  the reduced Hessian is singular or there are some very small multipliers.  This exit cannot occur if &#039;&#039;H &#039;&#039;is positive definite (i.e., &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) is strictly convex).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10.    EXIT -- cannot  satisfy the  general  constraints&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;LU  &#039;&#039;factorization of the basis has just been obtained and used to recompute the basic variables &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;, given the present values of the superbasic and nonbasic variables. A single step of &amp;quot;iterative refinement&amp;quot; has also been applied to increase the accuracy of &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;.  However, a row check has revealed that the resulting solution does not satisfy the current constraints &#039;&#039;Ax - s &#039;&#039;= 0 sufficiently well.&lt;br /&gt;
&lt;br /&gt;
This probably means that the current basis is very ill-conditioned. Request the Scale option if there are any linear constraints and variables.&lt;br /&gt;
&lt;br /&gt;
For certain highly structured basis matrices (notably those with band structure), a systematic growth may occur in the factor &#039;&#039;U &#039;&#039;. Consult the description of Umax, Umin and Growth in [[Basis Factorization Statistics, and set the LU factor tolerance to 2.0 (or possibly even smaller, but not less than 1.0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If the following exits occur during the &#039;&#039;first  &#039;&#039;basis factorization, the basic variables &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;  &#039;&#039;will have certain default values that may not be particularly meaningful, and the dual vector &#039;&#039;&amp;amp;pi; &#039;&#039;will be zero.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20.    EXIT -- not  enough integer/real storage  for the  basis  factors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An estimate of the additional storage required is given in messages preceding  the exit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
21.    EXIT -- error in basis  package&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A preceding message will describe the error in more detail. One such message says that the current basis has more than one element in row &#039;&#039;i &#039;&#039;and column &#039;&#039;j&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22.    EXIT -- singular basis  after nnn factorization attempts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This exit is highly unlikely to occur. The first factorization attempt will have found the basis to be structurally or numerically singular. (Some diagonals of the triangular matrix  &#039;&#039;PUQ &#039;&#039;were respectively zero or smaller than a certain tolerance.) The associated variables are replaced by slacks and the modified basis is refactorized. The ensuing singularity must mean that the problem is badly scaled, or the LU factor tolerance is too high.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
32.    EXIT -- system error.    Wrong no.    of  basic  variables:   nnn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This exit should never happen. If it does, something is seriously awry in the SQOPT source code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following messages arise if additional storage is needed to allow optimization to begin. The problem is abandoned.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
42. 	EXIT -- not  enough 8-character storage  to  start  solving the  problem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
43. 	EXIT -- not  enough integer storage  to  start  solving the  problem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
44. 	EXIT -- not  enough real storage  to  start  solving the  problem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Solution Output==&lt;br /&gt;
&lt;br /&gt;
At the end of a run, the final solution will be output to the PRINT  file. Some header information appears first to identify the problem and the final state of the optimization procedure. A ROWS section and a COLUMNS section then follow, giving one line of information for each row and column. The format used is similar to that seen in commercial systems, though there is no rigid industry standard.&lt;br /&gt;
&lt;br /&gt;
===The ROWS section===&lt;br /&gt;
&lt;br /&gt;
The general constraints take the form &amp;lt;math&amp;gt;l \le Ax \le u&amp;lt;/math&amp;gt;. The &#039;&#039;i&#039;&#039;th constraint is therefore of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\alpha \le a^T x \le \beta.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Internally&#039;&#039;, the constraints take the form &#039;&#039;Ax - s &#039;&#039;= 0, where &#039;&#039;s &#039;&#039;is the set of slack variables (which happen to satisfy the bounds &amp;lt;math&amp;gt;l \le s \le u&amp;lt;/math&amp;gt;). For the &#039;&#039;i&#039;&#039;th constraint it is the slack variable &#039;&#039;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;  &#039;&#039;that is directly available, and it is sometimes convenient to refer to its state. To reduce clutter, a &amp;quot;&#039;&#039;·&#039;&#039;&amp;quot; is printed for any numerical value that is exactly zero.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Number||The value &#039;&#039;n &#039;&#039;+ &#039;&#039;i&#039;&#039;.  This is the internal number used to refer to the &#039;&#039;i&#039;&#039;th slack in the iteration log.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Row||The name of the &#039;&#039;i&#039;&#039;th row.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|State||The state of the &#039;&#039;i&#039;&#039;th row relative to the bounds &#039;&#039;&amp;amp;alpha;&#039;&#039; and &#039;&#039;&amp;amp;beta;&#039;&#039;. The various states possible are as follows.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|LL||The row is at its lower limit, &#039;&#039;&amp;amp;alpha;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|UL||The row is at its upper limit,  &#039;&#039;&amp;amp;beta;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|EQ||The lower and upper limit are the same, &#039;&#039;&amp;amp;alpha;&#039;&#039;= &#039;&#039;&amp;amp;beta;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|BS||The constraint is not binding. &#039;&#039;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;  &#039;&#039;is basic.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|SBS||The constraint is not binding. &#039;&#039;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;  &#039;&#039;is superbasic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A key is sometimes printed before the State  to give some additional information about the state of the slack variable.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|A||&#039;&#039;Alternative optimum possible&#039;&#039;. The slack is nonbasic, but its reduced gradient is essentially zero. This means that if the slack were allowed to start moving away from its bound, there would be no change in the value of the objective function. The values of the basic and superbasic variables &#039;&#039;might &#039;&#039;change, giving a genuine alternative solution. However, if there are any degenerate variables (labelled D), the actual change might prove to be zero, since one of them could encounter a bound immediately.  In either case, the values of dual variables &#039;&#039;might &#039;&#039;also change.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|D||&#039;&#039;Degenerate&#039;&#039;. The slack is basic or superbasic, but it is equal to (or very close to) one of its bounds.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|I||&#039;&#039;Infeasible&#039;&#039;. The slack is basic or superbasic and it is currently violating one of its bounds by more than the Feasibility tolerance.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|N||&#039;&#039;Not precisely optimal&#039;&#039;.   The slack is nonbasic or superbasic. If  the Optimality tolerance were tightened by a factor of 10 (e.g., if it were reduced from 10&#039;&#039;-&#039;&#039;5  to 10&#039;&#039;-&#039;&#039;6 ), the solution would not be declared optimal because the reduced gradient for the slack would not be considered negligible. (If a loose tolerance  has been used, or if the run was terminated before optimality,  this key might be helpful in deciding whether or not to restart the run.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: &#039;&#039;If Scale is specified, the tests for assigning the A, D, I, N keys are made on the scaled problem, since the keys are then more likely to be correct.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Activity||The row value; i.e., the value of &#039;&#039;aTx&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Slack activity||The amount by which the row differs from its nearest bound. (For free rows, it is taken to be minus the Activity.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Lower limit &#039;&#039;&amp;amp;alpha;&#039;&#039;||the lower bound on the row.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Upper limit &#039;&#039;&amp;amp;beta;&#039;&#039;||the upper bound on the row.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Dual activity||The value of the dual variable &#039;&#039;pi &#039;&#039;, often called the shadow price (or simplex multiplier)  for the &#039;&#039;i&#039;&#039;th constraint. The full vector &#039;&#039;p &#039;&#039;always satisfies &#039;&#039;BTp &#039;&#039;= &#039;&#039;gB &#039;&#039;, where &#039;&#039;B &#039;&#039;is the current basis matrix and &#039;&#039;gB &#039;&#039;contains the associated gradients for the current objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|I||The constraint number, &#039;&#039;i&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The COLUMNS section===&lt;br /&gt;
&lt;br /&gt;
Here we talk about the &amp;quot;column variables&amp;quot; &#039;&#039;x&#039;&#039;.  For convenience we let the &#039;&#039;j&#039;&#039;th component of &#039;&#039;x &#039;&#039;be the variable &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&#039;&#039; and assume that it satisfies the bounds &#039;&#039;a = x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  = &amp;amp;beta;&#039;&#039;. A &amp;quot;&#039;&#039;·&#039;&#039;&amp;quot; is printed for any numerical value that is exactly zero.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Number||The column number, &#039;&#039;j&#039;&#039;.  This is the internal number used to refer to &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;in the iteration log.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Column||The name of &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|State||The state of &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;relative to the bounds &#039;&#039;&amp;amp;alpha; &#039;&#039;and &#039;&#039;&amp;amp;beta;&#039;&#039;. The various states possible are as follows.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
LL   &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is nonbasic at its lower limit,  &#039;&#039;&amp;amp;alpha;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
UL    &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is nonbasic at its upper limit,  &#039;&#039;&amp;amp;beta;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
EQ     &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is nonbasic and fixed at the value &#039;&#039;&amp;amp;alpha; &#039;&#039;= &#039;&#039;&amp;amp;beta;&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
FR    &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;   &#039;&#039;is nonbasic and currently zero, even though it is free to take  any value.  (Its  bounds are &#039;&#039;&amp;amp;alpha; &#039;&#039;= &#039;&#039;-8,  &amp;amp;beta; &#039;&#039;= +&#039;&#039;8&#039;&#039;. Such variables are normally basic.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
BS    &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is basic.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
SBS  &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is superbasic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A key is sometimes printed before the State to give some additional information about the state of &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;. The possible keys are A, D, I and N.  They have the same meaning as described above (for the ROWS section of the solution), but the words &amp;quot;the slack&amp;quot; should be replaced by &amp;quot;&#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;&amp;quot;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Activity||The value of the variable &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Obj Gradient||&#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;, the &#039;&#039;j&#039;&#039;th component of the linear and quadratic objective function &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) + &#039;&#039;c&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;x&#039;&#039;. (We define &#039;&#039;g&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;= 0 if the current solution is infeasible.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Lower limit||&#039;&#039;&amp;amp;alpha;&#039;&#039;, the lower bound on &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Upper limit &#039;&#039;&amp;amp;beta;&#039;&#039;||the upper bound on &#039;&#039;x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Reduced gradnt||The reduced gradient &amp;lt;math&amp;gt;d_j = g_j - \pi^T a_j&amp;lt;/math&amp;gt;, where &#039;&#039;a&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;is the &#039;&#039;j&#039;&#039;th column of the constraint matrix (or the &#039;&#039;j&#039;&#039;th column of the Jacobian at the start of the final major iteration).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|M+J||The value &#039;&#039;m &#039;&#039;+ &#039;&#039;j&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
An example of the printed solution is given in [[#File Output]].  Infinite  Upper and Lower limits are output as the word None. Other real values are output with format f16.5. The maximum record length is 111 characters, including the first (carriage-control) character.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;: If two problems are the same except that one minimizes &#039;&#039;q&#039;&#039;(&#039;&#039;x&#039;&#039;) and the other maximizes &#039;&#039;-q&#039;&#039;(&#039;&#039;x&#039;&#039;), their solutions will be the same but the signs of the dual variables &#039;&#039;&amp;amp;pi;&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&#039;&#039; and the reduced gradients &#039;&#039;d&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;will be reversed.&lt;br /&gt;
&lt;br /&gt;
===The SUMMARY file===&lt;br /&gt;
&lt;br /&gt;
If Summary  file &#039;&#039;f &#039;&#039;is specified certain brief information will be output to file &#039;&#039;f &#039;&#039;. For batch jobs a disk file should be used, to retain a concise log of each run if desired. (A SUMMARY file is more easily perused than the associated PRINT file).&lt;br /&gt;
&lt;br /&gt;
A SUMMARY file (like the PRINT  file) is not rewound after a problem has been processed. It can therefore accumulate a log for every problem in the SPECS file, if each specifies the same file. The maximum record length is 72 characters, including a carriage-control character in column 1.&lt;br /&gt;
&lt;br /&gt;
The following information is included:&lt;br /&gt;
&lt;br /&gt;
#The Begin card from the SPECS file.&lt;br /&gt;
#The status of the solution after each basis factorization (whether feasible; the objective value; the number of function calls so far).&lt;br /&gt;
#The same information every &#039;&#039;k&#039;&#039;th iteration, where &#039;&#039;k &#039;&#039;is the specified  Summary frequency  (default &#039;&#039;k &#039;&#039;= 100).&lt;br /&gt;
#Warnings and error messages.&lt;br /&gt;
#The exit condition and a summary of the final solution.&lt;br /&gt;
&lt;br /&gt;
Item 4 is preceded by a blank line, but item 5 is not.&lt;br /&gt;
&lt;br /&gt;
All items are illustrated below, where we give the SUMMARY file for the first problem in the example program (Summary frequency = 1).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==============================&lt;br /&gt;
 S Q O P T  5.3       (Oct  97)&lt;br /&gt;
 ==============================&lt;br /&gt;
&lt;br /&gt;
 Begin sqmain (Example program for sqopt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Scale option  2,    Partial price   1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------&lt;br /&gt;
 Itn      0: Phase 1A -- making the linear equality rows feasible&lt;br /&gt;
&lt;br /&gt;
   Itn       dj    Step nInf    SumInf       Objective&lt;br /&gt;
     0  0.0E+00 0.0E+00    1 8.868E+01  0.00000000E+00&lt;br /&gt;
     1  0.0E+00 3.3E+01    0 0.000E+00  0.00000000E+00&lt;br /&gt;
 Itn      1: Feasible linear equality rows&lt;br /&gt;
 Itn      1: Phase 1B -- making all linear rows feasible&lt;br /&gt;
&lt;br /&gt;
   Itn       dj    Step nInf    SumInf       Objective Norm rg   nS&lt;br /&gt;
     1  0.0E+00 0.0E+00    2 5.317E+01  0.00000000E+00 3.4E+00    3&lt;br /&gt;
     2  0.0E+00 0.0E+00    2 5.317E+01  0.00000000E+00 4.6E-01    2&lt;br /&gt;
     3  0.0E+00 4.7E+02    1 2.896E+01  0.00000000E+00 4.8E-02    1&lt;br /&gt;
     4  0.0E+00 9.2E+02    1 2.681E+01  0.00000000E+00 0.0E+00    0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 This is problem  sqmain.   ncolH =   5&lt;br /&gt;
&lt;br /&gt;
     5  6.4E-02 6.5E+03    0 0.000E+00 -1.46750000E+06 0.0E+00    0&lt;br /&gt;
 Itn      5: Feasible linear rows&lt;br /&gt;
     6 -4.1E+03 2.1E-01    0 0.000E+00 -1.78368567E+06 0.0E+00    0&lt;br /&gt;
     7  1.4E+03 1.0E+00    0 0.000E+00 -1.98453602E+06 1.4E-12    1&lt;br /&gt;
     8 -6.3E+02 9.8E-01    0 0.000E+00 -2.04366386E+06 1.3E+01    1&lt;br /&gt;
     9  0.0E+00 1.0E+00    0 0.000E+00 -2.04366504E+06 1.1E-12    1&lt;br /&gt;
 EXIT -- optimal solution found&lt;br /&gt;
&lt;br /&gt;
 Problem name                 sqdat1..&lt;br /&gt;
 No. of iterations                   9   Objective value     -2.0436650381E+06&lt;br /&gt;
 No. of Hessian products             8   Linear objective     0.0000000000E+00&lt;br /&gt;
                                         Quadratic objective -2.0436650381E+06&lt;br /&gt;
 No. of superbasics                  1   No. of basic nonlinears             2&lt;br /&gt;
 No. of degenerate steps             1   Percentage                      11.11&lt;br /&gt;
 Norm of xs  (scaled)          3.5E+03   Norm of pi  (scaled)          8.9E+03&lt;br /&gt;
 Norm of xs                    1.6E+03   Norm of pi                    1.1E+04&lt;br /&gt;
 Max Prim inf(scaled)        0 0.0E+00   Max Dual inf(scaled)        6 2.0E-12&lt;br /&gt;
 Max Primal infeas           0 0.0E+00   Max Dual infeas             3 9.6E-13&lt;br /&gt;
&lt;br /&gt;
 Solution printed on file   9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Algorithmic Details==&lt;br /&gt;
&lt;br /&gt;
SQOPT is based on an inertia-controlling method that maintains a Cholesky factorization of the reduced Hessian (see below). The method follows Gill and Murray. Here we briefly summarize the main features of the method. Where possible, explicit reference is made to items listed in the printed output, and to the names of the relevant optional parameters.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
SQOPT&#039;s method has a &#039;&#039;feasibility phase &#039;&#039;(also known as &#039;&#039;phase 1 &#039;&#039;), in which a feasible point is found by minimizing the sum of infeasibilities, and an &#039;&#039;optimality phase  &#039;&#039;(or &#039;&#039;phase 2 &#039;&#039;), in which the quadratic objective is minimized within  the feasible region. The computations in both phases are performed by the same subroutines,  with the change of phase being characterized by the objective changing from the sum of infeasibilities (the printed quantity sInf) to the quadratic objective (the printed quantity Objective).&lt;br /&gt;
&lt;br /&gt;
In general, an iterative process is required to solve a quadratic program. Given an iterate (&#039;&#039;x, s&#039;&#039;) in both the original variables &#039;&#039;x &#039;&#039;and the slack variables &#039;&#039;s&#039;&#039;, a new iterate &amp;lt;math&amp;gt;(\bar{x}, \bar{s})&amp;lt;/math&amp;gt; is defined by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left(\begin{array}{c}&lt;br /&gt;
\bar{x}\\&lt;br /&gt;
\bar{s}&lt;br /&gt;
\end{array}\right)&lt;br /&gt;
= &lt;br /&gt;
\left(\begin{array}{c}&lt;br /&gt;
x\\ &lt;br /&gt;
s&lt;br /&gt;
\end{array}\right)&lt;br /&gt;
+ \alpha p,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the &#039;&#039;step length a&#039;&#039; is a non-negative scalar, and &#039;&#039;p &#039;&#039;is called the &#039;&#039;search direction&#039;&#039;. (For simplicity, we shall consider a typical iteration and avoid reference to the index of the iteration.). Once an iterate is feasible (i.e., satisfies the constraints), all subsequent iterates remain feasible.&lt;br /&gt;
&lt;br /&gt;
===Definition of the working set===&lt;br /&gt;
&lt;br /&gt;
At each iterate (&#039;&#039;x, s&#039;&#039;), a &#039;&#039;working set &#039;&#039;of constraints is defined to be a linearly independent subset of the constraints that are satisfied &amp;quot;exactly&amp;quot;  (to within the value of the Feasibility tolerance). The working set is the current prediction of the constraints that hold with equality at a solution of the LP or QP. Let &#039;&#039;m&amp;lt;sub&amp;gt;w&amp;lt;/sub&amp;gt;&#039;&#039; denote the number of constraints in the working set (including bounds), and let &#039;&#039;W &#039;&#039;denote the associated &#039;&#039;m&amp;lt;sub&amp;gt;w&amp;lt;/sub&amp;gt; × &#039;&#039;(&#039;&#039;n &#039;&#039;+ &#039;&#039;m&#039;&#039;) &#039;&#039;working-set&#039;&#039; &#039;&#039;matrix  &#039;&#039;consisting of the &#039;&#039;m&amp;lt;sub&amp;gt;w&amp;lt;/sub&amp;gt;&#039;&#039; gradients of the working-set constraints.&lt;br /&gt;
&lt;br /&gt;
The search direction is defined so that constraints in the working set remain &#039;&#039;unaltered &#039;&#039;for any value of the step length. It follows that &#039;&#039;p &#039;&#039;must satisfy the identity &#039;&#039;W p &#039;&#039;= 0. This characterization allows &#039;&#039;p &#039;&#039;to be computed using any &amp;lt;math&amp;gt;n\times n\Z&amp;lt;/math&amp;gt; &#039;&#039;full-rank matrix &#039;&#039;Z &#039;&#039;that spans the null space of &#039;&#039;W &#039;&#039;. (Thus, &#039;&#039;n&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;= &#039;&#039;n - m&amp;lt;sub&amp;gt;w&amp;lt;/sub&amp;gt;  &#039;&#039;and &#039;&#039;W Z &#039;&#039;= 0.) The null-space matrix &#039;&#039;Z &#039;&#039;is defined from a sparse &#039;&#039;LU &#039;&#039;factorization of part of &#039;&#039;W &#039;&#039;). The direction &#039;&#039;p &#039;&#039;will satisfy &#039;&#039;W p &#039;&#039;= 0 if &#039;&#039;p &#039;&#039;= &#039;&#039;Zp&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;for any &#039;&#039;n&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039;-vector &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The working set contains the constraints &#039;&#039;Ax - s &#039;&#039;= 0 and a subset of the upper and lower bounds on the variables (&#039;&#039;x, s&#039;&#039;). Since the gradient of a bound constraint &amp;lt;math&amp;gt;x_j \ge l_j&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;x_j \le u_j&amp;lt;/math&amp;gt; is a vector of all zeros except for &amp;lt;math&amp;gt;\pm1&amp;lt;/math&amp;gt; in position &#039;&#039;j&#039;&#039;, it follows that the working-set matrix contains the rows of    ( &#039;&#039;A - I &#039;&#039; ) and the unit rows associated with the upper and lower bounds in the working set.&lt;br /&gt;
&lt;br /&gt;
The working-set matrix &#039;&#039;W &#039;&#039;can be represented in terms of a certain column partition  of the matrix ( &#039;&#039;A - I &#039;&#039;). As in [[#Brief description of the method]] we partition the constraints &#039;&#039;Ax - s &#039;&#039;= 0 so that&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bx&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;+ &#039;&#039;Sx&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;+ &#039;&#039;Nx&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; &#039;&#039;= 0&#039;&#039;,&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;B  &#039;&#039;is a square non-singular basis and &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;, &#039;&#039;x&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;&#039;&#039; and &#039;&#039;x&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;&#039;&#039; are the basic, superbasic and nonbasic variables respectively. The nonbasic variables are equal to their upper or lower bounds at (&#039;&#039;x, s&#039;&#039;), and the superbasic variables are independent variables that are chosen to improve the value of the current objective. The number of superbasic variables is &#039;&#039;nS &#039;&#039;, which is printed as the quantity nS. Given values of &#039;&#039;x&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;  &#039;&#039;and &#039;&#039;x&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;, the basic variables &#039;&#039;x&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;  &#039;&#039;are adjusted so that (&#039;&#039;x, s&#039;&#039;) satisfies &#039;&#039;Bx&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;+ &#039;&#039;Sx&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;+ &#039;&#039;Nx&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;   &#039;&#039;= 0.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;P &#039;&#039;is a permutation such that &#039;&#039;(A - I) P &#039;&#039;=  &#039;&#039;(B S N)&#039;&#039;, then the working-set matrix &#039;&#039;W &#039;&#039;satisfies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
WP = \left(\begin{array}{ccc}&lt;br /&gt;
B &amp;amp; S &amp;amp; N  \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; I\N &lt;br /&gt;
\end{array}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;I&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;  &#039;&#039;is the identity matrix with the same number of columns as &#039;&#039;N &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The null-space matrix &#039;&#039;Z &#039;&#039;is defined from a sparse &#039;&#039;LU &#039;&#039;factorization of part of &#039;&#039;W &#039;&#039;. In particular, &#039;&#039;Z &#039;&#039;is maintained in &amp;quot;reduced-gradient&amp;quot; form, using the package LUSOL to maintain sparse &#039;&#039;LU &#039;&#039;factors of the basis matrix &#039;&#039;B &#039;&#039;that alters as the working set &#039;&#039;W &#039;&#039;changes. Given the permutation &#039;&#039;P &#039;&#039;, the null-space basis is given by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Z  = P \left(\begin{array}{c}&lt;br /&gt;
-B^{-1} S \\&lt;br /&gt;
I \\&lt;br /&gt;
0&lt;br /&gt;
\end{array}\right).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This matrix is used only as an operator, i.e., it is never computed explicitly.  Products of the form &#039;&#039;Zv &#039;&#039;and &#039;&#039;Z&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;g &#039;&#039;are obtained by solving with &#039;&#039;B &#039;&#039;or &#039;&#039;B&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&#039;&#039;.  This choice of &#039;&#039;Z &#039;&#039;implies that &#039;&#039;n&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;, the number of &amp;quot;degrees of freedom&amp;quot; at (&#039;&#039;x, s&#039;&#039;), is the same as &#039;&#039;nS &#039;&#039;, the number of superbasic variables.&lt;br /&gt;
&lt;br /&gt;
Let &#039;&#039;g&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039; and &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039; denote the &#039;&#039;reduced gradient&#039;&#039; and &#039;&#039;reduced Hessian&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;g&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;= &#039;&#039;Z&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;g&#039;&#039; and &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039; = &#039;&#039;Z&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;HZ,&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;g &#039;&#039;is the objective gradient at (&#039;&#039;x, s&#039;&#039;). Roughly speaking, &#039;&#039;g&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039; and &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039; describe the first and second derivatives of an &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;&#039;&#039;-dimensional &#039;&#039;unconstrained &#039;&#039;problem for the calculation of &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;.  (The quantity  Cond Hz printed in the summary-file output is a condition estimator of &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
At each iteration, an upper-triangular factor &#039;&#039;R &#039;&#039;is available such that &#039;&#039;HZ  &#039;&#039;= &#039;&#039;R&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;R&#039;&#039;.  Normally, &#039;&#039;R &#039;&#039;is computed from&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;R&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;R &#039;&#039;= &#039;&#039;Z&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;HZ  &#039;&#039;at the start of phase 2 and is then updated as the QP working set changes. For efficiency the dimension of &#039;&#039;R &#039;&#039;should not be excessive (say, &#039;&#039;n&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;  &amp;lt;= &#039;&#039;1000). This is guaranteed if the number of nonlinear variables is &amp;quot;moderate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If  the QP contains linear variables, &#039;&#039;H  &#039;&#039;is positive  semi-definite  and &#039;&#039;R &#039;&#039;may be singular with  at least  one zero diagonal. However, an inertia-controlling active-set strategy is used to ensure that only the last diagonal of &#039;&#039;R &#039;&#039;can be zero.&lt;br /&gt;
&lt;br /&gt;
If the initial  &#039;&#039;R &#039;&#039;is singular, enough variables are fixed at their current  value to give a nonsingular &#039;&#039;R&#039;&#039;.  This is equivalent to including temporary bound constraints in the working set. Thereafter, &#039;&#039;R &#039;&#039;can become singular only when a constraint is deleted from the working set (in which case no further constraints are deleted until &#039;&#039;R &#039;&#039;becomes nonsingular).&lt;br /&gt;
&lt;br /&gt;
===The main iteration===&lt;br /&gt;
&lt;br /&gt;
If  the reduced gradient  is zero, (&#039;&#039;x, s&#039;&#039;) is a constrained stationary point  on the working set.  During phase 1, the reduced gradient will usually be zero only at a vertex (although it may be zero elsewhere in the presence of constraint dependencies). During phase 2, a zero reduced gradient implies that &#039;&#039;x &#039;&#039;minimizes the quadratic objective when the constraints in the working set are treated as equalities. At a constrained stationary point, Lagrange multipliers &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; are defined from the equations &amp;lt;math&amp;gt;W^T\lambda = g(x)&amp;lt;/math&amp;gt;. A Lagrange multiplier &#039;&#039;&amp;amp;lambda;&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;corresponding to an inequality constraint in the working set is said to be &#039;&#039;optimal &#039;&#039;if &amp;lt;math&amp;gt;\lambda_j \le \sigma&amp;lt;/math&amp;gt; when the associated constraint is at its &#039;&#039;upper bound&#039;&#039;, or if &amp;lt;math&amp;gt;\lambda_j \ge - \sigma&amp;lt;/math&amp;gt; when the associated constraint is at its &#039;&#039;lower bound&#039;&#039;, where &#039;&#039;&amp;amp;sigma;&#039;&#039; depends on the Optimality tolerance. If a multiplier is non-optimal, the objective function (either the true objective or the sum of infeasibilities) can be reduced by continuing the minimization with the corresponding constraint excluded from the working set (this step is sometimes referred to as &amp;quot;deleting&amp;quot;  a constraint from the working set). If optimal multipliers occur during the feasibility phase but the sum of infeasibilities is not zero, there is no feasible point.&lt;br /&gt;
&lt;br /&gt;
The special form of the working set allows the multiplier vector &amp;amp;lambda;, the solution of &#039;&#039;W&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;&amp;amp;lambda; &#039;&#039;= &#039;&#039;g&#039;&#039;, to be written in terms of the vector&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d = \left(\begin{array}{c}&lt;br /&gt;
g \\ &lt;br /&gt;
0&lt;br /&gt;
\end{array}\right) - \left(\begin{array}{c}&lt;br /&gt;
A - I&lt;br /&gt;
\end{array}\right)^T\pi = \left(\begin{array}{c}&lt;br /&gt;
g - A^T\pi\\ &lt;br /&gt;
\pi&lt;br /&gt;
\end{array}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&amp;amp;pi;&#039;&#039; satisfies the equations &#039;&#039;B&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;p &#039;&#039;= &#039;&#039;g&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; &#039;&#039;, and &#039;&#039;g&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;    &#039;&#039;denotes the basic components of &#039;&#039;g&#039;&#039;.  The components of &#039;&#039;&amp;amp;pi;&#039;&#039; are the Lagrange multipliers &#039;&#039;&amp;amp;lambda&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;associated with the equality constraints &#039;&#039;Ax - s &#039;&#039;= 0. The vector &#039;&#039;d&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;   &#039;&#039;of nonbasic components of &#039;&#039;d &#039;&#039;consists of the Lagrange multipliers &#039;&#039;&amp;amp;delta;&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;  &#039;&#039;associated with the upper and lower bound constraints in the working set. The vector &#039;&#039;d&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;   &#039;&#039;of superbasic components of &#039;&#039;d &#039;&#039;is the reduced gradient &#039;&#039;g&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;   &#039;&#039;. The vector &#039;&#039;d&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;   &#039;&#039;of basic components of &#039;&#039;d &#039;&#039;is zero, by construction. (The Euclidean norm of &#039;&#039;d&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;, and the final values of &#039;&#039;d&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; &#039;&#039;, &#039;&#039;g &#039;&#039;and &#039;&#039;&amp;amp;pi; &#039;&#039;are the quantities norm rg, Reduced  Gradnt, Obj Gradient and Dual Activity in the PRINT  file output.)&lt;br /&gt;
&lt;br /&gt;
If the reduced gradient is not zero, Lagrange multipliers need not be computed and the search direction is given by &#039;&#039;p &#039;&#039;= &#039;&#039;Z&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;, where &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;    &#039;&#039;is defined below.  The step length is chosen to maintain feasibility with respect to the satisfied constraints.&lt;br /&gt;
&lt;br /&gt;
There are two possible choices for &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;, depending on whether or not &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;  &#039;&#039;is singular.  If &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;  &#039;&#039;is nonsingular, &#039;&#039;R &#039;&#039;is nonsingular and &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;   &#039;&#039;is computed from the equations,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
R^TRp_Z = -g_Z,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;g&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;   &#039;&#039;is the reduced gradient at &#039;&#039;x&#039;&#039;.  In this case, (&#039;&#039;x, s&#039;&#039;) + &#039;&#039;p &#039;&#039;is the minimizer of the objective function subject to the working-set constraints being treated as equalities.  If (&#039;&#039;x, s&#039;&#039;) + &#039;&#039;p &#039;&#039;is feasible, &#039;&#039;&amp;amp;alpha; &#039;&#039;is defined to be one. In this case, the reduced gradient  at &amp;lt;math&amp;gt;(\bar{x}, \bar{s})&amp;lt;/math&amp;gt; will  be zero, and Lagrange multipliers  are computed at the next iteration. Otherwise, &#039;&#039;&amp;amp;alpha; &#039;&#039;is set to &#039;&#039;&amp;amp;alpha;&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; &#039;&#039;, the step to the boundary of the &amp;quot;nearest&amp;quot; constraint along &#039;&#039;p&#039;&#039;. This constraint is added to the working set at the next iteration.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;H&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;is singular, then &#039;&#039;R &#039;&#039;must also be singular, and an inertia-controlling strategy is used to ensure that only the last diagonal element of &#039;&#039;R &#039;&#039;is zero. In this case, &#039;&#039;p&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt;   &#039;&#039;satisfies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
p_Z^T H_Z p_Z = 0 \quad \text{and} \quad g_Z^T p_Z \le 0,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which allows the objective function to be reduced by any step of the form (&#039;&#039;x, s&#039;&#039;) + &#039;&#039;&amp;amp;alpha;p&#039;&#039;, &#039;&#039;a &amp;gt; &#039;&#039;0. The vector &#039;&#039;p &#039;&#039;= &#039;&#039;Zp&amp;lt;sub&amp;gt;Z&amp;lt;/sub&amp;gt; &#039;&#039;is a direction of unbounded descent for the QP in the sense that the QP objective is linear and decreases without bound along &#039;&#039;p&#039;&#039;. If no finite step of the form (&#039;&#039;x, s&#039;&#039;) + &#039;&#039;&amp;amp;alpha;p &#039;&#039;(&#039;&#039;&amp;amp;alpha; &amp;gt; &#039;&#039;0) reaches a constraint not in the working set, the QP is unbounded and SQOPT terminates at (&#039;&#039;x, s&#039;&#039;) and declares the problem to be unbounded. Otherwise, &#039;&#039;&amp;amp;alpha; &#039;&#039;is defined as the maximum feasible step along &#039;&#039;p &#039;&#039;and a constraint active at (&#039;&#039;x, s&#039;&#039;) + &#039;&#039;&amp;amp;alpha;p &#039;&#039;is added to the working set for the next iteration.&lt;br /&gt;
&lt;br /&gt;
===Miscellaneous===&lt;br /&gt;
&lt;br /&gt;
If the basis matrix is not chosen carefully, the condition of the null-space matrix &#039;&#039;Z &#039;&#039; could be arbitrarily  high. To guard against this, SQOPT implements a &amp;quot;basis repair&amp;quot; feature in the following way. LUSOL is used to compute the rectangular factorization&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left(\begin{array}{cc}&lt;br /&gt;
B &amp;amp; S&lt;br /&gt;
\end{array}\right)^T = LU,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returning just the permutation &#039;&#039;P &#039;&#039;that makes &#039;&#039;PLP&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt; &#039;&#039;unit lower triangular.  The pivot tolerance is set to require &amp;lt;math&amp;gt;|PLP^T|_{ij} \le&lt;br /&gt;
2&amp;lt;/math&amp;gt;, and the permutation is used to define &#039;&#039;P &#039;&#039;. It can be shown that &amp;lt;math&amp;gt;||{Z}||&amp;lt;/math&amp;gt; is likely to be little more than 1. Hence, &#039;&#039;Z &#039;&#039;should be well-conditioned &#039;&#039;regardless of the condition of W &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This feature is applied at the beginning of the optimality  phase if a potential &#039;&#039;B&#039;&#039;-&#039;&#039;S &#039;&#039;ordering is known.&lt;br /&gt;
&lt;br /&gt;
The EXPAND procedure is used to reduce the possibility of cycling at a point where the active constraints are nearly linearly dependent.  Although there is no absolute guarantee that cycling will not occur, the probability  of cycling is extremely small. The main feature of expand is that the feasibility tolerance is increased at every iteration, perhaps at the expense of violating the bounds on (&#039;&#039;x, s&#039;&#039;) by a simple amount.&lt;br /&gt;
&lt;br /&gt;
Suppose that the value of Feasibility tolerance is &#039;&#039;&amp;amp;delta;&#039;&#039;.  Over a period of &#039;&#039;K &#039;&#039;iterations (where &#039;&#039;K &#039;&#039;is the value of the optional parameter Expand frequency,  the feasibility tolerance used in SQOPT (i.e., the working feasibility tolerance) increases from &amp;lt;math&amp;gt;\frac{1}{2}\delta&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; in steps of &amp;lt;math&amp;gt;\frac{1}{2}\delta/K&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At certain stages, the following &amp;quot;resetting procedure&amp;quot; is used to remove small constraint infeasibilities. First, all nonbasic variables are moved exactly onto their bounds. A count is kept of the number of non-trivial adjustments made. If the count is nonzero, the basic variables are recomputed.  Finally, the working feasibility tolerance is reinitialized to &amp;lt;math&amp;gt;\frac{1}{2}\delta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If a problem requires more than &#039;&#039;K &#039;&#039;iterations, the resetting procedure is invoked and a new cycle of iterations is started. (The decision to resume phase 1 or phase 2 is based on comparing any constraint infeasibilities with &#039;&#039;&amp;amp;delta;&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
The resetting procedure is also invoked if when SQOPT reaches an apparently optimal, infeasible, or unbounded solution, unless this situation has already occurred twice.  If any non-trivial  adjustments are made, iterations are continued.&lt;br /&gt;
&lt;br /&gt;
The EXPAND  procedure not only allows a positive step to be taken at every iteration, but also provides a potential &#039;&#039;choice &#039;&#039;of constraint to be added to the working set.  All constraints at a distance &amp;lt;math&amp;gt;\alpha (\alpha \le \alpha_N)&amp;lt;/math&amp;gt; along &#039;&#039;p &#039;&#039;from the current point are then viewed as acceptable candidates for inclusion in the working set. The constraint whose normal makes the biggest angle with the search direction is added to the working set.  This strategy helps keep the basis matrix &#039;&#039;B &#039;&#039;well-conditioned.&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_MINOS&amp;diff=2629</id>
		<title>SOL MINOS</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_MINOS&amp;diff=2629"/>
		<updated>2012-01-22T18:10:31Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
==Direct  Solver Call==&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to subsection [[#Using TOMLAB|Using TOMLAB]] for information on how to use MINOS with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;minos &#039;&#039;solves nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x    &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp; &amp;amp; c(x) &amp;amp; &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in&lt;br /&gt;
\mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1+m_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c(x) \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
or quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; g(x)  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp; &amp;amp; A x  &amp;amp; &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The full input matrix A has three parts A = [d/dx g(x); A; c&#039;];&lt;br /&gt;
&lt;br /&gt;
===Calling  Syntax===&lt;br /&gt;
&lt;br /&gt;
The file &#039;funfdf.m&#039; must be defined and contain: function [mode, f, g] = funfdf(x, Prob, mode, nstate) to compute the objective function f and the gradient g at the point x.&lt;br /&gt;
&lt;br /&gt;
The file &#039;funcdc.m&#039; must be defined and contain:  function [mode ,c ,dcS] = funcdc(x, Prob, mode, nstate) to compute the  nonlinear constraint  value c and the constraint  Jacobian dcS for the nonlinear constraints  at the point x.&lt;br /&gt;
&lt;br /&gt;
NOTE: The matrix dcS MUST be a SPARSE MATLAB matrix.  Do dcS = sparse(dcS); after dcS has been computed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[hs, xs, pi, rc, Inform, nS, nInf, sInf, Obj, iwCount, gObj, fCon, gCon] = minos(H, A, bl, bu, nnCon, nnObj, &lt;br /&gt;
nnJac, Prob, iObj,  optPar, Warm, hs, xs, pi, nS, SpecsFile, PrintFile,  SummFile, PriLev, ObjAdd,  moremem, &lt;br /&gt;
ProbName );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Description  of Inputs===&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input!!Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;H&#039;&#039;||Matrix n x n in a quadratic programming (QP) problem. DENSE or SPARSE. Leave empty if LP, or NLP problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Constraint  matrix,  m x n SPARSE (nonlinear, linear and objective)  m &#039;&#039;&amp;gt; &#039;&#039;0 always!!! Define dummy constraint for unconstrained problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl&#039;&#039;||Lower bounds on (x,g(x),Ax,c&#039;).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu&#039;&#039;||Upper bounds on (x,g(x),Ax,c&#039;).&lt;br /&gt;
&lt;br /&gt;
NOTE!  The bl and bu values for the  last nonlinear constraint  c must have reverse signs and be put in each other places: If &#039;&#039;cL  &amp;lt;&#039;&#039;= &#039;&#039;c&#039;&#039;(&#039;&#039;x&#039;&#039;) &#039;&#039;&amp;lt;&#039;&#039;= &#039;&#039;cU  &#039;&#039;, then &#039;&#039;bl &#039;&#039;= &#039;&#039;-cU &#039;&#039;and &#039;&#039;bu &#039;&#039;= &#039;&#039;-cL &#039;&#039;. This is because the bounds acts as the constraints on the slack variables for the nonlinear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nnCon&#039;&#039;||Number of nonlinear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nnObj&#039;&#039;||Number of nonlinear objective variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nnJac&#039;&#039;||Number of nonlinear Jacobian variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob&#039;&#039;||Must be a structure.  No check is made in the MEX interface. If TOMLAB calls minos, then Prob is the standard TOMLAB  problem structure, otherwise the user should set:&lt;br /&gt;
&lt;br /&gt;
Prob.P = ProblemNumber, where ProblemNumber is some integer.&lt;br /&gt;
&lt;br /&gt;
If the problem is a LP or QP problem (H defined), the user does not have to specify anything else in the structure.&lt;br /&gt;
&lt;br /&gt;
For a general nonlinear objective or nonlinear constraints names of two user written routines must be given:&lt;br /&gt;
&lt;br /&gt;
funfdf,  actual name stored in Prob.FUNCS.fg, with  syntax [mode, f,  g] = funfdf(x, Prob, mode, nstate).&lt;br /&gt;
&lt;br /&gt;
funcdc, actual name stored in Prob.FUNCS.cdc, with syntax [mode, c, dcS] = funcdc(x, Prob, mode, nstate).&lt;br /&gt;
&lt;br /&gt;
MINOS is calling the TOMLAB  routines nlp fg.m and nlp cdcS.m in the call- back, and they call funfdf and funcdc, respectively.&lt;br /&gt;
&lt;br /&gt;
If  these fields in  Prob are empty (Prob.FUNCS.fg, Prob.FUNCS.cdc), the TOMLAB   callback routines calls the  usual function  routines.    Then  the Prob struct should be normally defined, and the fields Prob.FUNCS.f, Prob.FUNCS.g, Prob.FUNCS.c, Prob.FUNCS.dc be  set in the normal way (e.g. by the routine mFiles.m, or one of the Assign-routines like conAssign.m).&lt;br /&gt;
&lt;br /&gt;
If the mode parameter is 0, funfdf should return f, otherwise both f and the gradient vector g. If the mode parameter is 0, funcdc should return c, otherwise both c and dcS. Note that each row in dcS corresponds to a constraint, and that dcS must be a SPARSE matrix.&lt;br /&gt;
&lt;br /&gt;
The  user could also write  his own versions of the  routines nlp fg.m and nlp cdcS.m and put them before in the path.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iObj&#039;&#039;||Says which row of A is a free row containing a linear objective vector c. If there is no such vector, iObj = 0. Otherwise, this row must come after any nonlinear rows, so that nnCon &#039;&#039;&amp;lt;&#039;&#039;= iObj &#039;&#039;&amp;lt;&#039;&#039;= m.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector with  optimization  parameters overriding defaults and the optionally specified SPECS file.  If using only default options, set optPar as an empty matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Warm&#039;&#039;||Flag, if true: warm start. Default cold start (if empty). If &#039;Warm Start&#039; xs, nS and hs must be supplied with correct values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;hs&#039;&#039;||Basis status  of variables  + constraints (n+m  x  1 vector).   State of vari- ables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xs&#039;&#039;||Initial  vector, optionally including m slacks at the end. If warm start, full xs must be supplied.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;pi&#039;&#039;||Lagrangian multipliers for the nnCon nonlinear constraints. If empty, set as 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nS&#039;&#039;||# of superbasics. Only used if calling again with a Warm Start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SpecsFile&#039;&#039;||Name of the SPECS input parameter file, see [[TOMLAB]].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile&#039;&#039;||Name of the Print file. Name includes the path, maximal number of characters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SummFile&#039;&#039;||Name of the Summary file. Name includes the path, maximal number of char- acters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Printing level in the minos m-file and minos MEX-interface.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent&lt;br /&gt;
&lt;br /&gt;
= 1 Summary information&lt;br /&gt;
&lt;br /&gt;
= 2 More detailed information&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ObjAdd&#039;&#039;||Constant added to the objective for printing purposes, typically 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moremem&#039;&#039;||Add extra memory for the sparse LU, might speed up the optimization.  1E6 is 10MB of memory. If empty, set as 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ProbName&#039;&#039;||Name of the problem. ¡=100 characters are used in the MEX  interface.  In the MINOS solver the first 8 characters are used in the printed solution and in some routines that output BASIS files. Blank is OK.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description  of Outputs===&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output!!Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;hs&#039;&#039;||Basis status of variables + constraints (n+m x 1 vector).   State of vari- ables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds),&lt;br /&gt;
3=basic (between bounds).&lt;br /&gt;
&lt;br /&gt;
Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance.  Note that  if scaling is specified, the Feasibility tolerance applies to the variables of the &#039;&#039;scaled &#039;&#039;problem.  In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the &amp;quot;Primal infeasibility&amp;quot;  printed after the EXIT message.&lt;br /&gt;
&lt;br /&gt;
Very occasionally  some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics  for which xn(&#039;&#039;j&#039;&#039;) lies strictly  between its bounds.&lt;br /&gt;
&lt;br /&gt;
If ninf &#039;&#039;&amp;gt; &#039;&#039;0, some basic and superbasic variables may be outside their bounds by an arbitrary  amount (bounded by sinf if scaling was not used).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xs&#039;&#039;||Solution vector (n+m  by 1) with n decision variable values together with the m slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;pi&#039;&#039;||Lagrangian multipliers (dual solution vector) (m x 1 vector)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Vector of reduced costs, &#039;&#039;g - &#039;&#039;( &#039;&#039;A  I &#039;&#039;)&#039;&#039;Tp&#039;&#039;, where &#039;&#039;g &#039;&#039;is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last &#039;&#039;m &#039;&#039;entries are &#039;&#039;-p&#039;&#039;. Reduced costs vector is of n+m length.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Result of MINOS run.&lt;br /&gt;
&lt;br /&gt;
0 Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
1 The problem is infeasible.&lt;br /&gt;
&lt;br /&gt;
2 The problem is unbounded (or badly scaled).&lt;br /&gt;
&lt;br /&gt;
3 Too many iterations.&lt;br /&gt;
&lt;br /&gt;
4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).&lt;br /&gt;
&lt;br /&gt;
5 The Superbasics  limit is too small.&lt;br /&gt;
&lt;br /&gt;
6 User requested termination (by returning bad value).&lt;br /&gt;
&lt;br /&gt;
7 Gradient seems to be giving incorrect derivatives.&lt;br /&gt;
&lt;br /&gt;
8 Jacobian  seems to be giving incorrect derivatives.&lt;br /&gt;
&lt;br /&gt;
9 The current point cannot be improved.&lt;br /&gt;
&lt;br /&gt;
10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.&lt;br /&gt;
&lt;br /&gt;
11 Cannot find a superbasic to replace a basic variable.&lt;br /&gt;
&lt;br /&gt;
12 Basis factorization requested twice in a row. Should probably be treated as inform  = 9.&lt;br /&gt;
&lt;br /&gt;
13 Near-optimal solution found. Should probably be treated as inform  = 9.&lt;br /&gt;
&lt;br /&gt;
20 Not enough storage for the basis factorization.&lt;br /&gt;
&lt;br /&gt;
21 Error in basis package.&lt;br /&gt;
&lt;br /&gt;
22 The basis is singular after several attempts to factorize it (and add slacks where necessary).&lt;br /&gt;
&lt;br /&gt;
30 An OLD BASIS file had dimensions that did not match the current problem.&lt;br /&gt;
&lt;br /&gt;
32 System error. Wrong number of basic variables.&lt;br /&gt;
&lt;br /&gt;
40 Fatal errors in the MPS file.&lt;br /&gt;
&lt;br /&gt;
41 Not enough storage to read the MPS file.&lt;br /&gt;
&lt;br /&gt;
42 Not enough storage to solve the problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nS&#039;&#039;||# of superbasics.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nInf&#039;&#039;||Number of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sInf&#039;&#039;||Sum of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Obj&#039;&#039;||Objective function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iwCount&#039;&#039;||Number of iterations (major and minor), function and constraint calls.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;gObj&#039;&#039;||Gradient of the nonlinear objective.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;fCon&#039;&#039;||Nonlinear constraint vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;gCon&#039;&#039;||Gradient vector (non-zeros) of the nonlinear constraint vector.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Using TOMLAB==&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;minosTL &#039;&#039;solves nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A&lt;br /&gt;
\in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Calling  Syntax===&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = &#039;&#039;o&#039;&#039;Assign( ... );&lt;br /&gt;
Result = tomRun(&#039;minos&#039;, Prob, 1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraint matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c&#039;&#039;||Linear coefficients in objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart&#039;&#039;||If true, use warm start, otherwise cold start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs&#039;&#039;||Solution and slacks from previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.hs&#039;&#039;||State for solution and slacks from previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.nS&#039;&#039;||Number of superbasics from previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.moremem&#039;&#039;||Add more memory if MINOS stops with not enough storage message. 1E6 is 10MB of memory. Default n+m1+m2 (number of variables + linear + nonlin- ear constraints).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SpecsFile&#039;&#039;||Name of user defined SPECS file, read BEFORE optPar() is used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.PrintFile&#039;&#039;||Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SummFile&#039;&#039;||Name of SOL Summary File.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.optPar&#039;&#039;||Elements &#039;&#039;&amp;gt; &#039;&#039;-999 takes precedence over corresponding TOMLAB params. See Table in [[SOL Using the SOL Solvers in TOMLAB]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description  of Outputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Result&#039;&#039;||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from minos.m (similar to TOMLAB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform &#039;&#039;||Result of MINOS run.&lt;br /&gt;
&lt;br /&gt;
0 Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
1 The problem is infeasible.&lt;br /&gt;
&lt;br /&gt;
2 The problem is unbounded (or badly scaled).&lt;br /&gt;
&lt;br /&gt;
3 Too many iterations.&lt;br /&gt;
&lt;br /&gt;
4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).&lt;br /&gt;
&lt;br /&gt;
5 The Superbasics  limit is too small.&lt;br /&gt;
&lt;br /&gt;
6 User requested termination (by returning bad value).&lt;br /&gt;
&lt;br /&gt;
7 Gradient seems to be giving incorrect derivatives.&lt;br /&gt;
&lt;br /&gt;
8 Jacobian  seems to be giving incorrect derivatives.&lt;br /&gt;
&lt;br /&gt;
9 The current point cannot be improved.&lt;br /&gt;
&lt;br /&gt;
10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.&lt;br /&gt;
&lt;br /&gt;
11 Cannot find a superbasic to replace a basic variable.&lt;br /&gt;
&lt;br /&gt;
12 Basis factorization requested twice in a row. Should probably be treated as inform  = 9.&lt;br /&gt;
&lt;br /&gt;
13 Near-optimal solution found. Should probably be treated as inform  = 9.&lt;br /&gt;
&lt;br /&gt;
20 Not enough storage for the basis factorization.&lt;br /&gt;
&lt;br /&gt;
21 Error in basis package.&lt;br /&gt;
&lt;br /&gt;
22 The basis is singular after several attempts to factorize it (and add slacks where necessary).&lt;br /&gt;
&lt;br /&gt;
30 An OLD BASIS file had dimensions that did not match the current problem.&lt;br /&gt;
&lt;br /&gt;
32 System error. Wrong number of basic variables.&lt;br /&gt;
&lt;br /&gt;
40 Fatal errors in the MPS file.&lt;br /&gt;
&lt;br /&gt;
41 Not enough storage to read the MPS file.&lt;br /&gt;
&lt;br /&gt;
42 Not enough storage to solve the problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Vector of reduced costs, &#039;&#039;g-&#039;&#039;(&#039;&#039;AI&#039;&#039;)&#039;&#039;Tp&#039;&#039;, where &#039;&#039;g&#039;&#039; is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last &#039;&#039;m &#039;&#039;entries are &#039;&#039;-p&#039;&#039;. Reduced costs vector is of n+m length.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv&#039;&#039;||Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB  QP standard.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MinorIter&#039;&#039;||Number of minor iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (minos).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs&#039;&#039;||Solution and slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.hs&#039;&#039;||Basis status of variables + constraints (n+m  x  1 vector).	State of vari- ables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).&lt;br /&gt;
&lt;br /&gt;
Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance.  Note that  if scaling is specified,  the Feasibility tolerance applies to the variables of the &#039;&#039;scaled &#039;&#039;problem.  In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the &amp;quot;Primal infeasibility&amp;quot;  printed after the EXIT message.&lt;br /&gt;
&lt;br /&gt;
Very occasionally  some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics  for which xn(&#039;&#039;j&#039;&#039;) lies strictly  between its bounds.&lt;br /&gt;
&lt;br /&gt;
If ninf &#039;&#039;&amp;gt; &#039;&#039;0, some basic and superbasic variables may be outside their bounds by an arbitrary  amount (bounded by sinf if scaling was not used).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.nS&#039;&#039;||# of superbasics. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.nInf&#039;&#039;||# of infeasibilities. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.sInf&#039;&#039;||Sum of infeasibilities.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==optPar==&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
&lt;br /&gt;
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by MINOS, unless the value is altered in the SPECS file.&lt;br /&gt;
&lt;br /&gt;
Definition: nnL = max(nnObj,nnJac))&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
====Table: The following fields are used:====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!#!!SPECS keyword text&lt;br /&gt;
!Lower&lt;br /&gt;
!Default&lt;br /&gt;
!Upper&lt;br /&gt;
!Comment&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Printing&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1.||PRINT LEVEL||0||0||11111||JFLXB:  Jac, fCon, lambda,  x,  B=LU stats&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Frequencies I&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|5.||PRINT FREQUENCY||0||100&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|6.||SUMMARY FREQUENCY||0||100&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|7.||SOLUTION YES/NO||0||1||1||1 = YES; 0 = NO&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|8.||SUPPRESS PARAMETERS||0||0||1||1 = True&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Convergence Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|9.||ROW TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1E-6&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|10.||OPTIMALITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||colspan=&amp;quot;3&amp;quot;|&#039;&#039;max&#039;&#039;(1&#039;&#039;E - &#039;&#039;6&#039;&#039;, &#039;&#039;(10&#039;&#039;eps&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; &#039;&#039;)&amp;lt;sup&amp;gt;0&#039;&#039;.&#039;&#039;5&amp;lt;/sup&amp;gt; ) = 1.73E-6&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|11.||FEASIBILITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1E-6&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Derivative checking&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|13.||VERIFY  LEVEL||-1||-1||3||-1,0,1,2,3&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|14.||START OBJECTIVE CHECK AT COL||0||1||nnObj&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|15.||STOP OBJECTIVE CHECK AT COL||0||nnObj||nnObj&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|16.||START CONSTRAINT CHECK AT COL||0||1||nnJac&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|17.||STOP CONSTRAINT CHECK AT COL||0||nnJac||nnJac&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Scaling&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|18.||SCALE OPTION &lt;br /&gt;
&lt;br /&gt;
See Section  6.2 for more information.&lt;br /&gt;
||0||1 or 2||2||2 if LP,1 if NLP&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|19.||SCALE TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||0.9||&#039;&#039;&amp;lt; &#039;&#039;1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|20.||SCALE PRINT||0||0||1||1 = True&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|21.||CRASH TOLERANCE||0||0.1||&#039;&#039;&amp;lt; &#039;&#039;1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Other Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|22.||LINESEARCH TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||0.1||&#039;&#039;&amp;lt; &#039;&#039;1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;LU I&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|23.||LU FACTORIZATION TOLERANCE||1||100 or 5||100 if LP&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|24.||LU UPDATE  TOLERANCE||1||10 or 5||10 if LP&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|25.||LU SWAP TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.22E-4||&#039;&#039;eps^&amp;lt;sup&amp;gt;&#039;&#039;1&#039;&#039;/&#039;&#039;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|26.||LU SINGULARITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||3.25E-11||&#039;&#039;eps^&amp;lt;sup&amp;gt;&#039;&#039;0&#039;&#039;.&#039;&#039;67&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;LP or LC subproblems&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|27.||PIVOT  TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||3.25E-11||&#039;&#039;eps^&amp;lt;sup&amp;gt;&#039;&#039;0&#039;&#039;.&#039;&#039;67&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|28.||CRASH OPTION ||0||3||3||0,1,2,3&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|29.||WEIGHT ON LINEAR OBJECTIVE||0.0||0.0||during Phase 1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|30.||ITERATIONS LIMIT&lt;br /&gt;
&lt;br /&gt;
m3=1 if length(Prob.QP.c) &#039;&#039;&amp;gt; &#039;&#039;0, otherwise m3=0. &lt;br /&gt;
&lt;br /&gt;
TOMLAB default: max(10000,3(m+m3) + 10nnL).&lt;br /&gt;
&lt;br /&gt;
||0||3(m+m3) + 10nnL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;SLC method&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|32.||MAXIMIZE||0||0||1||1=maximize&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|33.||LAGRANGIAN||0||1||1||1=YES, 0=NO&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|34.||PENALTY PARAMETER||0.0||1.0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|35.||MAJOR ITERATIONS LIMIT||&#039;&#039;&amp;gt; &#039;&#039;0||50&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|36.||MINOR ITERATIONS LIMIT||&#039;&#039;&amp;gt; &#039;&#039;0||40&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|37.||MAJOR DAMPING PARAMETER||&#039;&#039;&amp;gt; &#039;&#039;0||2.0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|38.||MINOR DAMPING PARAMETER||&#039;&#039;&amp;gt; &#039;&#039;0||2.0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|39.||DERIVATIVE LEVEL&lt;br /&gt;
&lt;br /&gt;
Is always set by minosTL dependent on Prob.ConsDiff, Prob.NumDiff.&lt;br /&gt;
||0||3||3||0,1,2,3&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|40.||RADIUS OF CONVERGENCE||0.0||0.01&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|41.||FUNCTION PRECISION||&#039;&#039;&amp;gt; &#039;&#039;0||3.0E-13||&#039;&#039;eps&amp;lt;sup&amp;gt;&#039;&#039;0&#039;&#039;.&#039;&#039;8&amp;lt;/sup&amp;gt; = &#039;&#039;eps&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|42.||DIFFERENCE INTERVAL||&#039;&#039;&amp;gt; &#039;&#039;0||5.48E-7||&#039;&#039;eps&amp;lt;sup&amp;gt;&#039;&#039;0&#039;&#039;.&#039;&#039;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|43.||CENTRAL DIFFERENCE INTERVAL||&#039;&#039;&amp;gt; &#039;&#039;0||6.69E-5||&#039;&#039;eps&amp;lt;sup&amp;gt;&#039;&#039;0&#039;&#039;.&#039;&#039;8&#039;&#039;/&#039;&#039;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|44.||COMPLETION||0||1 LC, 0 1&lt;br /&gt;
&lt;br /&gt;
NC&lt;br /&gt;
&lt;br /&gt;
||0=PARTIAL&lt;br /&gt;
&lt;br /&gt;
1=FULL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|45.||UNBOUNDED STEP SIZE||&#039;&#039;&amp;gt; &#039;&#039;0||1E10&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|46.||UNBOUNDED OBJECTIVE||&#039;&#039;&amp;gt; &#039;&#039;0||1E20&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Hessian approximation&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|47.||HESSIAN DIMENSION||1||50||1+nnL&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|48.||SUPERBASICS LIMIT||1||50||1+nnL&lt;br /&gt;
&lt;br /&gt;
TOMLAB  default (to avoid termination with Superbasics Limit  too small):&lt;br /&gt;
&lt;br /&gt;
If n &#039;&#039;&amp;lt;&#039;&#039;= 5000: &#039;&#039;max&#039;&#039;(50&#039;&#039;, n &#039;&#039;+ 1)&lt;br /&gt;
&lt;br /&gt;
If n &#039;&#039;&amp;gt; &#039;&#039;5000: &#039;&#039;max&#039;&#039;(500&#039;&#039;, n &#039;&#039;+ 200 &#039;&#039;- size&#039;&#039;(&#039;&#039;A, &#039;&#039;1) &#039;&#039;- length&#039;&#039;(&#039;&#039;cL &#039;&#039;))&lt;br /&gt;
&lt;br /&gt;
Avoid setting REDUCED HESSIAN (number of columns in reduced Hessian).&lt;br /&gt;
&lt;br /&gt;
It will then be set to the same value as the SUPERBASICS LIMIT by MINOS. Frequencies II&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|51.||CHECK FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||60&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|52.||EXPAND FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||10000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|53.||FACTORIZATION FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||50&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;LU II&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|63.||LU PARTIAL PIVOTING&lt;br /&gt;
&lt;br /&gt;
or LU COMPLETE  PIVOTING&lt;br /&gt;
&lt;br /&gt;
or LU ROOK PIVOTING&lt;br /&gt;
||0||0||3||0=partial&lt;br /&gt;
&lt;br /&gt;
1=complete&lt;br /&gt;
&lt;br /&gt;
2=rook&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Additional parameters&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|67.||AIJ TOLERANCE&lt;br /&gt;
&lt;br /&gt;
Elements &#039;&#039;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;a&#039;&#039;(&#039;&#039;i, j&#039;&#039;)&#039;&#039;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; &amp;lt; AI J &#039;&#039;TOLERANCE are set as 0&lt;br /&gt;
||0||1E-10&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|70.||SUBSPACE&lt;br /&gt;
&lt;br /&gt;
Convergence tolerance in current subspace before consider moving off another constraint.&lt;br /&gt;
||&#039;&#039;&amp;gt; &#039;&#039;0||0.5||1||Subspace tolerance&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Models_Global_Optimization_Problems:_glb_prob,_lgo1_prob,_lgo2_prob_and_gkls_prob&amp;diff=2628</id>
		<title>Models Global Optimization Problems: glb prob, lgo1 prob, lgo2 prob and gkls prob</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Models_Global_Optimization_Problems:_glb_prob,_lgo1_prob,_lgo2_prob_and_gkls_prob&amp;diff=2628"/>
		<updated>2012-01-22T17:55:58Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Example of a global optimization  problem==&lt;br /&gt;
&lt;br /&gt;
The basic structure of a global optimization problem with simple bounds is the following&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{llcccll}&lt;br /&gt;
-\infty &amp;lt; &amp;amp;x_{L} &amp;amp; \leq  &amp;amp; x &amp;amp; \leq &amp;amp; x_{U}&amp;amp; &amp;lt; \infty  \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;. The&lt;br /&gt;
variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted&lt;br /&gt;
to be integers.&lt;br /&gt;
&lt;br /&gt;
The following file is required to define a problem of this category in TOMLAB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;File: &#039;&#039;&#039;tomlab/quickguide/glbQGf.m&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
f:	Function&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a problem of this class, (that is also found in the TOMLAB quickguide) is glbQG:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;File: &#039;&#039;&#039;tomlab/quickguide/glbQG.m&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% glbQG is a small example problem for defining and solving&lt;br /&gt;
% unconstrained global programming problems using the TOMLAB format.&lt;br /&gt;
&lt;br /&gt;
Name = &#039;Shekel 5&#039;;&lt;br /&gt;
x_L = [ 0  0  0  0]&#039;;  % Lower bounds for x.&lt;br /&gt;
x_U = [10 10 10 10]&#039;;  % Upper bounds for x.&lt;br /&gt;
x_0 = [-3.0144 -2.4794 -3.1584 -3.1790]; % May not be used.&lt;br /&gt;
x_opt = [];&lt;br /&gt;
f_opt = -10.1531996790582;&lt;br /&gt;
f_Low=-20;             % Lower bound on function.&lt;br /&gt;
x_min = [ 0  0  0  0]; % For plotting&lt;br /&gt;
x_max = [10 10 10 10]; % For plotting&lt;br /&gt;
&lt;br /&gt;
Prob = glcAssign(&#039;glbQG_f&#039;, x_L, x_U, Name, [], [], [], ...&lt;br /&gt;
                  [], [], [], x_0, ...&lt;br /&gt;
                  [], [], [], [], ...&lt;br /&gt;
                  f_Low, x_min, x_max, f_opt, x_opt);&lt;br /&gt;
&lt;br /&gt;
Prob.optParam.MaxFunc = 1500;&lt;br /&gt;
&lt;br /&gt;
Result1 = tomRun(&#039;glbFast&#039;, Prob, 1);  %Global solver&lt;br /&gt;
Result2 = tomRun(&#039;conSolve&#039;, Prob, 1); %Local solver&lt;br /&gt;
&lt;br /&gt;
% Result = tomRun(&#039;glbSolve&#039;, Prob, 1);&lt;br /&gt;
% Result = tomRun(&#039;glcSolve&#039;, Prob, 1);&lt;br /&gt;
% Result = tomRun(&#039;glcFast&#039;, Prob, 1);&lt;br /&gt;
% Result = tomRun(&#039;lgo&#039;, Prob, 1);&lt;br /&gt;
% Result = tomRun(&#039;oqnlp&#039;, Prob, 1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==glb_prob==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;glb_prob&amp;lt;/tt&amp;gt; there are 51 unconstrained global optimization test problems with sizes to 100 variables. In order to define the problem n and solve it execute the following in Matlab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob	= probInit(&#039;glb_prob&#039;,n); &lt;br /&gt;
Result  = tomRun(&#039;&#039;,Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==lgo1_prob==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;glo1_prob&amp;lt;/tt&amp;gt; there are 30 global optimization test problems in one dimension.  In order to define the problem n and solve it execute the following in Matlab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob	= probInit(&#039;lgo1_prob&#039;,n); &lt;br /&gt;
Result  = tomRun(&#039;&#039;,Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==lgo2_prob==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;glo2_prob&amp;lt;/tt&amp;gt; there are 30 global optimization test problems in two up to four dimensions. In order to define the problem n and solve it execute the following in Matlab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob	= probInit(&#039;lgo2_prob&#039;,n); &lt;br /&gt;
Result  = tomRun(&#039;&#039;,Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==gkls_prob==&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;gkls_prob&amp;lt;/tt&amp;gt; there are 300 global optimization test problems in two dimensions.  In order to define the problem n and solve it execute the following in Matlab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob	= probInit(&#039;gkls_prob&#039;,n); &lt;br /&gt;
Result  = tomRun(&#039;&#039;,Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=CGO_Using_the_Matlab_Interface&amp;diff=2627</id>
		<title>CGO Using the Matlab Interface</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=CGO_Using_the_Matlab_Interface&amp;diff=2627"/>
		<updated>2012-01-22T17:30:40Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the CGO Manual|link=[[CGO|CGO Manual]]}}&lt;br /&gt;
The CGO solver package is accessed via the &#039;&#039;tomRun &#039;&#039;driver routine, which calls the &#039;&#039;rbfSolve&#039;&#039;, &#039;&#039;ego &#039;&#039;or &#039;&#039;arbfMIP&#039;&#039; routines.&lt;br /&gt;
&lt;br /&gt;
====Table: The Costly global solver routines.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rbfSolve&#039;&#039;||Costly global solver routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine will also call local and global subsolvers.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ego&#039;&#039;||Costly global solver routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine will also call local and global subsolvers.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;arbfMIP&#039;&#039;||Costly global solver routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine will also call local and global subsolvers.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Xpress_Appendix_A&amp;diff=2626</id>
		<title>Xpress Appendix A</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Xpress_Appendix_A&amp;diff=2626"/>
		<updated>2012-01-22T17:28:06Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the Xpress Manual|link=[[Xpress|Xpress Manual]]}}&lt;br /&gt;
==The  Matlab Interface Routines - Main  Routines==&lt;br /&gt;
&lt;br /&gt;
===xpress===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; mixed-integer linear and quadratic programming (MILP, MIQP) and linear and quadratic programming (LP, QP) interface. Xpress &amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; solves problems of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{cccccc}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = 0.5*x^T*F*x + c^T*x \\&lt;br /&gt;
s/t &amp;amp; x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq  &amp;amp; x_{U} \\&lt;br /&gt;
&amp;amp; b_{L} &amp;amp; \leq  &amp;amp; Ax   &amp;amp; \leq  &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp;       &amp;amp;       &amp;amp; x_i \mathrm{\ \ integer} &amp;amp;  &amp;amp; i \in I \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_{L}, x_{U}\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F\in \mathbb{R}^{n\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_{L},b_{U}\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;. The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
====Calling  Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[x, slack, v, rc, f k, ninf, sinf,  Inform, basis, lpiter,  glnodes] = xpress(c, A, x L, x U, b L, b U, xpcontrol, callback, PriLev, Prob, IntVars, &lt;br /&gt;
                                                                              PI, SC, SI, sos1, sos2, F, LogFile, SaveFile, SaveMode, iisRequest, iisFile, saRequest);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
Problem description structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;c&#039;&#039;||Linear objective function cost coefficients, vector &#039;&#039;n × &#039;&#039;1.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;F&#039;&#039;||Square dense or sparse matrix.  Empty if non-quadratic problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraint matrix for linear constraints, dense or sparse matrix &#039;&#039;m × n&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L&#039;&#039;||Lower bounds on design parameters &#039;&#039;x&#039;&#039;. If empty assumed as zero.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_U&#039;&#039;||Upper bounds on design parameters &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L&#039;&#039;||Lower bounds on the linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|||&#039;&#039;&#039;The  following parameters are optional:&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_U&#039;&#039;||Upper bounds on the linear constraints.  If empty, then &#039;&#039;b&amp;lt;sub&amp;gt;U&amp;lt;/sub&amp;gt;&#039;&#039; = &#039;&#039;b&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt;&#039;&#039; assumed.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xpcontrol&#039;&#039;||Structure, where the fields are set to the Xpress &amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; control parameters that the user wants to specify values for. The control parameters are listed in Section 7 in the Xpress-Optimizer Reference Manual. The prefix XPRS is not used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;callback&#039;&#039;||Logical vector defining which callbacks to use in Xpress &amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt;. If the &#039;&#039;i&#039;&#039;th entry of the logical vector &#039;&#039;callback&#039;&#039; is set, the corresponding callback is defined. The callback calls the m-file specified in Table below.  The user may edit this file, or make a new copy, which is put in a directory that  is searched before the &#039;&#039;xpress &#039;&#039;directory in the Matlab path.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Printing level in the &#039;&#039;xpress m&#039;&#039;-file and the Xpress &amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; C-interface.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent&lt;br /&gt;
&lt;br /&gt;
= 1 Summary information&lt;br /&gt;
&lt;br /&gt;
= 2 More detailed information&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob&#039;&#039;||A  structure. If TOMLAB calls &#039;&#039;xpress&#039;&#039;, then &#039;&#039;Prob&#039;&#039; is the standard TOMLAB problem structure, otherwise  the user optionally may set: &#039;&#039;Prob.P  &#039;&#039;= &#039;&#039;ProblemNumber&#039;&#039;; , where ProblemNumber is some integer.  If  any callback is defined then  problem arrays are set as fields in &#039;&#039;Prob&#039;&#039;, and the &#039;&#039;Prob &#039;&#039;structure is always passed  to  the callback routines as the  last  parameter. The defined fields are &#039;&#039;Prob.c&#039;&#039;, &#039;&#039;Prob.x_L&#039;&#039;, &#039;&#039;Prob.x_U&#039;&#039;, &#039;&#039;Prob.A&#039;&#039;, &#039;&#039;Prob.b_L&#039;&#039;, &#039;&#039;Prob.b_U &#039;&#039;and &#039;&#039;Prob.QP.F&#039;&#039;.  If the input structure is empty ([ ]), then &#039;&#039;Prob.P&#039;&#039; = 1 is set.  If &#039;&#039;Prob.MIP.KNAPSACK = 1 &#039;&#039;and &#039;&#039;callback&#039;&#039; == 1, then the simple heuristic in &#039;&#039;xpcb_GL &#039;&#039;is used. If callback(9) is set, and &#039;&#039;Prob.MIP.KNAPSACK&#039;&#039;, or &#039;&#039;Prob.MIP &#039;&#039;is undefined, &#039;&#039;xpress &#039;&#039;is setting &#039;&#039;Prob.MIP.KNAPSACK = 0&#039;&#039;, to avoid the call to the heuristic.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IntVars&#039;&#039;||Defines which variables are integers, of the general  type  &#039;&#039;I &#039;&#039;or binary &#039;&#039;B&#039;&#039;. Variable indices should be in the  range [1,...,n].  If &#039;&#039;IntVars&#039;&#039; is a logical vector then all variables  &#039;&#039;i &#039;&#039;where &#039;&#039;IntVars&#039;&#039;(&#039;&#039;i&#039;&#039;)  &#039;&#039;&amp;gt; &#039;&#039;0 are defined  to be integers.   If  &#039;&#039;IntVars  &#039;&#039;is determined  to be a vector of indices then &#039;&#039;x&#039;&#039;(&#039;&#039;IntVars&#039;&#039;) are defined  as integers.  If the input is empty ([ ]), then no integers of type I or B are defined. The interface routine &#039;&#039;xpress &#039;&#039;checks which of the integer variables have lower bound &#039;&#039;x&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; &#039;&#039;= 0 and upper bound &#039;&#039;x&amp;lt;sub&amp;gt;U&amp;lt;/sub&amp;gt;  &#039;&#039;= 1, i.e. are binary 0/1 variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PI&#039;&#039;||Integer variables of type &#039;&#039;Partially Integer &#039;&#039;(PI), i.e. takes an integer value up to a specified limit,  and any real value above that limit.  PI must be a structure array where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PI.var&#039;&#039; is a vector of variable indices in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PI.lim&#039;&#039; is a vector  of limit  values for each of the variables specified  in PI.var,  i.e.   for variable &#039;&#039;i&#039;&#039;, that is the PI variable with index &#039;&#039;j &#039;&#039;in &#039;&#039;P I .var&#039;&#039;, then &#039;&#039;x&#039;&#039;(&#039;&#039;i&#039;&#039;) takes integer values in [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, P I .lim&#039;&#039;(&#039;&#039;j&#039;&#039;)] and continuous values in [&#039;&#039;PI.lim&#039;&#039;(&#039;&#039;j&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SC&#039;&#039;||A vector with indices for the integer variables of type &#039;&#039;Semi-continuous &#039;&#039;(SC), i.e. that takes either the  value 0 or a real  value  in the  range [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)],  assuming for some &#039;&#039;j&#039;&#039;,  that &#039;&#039;i &#039;&#039;= &#039;&#039;SC &#039;&#039;(&#039;&#039;j&#039;&#039;), where &#039;&#039;i &#039;&#039;is an variable number in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SI&#039;&#039;||A vector  with  indices  for the  integer variables  of type  &#039;&#039;Semi-integer &#039;&#039;(SI),  i.e.   that  takes either the value 0 or an integer value in the range [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)], assuming for some &#039;&#039;j&#039;&#039;, that &#039;&#039;i &#039;&#039;= &#039;&#039;SI &#039;&#039;(&#039;&#039;j&#039;&#039;), where &#039;&#039;i &#039;&#039;is an variable number in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sos1&#039;&#039;||A structure defining the &#039;&#039;Special Ordered Sets of Type One &#039;&#039;(sos1). Assume there are &#039;&#039;k &#039;&#039;sets of type  sos1,  then &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.var &#039;&#039;is a vector of indices for variables of type  sos1  in set  &#039;&#039;k&#039;&#039;. &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.row &#039;&#039;is the row number for the reference row identifying the ordering information for the  sos1 set,  i.e.  A(sos1(k).row,sos1(k).var) identifies  this  information.   As ordering information, also the objective function coefficients &#039;&#039;c &#039;&#039;could be used. Then as row number, 0 is instead given in &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.row&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sos2&#039;&#039;||A structure defining the &#039;&#039;Special Ordered  Sets of Type Two &#039;&#039;(sos2). Specified exactly as sos1 sets, see &#039;&#039;sos&#039;&#039;1 input variable description.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LogFile&#039;&#039;||File to write Xpress-MP log output to. Default is empty &amp;quot; in which case nothing is written.&lt;br /&gt;
&lt;br /&gt;
Please note that Xpress-MP appends it&#039;s output to the log file.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SaveFile&#039;&#039;||Filename for writing  the problem prior to calling the Xpress-MP solver.  If empty, no file is written.  The type of output is determined by the SaveMode parameter. Xpress-MP will always add an extension to the filename given here. The extension depends on the SaveMode chosen,  see below.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SaveMode&#039;&#039;||Character string with any combination of the following character flags:&lt;br /&gt;
&lt;br /&gt;
p - full precision of numerical values. o - one element per line.&lt;br /&gt;
&lt;br /&gt;
n - scaled.&lt;br /&gt;
&lt;br /&gt;
s - scrambled vector names. l - output in LP format.&lt;br /&gt;
&lt;br /&gt;
The extension added to the SaveFile name is .mat, unless the &#039;l&#039; flag is used in which case the extension is .lp.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisRequest&#039;&#039;||Flag indicating whether to compute an IIS and return it to MATLAB. This option can only be set for an LP problem.  If an IIS is found, XPRESS automatically changes the problem to make it feasible and reoptimizes it.&lt;br /&gt;
&lt;br /&gt;
= 0, Don&#039;t return IIS to MATLAB (default).&lt;br /&gt;
&lt;br /&gt;
= 1, Compute IIS and return it to MATLAB if an LP problem has been proven infeasible. The IIS is returned through the output parameter &#039;iis&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisFile&#039;&#039;||Flag indicating whether to write a file describing the IIS set or not.  If is set to 1, a file: LPprob.iis will be written.  Otherwise, no file is written..&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;saRequest&#039;&#039;||Structure telling whether and how you want XPRESS to perform a sensitivity analysis (SA).&lt;br /&gt;
&lt;br /&gt;
You can complete an SA on the objective function and right hand side vector. The saRequest structure contains two sub structures:&lt;br /&gt;
&lt;br /&gt;
.obj and .rhs&lt;br /&gt;
&lt;br /&gt;
They have one field each:&lt;br /&gt;
&lt;br /&gt;
.index&lt;br /&gt;
&lt;br /&gt;
In case of .obj.index, .index contains the indices of the columns whose objective function coefficients sensitivity ranges are required.&lt;br /&gt;
&lt;br /&gt;
In case of .rhs.index, .index contains the indices of the rows whose RHS coefficients sensitivity ranges are required.&lt;br /&gt;
&lt;br /&gt;
In both cases, the .index array has to be sorted, ascending.&lt;br /&gt;
&lt;br /&gt;
To get an SA of objective function on the four variables 120 to 123 (included) and variable&lt;br /&gt;
&lt;br /&gt;
6 the saRequest structure would look like this:&lt;br /&gt;
&lt;br /&gt;
saRequest.obj.index = [6 120 121 122 123];&lt;br /&gt;
&lt;br /&gt;
The result is returned through the output parameter &#039;sa&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Table: Callback functions.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index||m-file||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(1)||xpcb_USN||User Select Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(2)||xpcb_UPN||User Preprocess Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(3)||xpcb_UON||User Optimal Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(4)||xpcb_UIN||User Infeasible Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(5)||xpcb_UIS||User Integer Solution Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(6)||xpcb_UCN||User Node Cut-off Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(7)||xpcb_UCB||User Choose Branching Variable Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(8)||xpcb_IL||Simplex Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(9)||xpcb_GL||Global Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(10)||xpcb_BL||Barrier Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(11)||xpcb_UOP||User Output Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(12)||xpcb_CMI||User Defined Cut Manager Init Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(13)||xpcb_CMS||User Defined Cut Manager Termination Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(14)||xpcb_CM||User Defined Cut Manager Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(15)||vxpcb_TCM||User Defined Top Cut Manager Routine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x&#039;&#039;||Solution vector &#039;&#039;x &#039;&#039;with decision variable values (&#039;&#039;n × &#039;&#039;1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;slack&#039;&#039;||Slack variables (&#039;&#039;m × &#039;&#039;1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v&#039;&#039;||Lagrangian multipliers (dual solution vector) (&#039;&#039;m × &#039;&#039;1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc &#039;&#039;||Reduced costs. Lagrangian multipliers for simple bounds on &#039;&#039;x&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k	&#039;&#039;||Objective function value &#039;&#039;f &#039;&#039;(&#039;&#039;x&#039;&#039;) = &#039;&#039;c&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt; * x &#039;&#039;at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ninf 	&#039;&#039;||Number of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sinf 	&#039;&#039;||Sum of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform &#039;&#039;||Result of Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; run:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||Optimal solution found.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|2||Unbounded solution.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|4||Infeasible problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|5||Some error occurred.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See the Xpress&#039;&#039;MP&#039;&#039; problem  attributes XPRS LPSTATUS (for LP and QP) and XPRS MIPSTATUS (for MILP and MIQP) for more exact  information. They are available in the global variable &#039;&#039;xpProblemAttrib&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;basis &#039;&#039;||Basis status of constraints and variables, (&#039;&#039;m &#039;&#039;+ &#039;&#039;n × &#039;&#039;1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lpiter&#039;&#039;||Number of simplex iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;glnodes&#039;&#039;||Number of nodes visited.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iis&#039;&#039;||Structure containing IIS information (niis x 1). niis is the number of IISs found (see MAXIIS parameter). The fields:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisStatus&#039;&#039;||Status flag. (Only set in the first element of the iis array.) Possible values:&lt;br /&gt;
&lt;br /&gt;
2 = IIS was written to file LPprob.iis.&lt;br /&gt;
&lt;br /&gt;
1 = IIS was obtained.&lt;br /&gt;
&lt;br /&gt;
-1 = Problem was infeasible but no IIS found.&lt;br /&gt;
&lt;br /&gt;
-2 = Problem was not infeasible.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisMessage&#039;&#039;||Error message on error. (Only set in the first element of the iis array.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;colind&#039;&#039;||The column indices of the IIS set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rowind &#039;&#039;||The row indices of the IIS set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sa&#039;&#039;||Structure with information about the requested SA, if requested.  The fields:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;obj&#039;&#039;||Ranges for the variables in the objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rhs&#039;&#039;||Ranges for the right hand side values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|These fields are structures themselves. All four structures have identical field names:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;status&#039;&#039;||Status of the SA operation. Possible values:&lt;br /&gt;
&lt;br /&gt;
1 = Successful.&lt;br /&gt;
&lt;br /&gt;
0 = SA not requested.&lt;br /&gt;
&lt;br /&gt;
-1 = Error: MIP problem was presolved.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lower	&#039;&#039;||The lower range.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;upper	&#039;&#039;||The upper range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Global Parameters Used====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Parameter||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xpControlVariables&#039;&#039;||Structure with all  Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; control variables listed in Section 7 in the Xpress-Optimizer Reference Manual. Available with fresh variables in each callback, and after the optimization.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xpProblemAttrib&#039;&#039;||Structure with  all Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; problem attributes listed in Section 8 in the  Xpress-Optimizer Reference Manual. Available with fresh values in each callback, and after the optimization.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description====&lt;br /&gt;
&lt;br /&gt;
The interface  routine &#039;&#039;xpress&#039;&#039; calls Xpress &#039;&#039;MP&#039;&#039; to solve  LP,  QP, MILP  and MIQP  problems. The matrix A is transformed in xpress.m to the Xpress &#039;&#039;MP&#039;&#039; sparse matrix format. Error checking is made on the lengths of the vectors and matrices.&lt;br /&gt;
&lt;br /&gt;
===xpressTL===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
The TOMLAB &#039;&#039;/&#039;&#039;Xpress MILP, MIQP, LP and QP Interface. It solves linear programming (LP), quadratic programming (QP), mixed integer linear programming (MILP) and mixed integer quadratic programming problems (MIQP).  &#039;&#039;xpressTL &#039;&#039;solves problems of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{cccccc}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = 0.5*x^T*F*x + c^T*x  \\&lt;br /&gt;
s/t &amp;amp; x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq  &amp;amp; x_{U} \\&lt;br /&gt;
&amp;amp; b_{L} &amp;amp; \leq  &amp;amp; Ax   &amp;amp; \leq  &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp;       &amp;amp;       &amp;amp; x_i \mathrm{\ \ integer} &amp;amp;  &amp;amp; i \in I \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^{n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F\in \mathbb{R}^{n\times n}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;. The variables &amp;lt;math&amp;gt;b_L, b_U \in&lt;br /&gt;
\mathbb{R}^{m}&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = ProbCheck(Prob, &#039;xpress&#039;); &lt;br /&gt;
Result = xpressTL(Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039;, the problem structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c&#039;&#039;||Linear objective function cost coefficients, vector &#039;&#039;n × &#039;&#039;1.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.F&#039;&#039;||Square &#039;&#039;n × n &#039;&#039;dense or sparse matrix.  Empty if non-quadratic problem.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraint matrix for linear constraints, dense or sparse &#039;&#039;m × n &#039;&#039;matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L&#039;&#039;||Lower bounds on design parameters &#039;&#039;x&#039;&#039;. If empty assumed to be &#039;&#039;-I nf &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_U&#039;&#039;||Upper bounds on design parameters &#039;&#039;x&#039;&#039;. If empty assumed to be &#039;&#039;I nf &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L&#039;&#039;||Lower bounds on the linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_U&#039;&#039;||Upper bounds on the linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Printing level in the &#039;&#039;xpress m&#039;&#039;-file and the Xpress&#039;&#039;M P  &#039;&#039;C-interface.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent&lt;br /&gt;
&lt;br /&gt;
= 1 Summary information&lt;br /&gt;
&lt;br /&gt;
= 2 More detailed information&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.IntVars&#039;&#039;||Defines which variables are integers, of the general  type  &#039;&#039;I &#039;&#039;or binary &#039;&#039;B&#039;&#039;.  Variable indices should be in the  range [1,...,n].  If &#039;&#039;IntVars&#039;&#039; is a logical vector then all variables  &#039;&#039;i &#039;&#039;where &#039;&#039;I ntV ars&#039;&#039;(&#039;&#039;i&#039;&#039;)  &#039;&#039;&amp;gt; &#039;&#039;0 are defined  to be integers.   If  &#039;&#039;IntV ars  &#039;&#039;is determined to be a vector  of indices then &#039;&#039;x&#039;&#039;(&#039;&#039;IntVars&#039;&#039;) are defined as integers. If the input is empty ([ ]), then no integers of type I or B are defined. The interface routine &#039;&#039;xpress &#039;&#039;checks which of the integer variables have lower bound &#039;&#039;x&amp;lt;sub&amp;gt;L&amp;lt;/sub&amp;gt; &#039;&#039;= 0 and upper bound &#039;&#039;x&amp;lt;sub&amp;gt;U&amp;lt;/sub&amp;gt;  &#039;&#039;= 1, i.e. are binary 0/1 variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.PI&#039;&#039;||Integer variables of type &#039;&#039;Partially Integer &#039;&#039;(PI), i.e. takes an integer value up to a specified limit,  and any real value above that limit.  PI must be a structure array where:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PI.var &#039;&#039;is a vector of variable indices in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PI.lim&#039;&#039;||is a vector  of limit  values for each of the variables specified  in PI.var,  i.e.   for variable &#039;&#039;i&#039;&#039;, that is the PI variable with index &#039;&#039;j&#039;&#039;in &#039;&#039;P I .var&#039;&#039;, then &#039;&#039;x&#039;&#039;(&#039;&#039;i&#039;&#039;) takes integer values in [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, P I .lim&#039;&#039;(&#039;&#039;j&#039;&#039;)] and continuous values in [&#039;&#039;P I .lim&#039;&#039;(&#039;&#039;j&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.SC&#039;&#039;||A vector with indices for the integer variables of type &#039;&#039;Semi-continuous &#039;&#039;(SC), i.e. that takes either the  value 0 or a real  value  in the  range [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)],  assuming for some &#039;&#039;j&#039;&#039;,  that &#039;&#039;i &#039;&#039;= &#039;&#039;SC &#039;&#039;(&#039;&#039;j&#039;&#039;), where &#039;&#039;i &#039;&#039;is an variable number in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.SI&#039;&#039;||A vector with  indices  for the integer variables  of type  &#039;&#039;Semi-integer &#039;&#039;(SI),  i.e.   that  takes either the value 0 or an integer value in the range [&#039;&#039;xL &#039;&#039;(&#039;&#039;i&#039;&#039;)&#039;&#039;, xU &#039;&#039;(&#039;&#039;i&#039;&#039;)], assuming for some &#039;&#039;j&#039;&#039;, that &#039;&#039;i &#039;&#039;= &#039;&#039;SI &#039;&#039;(&#039;&#039;j&#039;&#039;), where &#039;&#039;i &#039;&#039;is an variable number in the range [1&#039;&#039;, ..., n&#039;&#039;].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.sos1&#039;&#039;||A structure defining the &#039;&#039;Special Ordered  Sets of Type One &#039;&#039;(sos1). Assume there are &#039;&#039;k &#039;&#039;sets of type  sos1,  then &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.var &#039;&#039;is a vector  of indices for variables of type  sos1  in set &#039;&#039;k&#039;&#039;. &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.row &#039;&#039;is the row number for the reference row identifying the ordering information for the  sos1 set,  i.e.  A(sos1(k).row,sos1(k).var) identifies  this information.   As ordering information, also the objective function coefficients &#039;&#039;c &#039;&#039;could be used. Then as row number, 0 is instead given in &#039;&#039;sos&#039;&#039;1(&#039;&#039;k&#039;&#039;)&#039;&#039;.row&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.sos2&#039;&#039;||A structure defining the &#039;&#039;Special Ordered Sets of Type Two &#039;&#039;(sos2). Specified exactly as sos1 sets, see &#039;&#039;M I P.sos&#039;&#039;1 input variable description.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.KNAPSACK&#039;&#039;||True if a knapsack problem is to be solved and a knapsack heuristic is to be used.  Also &#039;&#039;MIP.callback&#039;&#039;(9) = 1 must be set if the heuristic is to be executed.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.xpcontrol&#039;&#039;||Structure, where the fields are set to the Xpress&#039;&#039;M P  &#039;&#039;control parameters that the user wants to specify values for. The control parameters are listed in Section 7 in the Xpress-Optimizer Reference Manual. The prefix XPRS  is not used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.callback&#039;&#039;||Logical vector defining which callbacks to use in Xpress&#039;&#039;M P  &#039;&#039;. If the &#039;&#039;i&#039;&#039;th entry of the logical vector &#039;&#039;callback  &#039;&#039;is set, the corresponding callback is defined. The callback calls the m-file specified in the Table 12 below.  The user may edit this file, or make a new copy, which is put in a directory that is searched before the &#039;&#039;xpress &#039;&#039;directory in the Matlab path.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optParam&#039;&#039;||Structure with special fields for optimization parameters&lt;br /&gt;
&lt;br /&gt;
Fields used are: &#039;&#039;MaxIter &#039;&#039;- Maximal number of iterations or node visits.  &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;XPRESS.LogFile&#039;&#039;||File to write Xpress-MP log output to.  Default is empty &amp;quot; in which case nothing is written.&lt;br /&gt;
&lt;br /&gt;
Please note that Xpress-MP appends it&#039;s output to the log file.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;XPRESS.SaveFile&#039;&#039;||Filename for writing  the problem prior to calling the Xpress-MP solver.  If empty, no file is written.  The type of output is determined by the SaveMode parameter. Xpress-MP will always add an extension to the filename given here. The extension depends on the SaveMode chosen,  see below.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;XPRESS.SaveMode&#039;&#039;||Character string with any combination of the following character flags:&lt;br /&gt;
&lt;br /&gt;
p - full precision of numerical values. o - one element per line.&lt;br /&gt;
&lt;br /&gt;
n - scaled.&lt;br /&gt;
&lt;br /&gt;
s - scrambled vector names. l - output in LP format.&lt;br /&gt;
&lt;br /&gt;
The extension added to the SaveFile name is .mat, unless the &#039;l&#039; flag is used in which case the extension is .lp.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iis&#039;&#039;||Flag indicating whether to compute an IIS and return it to MATLAB. This option can only be set for an LP problem.  If an IIS is found, XPRESS automatically changes the problem to make it feasible and reoptimizes it.&lt;br /&gt;
&lt;br /&gt;
= 0, Don&#039;t return IIS to MATLAB (default).&lt;br /&gt;
&lt;br /&gt;
= 1, Compute IIS and return it to MATLAB if an LP problem has been proven infeasible. The IIS is returned through the output parameter &#039;iis&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisFile&#039;&#039;||Flag indicating whether to write a file describing the IIS set or not.  If is set to 1, a file: LPprob.iis will be written.  Otherwise, no file is written.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sa&#039;&#039;||Structure telling whether and how you want XPRESS to perform a sensitivity analysis (SA).&lt;br /&gt;
&lt;br /&gt;
You can complete an SA on the objective function and right hand side vector. The saRequest structure contains two sub structures:&lt;br /&gt;
&lt;br /&gt;
.obj and .rhs&lt;br /&gt;
&lt;br /&gt;
They have one field each:&lt;br /&gt;
&lt;br /&gt;
.index&lt;br /&gt;
&lt;br /&gt;
In case of .obj.index,  .index contains the indices of the columns whose objective function coefficients sensitivity ranges are required.&lt;br /&gt;
&lt;br /&gt;
In case of .rhs.index, .index contains the indices of the rows whose RHS coefficients sensitivity ranges are required.&lt;br /&gt;
&lt;br /&gt;
In both cases, the .index array has to be sorted, ascending.&lt;br /&gt;
&lt;br /&gt;
To get an SA of objective function on the four variables 120 to 123 (included) and variable&lt;br /&gt;
&lt;br /&gt;
6 the saRequest structure would look like this:&lt;br /&gt;
&lt;br /&gt;
saRequest.obj.index = [6 120 121 122 123];&lt;br /&gt;
&lt;br /&gt;
The result is returned through the output parameter &#039;sa&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&amp;lt;caption&amp;gt;Callback functions.&amp;lt;/caption&amp;gt;&lt;br /&gt;
!Index||m-file||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(1)||xpcb_USN||User Select Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(2)||xpcb_UPN||User Preprocess Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(3)||xpcb_UON||User Optimal Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(4)||xpcb_UIN||User Infeasible Node Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(5)||xpcb_UIS||User Integer Solution Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(6)||xpcb_UCN||User Node Cut-off Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(7)||xpcb_UCB||User Choose Branching Variable Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(8)||xpcb_IL||Simplex Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(9)||xpcb_GL||Global Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(10)||xpcb_BL||Barrier Log Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(11)||xpcb_UOP||User Output Callback&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(12)||xpcb_CMI||User Defined Cut Manager Init Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(13)||xpcb_CMS||User Defined Cut Manager Termination Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(14)||xpcb_CM||User Defined Cut Manager Routine&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(15)||xpcb_TCM||User Defined Top Cut Manager Routine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result &#039;&#039;structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations, or nodes visited.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||0: OK.&lt;br /&gt;
&lt;br /&gt;
1: Maximal number of iterations reached.&lt;br /&gt;
&lt;br /&gt;
2: Unbounded feasible region.&lt;br /&gt;
&lt;br /&gt;
4: No feasible point found.&lt;br /&gt;
&lt;br /&gt;
5: Error of some kind.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||If a MIP problem the control variable XPRS MIPSTATUS (xpControlVariables.MIPSTATUS) else XPRS LPSTATUS (xpControlVariables.LPSTATUS).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  starting point not known, set as empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Optimal active set, basis vector, in TOMLAB QP standard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;B&#039;&#039;(&#039;&#039;i&#039;&#039;) = 1: Include variable &#039;&#039;x&#039;&#039;(&#039;&#039;i&#039;&#039;) is in basic set.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;B&#039;&#039;(&#039;&#039;i&#039;&#039;) = 0: Variable &#039;&#039;x&#039;&#039;(&#039;&#039;i&#039;&#039;) is set on its lower bound.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;B&#039;&#039;(&#039;&#039;i&#039;&#039;) = &#039;&#039;-&#039;&#039;1: Variable &#039;&#039;x&#039;&#039;(&#039;&#039;i&#039;&#039;) is set on its upper bound.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum, &#039;&#039;f &#039;&#039;(&#039;&#039;x&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; &#039;&#039;).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient value at optimum, &#039;&#039;c &#039;&#039;or &#039;&#039;c &#039;&#039;+ &#039;&#039;F * x&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Optimal solution vector &#039;&#039;x&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; &#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds and dual solution vector). Set as &#039;&#039;v&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;  &#039;&#039;= [&#039;&#039;rc&#039;&#039;; &#039;&#039;v&#039;&#039;], where &#039;&#039;rc&#039;&#039; is the &#039;&#039;n&#039;&#039;-vector of reduced costs and &#039;&#039;v &#039;&#039;holds the &#039;&#039;m &#039;&#039;dual variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of each variable.&lt;br /&gt;
&lt;br /&gt;
0 = nonbasic (on x_L), 1 = nonbasic (on x_U), 2 = superbasic (between bounds), 3 = basic&lt;br /&gt;
&lt;br /&gt;
(between bounds)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of each constraint.&lt;br /&gt;
&lt;br /&gt;
0 = nonbasic (on b L), 1 = nonbasic (on b U), 2 = superbasic (between bounds), 3 = basic&lt;br /&gt;
&lt;br /&gt;
(between bounds)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Solver used - Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Solver algorithm used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations.  Set to &#039;&#039;Iter&#039;&#039;. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. Set to &#039;&#039;Iter&#039;&#039;. &#039;&#039;ConstrEv	&#039;&#039;Number of constraint evaluations.  Set to &#039;&#039;Iter&#039;&#039;. &#039;&#039;Prob&#039;&#039; Problem structure used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.ninf&#039;&#039;||Number of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.sinf&#039;&#039;||Sum of infeasibilities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.slack&#039;&#039;||Slack variables (&#039;&#039;m × &#039;&#039;1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.lpiter&#039;&#039;||Number of LP iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.glnodes&#039;&#039;||Number of nodes visited.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.basis&#039;&#039;||Basis status of constraints and variables (&#039;&#039;m &#039;&#039;+ &#039;&#039;n × &#039;&#039;1 vector) in the Xpress&#039;&#039;MP&#039;&#039; format, fields xState and bState has the same information in the Tomlab format.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.xpControlVariables&#039;&#039;||Structure with all Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; control variables listed in Section 7 in the Xpress-Optimizer eference Manual [1].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.xpProblemAttrib&#039;&#039;||Structure with all Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; problem attributes listed in Section 8 in the Xpress-Optimizer Reference Manual [1].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;XPRESS.iis&#039;&#039;||Structure containing IIS information (niis x 1). niis is the number of IISs found (see MAXIIS parameter). The fields:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisStatus&#039;&#039;||Status flag. (Only set in the first element of the iis array.) Possible values:&lt;br /&gt;
&lt;br /&gt;
2 = IIS was written to file LPprob.iis.&lt;br /&gt;
&lt;br /&gt;
1 = IIS was obtained.&lt;br /&gt;
&lt;br /&gt;
-1 = Problem was infeasible but no IIS found.&lt;br /&gt;
&lt;br /&gt;
-2 = Problem was not infeasible.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iisMessage	&#039;&#039;||Error message on error. (Only set in the first element of the iis array.)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;colind	&#039;&#039;||The column indices of the IIS set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rowind 	&#039;&#039;||The row indices of the IIS set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;XPRESS.sa	&#039;&#039;||Structure with information about the requested SA, if requested.  The fields:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;obj	&#039;&#039;||Ranges for the variables in the objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rhs	&#039;&#039;||Ranges for the right hand side values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|These fields are structures themselves. All four structures have identical field names:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;status&#039;&#039;||Status of the SA operation. Possible values:&lt;br /&gt;
&lt;br /&gt;
1 = Successful.&lt;br /&gt;
&lt;br /&gt;
0 = SA not requested.&lt;br /&gt;
&lt;br /&gt;
-1 = Error: MIP problem was presolved.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lower&#039;&#039;||The lower range.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;upper&#039;&#039;||The upper range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Global Parameters Used====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;xpControlVariables&#039;&#039;||Structure with  all  Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; control variables listed  in  Section  7 in  the Xpress- Optimizer  Reference Manual [1].   Available with  fresh variables in each callback, and after the optimization.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xpProblemAttrib&#039;&#039;||Structure with  all Xpress&amp;lt;sup&amp;gt;&#039;&#039;M P&#039;&#039;&amp;lt;/sup&amp;gt; problem  attributes  listed in Section 8 in the  Xpress- Optimizer Reference Manual [1]. Available with fresh variables in each callback, and after the optimization.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description====&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  Xpress&#039;&#039;M P  &#039;&#039;MILP, MIQP, QP and LP interface calls the interface routine &#039;&#039;xpress.m&#039;&#039;.  Values &#039;&#039;&amp;gt; &#039;&#039;1020 and &#039;&#039;I nf &#039;&#039;values are set to 1020 , and the opposite for negative numbers.  An empty objective coefficient &#039;&#039;c&#039;&#039;-vector is set to the zero-vector.&lt;br /&gt;
&lt;br /&gt;
====Examples====&lt;br /&gt;
&lt;br /&gt;
See &#039;&#039;mip prob&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====M-files Used====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;xpress.m&#039;&#039;, &#039;&#039;mipRun.m&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====See Also====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mipSolve&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Xpress_Test_Routines_in_Tomlab_Format&amp;diff=2625</id>
		<title>Xpress Test Routines in Tomlab Format</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Xpress_Test_Routines_in_Tomlab_Format&amp;diff=2625"/>
		<updated>2012-01-22T17:26:42Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the Xpress Manual|link=[[Xpress|Xpress Manual]]}}&lt;br /&gt;
A set of test routines have been defined  illustrating  the combined use of TOMLAB and Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt;. The test routines are shown in [[#Table: The test routines and utilities.]]. The knapsack test  routine &#039;&#039;xpknapsTL&#039;&#039; is similar  to &#039;&#039;xpknaps&#039;&#039; discussed in the previous subsection. It runs three knapsack test examples.  It is possible to change the cut strategy and whether to use the knapsack heuristic in the callback routine &#039;&#039;xpcb_gl&#039;&#039;. The problems are setup using the TOMLAB format.&lt;br /&gt;
&lt;br /&gt;
====Table: The test routines and utilities.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function||Description &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xptomtest1|xptomtest1]]||Tests of problems predefined in the TOMLAB IF format. LP, QP and MIP problems are solved calling the driver routine &#039;&#039;tomRun&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xptomtest2|xptomtest2]]||Tests of a simple MIP problem defined in the TOMLAB (TQ) format.&lt;br /&gt;
&lt;br /&gt;
The problem is solved as an LP and MIP problem, with or without slacks defined.  &#039;&#039;tomRun&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xpknapsTL|xpknapsTL]]||The same tests as in &#039;&#039;xpknaps&#039;&#039;, but the TOMLAB  format and system is used.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following example shows how to run a predefined problem, one of the  problems in &#039;&#039;xpknapsTL&#039;&#039;, using  the TOMLAB  Init File (IF) format. Some fields that changes control variables are set to make Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; work slower. Then a simple predefined heuristic is run to try to improve the convergence. For this example it can get down the number of node visited from 135 to 35.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = ProbInit(&#039;mip_prob&#039;,7); % Create Prob structure from predefined problem&lt;br /&gt;
Prob.MIP&lt;br /&gt;
ans =&lt;br /&gt;
    xpcontrol: []&lt;br /&gt;
      IntVars: [30x1 double]&lt;br /&gt;
    VarWeight: [30x1 double]&lt;br /&gt;
     KNAPSACK: 1&lt;br /&gt;
     callback: [14x1 double]&lt;br /&gt;
% Make Xpress-MP work slower by disabling presolve and cuts.&lt;br /&gt;
Prob.MIP.xpcontrol.CUTSTRATEGY = 0; % Use no cuts&lt;br /&gt;
Prob.MIP.xpcontrol.PRESOLVE = 0;    % Use no presolve&lt;br /&gt;
Prob.MIP.xpcontrol.MIPLOG = 3;      % Call the callback each node&lt;br /&gt;
Result = tomRun(&#039;xpress-mp&#039;,Prob,1); % Call Xpress-MP using Tomlab driver&lt;br /&gt;
&lt;br /&gt;
===== * * * =============================================== * * *&lt;br /&gt;
TOMLAB SOL - Three weeks demonstration single user license&lt;br /&gt;
=================================================================&lt;br /&gt;
Problem: mip_prob -  7: Weingartner 1 - 2/28 0-1 knapsack  f_k -141278.000000000000000000&lt;br /&gt;
                                              User given f(x_*)-141278.000000000000000000&lt;br /&gt;
&lt;br /&gt;
Solver: Xpress-MP.  EXIT=0.  INFORM=6.&lt;br /&gt;
Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver&lt;br /&gt;
Global search complete - integer solution found&lt;br /&gt;
&lt;br /&gt;
FuncEv  135 GradEv    0 Iter  135&lt;br /&gt;
CPU time: 0.250000 sec. Elapsed time: 0.250000 sec.&lt;br /&gt;
&lt;br /&gt;
Prob.MIP.callback(9) = 1; % Enable Global Log callback&lt;br /&gt;
Result = tomRun(&#039;xpress-mp&#039;,Prob,1);&lt;br /&gt;
% Because Prob.MIP.KNAPSACK == 1, the predefined heuristic is tried&lt;br /&gt;
&lt;br /&gt;
--- Global Log. Node      1. Node depth   1. Best Bound -142019.000000.&lt;br /&gt;
Node 1: LP-obj -142019;  Heuristic value -139508 *** Updated cutoff to -139507&lt;br /&gt;
--- Global Log. Node      2. Node depth   2. Best Bound -142019.000000.&lt;br /&gt;
Node 2: LP-obj -141897;  Heuristic value -140768 *** Updated cutoff to -140767&lt;br /&gt;
--- Global Log. Node      3. Node depth   3. Best Bound -142019.000000.&lt;br /&gt;
Node 3: LP-obj -141873;  Heuristic value -138493&lt;br /&gt;
--- Global Log. Node      4. Node depth   4. Best Bound -142019.000000.&lt;br /&gt;
Node 4: LP-obj -141726;  Heuristic value -139618&lt;br /&gt;
--- Global Log. Node      5. Node depth   3. Best Bound -142019.000000.&lt;br /&gt;
Node 5: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node      6. Node depth   5. Best Bound -142019.000000.&lt;br /&gt;
Node 6: LP-obj -141707;  Heuristic value -138168&lt;br /&gt;
--- Global Log. Node      7. Node depth   6. Best Bound -142019.000000.&lt;br /&gt;
Node 7: LP-obj -141655;  Heuristic value -138068&lt;br /&gt;
--- Global Log. Node      8. Node depth   5. Best Bound -142019.000000.&lt;br /&gt;
Node 8: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node      9. Node depth   6. Best Bound -142019.000000.&lt;br /&gt;
Node 9: Not applying heuristic (status is Infeasible)&lt;br /&gt;
--- Global Log. Node     10. Node depth   6. Best Bound -142019.000000.&lt;br /&gt;
Node 10: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node     11. Node depth   2. Best Bound -142019.000000.&lt;br /&gt;
Node 11: LP-obj -141465;  Heuristic value -139508&lt;br /&gt;
--- Global Log. Node     12. Node depth   3. Best Bound -142019.000000.&lt;br /&gt;
Node 12: LP-obj -141062;  Heuristic value -139933&lt;br /&gt;
--- Global Log. Node     13. Node depth   3. Best Bound -142019.000000.&lt;br /&gt;
Node 13: Not applying heuristic (status is Infeasible)&lt;br /&gt;
--- Global Log. Node     14. Node depth   3. Best Bound -142019.000000.&lt;br /&gt;
Node 14: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node     15. Node depth   3. Best Bound -141896.953125.&lt;br /&gt;
Node 15: LP-obj -141721;  Heuristic value -141278 *** Updated cutoff to -141277&lt;br /&gt;
--- Global Log. Node     16. Node depth   4. Best Bound -141896.953125.&lt;br /&gt;
Node 16: LP-obj -141694;  Heuristic value -141168&lt;br /&gt;
--- Global Log. Node     17. Node depth   5. Best Bound -141896.953125.&lt;br /&gt;
Node 17: LP-obj -141640;  Heuristic value -141168&lt;br /&gt;
--- Global Log. Node     18. Node depth   6. Best Bound -141896.953125.&lt;br /&gt;
Node 18: LP-obj -141572;  Heuristic value -141278 *** Updated cutoff to -141277&lt;br /&gt;
--- Global Log. Node     19. Node depth   7. Best Bound -141896.953125.&lt;br /&gt;
Node 19: LP-obj -141360;  Heuristic value -141258&lt;br /&gt;
--- Global Log. Node     20. Node depth   7. Best Bound -141896.953125.&lt;br /&gt;
Node 20: LP-obj -141565;  Heuristic value -141278 *** Updated cutoff to -141277&lt;br /&gt;
--- Global Log. Node     21. Node depth   8. Best Bound -141896.953125.&lt;br /&gt;
Node 21: LP-obj -141349;  Heuristic value -141247&lt;br /&gt;
--- Global Log. Node     22. Node depth   8. Best Bound -141896.953125.&lt;br /&gt;
Node 22: LP-obj -141498;  Heuristic value -141278 *** Updated cutoff to -141277&lt;br /&gt;
--- Global Log. Node     23. Node depth   8. Best Bound -141896.953125.&lt;br /&gt;
Node 23: Not applying heuristic (status is Infeasible)&lt;br /&gt;
--- Global Log. Node     24. Node depth   8. Best Bound -141896.953125. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 24: B&amp;amp;B integer solution found; objval -141278&lt;br /&gt;
--- Global Log. Node     25. Node depth   8. Best Bound -141726.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 25: B&amp;amp;B integer solution found; objval -141056&lt;br /&gt;
--- Global Log. Node     26. Node depth   4. Best Bound -141720.515625. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 26: B&amp;amp;B integer solution found; objval -140695&lt;br /&gt;
--- Global Log. Node     27. Node depth   3. Best Bound -141693.593750. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 27: B&amp;amp;B integer solution found; objval -141524&lt;br /&gt;
--- Global Log. Node     28. Node depth   4. Best Bound -141640.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 28: B&amp;amp;B integer solution found; objval -140974&lt;br /&gt;
--- Global Log. Node     29. Node depth   3. Best Bound -141465.140625. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 29: LP-obj -141341;  Heuristic value -139398&lt;br /&gt;
--- Global Log. Node     30. Node depth   3. Best Bound -141465.140625. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 30: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node     31. Node depth   3. Best Bound -141465.140625. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 31: Not applying heuristic (status is Infeasible)&lt;br /&gt;
--- Global Log. Node     32. Node depth   3. Best Bound -141360.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 32: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node     33. Node depth   7. Best Bound -141360.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 33: Not applying heuristic (status is Infeasible)&lt;br /&gt;
--- Global Log. Node     34. Node depth   7. Best Bound -141349.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 34: Not applying heuristic (status is Cutoff in dual)&lt;br /&gt;
--- Global Log. Node     35. Node depth   8. Best Bound -141349.000000. Best MIP f(x) -141278.000000&lt;br /&gt;
Node 35: Not applying heuristic (status is Infeasible)&lt;br /&gt;
&lt;br /&gt;
===== * * * =============================================== * * *&lt;br /&gt;
TOMLAB SOL - Three weeks demonstration single user license&lt;br /&gt;
=================================================================&lt;br /&gt;
Problem: mip_prob -  7: Weingartner 1 - 2/28 0-1 knapsack  f_k -141278.000000000000000000&lt;br /&gt;
                                              User given f(x_*)-141278.000000000000000000&lt;br /&gt;
&lt;br /&gt;
Solver: Xpress-MP.  EXIT=0.  INFORM=6.&lt;br /&gt;
Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver&lt;br /&gt;
Global search complete - integer solution found&lt;br /&gt;
&lt;br /&gt;
FuncEv   35 GradEv    0 Iter   35&lt;br /&gt;
CPU time: 3.156000 sec. Elapsed time: 3.156000 sec.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example shows how to define and solve a problem using the TOMLAB  Format (TQ). The matrices and vectors for the problem is defined in a &#039;&#039;mat &#039;&#039;file.  Fields that changes the Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; control variables are set to show how to influence the work of the solver. In this case the changes slow down its performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clear all&lt;br /&gt;
load bilp1.mat&lt;br /&gt;
whos&lt;br /&gt;
  Name          Size         Bytes  Class&lt;br /&gt;
&lt;br /&gt;
  A            27x1956      422496  double array&lt;br /&gt;
  b_L          27x1            216  double array&lt;br /&gt;
  b_U          27x1            216  double array&lt;br /&gt;
  c          1956x1          15648  double array&lt;br /&gt;
  noivars    1956x1                15648  double&lt;br /&gt;
  x_L        1956x1          15648  double array&lt;br /&gt;
  x_U        1956x1          15648  double array&lt;br /&gt;
&lt;br /&gt;
Grand total is 58735 elements using 469880 bytes&lt;br /&gt;
&lt;br /&gt;
Prob = mipAssign(c, A, b_L, b_U, x_L, x_U,[],&#039;bilp1&#039;,[],[],noivars);&lt;br /&gt;
Result = tomRun(&#039;xpress-mp&#039;,Prob,1);&lt;br /&gt;
&lt;br /&gt;
===== * * * =============================================== * * *&lt;br /&gt;
TOMLAB SOL - Three weeks demonstration single user license&lt;br /&gt;
=================================================================&lt;br /&gt;
Problem: No Init File    -  1: bilp1            f_k       0.000000000000000000&lt;br /&gt;
                                       sum(|constr|)      0.000000000000025960&lt;br /&gt;
&lt;br /&gt;
Solver: Xpress-MP.  EXIT=0.  INFORM=6.&lt;br /&gt;
Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver&lt;br /&gt;
Global search complete - integer solution found&lt;br /&gt;
&lt;br /&gt;
FuncEv   67 GradEv    0 Iter   67&lt;br /&gt;
CPU time: 4.359000 sec. Elapsed time: 4.375000 sec.&lt;br /&gt;
&lt;br /&gt;
=== * * * ================================================== * * *&lt;br /&gt;
&lt;br /&gt;
Prob.MIP&lt;br /&gt;
ans =&lt;br /&gt;
      IntVars: 1956&lt;br /&gt;
    VarWeight: []&lt;br /&gt;
     KNAPSACK: []&lt;br /&gt;
          fIP: []&lt;br /&gt;
          xIP: []&lt;br /&gt;
           PI: []&lt;br /&gt;
           SC: []&lt;br /&gt;
           SI: []&lt;br /&gt;
         sos1: []&lt;br /&gt;
         sos2: []&lt;br /&gt;
&lt;br /&gt;
% Make Xpress-MP work slower by disabling presolve and cuts.&lt;br /&gt;
Prob.MIP.xpcontrol.CUTSTRATEGY = 0;&lt;br /&gt;
Prob.MIP.xpcontrol.MIPPRESOLVE = 0;&lt;br /&gt;
Prob.MIP.xpcontrol.PRESOLVE = 0;&lt;br /&gt;
Result = tomRun(&#039;xpress-mp&#039;,Prob,2);&lt;br /&gt;
&lt;br /&gt;
===== * * * =============================================== * * *&lt;br /&gt;
TOMLAB SOL - Three weeks demonstration single user license&lt;br /&gt;
=================================================================&lt;br /&gt;
Problem: No Init File    -  1: bilp1            f_k       0.000000000000000000&lt;br /&gt;
                                       sum(|constr|)      0.000000000000020365&lt;br /&gt;
&lt;br /&gt;
Solver: Xpress-MP.  EXIT=0.  INFORM=6.&lt;br /&gt;
Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver&lt;br /&gt;
Global search complete - integer solution found&lt;br /&gt;
&lt;br /&gt;
FuncEv  105 GradEv    0 Iter  105&lt;br /&gt;
CPU time: 0.578000 sec. Elapsed time: 0.578000 sec.&lt;br /&gt;
&lt;br /&gt;
=== * * * ================================================== * * *&lt;br /&gt;
&lt;br /&gt;
Prob.MIP.xpcontrol.MIPPRESOLVE = 7; % Try another MIPPRESOLVE value&lt;br /&gt;
Result = tomRun(&#039;xpress-mp&#039;, Prob, 1);&lt;br /&gt;
&lt;br /&gt;
===== * * * =============================================== * * *&lt;br /&gt;
TOMLAB SOL - Three weeks demonstration single user license&lt;br /&gt;
=================================================================&lt;br /&gt;
Problem: No Init File    -  1: bilp1            f_k       0.000000000000000000&lt;br /&gt;
                                       sum(|constr|)      0.000000000000011373&lt;br /&gt;
&lt;br /&gt;
Solver: Xpress-MP.  EXIT=0.  INFORM=6.&lt;br /&gt;
Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver&lt;br /&gt;
Global search complete - integer solution found&lt;br /&gt;
&lt;br /&gt;
FuncEv   82 GradEv    0 Iter   82&lt;br /&gt;
CPU time: 3.250000 sec. Elapsed time: 3.250000 sec.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Xpress_Test_Routines_in_Non-Tomlab_Format&amp;diff=2624</id>
		<title>Xpress Test Routines in Non-Tomlab Format</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Xpress_Test_Routines_in_Non-Tomlab_Format&amp;diff=2624"/>
		<updated>2012-01-22T17:25:00Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the Xpress Manual|link=[[Xpress|Xpress Manual]]}}&lt;br /&gt;
A set of test routines have been defined illustrating  the use of the &#039;&#039;xpress &#039;&#039;main routine.  The test routines and utilities are shown in [[#Table: The test routines and utilities.]].&lt;br /&gt;
&lt;br /&gt;
It is easy to call the test routines, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = xptest1; &lt;br /&gt;
x = xptest2; &lt;br /&gt;
x = xptest3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will call the three routines solving GAP problems. The &#039;&#039;xpaircrew &#039;&#039;test problem has no input parameters, just call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xpaircrew;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The knapsack test routine runs three test examples. It is possible to change the cut strategy (third input parameter) and whether to use the knapsack heuristic in the callback routine &#039;&#039;xpcb_gl &#039;&#039;(second input parameter). To run the second test example, using the simple knapsack heuristic, and aggressive cuts, the call is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xpknaps(2,1,2);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first parameter selects the test problem. Calling without any parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xpknaps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is the same as the call&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xpknaps(1,0,0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Table: The test routines and utilities.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix B#abc2gap|abc2gap]]||Utility to convert a Generalized Assignment Problem (GAP) to standard form for Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xpbiptest|xpbiptest]]||Test of three large binary integer linear problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xpiptest|xpiptest]]||Test of three large integer linear problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xpknaps|xpknaps]]||Test of knapsack problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xptest1|xptest1]]||Test of a Generalized Assignment Problem (GAP).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xptest2|xptest2]]||Test of the same GAP problem as &#039;&#039;xptest1&#039;&#039;, but using sos1 variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Xpress Appendix C#xptest3|xptest3]]||Test of a Generalized Assignment Problem (GAP).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Xpress_Callbacks_in_Matlab&amp;diff=2623</id>
		<title>Xpress Callbacks in Matlab</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Xpress_Callbacks_in_Matlab&amp;diff=2623"/>
		<updated>2012-01-22T17:22:46Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the Xpress Manual|link=[[Xpress|Xpress Manual]]}}&lt;br /&gt;
There are eleven of the Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; callbacks defined in the interface. A logical vector defines the callbacks to be used in Xpress &#039;&#039;MP&#039;&#039;. This vector is named &#039;&#039;callback &#039;&#039;and is one of the input variables to the level 1 interface routine &#039;&#039;xpress&#039;&#039;. If the &#039;&#039;i&#039;&#039;th entry of the logical vector callback is set, the corresponding callback is defined. The callback calls the &#039;&#039;m&#039;&#039;-file specified in [[#Table: The m-file callback routines.]].  The user can edit this &#039;&#039;m&#039;&#039;-file directly, or make a new copy. It is important that a new copy is placed in a directory that is searched before the &#039;&#039;xpress &#039;&#039;directory when Matlab goes through the Matlab path.&lt;br /&gt;
&lt;br /&gt;
====Table: The m-file callback routines.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&amp;lt;caption&amp;gt;The m-file callback routines.&amp;lt;/caption&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Index||m-file||Description||Section&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(1)||xpcb_usn||User Select Node Callback||[[Xpress Appendix D#xpcb_usn]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(2)||xpcb_upn||User Preprocess Node Callback||[[Xpress Appendix D#xpcb_upn]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(3)||xpcb_uon||User Optimal Node Callback||[[Xpress Appendix D#xpcb_uon]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(4)||xpcb_uin||User Infeasible Node Callback||[[Xpress Appendix D#xpcb_uin]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(5)||xpcb_uis||User Integer Solution Callback||[[Xpress Appendix D#xpcb_uis]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(6)||xpcb_ucn||User Node Cut-off Callback||[[Xpress Appendix D#xpcb_ucn]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(7)||xpcb_ucb||User Choose Branching Variable Callback||[[Xpress Appendix D#xpcb_ucb]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(8)||xpcb_il||Simplex Log Callback||[[Xpress Appendix D#xpcb_il]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(9)||xpcb_gl||Global Log||[[Xpress Appendix D#xpcb_gl]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(10)||xpcb_bl||Barrier Log Callback||[[Xpress Appendix D#xpcb_bl]]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|(11)||xpcb_uop||User Output Callback||[[Xpress Appendix D#xpcb_uop]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Before each call to the callback routine, the interface is defining the control variables and problem attributes as global variables in Matlab. By making the following global declarations in the callback &#039;&#039;m&#039;&#039;-file, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global xpControlVariables xpProblemAttrib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
all control variables and problem attributes are accessible as subfields to the global variables.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Prob &#039;&#039;structure is input to all callback &#039;&#039;m&#039;&#039;-file routines as the last parameter. If TOMLAB calls &#039;&#039;xpress&#039;&#039;, then &#039;&#039;Prob &#039;&#039;is the standard TOMLAB  problem structure, otherwise the user optionally can set:  &#039;&#039;Prob.P &#039;&#039;= &#039;&#039;ProblemNumber&#039;&#039;;, where ProblemNumber is some integer.  If any callback is defined (see description of callback) then the arrays that define the current problem are set by the interface as fields in &#039;&#039;Prob&#039;&#039;. The defined fields are &#039;&#039;Prob.c&#039;&#039;, &#039;&#039;Prob.x_L&#039;&#039;, &#039;&#039;Prob.x_U&#039;&#039;, &#039;&#039;Prob.A&#039;&#039;, &#039;&#039;Prob.b_L&#039;&#039;, &#039;&#039;Prob.b_U &#039;&#039;and. &#039;&#039;Prob.QP.F&#039;&#039;. The user then has full access to the original problem in the callback routine.&lt;br /&gt;
&lt;br /&gt;
In one of the callback routines, &#039;&#039;xpcb_gl&#039;&#039;, a simple knapsack heuristic is implemented. This heuristic is also part of the standard Xpress&amp;lt;sup&amp;gt;&#039;&#039;MP&#039;&#039;&amp;lt;/sup&amp;gt; example files. Running the knapsack test program &#039;&#039;xpknaps&#039;&#039;, with the second input argument &#039;&#039;Run &#039;&#039;= 1 runs the knapsack heuristic in the callback. &#039;&#039;xpknaps&#039;&#039; sets &#039;&#039;Prob.MIP.KNAPSACK = 1&#039;&#039; to enable execution of the heuristic in &#039;&#039;xpcb_gl&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If there are no integer variables in the problem to be solved, i.e.  a pure LP or QP problem, then the first seven callbacks as well as the 9th  callback (Global Log) are automatically disabled. If the problem is a mixed-integer problem, then the  8th  callback (Simplex Log Callback) is disabled. This change is made on around row 254 in &#039;&#039;xpress.m &#039;&#039;and the user may comment this row (&#039;&#039;callback&#039;&#039;(8) = 0;) to avoid it.&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=TOMLAB_Problem_Types_and_Solver_Routines&amp;diff=2622</id>
		<title>TOMLAB Problem Types and Solver Routines</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=TOMLAB_Problem_Types_and_Solver_Routines&amp;diff=2622"/>
		<updated>2012-01-22T17:20:02Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Manuals]]&lt;br /&gt;
{{Part Of Manual|title=the TOMLAB Manual|link=[[TOMLAB|TOMLAB Manual]]}}&lt;br /&gt;
Section [[#Problem Types Defined in TOMLAB|Problem Types Defined in TOMLAB]] defines all problem types in TOMLAB. Each problem definition is accompanied by brief suggestions on suitable solvers. This is followed in [[#Solver Routines in TOMLAB|Solver Routines in TOMLAB]] by a complete list of the available solver routines in TOMLAB and the various available extensions,  such as /SOL and /CGO.&lt;br /&gt;
&lt;br /&gt;
==Problem Types Defined in TOMLAB==&lt;br /&gt;
&lt;br /&gt;
===Unconstrained Optimization Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;unconstrained optimization &#039;&#039;&#039;(&#039;&#039;&#039;uc&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt; . For unbounded variables, the corresponding elements of &amp;lt;math&amp;gt;x_L,x_U&amp;lt;/math&amp;gt; may be set to &amp;lt;math&amp;gt;\pm \infty&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /KNITRO and TOMLAB /SNOPT&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  Base Module routine &#039;&#039;ucSolve &#039;&#039;includes several of the most popular search step methods for unconstrained optimization. The search step methods for unconstrained optimization included in &#039;&#039;ucSolve &#039;&#039;are: the Newton method, the quasi-Newton BFGS and DFP method, the Fletcher-Reeves and Polak-Ribiere conjugate-gradient method, and the Fletcher conjugate descent method. The quasi-Newton methods may either update the inverse Hessian (standard) or the Hessian itself. The Newton method and the quasi-Newton methods updating the Hessian use a subspace minimization technique to handle rank problems. The quasi-Newton algorithms also use safe guarding techniques to avoid rank problem in the updated matrix.&lt;br /&gt;
&lt;br /&gt;
Another TOMLAB Base Module solver suitable for unconstrained problems is the structural trust region algorithm &#039;&#039;sTrustr&#039;&#039;, combined with an initial  trust region radius algorithm.  It treats partially separable functions. Safeguarded BFGS or DFP are used for the quasi-Newton update, if the analytical Hessian is not used. The set of constrained nonlinear solvers could also be used for unconstrained problems.&lt;br /&gt;
&lt;br /&gt;
===Quadratic Programming Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;quadratic  programming  &#039;&#039;&#039;(&#039;&#039;&#039;qp&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /KNITRO,  TOMLAB /SNOPT and TOMLAB /MINLP&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A positive semidefinite &#039;&#039;F &#039;&#039;-matrix gives a convex QP, otherwise the problem is nonconvex. Nonconvex quadratic programs are solved with a standard active-set method, implemented in the TOM routine &#039;&#039;qpSolve&#039;&#039;. &#039;&#039;qpSolve &#039;&#039;explicitly  treats both inequality and equality constraints, as well as lower and upper bounds on the variables (simple bounds). It converges to a local minimum for indefinite quadratic programs.&lt;br /&gt;
&lt;br /&gt;
In TOMLAB &#039;&#039;MINOS &#039;&#039;in the general or the QP-version (&#039;&#039;QP-MINOS&#039;&#039;),  or the dense QP solver &#039;&#039;QPOPT &#039;&#039;may be used. In the TOMLAB  /SOL extension the &#039;&#039;SQOPT &#039;&#039;solver is suitable for both dense and large, sparse convex QP and &#039;&#039;SNOPT &#039;&#039;works fine for dense or sparse nonconvex QP.&lt;br /&gt;
&lt;br /&gt;
For very large-scale problems, an interior point solver is recommended,  such as TOMLAB  /KNITRO or TOMLAB /BARNLP.&lt;br /&gt;
&lt;br /&gt;
TOMLAB  /CPLEX, TOMLAB  /Xpress and TOMLAB  /XA should always be considered  for large-scale QP problems.&lt;br /&gt;
&lt;br /&gt;
===Constrained Nonlinear Optimization Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;constrained nonlinear optimization &#039;&#039;&#039;problem (&#039;&#039;&#039;con&#039;&#039;&#039;) is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A&lt;br /&gt;
\in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /SNOPT, TOMLAB /NPSOL and TOMLAB /KNITRO&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For general constrained nonlinear optimization a sequential quadratic programming (SQP) method by Schittkowski is implemented in the TOMLAB  Base Module solver &#039;&#039;conSolve&#039;&#039;.  &#039;&#039;conSolve &#039;&#039;also includes an implementation of the Han-Powell SQP method. There are also a TOMLAB  Base Module routine &#039;&#039;nlpSolve &#039;&#039;implementing the Filter SQP by Fletcher and Leyffer.&lt;br /&gt;
&lt;br /&gt;
Another constrained solver in TOMLAB  is the structural trust region algorithm &#039;&#039;sTrustr&#039;&#039;, described above. Currently, &#039;&#039;sTrustr &#039;&#039;only solves problems where the feasible region, defined by the constraints, is convex. TOMLAB /MINOS  solves constrained nonlinear programs. The TOMLAB  /SOL extension gives an additional set of general solvers for dense or sparse problems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sTrustr&#039;&#039;, &#039;&#039;pdco &#039;&#039;and &#039;&#039;pdsco &#039;&#039;in TOMLAB  Base Module handle nonlinear problems with &#039;&#039;linear  &#039;&#039;constraints only.&lt;br /&gt;
&lt;br /&gt;
There are many other options for large-scale nonlinear optimization to consider in TOMLAB. TOMLAB /CONOPT, TOMLAB /BARNLP, TOMLAB  /MINLP, TOMLAB  /NLPQL and TOMLAB  /SPRNLP.&lt;br /&gt;
&lt;br /&gt;
===Box-bounded Global Optimization Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;box-bounded global optimization &#039;&#039;&#039;(&#039;&#039;&#039;glb&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{llcccll}&lt;br /&gt;
-\infty &amp;lt; &amp;amp;x_{L} &amp;amp; \leq  &amp;amp; x &amp;amp; \leq &amp;amp; x_{U}&amp;amp; &amp;lt; \infty , \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, i.e. problems that have finite simple bounds on all variables.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /LGO and TOMLAB /CGO with  TOMLAB /SOL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The TOM solver &#039;&#039;glbSolve &#039;&#039;implements the DIRECT algorithm, which is a modification of the standard Lipschitzian approach that eliminates the need to specify a Lipschitz constant. In &#039;&#039;glbSolve &#039;&#039;no derivative information is used. For global optimization problems with expensive function evaluations the TOMLAB  /CGO  routine &#039;&#039;ego &#039;&#039;implements the Efficient Global Optimization (EGO) algorithm. The idea of the EGO algorithm is to first fit a response surface to data collected by evaluating the objective function at a few points.  Then, EGO balances between finding the minimum of the surface and improving the approximation by sampling where the prediction error may be high.&lt;br /&gt;
&lt;br /&gt;
===Global Mixed-integer Nonlinear Programming Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;global mixed-integer nonlinear programming  &#039;&#039;&#039;(&#039;&#039;&#039;glc&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{llcccll}&lt;br /&gt;
-\infty &amp;lt; &amp;amp;x_{L} &amp;amp; \leq  &amp;amp; x &amp;amp; \leq &amp;amp; x_{U}&amp;amp; &amp;lt; \infty  \\&lt;br /&gt;
&amp;amp;b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U}&amp;amp; \\&lt;br /&gt;
&amp;amp;c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U},&amp;amp; x_{j} \in \mathbb{N}\ ~~\forall j \in I&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /OQNLP&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  Base Module solver &#039;&#039;glcSolve &#039;&#039;implements an extended version of the DIRECT algorithm, that handles problems with both nonlinear and integer constraints.&lt;br /&gt;
&lt;br /&gt;
===Linear Programming Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;linear programming  &#039;&#039;&#039;(&#039;&#039;&#039;lp&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /CPLEX, TOMLAB /Xpress  and TOMLAB /XA&#039;&#039;&#039;. &lt;br /&gt;
The TOMLAB  Base Module solver &#039;&#039;lpSimplex &#039;&#039;implements a simplex algorithm for &#039;&#039;&#039;lp &#039;&#039;&#039;problems.&lt;br /&gt;
&lt;br /&gt;
When a dual feasible point is known in (6) it is efficient to use the dual simplex algorithm implemented in the TOMLAB  Base Module solver &#039;&#039;DualSolve&#039;&#039;. In TOMLAB  /MINOS  the LP interface to &#039;&#039;MINOS&#039;&#039;, called &#039;&#039;LP-MINOS &#039;&#039;is efficient for solving large, sparse LP problems. Dense problems are solved by &#039;&#039;LPOPT&#039;&#039;.  The TOMLAB  /SOL extension gives the additional possibility of using &#039;&#039;SQOPT &#039;&#039;to solve large, sparse LP.&lt;br /&gt;
&lt;br /&gt;
The recommended solvers normally outperforms all other solvers.&lt;br /&gt;
&lt;br /&gt;
===Mixed-integer Programming Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mixed-integer  programming  problem &#039;&#039;&#039;(&#039;&#039;&#039;mip&#039;&#039;&#039;)  is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U}, ~x_{j} \in \mathbb{N}\ ~~\forall j \in I  \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;. The variables &amp;lt;math&amp;gt;x&lt;br /&gt;
\in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt; are restricted to be&lt;br /&gt;
integers. Equality constraints are defined by setting the lower&lt;br /&gt;
bound equal to the upper bound, i.e. for constraint &amp;lt;math&amp;gt;i: b_{L}(i)&lt;br /&gt;
=  b_{U}(i)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /CPLEX, TOMLAB /Xpress  and TOMLAB /XA&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mixed-integer programs can be solved using the TOMLAB  Base Module routine &#039;&#039;mipSolve &#039;&#039;that  implements a standard branch-and-bound algorithm.  When dual feasible solutions are available, mipSolve  is using the TOMLAB  dual simplex solver DualSolve  to solve subproblems, which is significantly faster than using an ordinary linear programming solver, like the TOMLAB  lpSimplex. &#039;&#039;mipSolve &#039;&#039;also implements user defined priorities for variable selection, and different tree search strategies. For 0/1 - knapsack problems a round-down primal heuristic is included. Another TOMLAB  Base Module solver is the cutting plane routine &#039;&#039;cutplane&#039;&#039;, using Gomory cuts.  It is recommended to use &#039;&#039;mipSolve &#039;&#039;with the LP version of &#039;&#039;MINOS &#039;&#039;with warm starts for the subproblems, giving great speed improvement. The TOMLAB  /Xpress extension  gives access to the state-of-the-art LP, QP, MILP  and MIQP solver Xpress-MP. For many MIP problems, it is necessary to use such a powerful solver, if the solution should be obtained in any reasonable time frame. TOMLAB /CPLEX is equally powerful as TOMLAB  /Xpress and also includes a network solver.&lt;br /&gt;
&lt;br /&gt;
===Linear Least Squares Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;linear least squares &#039;&#039;&#039;(&#039;&#039;&#039;lls&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} || C x - d || \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x   &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d \in \mathbb{R}^M&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;C \in \mathbb{R}^{M \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /LSSOL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tlsqr &#039;&#039;solves unconstrained  sparse &#039;&#039;&#039;lls &#039;&#039;&#039;problems. &#039;&#039;lsei &#039;&#039;solves the general dense problems. &#039;&#039;Tnnls &#039;&#039;is &lt;br /&gt;
&lt;br /&gt;
a fast and robust replacement for the Matlab nnls. The general least squares solver &#039;&#039;clsSolve &#039;&#039;may also be used. &lt;br /&gt;
&lt;br /&gt;
In the TOMLAB&lt;br /&gt;
&lt;br /&gt;
/NPSOL or TOMLAB  /SOL extension the &#039;&#039;LSSOL &#039;&#039;solver is suitable for dense linear least squares problems.&lt;br /&gt;
&lt;br /&gt;
===Constrained Nonlinear Least Squares Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;constrained nonlinear least squares &#039;&#039;&#039;(&#039;&#039;&#039;cls&#039;&#039;&#039;) problem is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} r(x)^T r(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x   &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r(x) \in \mathbb{R}^M&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /NLSSOL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  Base Module nonlinear least squares solver &#039;&#039;clsSolve &#039;&#039;treats problems with bound constraints in a similar way as the routine &#039;&#039;ucSolve&#039;&#039;. This strategy is combined with an active-set strategy to handle linear equality and inequality constraints.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;clsSolve &#039;&#039;includes seven optimization methods for nonlinear  least squares problems, among them: the Gauss-Newton method, the Al-Baali-Fletcher and the Fletcher-Xu hybrid method, and the Huschens TSSM method. If rank problems occur, the solver uses subspace minimization.  The line search algorithm used is the same as for unconstrained problems.&lt;br /&gt;
&lt;br /&gt;
Another fast and robust solver is &#039;&#039;NLSSOL&#039;&#039;, available in the TOMLAB  /NPSOL or the TOMLAB  /SOL extension toolbox.&lt;br /&gt;
&lt;br /&gt;
One important utility routine is the TOMLAB  Base Module line search algorithm &#039;&#039;LineSearch&#039;&#039;,  used by the solvers &#039;&#039;conSolve&#039;&#039;, &#039;&#039;clsSolve &#039;&#039;and &#039;&#039;ucSolve&#039;&#039;. It implements a modified version of an algorithm by Fletcher. The line search algorithm uses quadratic and cubic interpolation. Another TOMLAB  Base Module routine, &#039;&#039;preSolve&#039;&#039;, is running a presolve analysis on a system of linear qualities, linear inequalities and simple bounds.   An algorithm by Gondzio, somewhat modified, is implemented in &#039;&#039;preSolve&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linear Semi-definite Programming Problem===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;linear semi-definite programming  problem with  linear matrix inequalities &#039;&#039;&#039;(&#039;&#039;&#039;sdp&#039;&#039;&#039;) is defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{rccccl}&lt;br /&gt;
\min\limits_{x} &amp;amp; {f(x) = {c^T}x} \\&lt;br /&gt;
&amp;amp; \\s/t &amp;amp; x_{L}   &amp;amp; \leq &amp;amp; x  &amp;amp; \leq &amp;amp; x_{U}\\&lt;br /&gt;
&amp;amp; b_{L}   &amp;amp; \leq &amp;amp; Ax &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp; {r}{Q^{i}_0 + Q^{i}_{k}x_{k} \sum{k=1}^{n} \preccurlyeq 0,\qquad i=1,\ldots,m.} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_l\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_l}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q^{i}_{k}&amp;lt;/math&amp;gt; are symmetric matrices of similar dimensions in each constraint &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;. If there are several LMI constraints, each may have it&#039;s own dimension.&lt;br /&gt;
&lt;br /&gt;
Recommended solvers: &#039;&#039;&#039;TOMLAB /PENSDP and TOMLAB /PENBMI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;linear semi-definite programming  problem with  bilinear  matrix  inequalities &#039;&#039;&#039;(&#039;&#039;&#039;bmi&#039;&#039;&#039;)  is defined similarly to but with the matrix inequality&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Q^{i}_0 + \sum_{k=1}^{n} Q^{i}_{k} x_{k} + \sum_{k=1}^{n} \sum_{l=1}^{n} x_{k}x_{l} K^{i}_{kl} \preccurlyeq 0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The MEX  solvers &#039;&#039;pensdp &#039;&#039;and &#039;&#039;penbmi &#039;&#039;treat  &#039;&#039;&#039;sdp &#039;&#039;&#039;and &#039;&#039;&#039;bmi  &#039;&#039;&#039;problems, respectively.  These are available in the TOMLAB  /PENSDP and TOMLAB  /PENBMI toolboxes.&lt;br /&gt;
&lt;br /&gt;
The MEX-file solver &#039;&#039;pensdp &#039;&#039;available in the TOMLAB  /PENSDP toolbox implements a penalty method aimed at large-scale dense and sparse &#039;&#039;&#039;sdp &#039;&#039;&#039;problems. The interface to the solver allows for data input in the sparse SDPA input format as well as a TOMLAB  specific format corresponding to.&lt;br /&gt;
&lt;br /&gt;
The MEX-file solver &#039;&#039;penbmi &#039;&#039;available in the TOMLAB  /PENBMI toolbox is similar to &#039;&#039;pensdp&#039;&#039;, with added support for the bilinear matrix inequalities.&lt;br /&gt;
&lt;br /&gt;
==Solver Routines in TOMLAB==&lt;br /&gt;
&lt;br /&gt;
===TOMLAB Base Module===&lt;br /&gt;
&lt;br /&gt;
TOMLAB  includes a large set of optimization solvers. Most of them were originally developed by the Applied Optimization and Modeling group (TOM). Since then they have been improved e.g. to handle Matlab sparse arrays and been further  developed. [[#Table: The optimization solvers in TOMLAB Base Module.]]. lists the main set of TOM optimization solvers in all versions of TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Table: The optimization solvers in TOMLAB Base Module.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[clsSolve]]||Constrained nonlinear least squares. Handles simple bounds and linear equality and inequality constraints using an active-set strategy.  Implements Gauss-Newton, and hybrid quasi-Newton and Gauss-Newton methods.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[conSolve]]||Constrained nonlinear minimization solver using two different sequential quadratic programming methods.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[cutPlane]]||Mixed-integer programming using a cutting plane algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[DualSolve]]||Solves a linear program with a dual feasible starting point.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[glbSolve]]||Box-bounded global optimization, using only function values.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[glcCluster]]||Hybrid algorithm for constrained mixed-integer global optimization. Uses a combination of &#039;&#039;glcFast &#039;&#039;(DIRECT) and a clustering algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[glcSolve]]||Global mixed-integer nonlinear programming, using no derivatives.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[infSolve]]||Constrained minimax optimization. Reformulates problem and calls any suitable nonlinear solver.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[lpSimplex]]||Linear programming using a simplex algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MilpSolve]]||Mixed-integer programming using branch and bound.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[L1Solve]]||Constrained L1 optimization. Reformulates problem and calls any suitable nonlinear solver.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[mipSolve]]||Mixed-integer programming using a branch-and-bound algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[nlpSolve]]||Constrained nonlinear minimization solver using a filter SQP algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[pdcoTL]]||Linearly constrained nonlinear minimization solver using a primal- dual barrier algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[pdscoTL]]||Linearly constrained nonlinear minimization solver using a primal- dual barrier algorithm, for separable functions.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[qpSolve]]||Non-convex quadratic programming.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[slsSolve]]||Sparse constrained nonlinear least squares. Reformulates problem and calls any suitable sparse nonlinear solver.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[sTrustr]]||Constrained convex optimization of partially separable functions, using a structural trust region algorithm.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[ucSolve]]||Unconstrained optimization with simple bounds on the parameters. Implements Newton, quasi-Newton and conjugate-gradient methods.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additional  Fortran solvers in TOMLAB  are listed in [[#Table: Additional solvers in TOMLAB.]]. They are called using a set of MEX-file interfaces developed in TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Table: Additional solvers in TOMLAB.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;goalSolve&#039;&#039;||Solves sparse multi-objective goal attainment problems&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;lsei&#039;&#039;||Dense constrained  linear least squares&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;qld&#039;&#039;||Convex quadratic programming&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Tfzero&#039;&#039;||Finding a zero to f(x) in an interval, &#039;&#039;x &#039;&#039; is one-dimensional.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Tlsqr&#039;&#039;|| Sparse linear least squares.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Tnnls&#039;&#039;||Nonnegative constrained linear least squares&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /BARNLP===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB /BARNLP solves large-scale nonlinear programming problems using a sparse primal-dual interior point algorithm, in conjunction with a filter for globalization. The solver package was developed in co-operation with Boeing Phantom Works. The TOMLAB  /BARNLP package is described in a separate manual available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /CGO===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB /CGO solves costly global optimization problems. The solvers are listed in [[#Table: Additional solvers in TOMLAB /CGO.]]. They are written in a combination of Matlab and Fortran code, where the Fortran code is called using a set of &lt;br /&gt;
MEX-file interfaces developed in TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Table: Additional solvers in TOMLAB /CGO.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;rbfSolve||&#039;&#039;Costly constrained box-bounded optimization using a RBF algorithm.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;ego&#039;&#039;||Costly constrained box-bounded optimization using the Efficient Global Optimization (EGO) algorithm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /CONOPT===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB /CONOPT  solves large-scale nonlinear programming problems with a feasible path GRG method .  The solver package was developed in co-operation with Arki  Consulting and Development A/S. The TOMLAB  /CONOPT  is described in a separate manual available at [http://tomopt.com/ http://tomopt.com]. There is also m-file help available.&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /CPLEX===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /CPLEX solves large-scale mixed-integer linear and quadratic programming prob- lems. The solver package was developed in co-operation with ILOG S.A. The TOMLAB  /CPLEX solver package and interface are described in a manual available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /KNITRO===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /KNITRO solves large-scale nonlinear programming problems with interior (barrier) point trust-region methods. The solver package was developed in co-operation with Ziena Optimization Inc. The TOMLAB  /KNITRO manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /LGO===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /LGO  solves global nonlinear programming problems. The LGO solver package is developed by Pint´er Consulting Services, Inc. The TOMLAB  /LGO  manual is available at [http://tomopt.com/ http://tomopt.com/].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /MINLP===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /MINLP provides solvers for continuous and mixed-integer quadratic programming&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;qp&#039;&#039;&#039;,&#039;&#039;&#039;miqp&#039;&#039;&#039;)  and continuous and mixed-integer nonlinear constrained optimization (&#039;&#039;&#039;con&#039;&#039;&#039;, &#039;&#039;&#039;minlp&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
All  four solvers, written  by Roger Fletcher and Sven Leyffer, University of Dundee, Scotland, are available in sparse and dense versions.  The solvers are listed in [[#Table: Solver routines in TOMLAB /MINLP.]].&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  /MINLP manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /MINOS===&lt;br /&gt;
&lt;br /&gt;
Another set of Fortran solvers were developed by the Stanford Optimization Laboratory (SOL). [[#Table: The SOL optimization solvers in TOMLAB /MINOS.]] lists the solvers included in TOMLAB  /MINOS.  The solvers are called using a set of MEX-file interfaces  developed as part of TOMLAB.  All  functionality of the SOL solvers are available and changeable in the TOMLAB  framework in Matlab.&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /OQNLP===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /OQNLP  uses a multistart  heuristic algorithm to find global optima of smooth constrained nonlinear programs (NLPs) and mixed-integer nonlinear programs (MINLPs). The solver package was developed in co-operation with Optimal Methods Inc. The TOMLAB  /OQNLP  manual is available at [http://tomopt.com/ http://tomopt.com/] &lt;br /&gt;
&lt;br /&gt;
====Table: Solver routines in TOMLAB /MINLP.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;bqpd&#039;&#039;||Quadratic programming using a null-space method.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;miqpBB&#039;&#039;||Mixed-integer quadratic programming using &#039;&#039;bqpd &#039;&#039;as subsolver.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;filterSQP&#039;&#039;||Constrained nonlinear minimization using a Filtered Sequential QP method.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minlpBB&#039;&#039;||Constrained, mixed-integer nonlinear minimization using a branch- and-bound search scheme. &#039;&#039;filterSQP &#039;&#039;is used as NLP solver.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Table: The SOL optimization solvers in TOMLAB /MINOS.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;MINOS 5.51||&#039;&#039;Sparse linear and nonlinear programming with linear and nonlin- ear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LP-MINOS||&#039;&#039;A special version of the &#039;&#039;MINOS 5.5 &#039;&#039;MEX-file interface for sparse linear programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;QP-MINOS&#039;&#039;||A special version of the &#039;&#039;MINOS 5.5 &#039;&#039;MEX-file interface for sparse quadratic programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LPOPT 1.0-10&#039;&#039;||Dense linear programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;QPOPT 1.0-10	&#039;&#039;||Non-convex quadratic programming with dense constraint matrix and sparse or dense quadratic matrix.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /NLPQL===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /NLPQL solves dense nonlinear programming problems, multi  criteria optimiza- tion  problems and nonlinear fitting  problems.  The solver package  was developed in co-operation with  Klaus Schittkowski. The TOMLAB  /NLPQL manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /NPSOL===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /NPSOL is a sub package of TOMLAB  /SOL. The package includes the MINOS solvers as well as NPSOL, LSSOL and NLSSOL. The TOMLAB  /NPSOL manual is available at [http://tomopt.com/ http://tomopt].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /PENBMI===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /PENBMI solves linear semi-definite programming problems with linear and bilinear matrix inequalities. The solvers are listed in [[#Additional solvers in TOMLAB /PENBMI.]]. They are written in a combination of Matlab and C code. The TOMLAB  /PENBMI manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
====Additional solvers in TOMLAB /PENBMI.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;penbmi&#039;&#039;||Sparse and dense linear semi-definite programming using a penalty algorithm.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;penfeas bmi&#039;&#039;||Feasibility check of systems of linear matrix inequalities, using &#039;&#039;penbmi&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /PENSDP===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB /PENSDP solves linear semi-definite programming problems with linear matrix inequalities. The solvers are listed in [[#Table: Additional solvers in TOMLAB /PENSDP.]]. They are written  in a combination of Matlab and C code. The TOMLAB  /PENSDP manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
====Table: Additional solvers in TOMLAB /PENSDP.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;pensdp&#039;&#039;||Sparse and dense linear semi-definite programming using a penalty algorithm.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;penfeas_sdp&#039;&#039;||Feasibility check of systems of linear matrix inequalities, using &#039;&#039;pensdp&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /SNOPT===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB /SNOPT is a sub package of TOMLAB /SOL. The package includes the MINOS solvers as well as SNOPT and SQOPT. The TOMLAB /SNOPT manual is available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /SOL===&lt;br /&gt;
&lt;br /&gt;
The extension toolbox TOMLAB /SOL gives access to the complete set of Fortran solvers developed by the Stanford Systems Optimization Laboratory (SOL). These solvers are listed in [[#Table: The SOL optimization solvers in TOMLAB /MINOS.]] and [[#Table: The optimization solvers in the TOMLAB /SOL toolbox.]].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /SPRNLP===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /SPRNLP solves large-scale nonlinear programming problems. SPRNLP is a state- of-the-art sequential quadratic programming (SQP) method, using an augmented Lagrangian merit function and safeguarded line search.  The solver package was developed in co-operation with  Boeing Phantom Works.  The TOMLAB  /SPRNLP package is described in a separate manual available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
====Table: The optimization solvers in the TOMLAB /SOL toolbox.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;NPSOL 5.02&#039;&#039;||Dense linear and nonlinear programming with linear and nonlinear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;SNOPT 6.2-2&#039;&#039;||Large, sparse linear and nonlinear programming with linear and nonlinear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;SQOPT 6.2-2&#039;&#039;||Sparse convex quadratic programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;NLSSOL 5.0-2&#039;&#039;||Constrained nonlinear  least squares. NLSSOL  is  based on NPSOL. No reference except for general NPSOL reference.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LSSOL 1.05-4&#039;&#039;||Dense linear and quadratic programs (convex), and constrained linear least squares problems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /XA===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /XA solves large-scale linear, binary, integer and semi-continuous linear program- ming problems, as well as quadratic programming problems. The solver package was developed in co-operation with  Sunset Software  Technology.  The TOMLAB  /XA package is described in a separate manual available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===TOMLAB /Xpress===&lt;br /&gt;
&lt;br /&gt;
The add-on toolbox TOMLAB  /Xpress solves large-scale mixed-integer linear and quadratic programming prob- lems. The solver package was developed in co-operation with Dash Optimization  Ltd.  The TOMLAB  /Xpress solver package and interface are described in the html manual that comes with the installation package. There is also a TOMLAB  /Xpress manual available at [http://tomopt.com/ http://tomopt.com].&lt;br /&gt;
&lt;br /&gt;
===Finding  Available  Solvers===&lt;br /&gt;
&lt;br /&gt;
To get a list of all available solvers, including Fortran, C and Matlab Optimization Toolbox solvers, for a certain &#039;&#039;solvType&#039;&#039;, call the routine &#039;&#039;SolverList &#039;&#039;with &#039;&#039;solvType  &#039;&#039;as argument. &#039;&#039;solvType &#039;&#039;should either be a string (&#039;uc&#039;, &#039;con&#039; etc.) or the corresponding &#039;&#039;solvType &#039;&#039;number as given in following [[#Table: solvProbType]]. For example, if wanting a list of all available solvers of &#039;&#039;solvType &#039;&#039;&#039;&#039;&#039;con&#039;&#039;&#039;, then&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
SolverList(&#039;con&#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gives the output&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; SolverList(&#039;con&#039;);&lt;br /&gt;
&lt;br /&gt;
Tomlab recommended choice for Constrained Nonlinear Programming (NLP)&lt;br /&gt;
&lt;br /&gt;
npsol&lt;br /&gt;
&lt;br /&gt;
Other solvers for NLP &lt;br /&gt;
&lt;br /&gt;
    Licensed:&lt;br /&gt;
&lt;br /&gt;
    nlpSolve&lt;br /&gt;
    conSolve&lt;br /&gt;
    sTrustr&lt;br /&gt;
    constr&lt;br /&gt;
    minos&lt;br /&gt;
    snopt&lt;br /&gt;
    fmincon&lt;br /&gt;
    filterSQP&lt;br /&gt;
    PDCO&lt;br /&gt;
&lt;br /&gt;
    PDSCO&lt;br /&gt;
&lt;br /&gt;
    Non-licensed: &lt;br /&gt;
&lt;br /&gt;
    NONE&lt;br /&gt;
&lt;br /&gt;
Solvers also handling NLP &lt;br /&gt;
&lt;br /&gt;
    Licensed:&lt;br /&gt;
    &lt;br /&gt;
    glcSolve&lt;br /&gt;
    glcFast&lt;br /&gt;
    glcCluster&lt;br /&gt;
    rbfSolve&lt;br /&gt;
    minlpBB&lt;br /&gt;
&lt;br /&gt;
    Non-licensed:&lt;br /&gt;
&lt;br /&gt;
    NONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;SolverList &#039;&#039;also returns two  output  arguments: all available solvers as a string matrix  and a vector with  the corresponding &#039;&#039;solvType &#039;&#039;for each solver.&lt;br /&gt;
&lt;br /&gt;
Note that solvers for a more general problem type may be used to solve the problem. In [[#Table: solvProbType]] an attempt has been made to classify these relations.&lt;br /&gt;
&lt;br /&gt;
====Table: solvProbType====&lt;br /&gt;
&lt;br /&gt;
The problem classes (&#039;&#039;probType&#039;&#039;) possible to solve with each type of solver (&#039;&#039;solvType&#039;&#039;) is marked with an &#039;&#039;x&#039;&#039;.  When the solver is in theory possible to use, but from a practical point of view is probably not suitable, parenthesis are added (&#039;&#039;x&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|| colspan=&amp;quot;10&amp;quot; align=&amp;quot;center&amp;quot; border=&amp;quot;2&amp;quot; | solvType&lt;br /&gt;
|-&lt;br /&gt;
!probType||uc||qp||con||ls||lls||cls||mip||lp||glb||glc&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;uc&#039;&#039;&#039;||x||||x||||||||||||x||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;qp&#039;&#039;&#039;||||x||x||||||||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;con&#039;&#039;&#039;||||||x||||||||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ls&#039;&#039;&#039;||||||x||x||||x||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;lls&#039;&#039;&#039;||||x||x||x||x||x||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;cls&#039;&#039;&#039;||||||x||||||x||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;mip&#039;&#039;&#039;||||||||||||||x||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;lp&#039;&#039;&#039;||||x||x||||||||x||x||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;glb&#039;&#039;&#039;||||||(x)||||||||||||x||x&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;glc&#039;&#039;&#039;||||||(x)||||||||||||||x&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;exp&#039;&#039;&#039;||x||||x||(x)||||x||||||||(x)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_Using_the_SOL_Solvers_in_TOMLAB&amp;diff=2621</id>
		<title>SOL Using the SOL Solvers in TOMLAB</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_Using_the_SOL_Solvers_in_TOMLAB&amp;diff=2621"/>
		<updated>2012-01-22T17:09:46Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
This section discusses the use of the TOMLAB  solvers from Stanford Systems Optimization Laboratory (SOL). In order to use these solvers efficiently, it is recommended to read the corresponding solver details as well. It is important to do help on the m-files corresponding to each solver as well as the TOMLAB  interface routine. The names for &#039;&#039;MINOS &#039;&#039;solver are &#039;&#039;minos.m &#039;&#039;and &#039;&#039;minosTL.m&#039;&#039;, and similar for other solvers.&lt;br /&gt;
&lt;br /&gt;
To learn all the different  parameter settings for a solver it is useful  to run the GUI, where  all parameters are selectable, and all default values are shown. Furthermore there are short help available for the different solver parameters in the drag menus. Even if the user is not using the GUI to solve the particular user problem, it might be useful to run the test problems defined in TOMLAB  to learn how to use the SOL solvers in the most efficient way.&lt;br /&gt;
&lt;br /&gt;
==Setting Solver Parameters==&lt;br /&gt;
&lt;br /&gt;
To handle the use of the SOL solvers, a special field in the &#039;&#039;Prob &#039;&#039;structure, &#039;&#039;Prob.SOL&#039;&#039;, is used to send information to the SOL solvers. It is also used to store the information needed for warm starts of the SOL solvers.&lt;br /&gt;
&lt;br /&gt;
The vector &#039;&#039;Prob.SOL.optPar &#039;&#039;of length 71 holds most of the different parameters that control the performance of the SOL solvers. All parameters have default values. If calling the SOL solver directly, not using TOMLAB, the user should set the values wanted in the &#039;&#039;optPar &#039;&#039;vector.  The rest should have the value &#039;&#039;-&#039;&#039;999, which gives the default value used by the solver. For information on other parameters that could effect the solution process  see [[#Table: Information stored in the structure Prob.optParam. Default values in parenthesis.]]. The TOMLAB  interface routine always has the name of the routine, with the additional two letters &#039;&#039;TL&#039;&#039;, e.g. for &#039;&#039;MINOS &#039;&#039;the TOMLAB  interface routine is &#039;&#039;minosTL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Other important fields to set when using the SOL solvers are the print and summary files that the solvers create. These files are very important to look through if any problems are occurring, to find what the causes might be, and if any warnings or errors are reported from the SOL solvers.  To create a print and summary file, one example when running &#039;&#039;MINOS &#039;&#039;is the following statements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.optPar(1)	= 111111; 	% Maximal print level &lt;br /&gt;
Prob.SOL.PrintFile	=  &#039;minos.pri&#039; 	% Print file called minos.pri &lt;br /&gt;
Prob.SOL.SummFile	= &#039;minos.sum&#039;  	% Summary  file called minos.sum &lt;br /&gt;
Prob.NumDiff		= 6; 		% Tell TOMLAB  that minos is  estimating &lt;br /&gt;
Prob.ConsDiff		= 6; 		% all  derivatives (gradient and  Jacobian)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;MINOS &#039;&#039;is told that no derivatives are given, then &#039;&#039;MINOS &#039;&#039;will try to estimate them, and then TOMLAB  must not do the same, i.e. &#039;&#039;Prob.NumDiff &#039;&#039;and &#039;&#039;Prob.ConsDiff &#039;&#039;must be set to six (internal solver estimation of derivatives). If &#039;&#039;MINOS &#039;&#039;is told that all derivatives are given, then TOMLAB  might estimate them for &#039;&#039;MINOS &#039;&#039;using any of the five methods possible, or by using automatic differentiation.&lt;br /&gt;
&lt;br /&gt;
==Derivatives  for the Solvers==&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  solvers from Stanford Systems Optimization Laboratory (SOL), have some useful special features, which influence the way that input is prepared to the solvers.&lt;br /&gt;
&lt;br /&gt;
When defining the gradient  vector and the constraint  Jacobian matrix  it is often the case that  they are only partially  known.  The SOL solvers give the possibility to mark these elements. They will then be estimated by finite differences.&lt;br /&gt;
&lt;br /&gt;
In TOMLAB  the gradient and the constraint Jacobian matrix are defined in two separate routines. If any element is unknown, it is just marked with the standard Matlab element &#039;&#039;NaN&#039;&#039;. The TOMLAB  SOL interface routines will estimate the &#039;&#039;NaN &#039;&#039;elements if &#039;&#039;Prob.CheckNaN &#039;&#039;is set to 1.&lt;br /&gt;
&lt;br /&gt;
If any gradient or constraint Jacobian element is infinite, in Matlab set as &#039;&#039;Inf &#039;&#039;or &#039;&#039;-Inf&#039;&#039;, this element is converted to a big number, 1020 , in the TOMLAB  SOL interface.&lt;br /&gt;
&lt;br /&gt;
The following applies to the sparse nonlinear programming solvers &#039;&#039;MINOS &#039;&#039;and &#039;&#039;SNOPT&#039;&#039;.  When the constraint Jacobian matrix  is sparse, then only the nonzero elements should be given.  The sparse pattern is given as a sparse matrix &#039;&#039;Prob.ConsPattern&#039;&#039;. In this matrix nonzero elements are marking nonzero elements in the constraint Jacobian. This pattern is static, i.e. given once before the call to the SOL solver. One problem is that a sparse matrix  in Matlab is dynamic, i.e.  only the nonzero elements  of the  matrix  are stored.  As soon as an element becomes zero, the vector of nonzeros are decreased one element. A gradient  element  that  is normally nonzero might become zero during the optimization.  Therefore care must be taken by the interface to return the correct values, because the SOL solvers assume the possible non-zero elements of the constraint Jacobian to be returned in the correct order.&lt;br /&gt;
&lt;br /&gt;
The TOMLAB  interface assumes the following conventions for the constraint Jacobian matrix:&lt;br /&gt;
&lt;br /&gt;
*If the user returns  a sparse matrix,  and the number of nonzeros are equal to the number of nonzeros in &#039;&#039;Prob.ConsPattern&#039;&#039;, no checks are done.&lt;br /&gt;
&lt;br /&gt;
*If the user returns a sparse matrix,  and the number of nonzeros are not equal to the number of nonzeros in &#039;&#039;Prob.ConsPattern&#039;&#039;, the interface is matching all elements in the sparse array to find which nonzeros they represent, and returns the correct vector of static nonzeros.&lt;br /&gt;
&lt;br /&gt;
*If the user returns a sparse matrix, and has given no pattern of nonzeros in &#039;&#039;Prob.ConsPattern&#039;&#039;, i.e. it is an empty array, then the solver and the interface assumes a full, dense matrix and the interface makes a full matrix before returning the elements, column by column, to the solver.&lt;br /&gt;
&lt;br /&gt;
*If the user returns a dense matrix, the interface just feeds all elements, column by column, back to the solver.&lt;br /&gt;
&lt;br /&gt;
*If too few elements are returned, the solver will estimate the rest using finite differences.&lt;br /&gt;
&lt;br /&gt;
When using the dense SOL nonlinear programming solvers, the constraint Jacobian matrix is always assumed to be dense. The interface will convert any sparse matrix returned by the user to a dense, full matrix, and return the elements, column by column, to the solver.&lt;br /&gt;
&lt;br /&gt;
If no derivatives are available, it might be better to use the &#039;&#039;Nonderivative linesearch &#039;&#039;in &#039;&#039;SNOPT&#039;&#039;.  It is based on safeguarded quadratic interpolation.   The default is to use a safeguarded cubic interpolation  if derivatives  are available. To select &#039;&#039;Nonderivative linesearch &#039;&#039;set the following parameter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.optPar(40) = 0;  % Use Nonderivative instead of Derivative Linesearch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Solver Output  to Files==&lt;br /&gt;
&lt;br /&gt;
The SOL solvers print different amount of information on ASCII files, one &#039;&#039;Print  File &#039;&#039;with more information, and one &#039;&#039;Summary File &#039;&#039;with less information. &#039;&#039;SNOPT &#039;&#039;is using &#039;&#039;snoptpri.txt &#039;&#039;and &#039;&#039;snoptsum.txt  &#039;&#039;as default names. &#039;&#039;MINOS &#039;&#039;is using &#039;&#039;minospri.txt &#039;&#039;and &#039;&#039;minossum.txt &#039;&#039;as default names. The following example shows how to set new names, other than the default, for these files.&lt;br /&gt;
&lt;br /&gt;
Prob.SOL.PrintFile = &#039;snoptp.out&#039;;	%   New  name  for Print File&lt;br /&gt;
Prob.SOL.SummFile	= &#039;snopts.out&#039;;	%   New  name  for Summary  File&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;SQOPT &#039;&#039;solver by default also defines the two log files as &#039;&#039;sqoptpri.txt &#039;&#039;and &#039;&#039;sqoptsum.txt&#039;&#039;. If the print level is 0 no output will occur, unless some errors are encountered. It is possible to make &#039;&#039;SQOPT &#039;&#039;totally  silent and avoid any opening of files by the following statements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.PrintFile = &#039;&#039;; &lt;br /&gt;
Prob.SOL.SummFile  = &#039;&#039;; &lt;br /&gt;
Prob.SOL.optPar(2) = 0; &lt;br /&gt;
Prob.SOL.optPar(3) = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The amount of printing  is determined by a print level code, which is different for the solvers. See the help and manual for each solver. Some solvers also have two print levels, one major print level and one minor print level. This applies for &#039;&#039;SNOPT&#039;&#039;, &#039;&#039;NPSOL &#039;&#039;and &#039;&#039;NLSSOL&#039;&#039;. There are also different other parameters that influence how much output is written on the files. The following example show how to get maximum output for &#039;&#039;SNOPT &#039;&#039;on files with user defined names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.PrintFile = &#039;sn.p&#039;; 	%   New name for Print File &lt;br /&gt;
Prob.SOL.SummFile  =  &#039;sn.s&#039;; 	%   New name for Summary File  &lt;br /&gt;
Prob.SOL.optPar(1) = 111111;  	%   Major print level, combination of six 0/1&lt;br /&gt;
Prob.SOL.optPar(2) = 10; 	%   Minor print level, 0, 1 or 10. 10 is maximum&lt;br /&gt;
Prob.SOL.optPar(5) = 1; 	%   Print Frequency&lt;br /&gt;
Prob.SOL.optPar(6) = 1; 	%   Summary Frequency&lt;br /&gt;
Prob.SOL.optPar(7) = 1; 	%   Solution yes. 0 = Solution not printed&lt;br /&gt;
Prob.SOL.optPar(8) = 1; 	%   Full options listing, not default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other SOL solvers, &#039;&#039;NPSOL&#039;&#039;, &#039;&#039;NLSSOL&#039;&#039;, &#039;&#039;LSSOL&#039;&#039;, &#039;&#039;QPOPT &#039;&#039;and &#039;&#039;LPOPT&#039;&#039;, only define the &#039;&#039;Print  File &#039;&#039;and &#039;&#039;Summary File &#039;&#039;if the user has defined names for them. See the help for each solver on how to set the correct print level and other parameters.&lt;br /&gt;
&lt;br /&gt;
==Warm  Starts for the Solvers==&lt;br /&gt;
&lt;br /&gt;
In TOMLAB  warm starts for the SOL solvers are automatically handled. The only thing needed is to call the routine &#039;&#039;WarmDefSOL &#039;&#039;after having solved the problem the first time, as the following principal example shows doing repeated calls to &#039;&#039;SNOPT&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...				%   Define  first problem&lt;br /&gt;
Result  = tomRun(&#039;snopt&#039;,Prob); %   Solve  problem  at  t=1&lt;br /&gt;
... for t=2:N&lt;br /&gt;
	...					% Changes at time t in Prob structure&lt;br /&gt;
	Prob	  = WarmDefSOL(&#039;snopt&#039;, Prob, Result(t-1));&lt;br /&gt;
	Result(t) = tomRun(&#039;snopt&#039;,Prob);	% Call tomRun to solve again&lt;br /&gt;
	...					% Postprocessing&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;WarmDefSOL &#039;&#039;routine are setting the warm start flag &#039;&#039;Prob.WarmStart&#039;&#039;, as true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.WarmStart  = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also moving subfields on the &#039;&#039;Result.SOL &#039;&#039;structure into &#039;&#039;Prob.SOL &#039;&#039;for the next run. For &#039;&#039;SNOPT&#039;&#039;, &#039;&#039;SQOPT &#039;&#039;and &#039;&#039;MINOS &#039;&#039;the following commands are needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.xs = Result.SOL.xs &lt;br /&gt;
Prob.SOL.hs = Result.SOL.hs &lt;br /&gt;
Prob.SOL.nS = Result.SOL.nS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;NPSOL &#039;&#039;and the other SOL solvers the commands are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.xs 	= Result.SOL.xs &lt;br /&gt;
Prob.SOL.iState	= Result.SOL.iState &lt;br /&gt;
Prob.SOL.cLamda	= Result.SOL.cLamda &lt;br /&gt;
Prob.SOL.H	= Result.SOL.H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fields &#039;&#039;SOL.cLamda &#039;&#039;and &#039;&#039;SOL.H &#039;&#039;are not used for &#039;&#039;QPOPT&#039;&#039;, &#039;&#039;LPOPT&#039;&#039;, and &#039;&#039;LSSOL&#039;&#039;. For &#039;&#039;NPSOL &#039;&#039;and &#039;&#039;NLSSOL &#039;&#039;the TOMLAB  interface is automatically setting the necessary parameter &#039;&#039;Hessian Yes &#039;&#039;for subsequent runs. However, in order for the first warm start to work the user must set this parameter &#039;&#039;before &#039;&#039;the first run. The principal calls will be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...					%   Define first problem &lt;br /&gt;
Prob.SOL.optPar(50) = 1; 		%   Define Hessian Yes BEFORE first call &lt;br /&gt;
Result  = tomRun(&#039;npsol&#039;,Prob);		%   Solve problem at t=1&lt;br /&gt;
... for  t=2:N&lt;br /&gt;
	...&lt;br /&gt;
	Prob	= WarmDefSOL(&#039;npsol&#039;,  Prob,  Result); &lt;br /&gt;
	Result  = tomRun(&#039;npsol&#039;,Prob);&lt;br /&gt;
	... &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that for all solvers the new initial  value are taken from the field &#039;&#039;Prob.SOL.xs &#039;&#039;and any user change in the standard initial  value &#039;&#039;Prob.x_0 &#039;&#039;is neglected.&lt;br /&gt;
&lt;br /&gt;
==Memory  for the Solvers==&lt;br /&gt;
&lt;br /&gt;
Some users have encountered problems where SOL solvers report insufficient memory on machines where memory should not be an issue. The solvers estimate their internal memory requirements at startup. This estimate is not always large enough so the user might have to specify additional memory. This can be accomplished  by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.moremem  = 1000;  % or even larger if necessary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters in Prob.optParam==&lt;br /&gt;
&lt;br /&gt;
====Table: Information stored in the structure &#039;&#039;Prob.optParam&#039;&#039;. Default values in parenthesis.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field!!Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PreSolve&#039;&#039;||Flag if presolve analysis is to be applied on linear constraints ( 0).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DiffInt&#039;&#039;||Difference interval in derivative estimates (used for &#039;&#039;Prob.NumDiff/ConsDiff&#039;&#039; -1 or 1).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;CentralDiff&#039;&#039;||Central 	difference	interval 	in 	derivative	estimates	(used	for &#039;&#039;Prob.NumDiff/ConsDiff &#039;&#039;-2 or 2).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;splineSmooth&#039;&#039;||Smoothness parameter sent to the SPLINE Toolbox routine &#039;&#039;csaps.m &#039;&#039;when computing numerical approximations of the derivatives  (0&#039;&#039;.&#039;&#039;4) (used for &#039;&#039;Prob.NumDiff/ConsDiff &#039;&#039;-3 or 3).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|VARsplineTol||Tolerance parameter sent  to the SPLINE Toolbox routine  &#039;&#039;spaps.m &#039;&#039;when computing numerical approximations of the derivatives  (10&#039;&#039;-&#039;&#039;3 ) (used for &#039;&#039;Prob.NumDiff/ConsDiff &#039;&#039;-4 or 4).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;CHECK&#039;&#039;||If true, no more check is done on the structure. Set to true (=1) after first call to solver (which then calls &#039;&#039;optParamSet&#039;&#039;).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_LPOPT&amp;diff=2620</id>
		<title>SOL LPOPT</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_LPOPT&amp;diff=2620"/>
		<updated>2012-01-22T17:03:33Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
==Direct Solver Call==&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to [[#Using TOMLAB]] for information on how to use LPOPT with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lpopt &#039;&#039;solves dense linear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times&lt;br /&gt;
n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If isempty(c) (or all(c==0), then a feasible point problem is solved (FP). Otherwise a standard linear programming problem is solved (LP)&lt;br /&gt;
&lt;br /&gt;
===Calling Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Inform, Iter, iState, Ax, cLamda, Obj, x] = lpopt(A, bl, bu, c, Warm, x, iState, SpecsFile, &lt;br /&gt;
PrintFile,  SummFile, PriLev, optPar );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A 	&#039;&#039;||Constraint matrix, m x n (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl	&#039;&#039;||Lower bounds on (x,Ax),  m+n x 1 vector (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu	&#039;&#039;||Upper bounds on (x,Ax),  m+n x 1 vector (DENSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c	&#039;&#039;||Linear objective function cost coeffs, n x 1 (DENSE). If length(c) &#039;&#039;&amp;lt; &#039;&#039;n, setting c(1:n)=0;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Warm&#039;&#039;||If Warm &#039;&#039;&amp;gt; &#039;&#039;0, then warm start, otherwise cold Start. Default 0. If warm start, then x and iState must be set properly. Normally the values from last call to lpopt are used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x&#039;&#039;||Initial  estimate of solution vector x. (DENSE) If length(x) ¡ n, the rest of the elements in x are set to 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iState&#039;&#039;||Working set (if  Warm start)  (n+m)  x 1 (DENSE) If  length(iState) ¡  n+m, setting iState(1:n+m)=0;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=0: 	&#039;&#039;Corresponding constraint not in the initial  QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=1: 	&#039;&#039;Inequality constraint at its lower bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=2: 	&#039;&#039;Inequality constraint at its upper bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=3: 	&#039;&#039;Equality constraint in the initial  QP working set,bl(i)==bu(i).&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SpecsFile 	&#039;&#039;||Name of the OPTIONS File, see TOMLAB  Guide.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile 	&#039;&#039;||Name of the Print file. Name includes the path, maximal number of characters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SummFile	&#039;&#039;||Name of the Summary file. Name includes the path, maximal number of char- acters = 500.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev 	&#039;&#039;||Print level in the lpopt MEX-interface.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent.&lt;br /&gt;
&lt;br /&gt;
= 1 Summary information.&lt;br /&gt;
&lt;br /&gt;
= 2 More detailed information. if isempty(PriLev), set as 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar	&#039;&#039;||Vector with  optimization  parameters overriding defaults and the optionally specified SPECS file. If length(optPar) ¡ 62, lpopt sets the rest of the values to missing value (-999).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description  of Outputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Result of LPOPT run.&lt;br /&gt;
&lt;br /&gt;
0 = Optimal solution with unique minimizer found.&lt;br /&gt;
&lt;br /&gt;
1 = A dead point was reached.&lt;br /&gt;
&lt;br /&gt;
2 = The solution appears to be unbounded  (or badly scaled).&lt;br /&gt;
&lt;br /&gt;
3 = The constraints could not be satisfied. The problem has no feasible solu- tion.&lt;br /&gt;
&lt;br /&gt;
4 = Too many iterations, in either phase.&lt;br /&gt;
&lt;br /&gt;
5 = The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is too be made.&lt;br /&gt;
&lt;br /&gt;
6 = An input parameter was invalid.&lt;br /&gt;
&lt;br /&gt;
7 = The problem type was not recognized. Other = UNKNOWN  LPOPT Inform value.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iState	&#039;&#039;||Status of working set, se input description of iState.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Ax 	&#039;&#039;||A*x.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cLamda	&#039;&#039;||Lagrangian multipliers (dual solution vector) (m x 1 vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Obj	&#039;&#039;||Objective function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x	&#039;&#039;||Solution vector with decision variable values (n x 1 vector).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Using TOMLAB==&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lpoptTL &#039;&#039;solves dense linear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Calling Syntax===&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = lpAssign( ... );&lt;br /&gt;
Result = tomRun(&#039;lpopt&#039;,  Prob ... );&lt;br /&gt;
or&lt;br /&gt;
Prob = ProbCheck( ... ); &lt;br /&gt;
Result = lpoptTL(Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call Prob = lpAssign( ... ) or Prob=ProbDef to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U 	&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U 	&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A 	&#039;&#039;||Linear constraint matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c	&#039;&#039;||Linear coefficients in objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt 	&#039;&#039;||Print level.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart 	&#039;&#039;||If true, use warm start, otherwise cold start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs	&#039;&#039;||Solution and slacks from previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.iState	&#039;&#039;||Working set (if  Warm start)  (n+m)  x 1 (DENSE) If  length(iState) ¡  n+m, setting iState(1:n+m)=0;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=0:&#039;&#039;Corresponding constraint not in the initial  QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=1:&#039;&#039;Inequality constraint at its lower bound in QP working set. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=2:&#039;&#039;Inequality constraint at its upper bound in QP working set.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;iState(i)=3:&#039;&#039;Equality constraint in the initial  QP working set, bl(i)==bu(i). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SpecsFile&#039;&#039;||Name of user defined SPECS file, read BEFORE optPar() is used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.PrintFile&#039;&#039;||Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.SummFile&#039;&#039;||Name of SOL Summary File.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.optPar&#039;&#039;||Elements &#039;&#039;&amp;gt; &#039;&#039;-999 takes precedence over corresponding TOMLAB params. See Table 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description of Outputs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Result&#039;&#039;||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient c (linear objective).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from lpopt.m (similar to TOMLAB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||LPOPT information parameter.&lt;br /&gt;
&lt;br /&gt;
0 = Optimal solution with unique minimizer found.&lt;br /&gt;
&lt;br /&gt;
1 = A dead point was reached.&lt;br /&gt;
&lt;br /&gt;
2 = The solution appears to be unbounded  (or badly scaled).&lt;br /&gt;
&lt;br /&gt;
3 = The constraints could not be satisfied. The problem has no feasible solu- tion.&lt;br /&gt;
&lt;br /&gt;
4 = Too many iterations, in either phase.&lt;br /&gt;
&lt;br /&gt;
5 = The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is too be made.&lt;br /&gt;
&lt;br /&gt;
6 = An input parameter was invalid.&lt;br /&gt;
&lt;br /&gt;
7 = The problem type was not recognized. Other = UNKNOWN  LPOPT Inform value.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. If ninf=0, last m == -v k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter 	&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv	&#039;&#039;||Number of function evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv	&#039;&#039;||Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B 	&#039;&#039;||Basis vector in TOMLAB  QP standard. &#039;&#039;MinorIter 	&#039;&#039;Number of minor iterations. Not Set. &#039;&#039;Solver	&#039;&#039;Name of the solver (lpopt).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm	&#039;&#039;||Description of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.xs	&#039;&#039;||Solution and slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SOL.iState	&#039;&#039;||State for variables and constraints in iState.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==optPar==&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
&lt;br /&gt;
Use missing value (-999 or less), when no change of parameter setting is wanted. No call is then done to internal routines lpprmi, lpprmr and lpprm. The default value will then be used by LPOPT, unless the value is altered in the SPECS file.&lt;br /&gt;
&lt;br /&gt;
===Description of Inputs===&lt;br /&gt;
&lt;br /&gt;
====Table: The following fields are used:====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!#||SPECS keyword text||Lower||Default||Upper||Comment&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Printing&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|1.||PRINT LEVEL||0||10||||0,1,5,10,20,30&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Convergence Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|||In LPOPT/QPOPT: macheps = 2&amp;lt;sup&amp;gt;&#039;&#039;-&#039;&#039;53&amp;lt;/sup&amp;gt; ; eps in Matlab is = 2&amp;lt;sup&amp;gt;&#039;&#039;-&#039;&#039;52&amp;lt;/sup&amp;gt; ;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|10.||OPTIMALITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.05E-8||||sqrt(macheps)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|11.||FEASIBILITY TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.05E-8||||sqrt(macheps)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Other Tolerances&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|21.||CRASH TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||0.01||&#039;&#039;&amp;lt; &#039;&#039;1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|27.||RANK TOLERANCE||&#039;&#039;&amp;gt; &#039;&#039;0||1.11E-14||||100*macheps&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|30.||ITERATION LIMIT||&#039;&#039;&amp;gt;&#039;&#039;0||max(2000,5(n+m))&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|33.||MIN SUM YES (or NO) &lt;br /&gt;
&lt;br /&gt;
IF 1 (MIN  SUM YES), minimize the infeasibilities before return.&lt;br /&gt;
||0||0||1||1=min infeas.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|36.||FEASIBILITY PHASE ITERATIONS||&#039;&#039;&amp;gt;&#039;&#039;0||max(2000,5(n+m))&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|45.||INFINITE STEP SIZE||&#039;&#039;&amp;gt;&#039;&#039;0||1E20&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Frequencies&#039;&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|51.||CHECK FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||50&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|52.||EXPAND  FREQUENCY||&#039;&#039;&amp;gt; &#039;&#039;0||5&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_Solver_Reference&amp;diff=2619</id>
		<title>SOL Solver Reference</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_Solver_Reference&amp;diff=2619"/>
		<updated>2012-01-22T16:58:57Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
The SOL solvers are a set of Fortran solvers that were developed by the Stanford Systems Optimization Laboratory (SOL). [[#Table: The SOL optimization solvers in TOMLAB /SOL.]] lists the solvers included in TOMLAB  /SOL. The solvers are called using a set of MEX-file interfaces developed as part of TOMLAB. All functionality of the SOL solvers are available and changeable in the TOMLAB framework in Matlab.&lt;br /&gt;
&lt;br /&gt;
Detailed descriptions of the TOMLAB  /SOL solvers are given in the following sections. Also see the M-file help for each solver.&lt;br /&gt;
&lt;br /&gt;
The solvers reference guides for the TOMLAB  /SOL solvers are available for download from the TOMLAB  home page [http://tomopt.com/ http://tomopt.com]. There is also detailed instruction for using the solvers in [[SOL Using the SOL Solvers in TOMLAB]]. Extensive TOMLAB  m-file help is also available, for example &#039;&#039;help snoptTL &#039;&#039;in Matlab will  display the features of the SNOPT solver using the TOMLAB format.&lt;br /&gt;
&lt;br /&gt;
TOMLAB  /SOL solves &#039;&#039;&#039;nonlinear optimization &#039;&#039;&#039;problems (&#039;&#039;&#039;con&#039;&#039;&#039;) defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}\min\limits_{x} &amp;amp; f(x) \\&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\\end{array}\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A&lt;br /&gt;
\in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;quadratic  programming  &#039;&#039;&#039;(&#039;&#039;&#039;qp&#039;&#039;&#039;) problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;linear programming &#039;&#039;&#039;(&#039;&#039;&#039;lp&#039;&#039;&#039;) problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;linear least squares &#039;&#039;&#039;(&#039;&#039;&#039;lls&#039;&#039;&#039;) problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} || C x - d || \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x   &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d \in \mathbb{R}^M&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;C&lt;br /&gt;
\in \mathbb{R}^{M \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and &#039;&#039;&#039;constrained nonlinear least squares &#039;&#039;&#039;problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} r(x)^T r(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x   &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r(x) \in \mathbb{R}^M&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Table: The SOL optimization solvers in TOMLAB /SOL.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;MINOS 5.5&#039;&#039;||Sparse linear and nonlinear programming with linear and nonlinear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LP-MINOS&#039;&#039;||A special version of the &#039;&#039;MINOS 5.5 &#039;&#039;MEX-file interface for sparse linear programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;QP-MINOS&#039;&#039;||A special version of the &#039;&#039;MINOS 5.5 &#039;&#039;MEX-file interface for sparse quadratic programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LPOPT 1.0-10&#039;&#039;||Dense linear programming.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;QPOPT 1.0-10&#039;&#039;||Non-convex quadratic programming with dense constraint matrix and sparse or dense quadratic matrix.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;LSSOL 1.05-4&#039;&#039;||Dense linear and quadratic programs (convex), and constrained linear least squares problems.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;NLSSOL 5.0-2&#039;&#039;||Constrained nonlinear  least squares. NLSSOL is based on NPSOL. No reference except for general NPSOL reference.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;NPSOL 5.02&#039;&#039;||Dense linear and nonlinear programming with linear and nonlinear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;SNOPT 7.1-1&#039;&#039;||Large, sparse linear and nonlinear programming with linear and nonlinear constraints.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;SQOPT 7.1-1&#039;&#039;||Sparse convex quadratic programming.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==MINOS==&lt;br /&gt;
*[[SOL MINOS|MINOS]]&lt;br /&gt;
&lt;br /&gt;
==LP-MINOS==&lt;br /&gt;
*[[SOL LP-MINOS|LP-MINOS]]&lt;br /&gt;
&lt;br /&gt;
==QP-MINOS==&lt;br /&gt;
*[[SOL QP-MINOS|QP-MINOS]]&lt;br /&gt;
&lt;br /&gt;
==LPOPT==&lt;br /&gt;
*[[SOL LPOPT|LPOPT]]&lt;br /&gt;
&lt;br /&gt;
==QPOPT==&lt;br /&gt;
*[[SOL QPOPT|QPOPT]]&lt;br /&gt;
&lt;br /&gt;
==LSSOL==&lt;br /&gt;
*[[SOL LSSOL|LSSOL]]&lt;br /&gt;
&lt;br /&gt;
==NLSSOL==&lt;br /&gt;
*[[SOL NLSSOL|NLSSOL]]&lt;br /&gt;
&lt;br /&gt;
==NPSOL==&lt;br /&gt;
*[[SOL NPSOL|NPSOL]]&lt;br /&gt;
&lt;br /&gt;
==SNOPT==&lt;br /&gt;
*[[SOL SNOPT|SNOPT]]&lt;br /&gt;
&lt;br /&gt;
==SQOPT==&lt;br /&gt;
*[[SOL SQOPT|SQOPT]]&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_Using_the_Matlab_Interface&amp;diff=2618</id>
		<title>SOL Using the Matlab Interface</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_Using_the_Matlab_Interface&amp;diff=2618"/>
		<updated>2012-01-22T16:54:53Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
The main routines in the two-layer design of the interface are shown in [[#Table: The interface routines.]]. Page and section references are given to detailed descriptions on how to use the routines.&lt;br /&gt;
&lt;br /&gt;
====Table: The interface routines.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minos&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;minos.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;minos.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosLPTL&#039;&#039;||The layer two TOMLAB  interface routine that calls &#039;&#039;minosLPTL.m&#039;&#039;. Converts the input &#039;&#039;Prob &#039;&#039;format before calling &#039;&#039;minos.m &#039;&#039;and converts back to the output &#039;&#039;Result &#039;&#039;structure. This option only handles linear programming problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosQPTL&#039;&#039;||The layer two TOMLAB  interface routine that calls &#039;&#039;minosQPTL.m&#039;&#039;. Converts the input  &#039;&#039;Prob  &#039;&#039;format  before calling &#039;&#039;minos.m  &#039;&#039;and con- verts back to the output &#039;&#039;Result &#039;&#039;structure.  This option only handles quadratic programming problems&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lpopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;lpopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lpoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;lpopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;qpopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;qpopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;qpoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;qpopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lssol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;lssol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lssolTL&#039;&#039;||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;lssol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nlssol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;nlssol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nlssolTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;nlssol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;npsol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;npsol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;npsolTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;npsol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;snopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;snopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;snoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;snopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sqopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;sqopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sqoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;sqopt.m&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SOL control parameters are possible to set from Matlab.&lt;br /&gt;
&lt;br /&gt;
They can be set as inputs to the interface routine &#039;&#039;minos &#039;&#039;for example and the others. The user sets fields in a structure called &#039;&#039;Prob.SOL.optPar&#039;&#039;, where the subfield names follow the SOL standard for setting solver options. The following example shows how to set the maximum number of iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.optPar(30)     = 500;        % Setting maximum number of iterations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=SOL_Using_the_Matlab_Interface&amp;diff=2617</id>
		<title>SOL Using the Matlab Interface</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=SOL_Using_the_Matlab_Interface&amp;diff=2617"/>
		<updated>2012-01-22T16:54:32Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the SOL Manual|link=[[SOL|SOL]]}}&lt;br /&gt;
The main routines in the two-layer design of the interface are shown in [[#Table: The interface routines.]]. Page and section references are given to detailed descriptions on how to use the routines.&lt;br /&gt;
&lt;br /&gt;
====Table: The interface routines.====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function&lt;br /&gt;
!Description&lt;br /&gt;
|&#039;&#039;minos&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;minos.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;minos.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosLPTL&#039;&#039;||The layer two TOMLAB  interface routine that calls &#039;&#039;minosLPTL.m&#039;&#039;. Converts the input &#039;&#039;Prob &#039;&#039;format before calling &#039;&#039;minos.m &#039;&#039;and converts back to the output &#039;&#039;Result &#039;&#039;structure. This option only handles linear programming problems.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minosQPTL&#039;&#039;||The layer two TOMLAB  interface routine that calls &#039;&#039;minosQPTL.m&#039;&#039;. Converts the input  &#039;&#039;Prob  &#039;&#039;format  before calling &#039;&#039;minos.m  &#039;&#039;and con- verts back to the output &#039;&#039;Result &#039;&#039;structure.  This option only handles quadratic programming problems&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lpopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;lpopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lpoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;lpopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;qpopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;qpopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;qpoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;qpopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lssol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;lssol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lssolTL&#039;&#039;||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;lssol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nlssol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;nlssol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nlssolTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;nlssol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;npsol&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;npsol.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;npsolTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;npsol.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;snopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;snopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;snoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;snopt.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sqopt&#039;&#039;||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;sqopt.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sqoptTL&#039;&#039;||The layer two interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;sqopt.m&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SOL control parameters are possible to set from Matlab.&lt;br /&gt;
&lt;br /&gt;
They can be set as inputs to the interface routine &#039;&#039;minos &#039;&#039;for example and the others. The user sets fields in a structure called &#039;&#039;Prob.SOL.optPar&#039;&#039;, where the subfield names follow the SOL standard for setting solver options. The following example shows how to set the maximum number of iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.SOL.optPar(30)     = 500;        % Setting maximum number of iterations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=OQNLP&amp;diff=2616</id>
		<title>OQNLP</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=OQNLP&amp;diff=2616"/>
		<updated>2012-01-22T15:59:37Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
Welcome to the  TOMLAB /OQNLP  User&#039;s Guide.  The  package  includes  the  OQNLP  solvers from Optimal Methods Inc. and an interface to The MathWorks&#039; MATLAB. The TOMLAB /OQNLP  package includes OQNLP, MSNLP and LSGRG2, while TOMLAB /MSNLP includes MSNLP and LSGRG2.&lt;br /&gt;
&lt;br /&gt;
TOMLAB  /OQNLP  is a multistart  heuristic  algorithm  designed to find global optima of smooth  constrained nonlinear programs (NLPs) and mixed-integer nonlinear programs (MINLPs).&lt;br /&gt;
&lt;br /&gt;
TOMLAB  /MSNLP  is also a multistart  heuristic algorithm designed to find global optima of smooth constrained nonlinear programs (NLPs). The latest release support integers (MINLPs).&lt;br /&gt;
&lt;br /&gt;
LSGRG2 can be called directly.  The solver does not find global optima but only local solutions, which may be sufficient for many user cases. Up to 10,000 variables and constraints are supported&lt;br /&gt;
&lt;br /&gt;
The multistart  feature calls an NLP solver with a different set of initial  values and return the feasible solutions as well as the optimal point.  The starting points are calculated from scatter search algorithm, see [http://www.opttek.com/ http://www.opttek.com/] for additional information. The  user may also choose to use uniformly  distributed  initial  values. Neither of the two options guarantee that a global optimum is obtained, however the likelihood is high.&lt;br /&gt;
&lt;br /&gt;
The main advantage with OQNLP/MSNLP for smooth problems is that good local solutions are easily obtained, and that integer variables are handled.&lt;br /&gt;
&lt;br /&gt;
===Contents of this Manual===&lt;br /&gt;
&lt;br /&gt;
*[[#Overview]] provides a basic overview of the TOMLAB  /OQNLP  and TOMLAB  /MSNLP  solver packages.&lt;br /&gt;
*[[#Using the Matlab Interface]] provides an overview of the Matlab interfaces to OQNLP and MSNLP (LSGRG2).&lt;br /&gt;
*[[#Setting OQNLP Options]] describes how to set OQNLP and MSNLP (LSGRG2) solver options from Matlab.&lt;br /&gt;
*[[#OQNLP Solver Reference]] gives detailed information about the interface routines &#039;&#039;oqnlpTL&#039;&#039;, &#039;&#039;msnlpTL &#039;&#039;and &#039;&#039;lsgrg2TL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===More  information===&lt;br /&gt;
&lt;br /&gt;
Please visit the following links for more information:&lt;br /&gt;
&lt;br /&gt;
*[http://tomopt.com/tomlab/products/oqnlp/ http://tomopt.com/tomlab/products/oqnlp/]&lt;br /&gt;
*[http://www.opttek.com/ http://www.opttek.com]&lt;br /&gt;
&lt;br /&gt;
===Prerequisites===&lt;br /&gt;
&lt;br /&gt;
In this manual we assume that the user is familiar with global optimization and nonlinear programming, setting up problems in TOMLAB (in particular constrained nonlinear (&#039;&#039;&#039;con&#039;&#039;&#039;) problems) and the Matlab language in general.&lt;br /&gt;
&lt;br /&gt;
==Using the Matlab Interface==&lt;br /&gt;
&lt;br /&gt;
The OQNLP and MSNLP (LSGRG2) solvers are accessed via the &#039;&#039;tomRun &#039;&#039;driver routine, which calls the appropriate interface routine (for example &#039;&#039;oqnlpTL&#039;&#039;).  The solvers themselves are located in a set of MEX files: &#039;&#039;oqnlp&#039;&#039;, &#039;&#039;msnlp &#039;&#039;and &#039;&#039;lsgrg2&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Table: The interface routines.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&lt;br /&gt;
!Function||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;oqnlpTL&#039;&#039;||The interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This routine then calls the MEX file &#039;&#039;oqnlp&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;oqnlp_g&#039;&#039;||Interface routine called by OQNLP when an objective gradient is not given and integer variables are included.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;oqnlp_dc&#039;&#039;||Interface routine called by OQNLP when a Jacobian is not given and integer variables are included.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;oqnlp_gdc&#039;&#039;||Interface routine called by OQNLP when a gradient or Jacobian are not given  using the &#039;&#039;simAssign &#039;&#039;format and integer variables  are included.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;msnlpTL&#039;&#039;||The interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This routine then calls the MEX file &#039;&#039;msnlp&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lsgrg2TL&#039;&#039;||The interface routine called by the TOMLAB  driver routine &#039;&#039;tomRun&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This routine then calls the MEX file &#039;&#039;lsgrg&#039;&#039;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Setting OQNLP Options==&lt;br /&gt;
&lt;br /&gt;
All OQNLP, MSNLP and LSGRG2 control parameters are possible to set from Matlab.&lt;br /&gt;
&lt;br /&gt;
===Setting options using the OQNLP.options structure===&lt;br /&gt;
&lt;br /&gt;
The parameters can be set as subfields in the &#039;&#039;Prob.OQNLP.options &#039;&#039;structure for TOMLAB  /OQNLP and TOMLAB /MSNLP. If using the LSGRG2 solver, &#039;&#039;Prob.LSGRG2.options &#039;&#039;applies. The following example shows how to set a limit for the maximum number of iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = conAssign(...)				% Setup problem, see help conAssign for more information&lt;br /&gt;
Prob.OQNLP.options.ITERATION_LIMIT  = 2000;	% Setting maximum number of iterations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The maximum number of iterations can also be done through the TOMLAB  parameter &#039;&#039;MaxIter&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.optParam.MaxIter = 200;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the cases where a solver specific parameter has a corresponding TOMLAB  general parameter, the latter is used only if the user has not given the solver specific parameter.&lt;br /&gt;
&lt;br /&gt;
A complete description of the available parameters can be found in [[#OQNLP and MSNLP options]].&lt;br /&gt;
&lt;br /&gt;
==OQNLP Solver Reference==&lt;br /&gt;
&lt;br /&gt;
A detailed description of the TOMLAB /OQNLP solver interface is given below.  Also see the M-file help for &#039;&#039;oqnlpTL &#039;&#039;and &#039;&#039;msnlpTL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===oqnlpTL===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
Solves global constrained nonlinear mixed-integer problems.&lt;br /&gt;
&lt;br /&gt;
OQNLP solves problems of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ccccccl}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) &amp;amp; \\&lt;br /&gt;
s/t &amp;amp; x_L &amp;amp; \leq &amp;amp; x  &amp;amp; \leq &amp;amp; x_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; b_L &amp;amp; \leq &amp;amp; Ax &amp;amp; \leq &amp;amp; b_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; c_L &amp;amp; \leq &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_U &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x,x_L,x_U \in R^{n},\, A \in R^{m_1 \times n},\,&lt;br /&gt;
b_L,b_U \in R^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c(x), c_L, c_U \in R^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are&lt;br /&gt;
restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob   = minlpAssign(...);&lt;br /&gt;
Result = tomRun(&#039;oqnlp&#039;,Prob,...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039; Problem description structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraints coefficient matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints. For equality constraints (or fixed variables), set e.g. b_L(k) == b_U(k).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level in MEX interface.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||Flag telling whether to treat the problem as sparse (1) or dense.  If set to 1, the user should also provide a sparse 0-1 matrix  in Prob.ConsPattern giving the nonzero pattern.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP&#039;&#039;||Structure with fields defining the integer properties of the problem. The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IntVars&#039;&#039;||Vector designating which variables are restricted to integer values.  This field is interpreted differently depending on the length.&lt;br /&gt;
&lt;br /&gt;
If length(IntVars)  = length(x), it is interpreted as a zero-one vector where all non-zero elements indicate integer values only for the corresponding variable.&lt;br /&gt;
&lt;br /&gt;
A length less than the problem dimension indicates that IntVars is a vector of indices for the integer variables, for example [1 2 3 6 7 12].&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;OQNLP&#039;&#039;||Structure with special fields for the OQNLP solver:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;options&#039;&#039;||Structure array with options.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;morereal&#039;&#039;||Number of extra REAL workspace locations. Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem dependent default strategy.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moreint&#039;&#039;||Number of extra INTEGER  workspace locations.  Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem de- pendent default strategy.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039; Structure with result from optimization. The following fields are set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from OQNLP (TOMLAB standard).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||OQNLP information parameter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt; &#039;&#039;0 = Setup Error.&lt;br /&gt;
&lt;br /&gt;
0 = Status not set.&lt;br /&gt;
&lt;br /&gt;
1 = Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
2 = Fractional change in objective too small.&lt;br /&gt;
&lt;br /&gt;
3 = All remedies failed.&lt;br /&gt;
&lt;br /&gt;
4 = Too many iterations.&lt;br /&gt;
&lt;br /&gt;
5 = Problem is unbounded.&lt;br /&gt;
&lt;br /&gt;
6-10 = Problem infeasible.&lt;br /&gt;
&lt;br /&gt;
11-38 = Runtime failure.&lt;br /&gt;
&lt;br /&gt;
39 = Termination by user.&lt;br /&gt;
&lt;br /&gt;
40 = Jacobian overflow.&lt;br /&gt;
&lt;br /&gt;
41 = OPTQUEST Error.&lt;br /&gt;
&lt;br /&gt;
42 = Time limit  exceeded.&lt;br /&gt;
&lt;br /&gt;
43 = Feasible solution found. Other = Unknown return code.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. If ninf=0, last m == -v_k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. &#039;&#039;ConstrEv	&#039;&#039;Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (OQNLP).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===msnlpTL===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
Solves global constrained nonlinear problems.&lt;br /&gt;
&lt;br /&gt;
MSNLP solves problems of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ccccccl}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) &amp;amp; \\&lt;br /&gt;
\\&lt;br /&gt;
s/t &amp;amp; x_L &amp;amp; \leq &amp;amp; x  &amp;amp; \leq &amp;amp; x_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; b_L &amp;amp; \leq &amp;amp; Ax &amp;amp; \leq &amp;amp; b_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; c_L &amp;amp; \leq &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_U &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x,x_L,x_U \in R^{n},\, A \in R^{m_1 \times n},\,&lt;br /&gt;
b_L,b_U \in R^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c(x), c_L, c_U \in R^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Calling  Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = conAssign(...);&lt;br /&gt;
Result = tomRun(&#039;msnlp&#039;,Prob,...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob	&#039;&#039;Problem description structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraints coefficient matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints. For equality constraints (or fixed variables), set e.g. b_L(k) == b_U(k).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level in MEX interface.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||Flag telling whether to treat the problem as sparse (1) or dense.  If set to 1, the user should also provide a sparse 0-1 matrix  in Prob.ConsPattern giving the nonzero pattern.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP&#039;&#039;||Structure with fields defining the integer properties of the problem. The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;OQNLP&#039;&#039;||Structure with special fields for the MSNLP solver:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;options&#039;&#039;||Structure array with options.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;morereal&#039;&#039;||Number of extra REAL workspace locations. Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem dependent default strategy.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moreint&#039;&#039;||Number of extra INTEGER  workspace locations.  Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem de- pendent default strategy.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039; Structure with result from optimization. The following fields are set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from MSNLP (TOMLAB standard).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||MSNLP information parameter. &#039;&#039;&amp;lt; &#039;&#039;0 = Setup Error.&lt;br /&gt;
&lt;br /&gt;
0 = Status not set.&lt;br /&gt;
&lt;br /&gt;
1 = Optimal solution found.&lt;br /&gt;
&lt;br /&gt;
2 = Fractional change in objective too small.&lt;br /&gt;
&lt;br /&gt;
3 = All remedies failed.&lt;br /&gt;
&lt;br /&gt;
4 = Too many iterations.&lt;br /&gt;
&lt;br /&gt;
5 = Problem is unbounded.&lt;br /&gt;
&lt;br /&gt;
6-10 = Problem infeasible.&lt;br /&gt;
&lt;br /&gt;
11-38 = Runtime failure.&lt;br /&gt;
&lt;br /&gt;
39 = Termination by user.&lt;br /&gt;
&lt;br /&gt;
40 = Jacobian overflow.&lt;br /&gt;
&lt;br /&gt;
41 = OPTQUEST Error.&lt;br /&gt;
&lt;br /&gt;
42 = Time limit  exceeded.&lt;br /&gt;
&lt;br /&gt;
43 = Feasible solution found. Other = Unknown return code.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. If ninf=0, last m == -v k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;GradEv&#039;&#039;||Number of gradient evaluations. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv&#039;&#039;||Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (MSNLP).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===lsgrg2TL===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
Solves constrained nonlinear problems.&lt;br /&gt;
&lt;br /&gt;
LSGRG2 solves problems of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ccccccl}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) &amp;amp; \\&lt;br /&gt;
\\&lt;br /&gt;
s/t &amp;amp; x_L &amp;amp; \leq &amp;amp; x  &amp;amp; \leq &amp;amp; x_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; b_L &amp;amp; \leq &amp;amp; Ax &amp;amp; \leq &amp;amp; b_U &amp;amp; \\&lt;br /&gt;
{}  &amp;amp; c_L &amp;amp; \leq &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_U &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x,x_L,x_U \in R^{n},\, A \in R^{m_1 \times n},\,&lt;br /&gt;
b_L,b_U \in R^{m_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c(x), c_L, c_U \in R^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = conAssign(...);&lt;br /&gt;
Result = tomRun(&#039;lsgrg2&#039;,Prob,...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob	&#039;&#039;Problem description structure. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraints coefficient matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints. For equality constraints (or fixed variables), set e.g. b_L(k) == b_U(k).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level in optimizer and MEX interface. Set Prob.LSGRG2.options.IPR to set optimizer print level separately.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||Flag telling whether to treat the problem as sparse (1) or dense.  If set to 1, the user should also provide a sparse 0-1 matrix  in Prob.ConsPattern giving the nonzero pattern.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MaxCPU&#039;&#039;||Maximum allowed time  in seconds for the LSGRG2 run.  It is also possible to set this through the Prob.LSGRG2.options.MAXTIME parameter, in which case Prob.MaxCPU is ignored. LSGRG2&#039;s default value for MAXTIME is 1000 seconds.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optParam.MaxIter&#039;&#039;||Maximum number of iterations.  Default is 10000.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LSGRG2&#039;&#039;||Structure with special fields for the LSGRG2 solver:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;options&#039;&#039;||Structure array with  options.  See the TOMLAB /OQNLP  User&#039;s Guide for instructions and examples.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile&#039;&#039;||Name of file to receive the LSGRG2 iteration and results log. Independent of PriLevOpt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039; Structure with result from optimization. The following fields are set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equalit == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from LSGRG2 (TOMLAB standard).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||LSGRG2 information parameter. &#039;&#039;&amp;lt; &#039;&#039;0 = Setup Error.&lt;br /&gt;
&lt;br /&gt;
0 = Status not set.&lt;br /&gt;
&lt;br /&gt;
1 = Kuhn-Tucker conditions satisfied.&lt;br /&gt;
&lt;br /&gt;
2 = Fractional change in objective too small.&lt;br /&gt;
&lt;br /&gt;
3 = All remedies failed.&lt;br /&gt;
&lt;br /&gt;
4 = Too many iterations.&lt;br /&gt;
&lt;br /&gt;
5 = Problem is unbounded.&lt;br /&gt;
&lt;br /&gt;
6-10 = Problem infeasible.&lt;br /&gt;
&lt;br /&gt;
11-38 = Runtime failure.&lt;br /&gt;
&lt;br /&gt;
39 = Termination by user.&lt;br /&gt;
&lt;br /&gt;
40 = Jacobian overflow.&lt;br /&gt;
&lt;br /&gt;
41 = Engine Error.&lt;br /&gt;
&lt;br /&gt;
42 = Time limit  exceeded. Other = Unknown return code.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. If ninf=0, last m == -v k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. &#039;&#039;ConstrEv	&#039;&#039;Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (LSGRG2).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===OQNLP and MSNLP options===&lt;br /&gt;
&lt;br /&gt;
The following table shows all the options that the user can set for the OQNLP and MSNLP solvers. The LSGRG2 solver options are in Table 9. Observe that parameters which mention OptQuest are only available when using OQNLP (The OptQuest engine is part of OQNLP). All parameters should be set in &#039;&#039;Prob.OQNLP.options&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
User options for the TOMLAB  /OQNLP  solvers. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Option||Description||Default&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;BASIN_DECREASE_FACTOR&#039;&#039;||This value must be between 0 and 1. If DYNAMIC DISTANCE  FILTER is set to 1, the MAXDIST  value associated with any local solution is reduced by (1-BASIN_DECREASE_FACTOR)  if MERIT  WAITCYCLE consecutive trial  points have distance from the solution less than MAXDIST.||0.2&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;BASIN_OVERLAP_FIX&#039;&#039;||A value of 1 turns on logic which checks the MAXDIST values of all pairs 1 of local solutions, and reduces any pair of MAXDIST  values if their sum is greater then the distance between the 2 solutions.  This ensures that the spherical models of their basins of attracting do not overlap.  A value of 0 turns off this logic. Turning it off can reduce the number of NLP solver calls, but can also cause OQNLP to miss the global solution.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DISTANCE_FACTOR&#039;&#039;||If the distance between an OptQuest trial  point and any local solution found previously is less then DISTANCE FACTOR &#039;&#039;* &#039;&#039;MAXDIST, the NLP solver is not started from that trial point. MAXDIST is the largest distance  ever  traveled  to get  to that  local solution.   Increasing DIS- TANCE  FACTOR  leads to fewer solver calls and risks finding a worse solution. Decreasing it leads to more solver calls and possibly a better solution.||1.0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DYNAMIC_DISTANCE_FILTER&#039;&#039;||A value of 1 turns on logic which reduces the value of MAXDIST 1 (described under the DISTANCE  FILTER  keyword) for a local solution if MERIT  WAITCYCLE consecutive trial points have a distance from that  solution  less  than  MAXDIST. MAXDIST  is multiplied  by (1-BASIN REDUCTION  FACTOR). A value of 0 turns off this logic. Turning it off can decrease the number of NLP solver calls, but can also lead to a worse final solution.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DYNAMIC_MERIT_FILTER&#039;&#039;||A   value  of  1  turns   on  logic  which  dynamically  varies   the   pa-	1 rameters   which   increases   the   merit   filter   threshold,	THRESH- OLD INCREASE FACTOR. If MERIT  WAITCYCLE consecutive trial points have been rejected by the merit filter,  this value is replaced by max(THRESHOLD INCREASE FACTOR,  val), where val is the value of THRESHOLD INCREASE FACTOR which causes the merit filter to just accept the best of the previous MERIT  WAITCYCLE trial points. A value of 0 turns off this logic. Turning it off can reduce NLP solver calls, but may lead to a worse final solution.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FEASIBILITY_TOLERANCE&#039;&#039;||This tolerance is used to check each point returned by an NLP solver for feasibility.  If the largest absolute infeasibility at the point is larger than this tolerance, the point is classified infeasible.  This test is made because points returned by NLP solvers may occasionally  be infeasible despite feasible status  codes.   Some NLP  solvers use  internal scaling before testing for feasibility.  The unscaled problem may be infeasible, while the scaled one is feasible. If this occurs, increasing this tolerance (to 1.e-2 or larger) often eliminates the problem.||1.e-4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FEASIBILITY_MODE&#039;&#039;||If this option is set to 1 the system focuses on finding a feasible point, 0 stopping after the first NLP solver call which finds such a point. If set to 0, the system tries to find the global optimum of the objective function subject to the constraints.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;INFBND&#039;&#039;||This value (its negative) is given to OptQuest as the upper (lower) bound for any variable with no upper and lower bound. However, the original bounds are given to  the local solver,  so  it can produce solutions  not limited by this artificial bound. OptQuest  must have finite upper  and lower bounds  for each variable. If INFBND  (or any of the user-supplied  bounds) is  much larger than any component of the optimal solution, OptQuest will be less efficient because it is searching over a region that  is much larger than needed. Hence the user is advised to try to provide realistic values for all upper and lower bounds.  It is even more dangerous to make INFBND  smaller then some component of a globally optimal solution, since OptQuest can never generate a trial point near that solution. It is possible, however, for the local solver to reach a global solution in this case, since the artificial bounds are not imposed on it.||1.e5&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ITERATION_PRINT_FREQUENCY&#039;&#039;||If the OQNLP iteration log is written  to the OQNLP log file, one line	20 of output is written every k&#039;th OptQuest iteration, where k is the value given here.||20&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ITERATION_LIMIT&#039;&#039;||Increasing this limit  can allow OQNLP to find a better solution.  Try it if your run using 1000 iterations doesn&#039;t take too long. Surprisingly, the best solution using,  say 2000 iterations,  may be found in the first 1000 iterations, and that solution may be better then the one found with an iteration limit  of 1000. This is because OptQuest changes its search strategy depending on the  iteration  limit.   Because  of this,  it is also possible that  increasing  the  iteration  limit  will  yield  a worse solution, but this is rare. Decreasing this iteration limit  usually leads to a worse solution, but also reduces run time.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LOCALS_FILE&#039;&#039;||Specify a complete path and name for a file to which the objective value and values of all variables for all local solutions found will be written. For example, C:&#039;&#039;\&#039;&#039;temp&#039;&#039;\&#039;&#039;opt.out.  There are 2 possible formats for this file, specified by the LOCALS FILE FORMAT  option below. If there is no LOCALS FILE  specified, the locals file will  not be created. &#039;&#039;&#039;WARNING&#039;&#039;&#039;, no file will be created unless &#039;&#039;Prob.OQNLP.PrintFile &#039;&#039;is set.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LOCALS_FILE_FORMAT&#039;&#039;||There are 2 possible values for this  option.  The  REPORT entry creates the locals file in a format designed to be examined easily by eye, but processed  less easily by a computer program or spreadsheet.  The DATA1 entry creates a file with many records, each on a single line, each having the following format:  &#039;&#039;&amp;lt; indexof localoptimum  &amp;gt;&amp;lt; objval  &amp;gt;&amp;lt; varindex &amp;gt;&amp;lt; varindex &amp;gt;&#039;&#039;.||DATA1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MAX_LOCALS&#039;&#039;||When the number of distinct local solutions found by OQNLP exceeds the value specified here, OQNLP will stop, returning the best solution found.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MAX_SOLVER_CALLS&#039;&#039;||When the number of calls to the NLP solver exceeds the value specified here, OQNLP will stop, returning the best solution found.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MAX_SOLVER_CALLS_NOIMPROVEMENT&#039;&#039;||The positive integer specified here will cause OQNLP to stop whenever the number of consecutive solver calls with a fractional improvement in the  best  objective  value found less  than 1.e-4 exceeds that  values.  In other  words,  if the value specified  is 50, and there are more than 50 consecutive solver calls where the relative change in the best objective was less then 1.e-4 in all iterations, OQNLP will stop.||100&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MAXTIME&#039;&#039;||When the execution time spent by OQNLP exceeds this number of sec- onds, OQNLP will stop and return the best solution found.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MERIT_WAITCYCLE&#039;&#039;||This value must be a positive integer. If the merit filter is used, and there 20 are MERIT WAITCYCLE consecutive iterations where the merit filter logic causes the NLP solver not to be started, the  merit  filter  threshold is increased by the factor THRESHOLD INCREASE FACTOR (see below). Increasing MERIT  WAITCYCLE usually leads to fewer solver calls, but risks finding a worse solution.   Decreasing it leads to more solver calls, but may find a better solution.||20&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;OPTQUEST_ONLY&#039;&#039;||If you think the NLP solver is taking too long and/or not working well,	0 choosing 1 will stop it from being called. This may occur if the problem is of type &amp;quot;DNLP&amp;quot;, where one or more problem functions are discontin- uous or have discontinuous derivatives.  If the problem has only discrete (integer) variables,  choose 1, as there is nothing for the NLP solver to do (since it optimizes over the continuous variables when the integers are fixed, and there aren&#039;t any).||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;OQ_ALL_DISCRETE&#039;&#039;||This option sets  the  filter  logic for problems  with  discrete variables. Setting this option to 1 has the potential to produce better solutions but also consumes more computing time.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PENALTY_FUNCTION&#039;&#039;||Results using either choice are usually similar, but choosing 1 can lead	1 to fewer iterations. The 1 value causes the exact penalty function to be used, while 0 uses OptQuest&#039;s internal penalty function, whose penalty term is the largest percentage violation of all violated constraints.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;POINT GENERATION&#039;&#039;||&#039;&#039;OPTQUEST&#039;&#039; causes trial points to  be generated by the OptQuest driver. This option is only available with TOMLAB /OQNLP and is the default for this option. &#039;&#039;RANDOM&#039;&#039; causes trial points to be generated by sampling each variable from a uniform distribution defined within its bounds. &#039;&#039;SMARTRANDOM1&#039;&#039; generates trial points by sampling  each variable independently  from either  normal or triangular distributions. This  is the default for TOMLAB /MSNLP.||See text&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;RANDOM_NUMBER_SEED&#039;&#039;||The options are: String &#039;RANDOM&#039;  = random seed computed from clock. String &#039;DEFAULT&#039; = default seed value 1234. Any positive value = seed set to that value. Negative values = negated to positive. 0 = equivalent to &#039;DEFAULT&#039;.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SAMPLING_DISTRIBUTION&#039;&#039;||This keyword  is relevant  only when POINT GENERATION is set to 0 SMARTRANDOM1. Then a value of 0 causes normal distributions to be used to generate trial points, while a value of 1 causes  triangular distributions to be used.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SEARCH_PARAMETER&#039;&#039;||This parameter has a range between zero and one, and a default value of 0.5. Increasing it causes more trial points to be directed towards the boundary. This is advisable if you believe the optimal solution will be on the boundary or at a vertex, as is true for problems where a concave function is maximized subject to linear constraints.||0.5&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SEARCH TYPE&#039;&#039;||This option controls the search strategy used by OptQuest.  The three choices that are relevant for use within OQNLP are:&lt;br /&gt;
&#039;&#039;&#039;aggressive &#039;&#039;&#039;This choice controls the population update of the OptQuest algorithm. It triggers a very aggressive update, which keeps the best of the points generated from the current population as the new population. The risk in this is that all points in the new population may cluster in a small portion of the search volume, and regions far from this volume will not be explored in the next cycle.&lt;br /&gt;
&#039;&#039;&#039;boundary &#039;&#039;&#039;This option affects the trial points generated by OptQuest, directing them toward the boundary of the region defined by the linear constraints and variables bounds. The value of SEARCH PARAMETER discussed below controls the fraction of points that are directed towards the boundary.&lt;br /&gt;
&#039;&#039;&#039;crossover &#039;&#039;&#039;This option affects how OptQuest trial points are generated from population points. It retains the linear combination operator, but adds a &amp;quot;crossover&amp;quot;  operator, similar  to those used in evolutionary  or genetic algorithms, to create 2 additional trial points.||boundary&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;STAGE1_ITERATIONS&#039;&#039;||Specifies  the  total  number  of OptQuest  iterations in  stage 1 of the OQNLP algorithm,  where no NLP  solver  calls are made.   Increasing this sometimes leads to a better starting point for the first local solver call in stage 2, at the cost of delaying the call. Decreasing it can lead to more solver calls, but the first call occurs sooner.||200&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;STARTING_MULTIPLIER&#039;&#039;||Since no Lagrange multiplier  values are available until  the first  solver call  at  the  end of stage  1,  this  value is used for  all  multipliers  if PENALTY_FUNCTION  is set to 1.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;START_WITH_NLP_SOLVER&#039;&#039;||In the beginning, OQNLP passes the starting point defined in the TOMLAB model to the NLP subsolver.  This will ensure that solutions gen- erated with OQNLP will be always  as good as the one generated by the NLP subsolver alone.  After this initial  call the OQNLP algorithm con- tinues as usual.  The initial  call to the NLP subsolver starting from the point defined by the TOMLAB  model can be suppressed by setting this parameter to 0.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;THRESHOLD_INCREASE_FACTOR&#039;&#039;||This value must be nonnegative.  If there are MERIT  WAITCYCLE con- secutive OptQuest iterations where the merit filter logic causes the NLP solver not to be called, the merit threshold is increased by multiplying it by (1+THRESHOLD  INCREASE FACTOR)||0.2&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;USE_DISTANCE_FILTER&#039;&#039;||Use 0 to turn  off the  distance filter,  the  logic which starts the NLP 	1 solver at a trial point only if the (Euclidean) distance from that point to any local solution found thus far is greater than the distance threshold. Turning off the distance filter leads to more solver calls and more run time, and increases  the  chances of finding a global solution.   Turn  off both distance and merit filters to find (almost) all local solutions.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;USE_LINEAR_CONSTRAINTS&#039;&#039;||This option applies only to problems which have linear constraints other	0 than simple bounds on the variables. Using 1 (all OptQuest trial points satisfy the linear constraints) often leads to fewer iterations and solver calls, but OptQuest has to solve an LP to project each trial point onto the  linear  constraints.   For large problems (more  than 100 variables), this can greatly increase run time, so the default value is off (0)||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;USE_MERIT_FILTER&#039;&#039;||Use 0 to turn off the merit filter, the logic which starts the NLP solver 1 at a trial point only if the penalty function value at that point is below the merit threshold. This will lead to more solver calls, but increase the chances of finding a global solution. Turn off both filters of you want to find (almost) all local solutions.  This will cause the solver to be called at each stage 2 iteration.||1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WAITCYCLE&#039;&#039;||This value must  be a positive  integer.  If the  merit  filter  is  used, and	20 there  are WAITCYCLE consecutive  iterations  where the  merit  filter logic causes the NLP solver not to be started, the  merit  filter  thresh- old is increased by the factor THRESHOLD INCREASE FACTOR (see above). Increasing WAITCYCLE usually leads to fewer solver calls, but risks finding a worse solution. Decreasing it leads to more solver calls, but may find a better solution.||20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===LSGRG2 options===&lt;br /&gt;
&lt;br /&gt;
The following options are available for the LSGRG2 solver included  with  the TOMLAB /OQNLP  /MSNLP package. The fields are set in &#039;&#039;Prob.LSGRG2.options&#039;&#039;. It is only possible to set these fields when calling LSGRG2 directly, i.e. they are ignored if calling OQNLP.&lt;br /&gt;
&lt;br /&gt;
User options for the TOMLAB  /OQNLP  - LSGRG2 solver. The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Option||Description||Default&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPNEWT&#039;&#039;||A constraint is assumed to be binding if it is within this epsilon of one of its bounds.||1e-4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPINIT&#039;&#039;||If it is desired to run the problem with EPNEWT  initially  set fairly large and then tightened  at  the end  of the  optimization  then this  is  accomplished  by assigning EPINIT  the initial  tolerance and EPNEWT  the final one.  Doing this often reduces run time.||1e-4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPSTOP&#039;&#039;||If the fractional change in the objective is less than EPSTOP for NSTOP consecutive  iterations,  the  program will  stop.  The program will  also stop if Kuhn-Tucker optimality  conditions are satisfied to within EPSTOP.||1e-4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPSPIV&#039;&#039;||If, in constructing the basis inverse, the absolute value of a prospective pivot element is less than EPSPIV, the pivot will  be rejected  and another pivot element  will  be sought.||1e-6&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PH1EPS&#039;&#039;||If nonzero, the  phase 1 objective  (normally the  sum of infeasibilities,  sinf ) is aug- mented by a multiplier,  say w, times the true objective, obj, so that the new phase 1 objective is sinf+w\*obj.  The multiplier,  w, is selected so that, at the initial point, &#039;&#039;w *obj &#039;&#039;= &#039;&#039;P H &#039;&#039;1&#039;&#039;EP S *sinf &#039;&#039;. In phase 1 the term &#039;&#039;w *obj &#039;&#039;should be small relative to sinf, so PH1EPS should be less than 1.0, with 0.1 a reasonable default value.  The reason for setting PH1EPS positive is to cause phase 1 to pay a small amount of attention to the objective, so that any feasible point found will have a &#039;&#039;good &#039;&#039;objective value.||0.0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;AIJTOL&#039;&#039;||Zero tolerance for Jacobian elements. Any derivative with absolute value less than this value will be set to zero.||1e-10&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PIVPCT&#039;&#039;||When choosing pivots for each row, all columns with updated entries within PIVPCT of the maximum will be considered.||1e-1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PSTEP&#039;&#039;||This is the step size used in PARSHF and PARSHC for estimating partial derivatives of the  functions  with  respect  to  the variables.   This value  is computed from the calculated machine precision.||1e-8&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FUNPR&#039;&#039;||The function precision.||1e-8&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;CONDTL&#039;&#039;||When factoring the basis matrix,  this is the largest condition number which is ac- ceptable. Blocks whose estimated condition number exceeds CONDTL are considered to be ill-conditioned, and an error message is issued to that effect. If you see these messages, either automatic or user scaling can improve the situation.||1e+8&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPBOUN&#039;&#039;||A variable is considered to be at its bound if it is within EPBOUN of the bound.||1e-6&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;EPDEG&#039;&#039;||If problem becomes degenerate, the variable bounds will be perturbed by this relative tolerance, and the problem resolved.||1e-4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MAXTIME&#039;&#039;||Time limit in seconds.||1000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;NSTOP&#039;&#039;||If the fractional change in the objective is less than EPSTOP for NSTOP consecutive	3 iterations, the program will stop.||3&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ITLIM&#039;&#039;||If subroutine  newton  takes ITLIM iterations  without  converging satisfactorily, the 10 iterations are stopped and corrective action is taken.||10&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LIMSER&#039;&#039;||If the number of completed one dimensional searches equals LIMSER, optimization will terminate.||10000&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;INPRNT&#039;&#039;||If  1, turns  on printing  of initial  problem  structure,  option settings, initial  values, 0 bounds, and status of variables and rows.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;OTPRNT&#039;&#039;||If  1, turns  on printing  of final values and status  of rows and variables, Lagrange 0 multipliers, reduced gradients, and run statistics.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IPR&#039;&#039;||Suppress all output printing except initial  and final reports. 1 = Print one line of output for each one dimensional search. 2 = Provide more detailed information on the progress of each one dimensional  search. 3 = Expand the output to include the problem function values and variable values at each iteration as well as the separation of constraints into nonbinding and binding and variables into basic, superbasic and nonbasic. 4 = At each iteration  the  reduced gradient, the  search direction  and the  tangent vector are printed. 5 = Provides  details of the  basis inversion  process including the  initial  basis and its inverse. also displays  the  variable values and constraint  errors for each newton iteration. 6 = This is the maximum level of print available and includes all of the above along with detailed progress of the basis construction phase, including the basis inverse at each pivot.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IPN#&#039;&#039;||If IPN# is greater than zero then IPR will be set to # after IPN# iterations.  The	0 symbol # may be 4, 5, or 6. For example, setting IPN5 to 20 sets the print level IPR to 5 after 20 iterations.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IPER&#039;&#039;||If IPER is greater than zero then for every IPER th iteration, LSGRG2 output will 	0 use the current value of IPR, otherwise  use IPR=1.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IQUAD&#039;&#039;||Method for initial estimates of basic variables for each one dimensional search. 0 = Tangent vector and linear extrapolation will be used. 1 = Quadratic extrapolation will be used.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;KDERIV&#039;&#039;||Method for obtaining partial derivatives. 0 = Forward difference approximation. 1 = Central difference approximation. 2 = User supplied subroutine parsh is used.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MODCG&#039;&#039;||MODCG and MAXHES (see below) control use of a conjugate gradient (cg) method. If the number of superbasic  variables exceeds MAXHES,  the  cg method indicated by MODCG is used. Default value of &#039;&#039;MODCG &#039;&#039;= 6.  To use a cg method at each iteration, set &#039;&#039;MAXHES &#039;&#039;= 0. 1 = Uses fletcher reeves formula. 2 = Uses polak ribiere formula. 3 = Uses perrys formula. 4 = Uses 1 step version of the DFP quasi-newton method. 5 = Uses 1 step version of the BFGS quasi-newton method. 6 = Uses limited memory version of the BFGS quasi-newton method. NOTE: if &#039;&#039;MODC G &#039;&#039;= 6, the optional parameters MEMCG and HSCALE (see below) are relevant.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MXTABU&#039;&#039;||The maximum length of the tabu list in chuzq.||25&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IDEGLM&#039;&#039;||The maximum number of consecutive degenerate steps before the subroutine terminates.||25&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ISCALE&#039;&#039;||Determines whether Jacobian scaling will be used at the initial point. 0 = Do not scale jacobian. 1 = Scale the jacobian.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ISCLAG&#039;&#039;||Rescale the Jacobian after every ISCLAG line searches are performed. 0 = No rescaling is performed. &#039;&#039;&amp;gt; &#039;&#039;0 = Rescale after ISCLAG line searches.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MEMCG&#039;&#039;||If using  &#039;&#039;MODC G &#039;&#039;= 6, MEMCG  is the memory length  of the limited  memory cgmethod. Note: this method is only used if &#039;&#039;MODCG&#039;&#039; = 6.||3&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IBVBLM&#039;&#039;||If a basic variable is in the basis at a bound for IBVBLM consecutive iterations, the LSGRG2 basis factorization routine does not try to replace it.||2&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;HRDBND&#039;&#039;||The maximum length of the tabu list in chuzq. 0 = This allows the user routines to be called with some variables outside their bounds. This can cause errors when routines contain functions like square roots, logs, etc. 1 = All variables will be within their bounds.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FIXPIV&#039;&#039;||The maximum length of the tabu list in chuzq. 0 = The pivot tolerance PIVPCT  will be fixed at the specified level. 1 = The pivot tolerance PIVPCT  will be adjusted dynamically.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;GFEAS&#039;&#039;||Phase control. 0 = Both phase 1 and phase 2 are performed. 1 = Only a phase 1 is performed.  The algorithm will terminate when a feasible point is found.||0&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;USEPH0&#039;&#039;||Phase control. 0 = No phase 0 is performed. Instead, a normal phase 1 is performed if the initial point is not feasible. 1 = A phase 0 is performed to attempt to find an initial  feasible point via newtons method. This method is usually faster, but can occasionally  cause LSGRG2 to fail, in which case it should be disabled.||1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===LSGRG2 printing===&lt;br /&gt;
&lt;br /&gt;
The LSGRG2 printing logic is described below. Prob.PriLevOpt is called PriLev in the text.&lt;br /&gt;
&lt;br /&gt;
PriLev controls the amount of output from LSGRG2, by setting  the print  level (IPR) to PriLev. PriLev also controls whether information shall be printed to the MATLAB screen or not. If PriLev is &#039;&#039;&amp;gt; &#039;&#039;0, information from LSGRG2 is printed to the MATLAB screen.&lt;br /&gt;
&lt;br /&gt;
Prob.LSGRG2.options.IPR is a solver specific option controlling the amount of output to be printed. It takes precedence to PriLev, i.e. an old IPR value set by PriLev is reset to the new Prob.LSGRG2.options.IPR value. IMPORTANT: PriLev remains PriLev, and it still controls any output to the MATLAB screen.&lt;br /&gt;
&lt;br /&gt;
Prob.LSGRG2.PrintFile is the name of the output file. If set by the user and printing is turned on, the file will be created.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;PriLev &amp;lt;&#039;&#039;= 0 and printing  is enabled through solver specific options and no Prob.LSGRG2.PrintFile name is given, a default file is opened.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;PriLev &amp;gt; &#039;&#039;0 and printing is enabled in some way and no Prob.LSGRG2.PrintFile name is given, no default file will be opened, as the user may only want screen printing.&lt;br /&gt;
&lt;br /&gt;
Options controlling printing are: Prob.LSGRG2.options.INPRNT, .OTPRNT, .IPR, .IPN\#, .IPER. In summary:&lt;br /&gt;
&lt;br /&gt;
*Prob.PriLevOpt controls .IPR as long as .IPR is not given explicitly.&lt;br /&gt;
&lt;br /&gt;
*No default print file is created if Prob.PriLevOpt is set.  Although, if Prob.LSGRG2.PrintFile is set, a print file always is created,  as long as there is something to print.&lt;br /&gt;
&lt;br /&gt;
==Algorithm==&lt;br /&gt;
&lt;br /&gt;
===Multistart overview===&lt;br /&gt;
&lt;br /&gt;
A pseudo-code description of the MSNLP algorithm follows, in which SP(xt) denotes the starting point generator and xt is the candidate starting point produced. We refer to the local NLP solver as L(xs, xf ), where xs is the starting point and xf the final point. The function UPDATE  LOCALS(xs, xf, w) processes and stores solver output xf, using the starting point xs to compute the distance from xs to xf, and produces updated penalty weights, w.&lt;br /&gt;
&lt;br /&gt;
====MSNLP Algorithm====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAGE  1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
x0 = user initial  point&lt;br /&gt;
&lt;br /&gt;
Call L(x0, xf )&lt;br /&gt;
&lt;br /&gt;
Call UPDATE  LOCALS(x0, xf,w)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FOR  &#039;&#039;&#039;i = 1, n1 &#039;&#039;&#039;DO &#039;&#039;&#039;Call SP(xt(i)) Evaluate P(xt(i),w)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ENDDO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
xt*  = point yielding best value of P(xt(i),w) over all stage one points, (i = 1, 2, ..., n1). call L(xt*, xf )&lt;br /&gt;
&lt;br /&gt;
Call UPDATE  LOCALS(xt*, xf,w)&lt;br /&gt;
&lt;br /&gt;
threshold = P(xt\*,w)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAGE  2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FOR&#039;&#039;&#039; i = 1, n2 &#039;&#039;&#039;DO&#039;&#039;&#039; Call SP(xt(i)) Evaluate P(xt(i),w)&lt;br /&gt;
&lt;br /&gt;
Perform merit and distance filter tests: Call distance filter(xt(i), dstatus)&lt;br /&gt;
&lt;br /&gt;
Call merit filter(xt(i), threshold, mstatus)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IF &#039;&#039;&#039;(dstatus and mstatus = &#039;accept&#039;) &#039;&#039;&#039;THEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Call L(xt(i), xf )&lt;br /&gt;
&lt;br /&gt;
Call UPDATE  LOCALS(xt(i), xf, w)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ENDIF ENDDO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After an initial  call to L at the user-provided initial  point, x0, stage 1 of the algorithm performs n1 iterations in which SP(xt) is called, and the L1 exact penalty value P(xt,w)  is calculated. The user can set n1 through the MSNLP options  structure  using  the  STAGE1 ITERATIONS keyword.  The  point  with  the  smallest  of these P values is chosen as the starting point for the next call to L, which begins stage 2. In this stage, n2 iterations are performed in which candidate starting points are generated and L is started at any one which passes the distance and merit filter tests.&lt;br /&gt;
&lt;br /&gt;
The distance filter helps insure that the starting points for L are diverse, in the sense that they are not too close to any previously found local solution.  Its goal is to prevent L from starting more than once within  the basin of attraction of any local optimum.  When a local solution is found, it is stored in a linked list,  ordered by its objective value, as is the Euclidean distance between it and the starting point that led to it.  If a local solution is located more than once, the maximum of these distances, maxdist, is updated and stored. For each trial point, t, if the distance between t and any local solution already found is less than DISTANCE  FACTOR\*maxdist, L is not started from the point, and we obtain the next trial solution from the generator.&lt;br /&gt;
&lt;br /&gt;
This distance filter implicitly  assumes that the attraction basins are spherical, with radii at least maxdist.  The default value of DISTANCE  FACTOR  is 1.0, and it can be set to any positive value. As DISTANCE  FACTOR approaches zero, the filtering  effect  vanishes, as would be appropriate if there were  many closely spaced local solutions. As it becomes larger than 1, the filtering effect increases until eventually L is never started.&lt;br /&gt;
&lt;br /&gt;
The merit filter helps insure that the starting points for L have high quality, by not starting from candidate points whose exact penalty function value P1 is greater than a threshold.  This threshold is set initially  to the P1 value of the best candidate point found in the first stage of the algorithm.  If trial  points are rejected by this test for more than WAITCYCLE consecutive iterations, the threshold is increased by the updating rule:&lt;br /&gt;
&lt;br /&gt;
threshold &#039;&#039;&amp;lt; - &#039;&#039;threshold + THRESHOLD INCREASE FACTOR&#039;&#039;*&#039;&#039;(1&#039;&#039;.&#039;&#039;0 + &#039;&#039;abs&#039;&#039;(&#039;&#039;threshold&#039;&#039;))&lt;br /&gt;
&lt;br /&gt;
where the  default  value  of THRESHOLD INCREASE FACTOR  is  0.2 and that  for WAITCYCLE is 20.  The additive 1.0 term is included so that threshold increases by at least THRESHOLD INCREASE FACTOR  when its current value is near zero. When a trial point is accepted by the merit filter, threshold is decreased by setting it to the P1 value of that point.&lt;br /&gt;
&lt;br /&gt;
The combined effect of these 2 filters is that L is started at only a few percent of the trial points, yet global optimal solutions are found for a very high percentage of the test problems. However, the chances of finding a global opti- mum are increased by increasing ITERATION LIMIT (which we recommend trying first) or by &#039;loosening&#039; either or both filters, although this is rarely necessary if the dynamic filters and basin overlap fix are used, as they are by default. If the ratio of stage 2 iterations to solver calls is more than 20 using the current filter parameters, and com- putation times with the default filter parameters are reasonable, one can try loosening the filters. This is achieved for the merit filter either by decreasing WAITCYCLE or by increasing THRESHOLD INCREASE FACTOR (or doing both), and for the distance filter by decreasing DISTANCE  FACTOR. Either or both filters may be turned off, by setting USE DISTANCE  FILTER  and/or  USE MERIT  FILTER  to 0.  Turning off both causes an NLP solver call at every stage 2 trial point.  This is the best way to insure that all local optima are found, but it can take a long time.&lt;br /&gt;
&lt;br /&gt;
===Pure and smart random drivers===&lt;br /&gt;
&lt;br /&gt;
The &#039;pure&#039; random (PR) driver generates  uniformly distributed points within  the  hyper-rectangle  S defined  by the variable bounds. However, this rectangle is often very large, because users often set bounds to (-inf,+inf ), (0,+inf ), or to large positive and/or negative numbers, particularly in problems with many variables. This usually has little adverse impact on a good local solver, as long as the starting point is chosen well inside the bounds. But the PR generator will often generate starting points with very large absolute component values when some bounds are very large, and this sharply degrades solver performance.  Thus we were motivated to develop random generators which control the likelihood of generating candidate points with large components, and intensify the search by focusing points into promising regions. We present two variants, one using normal, the other triangular distributions.  Pseudo-code for this &#039;smart random&#039; generator using normal distributions follows, where w is the set of penalty weights determined by the &#039;update locals&#039; logic discussed above, after the first solver call at the user-specified initial  point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Smart  Random  Generator  with  Normal  Distributions, SRN(xt)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IF &#039;&#039;&#039;(first call) &#039;&#039;&#039;THEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generate k1 (default 400) diverse points in S and evaluate the exact penalty function P(x,w) at each point. B=subset of S with k2 (default 10) best P values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FOR  &#039;&#039;&#039;i = 1,nvars &#039;&#039;&#039;DO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
xmax(i) = max of component i of points in B xmin(i)= min of component i of points in B mu(i) = (xmax(i) + xmin(i))/2&lt;br /&gt;
&lt;br /&gt;
ratio(i)  = (xmax(i) - xmin(i))/(1+buvar(i)-blvar(i))&lt;br /&gt;
&lt;br /&gt;
sigfactor = 2.0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IF &#039;&#039;&#039;(ratio&#039;&#039;&amp;gt;&#039;&#039;0.7) sigfactor = f(ratio)&lt;br /&gt;
&lt;br /&gt;
sigma(i) = (xmax(i) - xmin(i))/sigfactor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ENDDO ENDIF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FOR  &#039;&#039;&#039;i = 1,nvars &#039;&#039;&#039;DO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Generate a normally distributed random variable rv(i)  with mean mu(i) and standard deviation sigma(i) If rv(i)  is between blvar(i) and buvar(i), xt(i)  = rv(i)&lt;br /&gt;
&lt;br /&gt;
If rv(i)&#039;&#039;&amp;lt;&#039;&#039;blvar(i), generate xt(i)  uniformly between blvar(i) and xmin(i)&lt;br /&gt;
&lt;br /&gt;
If rv(i)&#039;&#039;&amp;gt;&#039;&#039;buvar(i), generate xt(i)  uniformly between xmax(i) and buvar(i)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ENDDO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Return xt&lt;br /&gt;
&lt;br /&gt;
This SRN generator attempts to  find a subset,  B, of k2 &#039;good&#039; points,  and generates  most of its trial points xt,  within  the  smallest  rectangle containing B. It first  generates  a set of k1 diverse points within  the  bounds using a stratified random sampling procedure with frequency-based memory. For each variable x(i),  this divides the interval \[blvar(i),  buvar(i)\] into 4 equal segments,  chooses a segment with probability inversely proportional to the frequency with  which it has been chosen thus far, then generates a random point  in this segment.   We choose k2 of these points having the best P(x,w) penalty values, and use the smallest rectangle containing these, intersecting the ith axis at points [xmin(i), xmax(i)], to define n univariate normal distributions (driver SRN) or n univariate triangular distributions (driver SRT). The mean of the ith normal distribution,  mu(i), is the midpoint of the interval \[xmin(i),  xmax(i)\], and this point is also the mode of the ith triangular distribution,  whose lower and upper limits are blvar(i)  and buvar(i).  The standard deviation of the ith normal distribution  is selected as described below. The trial point xt is generated by sampling n times independently from these distributions.  For the driver using normals, if the generated point lies within  the bounds, it is accepted. Otherwise, we generate a uniformly distributed point between the violated bound and the start of the interval.&lt;br /&gt;
&lt;br /&gt;
To determine the standard deviation of the normal distributions, we compute ratio, roughly the ratio of interval width to distance between bounds,  where the factor 1.0 is included to avoid division by zero when the bounds are equal (fixed variables).  If the interval width is small relative to the distance between bounds for variable i&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;ratio  = &#039;&#039;0&#039;&#039;.&#039;&#039;7), then  the standard deviation sigma(i) is half the  interval  width,  so about  1/3 of the  xt(i) values fall outside the interval, providing diversity when the interval does not contain an optimal value for x(i).  If the bounds are large, then ratio should be small, say less than 0.1, so xt(i)  values near the bounds are very unlikely. If ratio &#039;&#039;&amp;gt; &#039;&#039;0.7, the function f sets sigfactor equal to 2.56 if ratio is between 0.7 and 0.8, increasing in steps to 6.2 if textitratio &#039;&#039;&amp;gt; &#039;&#039;0.999. Thus  if ratio is near 1.0, more than 99% of the  values fall within  the interval,  and few have to be projected back within  the bounds. The projecting back process avoids undesirable clustering of trial points at a bound, by generating points uniformly between the violated bound and the nearest edge of the interval \[xmin(i), xmax(i)\].  When the interval \[xmin(i), xmax(i)\] is sharply skewed toward one of the variable bounds and is much narrower than the distance between the bounds, a symmetric distribution like the normal, combined with our projection procedure, generates too many points between the interval and its nearest bound. A quick scan of the test results indicates that this happens rarely, but an asymmetric distribution  like the triangular overcomes this  difficulty,  and needs no projection.&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=MINLP_Solver_Reference&amp;diff=2615</id>
		<title>MINLP Solver Reference</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MINLP_Solver_Reference&amp;diff=2615"/>
		<updated>2012-01-22T15:54:29Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the MINLP Manual|link=[[MINLP|MINLP]]}}&lt;br /&gt;
The MINLP solvers are a set of Fortran solvers that were developed by Roger Fletcher and Sven Leyffer, Univer- sity of Dundee, Scotland.  All  solvers are available for sparse and dense continuous and mixed-integer quadratic programming (&#039;&#039;&#039;qp&#039;&#039;&#039;,&#039;&#039;&#039;miqp&#039;&#039;&#039;)  and continuous and mixed-integer nonlinear constrained optimization.&lt;br /&gt;
&lt;br /&gt;
[[#Table: Solver routines in TOMLAB /MINLP.]] lists the solvers included in TOMLAB  /MINLP. The solvers are called using a set of MEX-file interfaces developed as part  of TOMLAB.   All  functionality  of the  MINLP  solvers  are available and changeable in the TOMLAB  framework in Matlab.&lt;br /&gt;
&lt;br /&gt;
Detailed descriptions of the TOMLAB  /MINLP solvers are given in the following sections.  Extensive TOMLAB m-file help is also available, for example &#039;&#039;help minlpBBTL  &#039;&#039;in Matlab will display the features of the minlpBB solver using the TOMLAB format.&lt;br /&gt;
&lt;br /&gt;
TOMLAB  /MINLP package solves &#039;&#039;&#039;mixed-integer  nonlinear programming  &#039;&#039;&#039;(&#039;&#039;&#039;minlp&#039;&#039;&#039;)  problem defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{llcccll}&lt;br /&gt;
-\infty &amp;lt; &amp;amp;x_{L} &amp;amp; \leq  &amp;amp; x &amp;amp; \leq &amp;amp; x_{U}&amp;amp; &amp;lt; \infty  \\&lt;br /&gt;
&amp;amp;b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U}&amp;amp; \\&lt;br /&gt;
&amp;amp;c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U},&amp;amp;&lt;br /&gt;
~x_{j} \in \mathbb{N}\ ~~\forall j \in $I$,  \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A&lt;br /&gt;
\in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;. The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;,&lt;br /&gt;
the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mixed-integer quadratic  programming  &#039;&#039;&#039;(&#039;&#039;&#039;miqp&#039;&#039;&#039;)  problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in&lt;br /&gt;
\mathbb{R}^{m_1}&amp;lt;/math&amp;gt;. The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of&lt;br /&gt;
&amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
as well as sub-types of these problems.&lt;br /&gt;
&lt;br /&gt;
====Table: Solver routines in TOMLAB /MINLP.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function||Description||Reference&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bqpd&#039;&#039;||Quadratic programming using a null-space method.||&#039;&#039;bqpdTL.m&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;miqpBB&#039;&#039;||Mixed-integer quadratic programming using &#039;&#039;bqpd &#039;&#039;as subsolver.||&#039;&#039;miqpBBTL.m&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;filterSQP&#039;&#039;||Constrained nonlinear minimization using a Filtered Sequential QP method.||&#039;&#039;filterSQPTL.m&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;minlpBB&#039;&#039;||Constrained, mixed-integer nonlinear minimization  using a branch- and bound search scheme. &#039;&#039;filterSQP &#039;&#039;is used as NLP solver.||&#039;&#039;minlpBBTL.m&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==bqpd==&lt;br /&gt;
&lt;br /&gt;
The BQPD code solves quadratic programming (minimization of a quadratic function subject to linear constraints) and linear programming problems. If the Hessian matrix Q is positive definite, then a global solution is found. A global solution is also found in the case of linear programming (Q=0).  When Q is indefinite, a Kuhn-Tucker point that is usually a local solution is found.&lt;br /&gt;
&lt;br /&gt;
The code implements a null-space active set method with a technique for resolving degeneracy that guarantees that cycling does not occur even when round-off errors are present. Feasibility is obtained by minimizing a sum of constraint violations. The Devex method for avoiding near-zero pivots is used to promote stability.  The matrix algebra is implemented so that the algorithm can take advantage of sparse factors of the basis matrix.  Factors of the reduced Hessian matrix are stored in a dense format, an approach that is most effective when the number of free variables is relatively small.  The user must supply a subroutine to evaluate the Hessian matrix Q, so that sparsity in Q can be exploited. An extreme case occurs when Q=0 and the QP reduces to a linear program. The code is written to take maximum advantage of this situation, so that it also provides an efficient method for linear programming.&lt;br /&gt;
&lt;br /&gt;
===Direct Solver Call===&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem.  Please refer to Section 3.1.2 for information on how to use bqpd with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;bqpd &#039;&#039;solves quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x\\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Calling Syntax===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Inform, x k, Obj, g, Iter, k, ls, e, peq, lp, v k] = bqpds(A, x 0, bl, bu,&lt;br /&gt;
H, fLowBnd, mlp, mode, kmax, PriLev, PrintFile,  k, ls, e, peq, lp, optPar, Prob, moremem);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sparse version MEX is bqpds, the dense is bqpdd.&lt;br /&gt;
&lt;br /&gt;
====Description  of Inputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A &#039;&#039;||Constraint matrix, n x m+1 (SPARSE).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl&#039;&#039;||Lower bounds on (x, Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu&#039;&#039;||Upper bounds on (x, Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  x vector (if empty set as 0).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;H&#039;&#039;||Quadratic matrix, n x n, SPARSE or DENSE, empty if LP problem. If H is a string, H should be the name of a function routine, e.g if H = &#039;HxComp&#039; then the function routine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function Hx = HxComp(x, nState, Prob)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should compute H * x. The user must define this routine nState == 1 if calling for the first time, otherwise 0. Third argument, the Prob structure, should only be used if calling BQPD with the additional input parameter Prob, see below.&lt;br /&gt;
&lt;br /&gt;
Tomlab implements this callback to the predefined Matlab function HxFunc.m, using the call if Prob.DUNDEE.callback == 1.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;fLowBnd&#039;&#039;||Lower bound on optimal f(x).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;mlp&#039;&#039;||Maximum number of levels of recursion.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;mode&#039;&#039;||Mode of operation, default set as 2*Prob.WarmStart.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;kmax&#039;&#039;||Max dimension of reduced space (k), default n, set as 0 if LP.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Print Level.  (0 = off, 1 = summary, 2 = scalar information, 3 = verbose)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile&#039;&#039;||Name of the Print  file.   Unit  9 is used.   Name includes  the path, maximal number of characters = 500. Output  is written  on file bqpd.txt, if not given. To make bqpd to not open and not write anything to file:  Set PriLev = 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|For Warm Start:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;k&#039;&#039;||Dimension of the reduced space (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ls&#039;&#039;||Indices of active constraints, first n-k used for warm start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;e&#039;&#039;||Steepest-edge  normalization coefficients (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;peq&#039;&#039;||Pointer to the end of equality constraint indices in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lp&#039;&#039;||List of pointers to recursion information in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector of optimization parameters. If -999, set to default. Length from 0 to 20 allowed.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(1):  iprint&#039;&#039;||Print level in BQPD, default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(2):  tol&#039;&#039;||Relative accuracy in solution, default 1E-10.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(3):  emin&#039;&#039;||Use cscale (constraint scaling) 0.0 no scaling, default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic, default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(5):  nrep&#039;&#039;||Max number of refinement steps, default 2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(8):  nfreq&#039;&#039;||The max interval between refactorizations, default 500.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob&#039;&#039;||Sending the Prob structure is optional, only of use if sending H as a function string, see input H.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moremem&#039;&#039;||Scalar or 2x1-vector with workspace increase.  If &#039;&#039;&amp;lt;&#039;&#039;0, use default strategy.  If scalar,  use same increase for both real and integer workspaces.  If vector, first element is for real workspace, second for integer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Result of BQPD run, 0 = Optimal solution found. See the same parameter in section 3.1.2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector with n decision variable values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Obj&#039;&#039;||Objective function value at optimum. If infeasible, the sum of infeasibilities&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g&#039;&#039;||Gradient at solution.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|For Warm Start:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;k&#039;&#039;||Dimension of the reduced space (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ls&#039;&#039;||Indices of active constraints, first n-k used for warm start.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;e&#039;&#039;||Steepest-edge  normalization coefficients (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;peq&#039;&#039;||Pointer to the end of equality constraint indices in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lp&#039;&#039;||List of pointers to recursion information in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange parameters.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Using TOMLAB===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;bqpdTL &#039;&#039;solves nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x\\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Calling  Syntax====&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = &#039;&#039;o&#039;&#039;Assign( ... );&lt;br /&gt;
Result = tomRun(&#039;bqpd&#039;, Prob ... );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = ProbCheck(Prob,&#039;bpqd&#039;); &lt;br /&gt;
Result = bqpdTL(Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call Prob = &#039;&#039;o&#039;&#039;Assign( ... ) or Prob=ProbDef; to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraint matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c	&#039;&#039;||Linear coefficients in objective function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.F &#039;&#039;||Quadratic matrix of size n x n.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print Level (0 = off, 1 = summary, 2 = scalar information, 3 = verbose).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart&#039;&#039;||If TRUE (=1),  use warm start, otherwise cold start. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale &#039;&#039;||If TRUE (=1),  use sparse version, otherwise dense. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.QPmin&#039;&#039;||Lower bound for the QP subproblems. Default: -1E300.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.callback&#039;&#039;||If 1, use a callback to Matlab to compute QP.F * x for different x. Faster when F is very large and almost dense, avoiding copying of F from Matlab to MEX.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.kmax&#039;&#039;||Max dimension of reduced space (k), default n, set as 0 if LP.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mlp&#039;&#039;||Maximum number of levels of recursion. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mode&#039;&#039;||Mode of operation, default set as 2*Prob.WarmStart. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.x&#039;&#039;||Solution (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.k&#039;&#039;||Dimension of the reduced space (Warm Start). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&#039;&#039;&lt;br /&gt;
|&#039;&#039;DUNDEE.e&#039;&#039;||Steepest-edge normalization coefficients (Warm Start). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.ls&#039;&#039;||Indices of active constraints, first n-k used for warm start. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.lp&#039;&#039;||List of pointers to recursion information in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.peq &#039;&#039;||Pointer to the end of equality constraint indices in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.PrintFile &#039;&#039;||Name of print file. Amount/print type determined by optPar(1). Default name bqpd.txt.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar &#039;&#039;||Vector of optimization parameters. If -999, set to default Length from 0 to 20 allowed.  Elements used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(1):  iprint&#039;&#039;||Print level in PrintFile,  default 0. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(2):  tol&#039;&#039;||Relative accuracy in solution, default 1E-10. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(3):  emin&#039;&#039;||1.0 Use cscale (constraint scaling) 0.0 no scaling, default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic, default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(5):  nrep&#039;&#039;||Max number of refinement steps, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(8):  nfreq &#039;&#039;||The max interval between refactorizations, default 500.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Description  of Outputs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Result&#039;&#039;||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum or constraint deviation if infeasible.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Exact gradient computed at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from bqpd.m (similar to TOMLAB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||BQPD information parameter.&lt;br /&gt;
&lt;br /&gt;
0 - Solution obtained&lt;br /&gt;
&lt;br /&gt;
1 - Unbounded problem detected (f(x)¡=fLow occurred)&lt;br /&gt;
&lt;br /&gt;
2 - Lower bound bl(i) &#039;&#039;&amp;gt; &#039;&#039;bu(i) (upper bound) for some i&lt;br /&gt;
&lt;br /&gt;
3 - Infeasible problem detected in Phase 1&lt;br /&gt;
&lt;br /&gt;
4 - Incorrect setting of m, n, kmax, mlp, mode or tol&lt;br /&gt;
&lt;br /&gt;
5 - Not enough space in lp&lt;br /&gt;
&lt;br /&gt;
6 - Not enough space for reduced Hessian matrix (increase kmax)&lt;br /&gt;
&lt;br /&gt;
7 - Not enough space for sparse factors&lt;br /&gt;
&lt;br /&gt;
8 - Maximum number of unsuccessful restarts taken&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MinorIter&#039;&#039;||Number of minor iterations. Always set to 0. &#039;&#039;FuncEv	&#039;&#039;Number of function evaluations.  Set to Iter. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;GradEv&#039;&#039;||Number of gradient evaluations. Set to Iter. &#039;&#039;ConstrEv	&#039;&#039;Number of constraint evaluations.  Set to 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==filterSQP==&lt;br /&gt;
&lt;br /&gt;
The solver filterSQP is a Sequential Quadratic Programming solver  suitable  for solving large, sparse or dense linear, quadratic and nonlinear programming problems. The method avoids the use of penalty functions.  Global convergence is enforced through the use of a trust-region and the new concept of a &amp;quot;filter&amp;quot; which accepts a trial point whenever the objective or the constraint violation is improved compared to all previous iterates. The size of the trust-region is reduced if the step is rejected and increased if it is accepted (provided the agreement between the quadratic model and the nonlinear functions is sufficiently good).&lt;br /&gt;
&lt;br /&gt;
This  method has performed  very  well  in comparative  numerical testing, and has the advantage that  the  user does not need to supply any estimates of penalty parameters. The NLP problem is specified by means of user subroutines, and it is necessary to provide information about both first and second derivatives of the nonlinear functions in the problem.&lt;br /&gt;
&lt;br /&gt;
It must be used in conjunction with the bqpd solver.&lt;br /&gt;
&lt;br /&gt;
===Direct Solver Call===&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem.  Please refer to Section 3.2.2 for information on how to use filterSQP with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filterSQP &#039;&#039;solves constrained nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x    &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp; &amp;amp; c(x) &amp;amp; &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in&lt;br /&gt;
\mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1+m_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c(x) \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full input matrix A has three parts A = A = [g ConsPattern&#039; A&#039;];&lt;br /&gt;
&lt;br /&gt;
Where  g is a vector  of length  n, values irrelevant, ConsPattern  is the  0-1 pattern of the nonlinear constraint gradients and A is the linear constraint coefficient matrix.&lt;br /&gt;
&lt;br /&gt;
====Calling  Syntax====&lt;br /&gt;
&lt;br /&gt;
The file &#039;funfdf.m&#039; must be defined and contain: function [mode, f, g] = funfdf(x, Prob, mode, nstate) to compute the objective function f and the gradient g at the point x.&lt;br /&gt;
&lt;br /&gt;
The file &#039;funcdc.m&#039; must  be defined  and contain:  function [mode ,c ,dcS] = funcdc(x, Prob, mode, nstate) to compute the  nonlinear  constraint  value c and the constraint  Jacobian dcS for the  nonlinear  constraints at the point x.&lt;br /&gt;
&lt;br /&gt;
[ifail, x k, f k, c k, v k, lws, istat, rstat] = filSQPs( A, bl, bu, nnCon, x 0, Scale, scmode, fLow, MaxIter, rho, mlp, kmax, maxf, WarmStart, lws, istat, PriLev, pname, optPar, Prob, moremem);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The sparse version MEX is filSQPs, the dense is filSQPd.&lt;br /&gt;
&lt;br /&gt;
====Description  of Inputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Gradient matrix [g ConsPattern&#039; A&#039;] (sparse or dense).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl&#039;&#039;||Lower bounds on (x,c(x),Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu&#039;&#039;||Upper bounds on (x,c(x),Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nnCon&#039;&#039;||Number of nonlinear constraints (i.e. length(c(x)).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  x vector (if empty set as 0).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Scale&#039;&#039;||n+m  vector  scale factors  for variables and constraints  (same ordering  as bl, bu).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;scmode&#039;&#039;||Scale mode:&lt;br /&gt;
&lt;br /&gt;
0 - unit variable and constraint scaling (Scale can be set empty).&lt;br /&gt;
&lt;br /&gt;
1 - User provided scale factors for variables.  Scale must be of length n.&lt;br /&gt;
&lt;br /&gt;
2 - Unit  variable scaling,  user provided constraint  scaling.   Scale must  be of length n+m, but only the last m elements are used.&lt;br /&gt;
&lt;br /&gt;
3- User provided  variable AND  constraint  scaling.   Scale must  be of length n+m (n+nnCon+nnLin)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;fLow&#039;&#039;||A lower bound on the objective function value.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MaxIter&#039;&#039;||Maximum number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rho&#039;&#039;||Initial  trust-region radius.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;mlp&#039;&#039;||Maximum level parameter for resolving degeneracy in BQPD.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;kmax&#039;&#039;||Maximum size of null-space (at most n).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;maxf&#039;&#039;||Maximum size of the filter.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart&#039;&#039;||Set to 1 to restart the solver. If a warmstart is requested, the input parameters lws and istat must be provided.  Also, n and m (the number of variables and constraints) may not change.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lws&#039;&#039;||Used only when doing a warmstart.  This must be the lws vector returned by the previous call to filterSQP. Otherwise, set to empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lam&#039;&#039;||Multipliers, n+m values required for warmstarts. If wrong length, zeros are set in the MEX interface.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat&#039;&#039;||Used only when doing a warmstart.   Must be the  first  element  of the istat vector returned by the previous call to filterSQP. Otherwise, set to empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Print level. See also input parameter pname.&lt;br /&gt;
&lt;br /&gt;
0 - Silent, except for minor output into ¡pname¿.out&lt;br /&gt;
&lt;br /&gt;
1 - One line per iteration&lt;br /&gt;
&lt;br /&gt;
2 - Scalar information printed&lt;br /&gt;
&lt;br /&gt;
3 - Scalar and vector information printed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;pname&#039;&#039;||Problem name, at  most 10 characters. The output files are named &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.sum and &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.out.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector of max length 20 with optimization parameters:  If any element is -999, default value is assigned. Elements 2-8 are BQPD parameters, 1,9-11,19-20 for filterSQP.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(1):  iprint&#039;&#039;||Print level in filterSQP, default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(2):  tol &#039;&#039;||Relative tolerance for BQPD subsolver, default 1E-10.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(3):  emin&#039;&#039;||1=Use cscale in BQPD, 0=no scaling , default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic (BQPD), default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(5):  nrep&#039;&#039;||Max number of refinement steps (BQPD), default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(8):  nfreq&#039;&#039;||The max interval between refactorizations, default 500. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(9):  NLP eps&#039;&#039;||NLP subproblem tolerance, default 1E-6.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(10): ubd&#039;&#039;||Upper bound on constraint violation used in the filter, default 1E-2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(11): tt&#039;&#039;||Parameter related to ubd. The actual upper bound is defined by the maximum of ubd and tt multiplied by the initial  constraint violation., default 0.125.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(19): infty&#039;&#039;||A large value representing infinity,  default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(20): Nonlin&#039;&#039;||If 1, skip linear feasibility tests filterSQP treating all constraints as nonlinear, default 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob&#039;&#039;||The Tomlab problem definition structure.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moremem&#039;&#039;||Scalar or 2x1-vector with workspace increase. If &#039;&#039;&amp;lt;&#039;&#039;0, use default strategy.  If scalar,  use same increase for both real and integer workspaces.  If vector, first element is for real workspace, second for integer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Output||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Exit flag indicating success or failure:&lt;br /&gt;
&lt;br /&gt;
0 - Solution found&lt;br /&gt;
&lt;br /&gt;
1 - Unbounded: feasible point x with f(x)&#039;&#039;&amp;lt;&#039;&#039;=fmin found&lt;br /&gt;
&lt;br /&gt;
2 - Linear constraints are infeasible&lt;br /&gt;
&lt;br /&gt;
3 - (Locally) nonlinear infeasible, optimal solution to feasibility problem found&lt;br /&gt;
&lt;br /&gt;
4 - Terminated at point with h(x)&#039;&#039;&amp;lt;&#039;&#039;=eps but QP infeasible&lt;br /&gt;
&lt;br /&gt;
5 - Terminated with rho&#039;&#039;&amp;lt;&#039;&#039;=eps&lt;br /&gt;
&lt;br /&gt;
6 - Terminated due to too many iterations&lt;br /&gt;
&lt;br /&gt;
7 - Crash in user routine could not be resolved&lt;br /&gt;
&lt;br /&gt;
8 - Unexpected failure in QP solver&lt;br /&gt;
&lt;br /&gt;
9 - Not enough real workspace&lt;br /&gt;
&lt;br /&gt;
10 - Not enough integer workspace&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector (n+m  by 1) with n decision variable values together with the m slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum x k&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraints vector at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange multipliers vector (bounds, nonlinear, linear).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lws&#039;&#039;||Integer vector (used as input when doing warmstarts).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat &#039;&#039;||Solution statistics, integer values. First element is required as input if doing a warmstart.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(1)&#039;&#039;||Dimension of nullspace at solution&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(2)&#039;&#039;||Number of iterations&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(3)&#039;&#039;||Number of feasibility iterations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(4)&#039;&#039;||Number of objective evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(5)&#039;&#039;||Number of constraint evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(6)&#039;&#039;||Number of gradient evaluations&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(7)&#039;&#039;||Number of Hessian evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(8)&#039;&#039;||Number of QPs with mode&#039;&#039;&amp;lt;&#039;&#039;=2 &#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|istat(9)&#039;&#039;||Number of QPs with mode&#039;&#039;&amp;gt;&#039;&#039;=4&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(10)&#039;&#039;||Total number of QP pivots &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(11)&#039;&#039;||Number of SOC steps&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(12)&#039;&#039;||Maximum size of filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(13)&#039;&#039;||Maximum size of Phase 1 filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(14)&#039;&#039;||Number of QP crashes&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat&#039;&#039;||Solution statistics, real values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(1)&#039;&#039;||l 2 norm of KT residual &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(3) &#039;&#039;||Largest modulus multiplier &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(4)&#039;&#039;||l inf norm of final step&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(5)&#039;&#039;||Final constraint violation h(x)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Using TOMLAB====&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filterSQPTL &#039;&#039;solves constrained nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
c_{L} &amp;amp; \leq  &amp;amp; c(x) &amp;amp; \leq &amp;amp; c_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A&lt;br /&gt;
\in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;c_L,c(x),c_U \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Calling  Syntax====&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = &#039;&#039;o&#039;&#039;Assign( ... );&lt;br /&gt;
Result = tomRun(&#039;filterSQP&#039;, Prob ... );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Result = filterSQPTL(funfdf,  funcdc, Prob)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the inputs are:&lt;br /&gt;
&lt;br /&gt;
funfdf 	Name of routine [f, gradf ] = funfdf(x, Prob, mode, nstate).&lt;br /&gt;
&lt;br /&gt;
Normally funfdf = nlp fg, included in TOMLAB.&lt;br /&gt;
&lt;br /&gt;
funcdc	Name of routine [g, gJac] = funcdc(x, Prob, mode, nstate).&lt;br /&gt;
&lt;br /&gt;
Normally funcdc = nlp cdcS, included in TOMLAB. Probroblem structure in TOMLAB format.&lt;br /&gt;
&lt;br /&gt;
Call Prob = &#039;&#039;o&#039;&#039;Assign( ... ) or Prob=ProbDef; to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
====Description  of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints. For equality constraints (or fixed variables), set e.g. b L(k) == b U(k).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||If 1 use sparse version of solver. The default is 0, the dense version.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level in the filterSQP solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart&#039;&#039;||Indicates that the solver should be warmstarted. See Prob.DUNDEE for nec- essary arguments when doing warmstarts.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optParam&#039;&#039;||Structure with optimization parameters.  Fields used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MaxIter&#039;&#039;||Maximum number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE&#039;&#039;||Structure with special fields for filterSQP optimization parameters. The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.QPmin&#039;&#039;||Lower bound for the QP subproblems. Default: -1E300.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.rho &#039;&#039;||Initial  trust region radius. Default:  10.0 (REAL).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.kmax&#039;&#039;||Maximum size of the null-space, less than or equal to no. of variables. Default: n (INTEGER).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.maxf&#039;&#039;||Maximum size of the filter.  Default: 100 (INTEGER).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mlp&#039;&#039;||Maximum level  parameter for resolving  degeneracy in BQPD QP subsolver.&lt;br /&gt;
&lt;br /&gt;
Default: 100 (INTEGER).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.Name&#039;&#039;||Problem name, at most 10 characters. The output files are  named &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.sum  and &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.out. Default name filterSQP, i.e.   files filter- SQP.sum, filterSQP.out.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar&#039;&#039;||Vector of max length 20 with optimization parameters:  If any element is -999, default value is assigned.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(1): iprint&#039;&#039;||Print level in filterSQP, default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(2): tol&#039;&#039;||Relative tolerance for BQPD subsolver, default 1E-10. &#039;&#039;DUNDEE.optPar(3):  emin	&#039;&#039;1=Use cscale in BQPD, 0=no scaling , default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic (BQPD), default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(5): nrep&#039;&#039;||Max number of refinement steps (BQPD), default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(6): npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(7): nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(8): nfreq&#039;&#039;||The max interval between refactorizations, default 500. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(9): NLP eps&#039;&#039;||NLP subproblem tolerance, default 1E-6.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(10): ubd&#039;&#039;||Upper bound on constraint violation used in the filter, default 1E-2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(11): tt&#039;&#039;||Parameter related to ubd. The actual upper bound is defined by the maximum of ubd and tt multiplied by the initial  constraint violation., default 0.125.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(19): infty&#039;&#039;||A large value representing infinity,  default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(20): Nonlin&#039;&#039;||If 1, skip linear feasibility tests filterSQP treating all constraints as nonlinear, default 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lws&#039;&#039;||If doing warmstarts, this field is set to the Result.DUNDEE.lws field from the previous run.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat&#039;&#039;||Similarly, for warmstarts, set istat to Result.DUNDEE.istat from the previous run. Only the first element is used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lam&#039;&#039;||Vector of initial multipliers. Necessary for warmstarts, but can always be given if desired. Must be n+m elements in order to be used.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;morereal&#039;&#039;||Increase of REAL workspace. A problem dependent default value is used if &#039;&#039;&amp;lt;&#039;&#039;0 or empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moreint&#039;&#039;||Increase of INTEGER  workspace. A problem dependent default value is used if &#039;&#039;&amp;lt;&#039;&#039;0 or empty.&lt;br /&gt;
&lt;br /&gt;
Scaling parameters: It is possible to supply scale factors for the variables and/or the constraints. Normally, the DUNDEE solvers does not differentiate between linear and nonlinear constraints with regard to scaling, but the Tomlab interface handles this automatically. Thus is it possible to give scale factors e.g. for the nonlinear constraints only. All scaling values must be greater than zero.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xScale&#039;&#039;||Vector of scale factors for variables. If less than n values given, 1&#039;s are used for the missing elements.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bScale&#039;&#039;||Vector of scale factors for the linear constraints. If length(bScale) is less than the number of linear constraints ( size(Prob.A,1) ), 1&#039;s are used for the missing elements.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cScale&#039;&#039;||Vector of scale factors for the nonlinear constraints.  If length(cScale)  is less than the number of nonlinear constraints, 1&#039;s are used for the missing elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description  of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Result||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from filterSQP MEX.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||filterSQP information parameter:&lt;br /&gt;
&lt;br /&gt;
0 - Solution found&lt;br /&gt;
&lt;br /&gt;
1 - Unbounded: feasible point x with f(x)&#039;&#039;&amp;lt;&#039;&#039;=fmin found&lt;br /&gt;
&lt;br /&gt;
2 - Linear constraints are infeasible&lt;br /&gt;
&lt;br /&gt;
3 - (Locally) nonlinear infeasible, optimal solution to feasibility problem found&lt;br /&gt;
&lt;br /&gt;
4 - Terminated at point with h(x)&#039;&#039;&amp;lt;&#039;&#039;=eps but QP infeasible&lt;br /&gt;
&lt;br /&gt;
5 - Terminated with rho&#039;&#039;&amp;lt;&#039;&#039;=eps&lt;br /&gt;
&lt;br /&gt;
6 - Too many iterations&lt;br /&gt;
&lt;br /&gt;
7 - Crash in user routine could not be resolved&lt;br /&gt;
&lt;br /&gt;
8 - Unexpected ifail  from QP solver.  This is  often  due to too little mem- ory  being allocated and is remedied  by  setting  appropriate values in  the Prob.DUNDEE.morereal and Prob.DUNDEE.moreint parameters.&lt;br /&gt;
&lt;br /&gt;
9 - Not enough REAL workspace&lt;br /&gt;
&lt;br /&gt;
10 - Not enough INTEGER  workspace&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv&#039;&#039;||Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (filterSQP).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.lws&#039;&#039;||Workspace vector, should be treated as integer valued. Required if doing warm- starts.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.lam&#039;&#039;||Vector of multipliers, required if doing warmstarts.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat&#039;&#039;||Solution statistics, integer values. First element is required as input if doing a warmstart.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(1) &#039;&#039;||Dimension of nullspace at solution&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(2) &#039;&#039;||Number of iterations&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(3) &#039;&#039;||Number of feasibility iterations&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(4) &#039;&#039;||Number of objective evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(5)&#039;&#039;||Number of constraint evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(6) &#039;&#039;||Number of gradient evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(7)&#039;&#039;||Number of Hessian evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(8) &#039;&#039;||Number of QPs with mode&#039;&#039;&amp;lt;&#039;&#039;=2 &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(9)&#039;&#039;||Number of QPs with mode&#039;&#039;&amp;gt;&#039;&#039;=4 &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(10) &#039;&#039;||Total number of QP pivots &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(11) &#039;&#039;||Number of SOC steps&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(12) &#039;&#039;||Maximum size of filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(13) &#039;&#039;||Maximum size of Phase 1 filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(14) &#039;&#039;||Number of QP crashes&lt;br /&gt;
|}&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat&#039;&#039;||Solution statistics, floating point values.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(1)&#039;&#039;||l 2 norm of KT residual &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(3)&#039;&#039;||Largest modulus multiplier &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(4)&#039;&#039;||l inf norm of final step&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(5)&#039;&#039;||Final constraint violation h(x)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==minlpBB==&lt;br /&gt;
&lt;br /&gt;
The solver minlpBB  solves  large, sparse or dense mixed-integer linear, quadratic and nonlinear programming problems.  minlpBB implements a branch-and-bound algorithm searching a tree whose nodes correspond  to con- tinuous nonlinearly constrained optimization problems. The user can influence the choice of branching variable by providing priorities for the integer variables.&lt;br /&gt;
&lt;br /&gt;
The solver must be used in conjunction with both filterSQP and bqpd.&lt;br /&gt;
&lt;br /&gt;
===Direct Solver Call===&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem.  Please refer to Section 3.2.2 for information on how to use filterSQP with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;filterSQP &#039;&#039;solves constrained nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x    &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
&amp;amp; &amp;amp; c(x) &amp;amp; &amp;amp; \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f(x) \in \mathbb{R}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1+m_2}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c(x) \in \mathbb{R}^{m_2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The full input matrix A has three parts A = A = [g ConsPattern&#039; A&#039;];&lt;br /&gt;
&lt;br /&gt;
Where  g is a vector  of length  n, values irrelevant, ConsPattern  is the  0-1 pattern of the nonlinear constraint gradients and A is the linear constraint coefficient matrix.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
The file &#039;funfdf.m&#039; must be defined and contain: function [mode, f, g] = funfdf(x, Prob, mode, nstate) to compute the objective function f and the gradient g at the point x.&lt;br /&gt;
&lt;br /&gt;
The file &#039;funcdc.m&#039; must  be defined  and contain:  function [mode ,c ,dcS] = funcdc(x, Prob, mode, nstate) to compute the  nonlinear  constraint  value c and the constraint  Jacobian dcS for the  nonlinear  constraints at the point x.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ifail, x k, f k, c k, v k, lws, istat, rstat] = filSQPs( A, bl, bu, nnCon, x&lt;br /&gt;
 0, Scale, scmode, fLow, MaxIter, rho, mlp, kmax, maxf, WarmStart, lws, istat, &lt;br /&gt;
PriLev, pname, optPar, Prob, moremem);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sparse version MEX is filSQPs, the dense is filSQPd.&lt;br /&gt;
&lt;br /&gt;
====Description  of Inputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Gradient matrix [g ConsPattern&#039; A&#039;] (sparse or dense).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl&#039;&#039;||Lower bounds on (x,c(x),Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bu&#039;&#039;||Upper bounds on (x,c(x),Ax).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;nnCon&#039;&#039;||Number of nonlinear constraints (i.e. length(c(x)).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  x vector (if empty set as 0).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Scale&#039;||&#039;n+m  vector  scale factors  for variables and constraints  (same ordering  as bl, bu).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;scmode&#039;&#039;||Scale mode:&lt;br /&gt;
&lt;br /&gt;
0 - unit variable and constraint scaling (Scale can be set empty).&lt;br /&gt;
&lt;br /&gt;
1 - User provided scale factors for variables.  Scale must be of length n.&lt;br /&gt;
&lt;br /&gt;
2 - Unit  variable scaling,  user provided constraint  scaling.   Scale must  be of length n+m, but only the last m elements are used.&lt;br /&gt;
&lt;br /&gt;
3- User provided  variable AND  constraint  scaling.   Scale must  be of length n+m (n+nnCon+nnLin)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;fLow	&#039;&#039;||A lower bound on the objective function value.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MaxIter&#039;&#039;||Maximum number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rho&#039;&#039;||Initial  trust-region radius.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;mlp&#039;&#039;||Maximum level parameter for resolving degeneracy in BQPD.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;kmax&#039;&#039;||Maximum size of null-space (at most n).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;maxf&#039;&#039;||Maximum size of the filter.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;WarmStart&#039;&#039;||Set to 1 to restart the solver. If a warmstart is requested, the input parameters lws and istat must be provided.  Also, n and m (the number of variables and constraints) may not change.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lws&#039;&#039;||Used only when doing a warmstart.  This must be the lws vector returned by the previous call to filterSQP. Otherwise, set to empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lam&#039;&#039;||Multipliers, n+m values required for warmstarts. If wrong length, zeros are set in the MEX interface.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat&#039;&#039;||Used only when doing a warmstart.   Must be the  first  element  of the istat vector returned by the previous call to filterSQP. Otherwise, set to empty.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Print level. See also input parameter pname.&lt;br /&gt;
&lt;br /&gt;
0 - Silent, except for minor output into ¡pname¿.out&lt;br /&gt;
&lt;br /&gt;
1 - One line per iteration&lt;br /&gt;
&lt;br /&gt;
2 - Scalar information printed&lt;br /&gt;
&lt;br /&gt;
3 - Scalar and vector information printed&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;pname&#039;&#039;||Problem name, at most 10 characters. The output files are named &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.sum and &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.out.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector of max length 20 with optimization parameters:  If any element is -999, default value is assigned. Elements 2-8 are BQPD parameters, 1,9-11,19-20 for filterSQP.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(1):  iprint&#039;&#039;||Print level in filterSQP, default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(2):  tol&#039;&#039;||Relative tolerance for BQPD subsolver, default 1E-10.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(3):  emin&#039;&#039;||1=Use cscale in BQPD, 0=no scaling , default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic (BQPD), default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(5):  nrep&#039;&#039;||Max number of refinement steps (BQPD), default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(8):  nfreq&#039;&#039;||The max interval between refactorizations, default 500. &#039;&#039;optPar(9):  NLP eps	&#039;&#039;NLP subproblem tolerance, default 1E-6.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(10): ubd&#039;&#039;||Upper bound on constraint violation used in the filter, default 1E-2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(11): tt||&#039;&#039;Parameter related to ubd. The actual upper bound is defined by the maximum of ubd and tt multiplied by the initial  constraint violation., default 0.125.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(19): infty&#039;&#039;||A large value representing infinity,  default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(20): Nonlin&#039;&#039;||If 1, skip linear feasibility tests filterSQP treating all constraints as nonlinear, default 0.&lt;br /&gt;
|}&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob	&#039;&#039;||The Tomlab problem definition structure.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moremem&#039;&#039;||Scalar or 2x1-vector with workspace increase. If &#039;&#039;&amp;lt;&#039;&#039;0, use default strategy.  If scalar,  use same increase for both real and integer workspaces.  If vector, first element is for real workspace, second for integer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||Exit flag indicating success or failure:&lt;br /&gt;
&lt;br /&gt;
0 - Solution found&lt;br /&gt;
&lt;br /&gt;
1 - Unbounded: feasible point x with f(x)&#039;&#039;&amp;lt;&#039;&#039;=fmin found&lt;br /&gt;
&lt;br /&gt;
2 - Linear constraints are infeasible&lt;br /&gt;
&lt;br /&gt;
3 - (Locally) nonlinear infeasible, optimal solution to feasibility problem found&lt;br /&gt;
&lt;br /&gt;
4 - Terminated at point with h(x)&#039;&#039;&amp;lt;&#039;&#039;=eps but QP infeasible&lt;br /&gt;
&lt;br /&gt;
5 - Terminated with rho&#039;&#039;&amp;lt;&#039;&#039;=eps&lt;br /&gt;
&lt;br /&gt;
6 - Terminated due to too many iterations&lt;br /&gt;
&lt;br /&gt;
7 - Crash in user routine could not be resolved&lt;br /&gt;
&lt;br /&gt;
8 - Unexpected failure in QP solver&lt;br /&gt;
&lt;br /&gt;
9 - Not enough real workspace&lt;br /&gt;
&lt;br /&gt;
10 - Not enough integer workspace&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector (n+m  by 1) with n decision variable values together with the m slack variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum x k&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_k&#039;&#039;Nonlinear constraints vector at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrange multipliers vector (bounds, nonlinear, linear).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lws&#039;&#039;||Integer vector (used as input when doing warmstarts).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat&#039;&#039;||Solution statistics, integer values. First element is required as input if doing a warmstart.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(1)&#039;&#039;||Dimension of nullspace at solution&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(2)&#039;&#039;||Number of iterations&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(3)&#039;&#039;||Number of feasibility iterations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(4)&#039;&#039;||Number of objective evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(5)&#039;&#039;||Number of constraint evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(6)&#039;&#039;||Number of gradient evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(7)&#039;&#039;||Number of Hessian evaluations &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(8)&#039;&#039;||Number of QPs with mode&#039;&#039;&amp;lt;&#039;&#039;=2 &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(9)&#039;&#039;||Number of QPs with mode&#039;&#039;&amp;gt;&#039;&#039;=4 &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(10)&#039;&#039;||Total number of QP pivots &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(11)&#039;&#039;||Number of SOC steps&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(12)&#039;&#039;||Maximum size of filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(13)&#039;&#039;||Maximum size of Phase 1 filter&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;istat(14)&#039;&#039;||Number of QP crashes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat&#039;&#039;||Solution statistics, real values.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(1)&#039;&#039;||l 2 norm of KT residual &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(3)&#039;&#039;||Largest modulus multiplier &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(4)&#039;&#039;||l inf norm of final step&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rstat(5)&#039;&#039;||Final constraint violation h(x)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Using TOMLAB===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;minlpBBTL  &#039;&#039;solves mixed-integer nonlinear optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{cccccc}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) \\ &lt;br /&gt;
s/t &amp;amp; x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq  &amp;amp; x_{U} \\ &lt;br /&gt;
&amp;amp; b_{L} &amp;amp; \leq  &amp;amp; Ax   &amp;amp; \leq  &amp;amp; b_{U} \\ &lt;br /&gt;
&amp;amp; c_{L} &amp;amp; \leq  &amp;amp; c(x)    &amp;amp; \leq  &amp;amp; c_{U}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x,x_{L},x_{U}\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A\in \mathbb{R}^{m_{1}\times n}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_{L},b_{U}\in \mathbb{R}^{m_{1}}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c(x),c_{L},c_{U}\in \mathbb{R} ^{m_{2}}&amp;lt;/math&amp;gt;, Furthermore, &amp;lt;math&amp;gt;x_i,\, i\in\mathbb{I}&amp;lt;/math&amp;gt; are restricted to integer values only.&lt;br /&gt;
&lt;br /&gt;
In addition, Special Ordered Sets of type 1 (SOS1) can be defined.&lt;br /&gt;
&lt;br /&gt;
The algorithm uses a branch-and-bound scheme with a depth-first search strategy.  The NLP relaxations are solved using the solver filterSQP by R. Fletcher and S. Leyffer.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = &#039;&#039;o&#039;&#039;Assign( ... );&lt;br /&gt;
Result = tomRun(&#039;minlpBB&#039;, Prob ... );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Result = minlpBBTL(Prob).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call Prob = &#039;&#039;o&#039;&#039;Assign( ... ) or Prob=ProbDef; to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraints coefficient matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c_L, c_U&#039;&#039;||Bounds on nonlinear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||If 1 use sparse version of solver. The default is 0, the dense version.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print level in the minlpBB solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optParam.MaxIter&#039;&#039;||Maximum number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP&#039;&#039;||Structure with fields defining the integer properties of the problem. The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IntVars&#039;&#039;||Vector designating which variables are restricted to integer values.  This field is interpreted differently depending on the length.&lt;br /&gt;
&lt;br /&gt;
If length(IntVars)  = length(x), it is interpreted as a zero-one vector where all non-zero elements indicate integer values only for the corresponding variable.&lt;br /&gt;
&lt;br /&gt;
A length less than the problem dimension indicates that IntVars is a vector of indices for the integer variables, for example [1 2 3 6 7 12]&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;VarWeight&#039;&#039;||Defines the priorities of the integer variables.  Can be any values, but minlpBB uses integer priorities internally, with higher values implying higher priorities.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;sos1&#039;&#039;||Structure defining the Special Ordered Sets of Type 1 (SOS1). If there are k sets of type sos1, then sos1(1).var is a vector of indices for variables in sos1, set 1.  sos1(1).row is the row number for the reference row identifying the ordering information for the sos1 set, i.e. A(sos1(1).row,sos1(1).var) identifies this information sos1(1).prio sets the priority  for sos1 test 1.&lt;br /&gt;
&lt;br /&gt;
sos1(2).var is a vector of indices for variables in sos1, set 2. sos1(2).row is the row number for the reference row of sos1 set 2. sos1(2).prio is the priority for sos1 set 2.&lt;br /&gt;
&lt;br /&gt;
sos1(k).var is a vector of indices for variables in sos1, set k. sos1(k).row is the row number for the reference row of sos1 set k. sos1(k).prio is the priority for sos1 set k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE&#039;&#039;||Structure with  special fields for minlpBB optimization parameters. The following fields are used:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;stackmax&#039;&#039;||Maximum size of the LIFO stack storing info about B&amp;amp;B tree. Default: 10000.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QPmin&#039;&#039;||Lower bound for the QP subproblems. Default: -1E300.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rho&#039;&#039;||Initial  trust region radius. Default:  10.0 (REAL).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;kmax&#039;&#039;||Maximum size of the null-space,  less than or equal to no. of variables Default:&lt;br /&gt;
&lt;br /&gt;
n (INTEGER).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;maxf&#039;&#039;||Maximum size of the filter Default: 100 (INTEGER).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;mlp&#039;&#039;||Maximum level parameter for resolving degeneracy in BQPD QP subsolver..&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;lam&#039;&#039;||Multipliers (n+m)  on entry (NOTE: Experimental parameter).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Name&#039;&#039;||Problem   name,  at  most   10  characters.	The   output   files  are  named &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.sum and &#039;&#039;&amp;lt;&#039;&#039;pname&#039;&#039;&amp;gt;&#039;&#039;.out.    Default name minlpBB, i.e.    files minlpBB.sum, minlpBB.out.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector of max length 20 with optimization parameters. If any element is -999, default value is assigned.  The elements used by minlpBB are:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(1):  iprint&#039;&#039;||Print level in minlpBB Summary on file minlpBB.sum.  More printout  on file minlpBB.out.  Default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(2):  tol&#039;&#039;||Relative tolerance for BQPD subsolver. Default 1E-10.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(3):  emin&#039;&#039;||1=Use cscale in BQPD, 0=no scaling.  Default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic (BQPD). Default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(5):  nrep&#039;&#039;||Max number of refinement steps (BQPD). Default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken. Default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(7):  nres &#039;&#039;||Max number of restarts if unsuccessful. Default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(8):  nfreq &#039;&#039;||The max interval between refactorizations.  Default 500. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(9):  NLP eps&#039;&#039;||NLP subproblem tolerance.  Default 1E-6.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(10): ubd&#039;&#039;||Upper bound on constraint violation used in the filter.  Default 1E-2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(11): tt &#039;&#039;||Parameter related to ubd. The actual upper bound is defined by the maximum of ubd and tt multiplied by the initial  constraint violation. Default 0.125.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(12): epsilon&#039;&#039;||Tolerance for x-value tests. Default 1E-6. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(13): MIopttol &#039;&#039;||Tolerance for function value tests. Default 1E-4. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(17): branchtype &#039;&#039;||Branch strategy. Currently only 1 strategy. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(19): infty &#039;&#039;||A large value representing infinity.  Default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(20): Nonlin &#039;&#039;||If 1, skip linear feasibility tests minlpBB treating all constraints as nonlinear. &lt;br /&gt;
&lt;br /&gt;
Default 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;morereal &#039;&#039;||Number of extra REAL workspace locations. Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem dependent default strategy.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&#039;&#039;moreint&#039;&#039;||Number of extra INTEGER  workspace locations.  Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem dependent default strategy.&lt;br /&gt;
&lt;br /&gt;
Scaling parameters. It is possible to supply scale factors for the variables and/or the constraints. Normally, the DUNDEE solvers does not differentiate between linear and nonlinear constraints with  regard to scaling,  but  the  TOMLAB interface handles this automatically. Thus is it possible to give scale factors e.g. for the nonlinear constraints only. The three parameters in the Prob.DUNDEE substructure that control scaling are:&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xScale&#039;&#039;||Vector of scale factors for variables. If less than n values given, 1&#039;s are used for the missing elements.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bScale&#039;&#039;||Vector of scale factors for the linear constraints. If length(bScale) is less than the number of linear constraints ( size(Prob.A,1) ), 1&#039;s are used for the missing elements.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cScale&#039;&#039;||Vector of scale factors for the nonlinear constraints.  If length(cScale)  is less than the number of nonlinear constraints, 1&#039;s are used for the missing elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Result||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;c-k&#039;&#039;||Nonlinear constraint residuals.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cJac&#039;&#039;||Nonlinear constraint gradients.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;cState&#039;&#039;||State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||minlpBB information parameter:&lt;br /&gt;
&lt;br /&gt;
0 - Optimal solution found&lt;br /&gt;
&lt;br /&gt;
1 - Root problem infeasible&lt;br /&gt;
&lt;br /&gt;
2 - Integer infeasible&lt;br /&gt;
&lt;br /&gt;
3 - Stack overflow - some integer solution. obtained&lt;br /&gt;
&lt;br /&gt;
4 - Stack overflow - no integer solution obtained&lt;br /&gt;
&lt;br /&gt;
5 - SQP termination with rho &#039;&#039;&amp;lt; &#039;&#039;eps&lt;br /&gt;
&lt;br /&gt;
6 - SQP termination with iter &#039;&#039;&amp;gt; &#039;&#039;max iter&lt;br /&gt;
&lt;br /&gt;
7 - Crash in user supplied routines&lt;br /&gt;
&lt;br /&gt;
8 - Unexpected  ifail  from QP solvers  This is  often due to too little  mem- ory  being allocated and is remedied  by  setting  appropriate values in  the Prob.DUNDEE.morereal and Prob.DUNDEE.moreint parameters.&lt;br /&gt;
&lt;br /&gt;
9 - Not enough REAL workspace or parameter error&lt;br /&gt;
&lt;br /&gt;
10 - Not enough INTEGER  workspace or parameter error&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. If ninf=0, last m == -v k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations. &#039;&#039;GradEv	&#039;&#039;Number of gradient evaluations. &#039;&#039;ConstrEv	&#039;&#039;Number of constraint evaluations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (minlpBB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver (sparse or dense, mainly).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===miqpBB===&lt;br /&gt;
&lt;br /&gt;
The solver miqpBB solves sparse and dense mixed-integer linear and quadratic programs. The package implements the Branch and Bound method with some special features such as the computation of improved lower bounds and hot starts for the QP subproblems.  miqpBB allows the user to influence the choice of branching variable in two ways: Firstly  by employing user supplied priorities in the branching decision and secondly by supplying a choice of branching routines. The package is also efficient as an MILP  solver.&lt;br /&gt;
&lt;br /&gt;
====Direct Solver Call====&lt;br /&gt;
&lt;br /&gt;
A direct solver call is not recommended  unless the user is 100 % sure that no other solvers will be used for the problem.  Please refer to Section 3.4.2 for information on how to use miqpBB with TOMLAB.&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;miqpBB &#039;&#039;solves mixed-integer quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x\\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
&amp;amp; &amp;amp; x  &amp;amp; &amp;amp;, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n \times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{n+m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers.&lt;br /&gt;
&lt;br /&gt;
If F is empty, an LP or MILP  problem is solved.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Inform, x k, Obj, Iter] = miqpbb(A, bl, bu, IntVars, Priority,  Func, mlp,&lt;br /&gt;
kmax, stackmax, optPar, PriLev, Print- File, Prob, moremem);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Description of Inputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;[c A&#039;]&#039;&#039;||Linear constraint matrix, dense or sparse n x (m+1) matrix.  miqpBB requires the  transpose  of the  constraint  matrix,  and also with  the  linear part of the objective function as the first column.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bl, bu&#039;&#039;||Lower and upper bounds on variables and constraints. Length must be n+m where the first n elements are simple bounds on the variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;IntVars&#039;&#039;||Vector with integer variable indices.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Priority&#039;&#039;||Priorities for the integer variables. Length must the same as that of IntVars.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Func&#039;&#039;||Name of MATLAB callback function that performs the Hessian - vector multiplication F*x.  A standard routine is supplied in tomlab/lib/HxFunc.m, using the  Prob.QP.F matrix.   If  the  user for some reason wants to write  his own callback function, it must take arguments similar to those of HxFunc.m. The second argument nState is always 0.0 in the current version of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&#039;&#039;mlp&#039;&#039;Maximum level parameter for resolving degeneracy in BQPD which is used as sub-problem solver. If empty, the MEX interface sets mlp to m, the number of constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;kmax&#039;&#039;||Maximum dimension of reduced space. Default (and maximum) value is n, the number of variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;stackmax&#039;&#039;||Size of the stack storing information during the tree-search.  Default value if empty:  5000.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar&#039;&#039;||Vector of optimization parameters. If -999, set to default. Length from 0 to 20 allowed.  The following elements are used by miqpBB:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(1):  iprint&#039;&#039;||Print level in miqpbb, default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(2):  tol&#039;&#039;||Relative accuracy in solutio, default 1E-10.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&#039;&#039;optPar(3):  emin&#039;&#039;||1.0 Use cscale (constraint scaling) 0.0 no scaling, default 1.0. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic, default 5E-4. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(5): nrep &#039;&#039;||Max number of refinement steps, default 2.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&#039;&#039;optPar(6):  npiv &#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(8):  nfreq&#039;&#039;||The max interval between refactorizations, default 500. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(12): epsilon&#039;&#039;||Tolerance used for x value tests, default 1E-5.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(13): MIopttol&#039;&#039;||Tolerance used for function value tests, default 1E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(14): fIP&#039;&#039;||Upper bound on f(x).  Only consider solutions &#039;&#039;&amp;lt; &#039;&#039;fIP - epsilon, default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(15): timing&#039;&#039;||No Timing = 1, Use timing, = 0. Default, no timing &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(16): max time&#039;&#039;||Maximal time allowed for the run in seconds, default 4E3. &#039;&#039;optPar(17): branchType 	&#039;&#039;Branch on variable with highest priority.  If tie:&lt;br /&gt;
&lt;br /&gt;
= 1. Variable with largest fractional part, among those branch on the variable giving the largest increase in the objective.&lt;br /&gt;
&lt;br /&gt;
= 2. Tactical Fletcher (PMO) branching. The var that solves max(min(e+,e-)) is chosen. The problem than corresponding to min(e+,e-) is placed on the stack first.&lt;br /&gt;
&lt;br /&gt;
= 3.  Tactical branching, Padberg/Rinaldi,91,  Barahona et al.,89 (i)  Choose the branching variable the one that most violates the integrality restrictions. i.e.  find max(i)min(pi+,pi-) pi+ = int(x(i)+1) - x(i)  , pi- = x(i)  - int(x(i)) (ii) among those branch on the variable that gives the greatest increase in the obj.  function (iii)  Finally  a LOWER BOUND is computed on the branched problems using the bounding method of Fletcher and Leyffer (dual active set step) DEFAULT = 1.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(18): ifsFirst&#039;&#039;||If 1, then only search for first ifs (ifail=6), Default 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optPar(19): infty&#039;&#039;||Real value for infinity,  default 1E20.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLev&#039;&#039;||Print level in the MEX interface: 0 = off, 1 = only result is printed, 2 = result and intermediate steps are printed. scalar information, 3 = verbose).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PrintFile&#039;&#039;||Name of print file. Amount/print type determined by PriLev parameter. Default name miqpbbout.txt.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Prob&#039;&#039;||The Tomlab problem description structure.  This  is a necessary argument  if the standard HxFunc.m callback routine is used. HxFunc uses Prob.QP.F to calculate the Hessian*vector multiplication.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;moremem&#039;&#039;||Scalar or 2x1-vector giving values for extra work memory allocation. If scalar, the value given is added to both the INTEGER  and REAL workspaces.  If a vector is  given, the first  element  controls  the  REAL  workspace increase and the second the INTEGER workspace. Set one or both elements to values ¡0 for problem dependent memory increases.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ifail&#039;&#039;||Status code: the following values are defined:&lt;br /&gt;
&lt;br /&gt;
0 - Solution found&lt;br /&gt;
&lt;br /&gt;
1 - Error in parameters for BQPD&lt;br /&gt;
&lt;br /&gt;
2 - Unbounded QP encountered&lt;br /&gt;
&lt;br /&gt;
3 - Stack overflow - no integer solution found&lt;br /&gt;
&lt;br /&gt;
4 - Stack overflow - some integer solution found&lt;br /&gt;
&lt;br /&gt;
5 - Integer infeasible&lt;br /&gt;
&lt;br /&gt;
6 - (on I/O) only search for first ifs and stop&lt;br /&gt;
&lt;br /&gt;
7 - Infeasible root problem&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||The solution vector, if any found. If ifail is other than 0 or 4, the contents of x is undefined.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Obj&#039;&#039;||The value of the objective function at x k.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;iter&#039;&#039;||The number of iterations used to solve the problem.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Using TOMLAB===&lt;br /&gt;
&lt;br /&gt;
====Purpose====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;miqpBBTL &#039;&#039;solves mixed-integer quadratic optimization problems defined as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{ll}&lt;br /&gt;
\min\limits_{x} &amp;amp; f(x) = \frac{1}{2} x^T F x + c^T x \\&lt;br /&gt;
&amp;amp;  \\&lt;br /&gt;
s/t &amp;amp; \begin{array}{lcccl}&lt;br /&gt;
x_{L} &amp;amp; \leq  &amp;amp; x    &amp;amp; \leq &amp;amp; x_{U}, \\&lt;br /&gt;
b_{L} &amp;amp; \leq  &amp;amp; A x  &amp;amp; \leq &amp;amp; b_{U} \\&lt;br /&gt;
\end{array}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;c, x, x_L, x_U \in \mathbb{R}^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;F \in \mathbb{R}^{n&lt;br /&gt;
\times n}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A \in \mathbb{R}^{m_1 \times n}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;b_L,b_U \in \mathbb{R}^{m_1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The variables &amp;lt;math&amp;gt;x \in I&amp;lt;/math&amp;gt;, the index subset of &amp;lt;math&amp;gt;1,...,n&amp;lt;/math&amp;gt;, are restricted to be integers&lt;br /&gt;
&lt;br /&gt;
If F is empty, an LP or MILP  problem is solved.&lt;br /&gt;
&lt;br /&gt;
miqpBBTL converts the problem from the Tomlab structure format and calls either miqpBBs (sparse) or miqpBBd (dense). On return converts the result to the Tomlab structure format.&lt;br /&gt;
&lt;br /&gt;
====Calling Syntax====&lt;br /&gt;
&lt;br /&gt;
Using the driver routine &#039;&#039;tomRun &#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob = &#039;&#039;o&#039;&#039;Assign( ... );&lt;br /&gt;
Result = tomRun(&#039;miqpBB&#039;, Prob ... );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Result = miqpBBTL(Prob);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call Prob = &#039;&#039;o&#039;&#039;Assign( ... ) or Prob=ProbDef; to define the Prob for the second option.&lt;br /&gt;
&lt;br /&gt;
====Description  of Inputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prob&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Input||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_L, x_U&#039;&#039;||Lower and upper bounds on variables.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;b_L, b_U&#039;&#039;||Lower and upper bounds on linear constraints.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;A&#039;&#039;||Linear constraint matrix, dense or sparse m x n matrix.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.c&#039;&#039;||Linear coefficients in objective function, size n x 1. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.F&#039;&#039;||Quadratic matrix of size n x n.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;PriLevOpt&#039;&#039;||Print Level (0 = off, 1 = summary, 2 = scalar information, 3 = verbose).  &#039;&#039;&amp;gt;&#039;&#039; 10 Pause statements,  and maximal printing (debug mode)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;LargeScale&#039;&#039;||If TRUE (=1),  use sparse version, otherwise dense.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;optParam.MaxIter&#039;&#039;||Limit  of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.IntVars&#039;&#039;||Defines which variables are integers. Variable indices should be in the range [1,...,n].  IntVars  is a logical vector ==&#039;&#039;&amp;gt; &#039;&#039;x(find(IntVars  &#039;&#039;&amp;gt; &#039;&#039;0)) are integers. IntVars is a vector of indices ==&#039;&#039;&amp;gt; &#039;&#039;x(IntVars) are integers (if [], then no integers of type I or B are defined).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MIP.VarWeight&#039;&#039;||Variable priorities. Lower value means higher priority.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.kmax&#039;&#039;||Max dimension of reduced space (k), default n, set as 0 if LP.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mlp &#039;&#039;||Maximum number of levels of recursion.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.stackmax&#039;&#039;||Maximum size of the LIFO stack storing info about B&amp;amp;B tree.  Default 5000.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.PrintFile&#039;&#039;||Name of print file. Amount/print type determined by optPar(1) Default name miqpBBout.txt.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar&#039;&#039;||Vector of optimization parameters. If -999, set to default Length from 0 to 20 allowed.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(1)&#039;&#039;||Print level in miqpBB.&lt;br /&gt;
&lt;br /&gt;
= 0 Silent&lt;br /&gt;
&lt;br /&gt;
= 1 Warnings and Errors&lt;br /&gt;
&lt;br /&gt;
= 2 Summary information&lt;br /&gt;
&lt;br /&gt;
= 3 More detailed information &#039;&#039;DUNDEE.optPar(2):  tol	&#039;&#039;Relative accuracy in solution, default 1E-10. &#039;&#039;DUNDEE.optPar(3):  emin	&#039;&#039;1.0 Use cscale (constraint scaling) 0.0 no scaling, default 1.0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(4):  sgnf&#039;&#039;||Max rel error in two numbers equal in exact arithmetic, default 5E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(5):  nrep&#039;&#039;||Max number of refinement steps, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(6):  npiv&#039;&#039;||No repeat if no more than npiv steps were taken, default 3. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(7):  nres&#039;&#039;||Max number of restarts if unsuccessful, default 2. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(8):  nfreq&#039;&#039;||The max interval between refactorizations, default 500. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(12):  epsilon&#039;&#039;||Tolerance used for x value tests, default 1E-5. &#039;&#039;DUNDEE.optPar(13):  MIopttol 	&#039;&#039;Tolerance used for function value tests, default 1E-4.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(14):  fIP&#039;&#039;||Upper bound on f(x).  Only consider solutions &#039;&#039;&amp;lt; &#039;&#039;fIP - MIopttol,  default 1E20.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(15):  timing &#039;&#039;||If 1 - use timing, if 0 no timing (default). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(16):  max time&#039;&#039;||Maximal time allowed for the run in seconds, default 4E3. &#039;&#039;DUNDEE.optPar(17):  branchType 	&#039;&#039;Branch on variable with highest priority.  If tie:&lt;br /&gt;
&lt;br /&gt;
= 1. Variable with largest fractional part, among those branch on the variable giving the largest increase in the objective.&lt;br /&gt;
&lt;br /&gt;
= 2. Tactical Fletcher (PMO) branching. The var that solves max(min(e+,e-)) is chosen. The problem than corresponding to min(e+,e-) is placed on the stack first.&lt;br /&gt;
&lt;br /&gt;
= 3. Tactical branching, Padberg/Rinaldi,91, Barahona et al.,89. (i) Choose the branching variable the one that most violates the integrality restrictions. i.e.  find max(i)min(pi+,pi-) pi+ = int(x(i)+1) - x(i)  , pi- = x(i)  - int(x(i)) (ii) among those branch on the variable that gives the greatest increase in the obj.  function (iii)  Finally  a LOWER BOUND is computed on the branched problems using the bounding method of Fletcher and Leyffer (dual active set step) DEFAULT = 1.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(18):  ifsFirst	&#039;&#039;||If 1, then only search for first ifs (ifail=6), DEFAULT 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.optPar(19):  infty&#039;&#039;||Real value for infinity  (default 1E20).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.morereal&#039;&#039;||Number of extra REAL workspace locations. Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem dependent default value.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.moreint&#039;&#039;||Number of extra INTEGER  workspace locations.  Set to &#039;&#039;&amp;lt;&#039;&#039;0 for problem de- pendent default value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Description of Outputs====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Result&#039;&#039;, The following fields are used:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Result||The structure with results (see ResultDef.m).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;f_k&#039;&#039;||Function value at optimum.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_k&#039;&#039;||Solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;x_0&#039;&#039;||Initial  solution vector.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;g_k&#039;&#039;||Gradient of the function.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;xState&#039;&#039;||State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;bState&#039;&#039;||State of linear constraints.  Free == 0; Lower == 1; Upper == 2; Equality == 3;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;v_k&#039;&#039;||Lagrangian multipliers (for bounds + dual solution vector).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ExitFlag&#039;&#039;||Exit status from miqpBB.m (similar to TOMLAB).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Inform&#039;&#039;||miqpBB information parameter.&lt;br /&gt;
&lt;br /&gt;
0 - Optimal solution obtained&lt;br /&gt;
&lt;br /&gt;
1 - Error in parameters for BQPD&lt;br /&gt;
&lt;br /&gt;
2 - Unbounded QP encountered&lt;br /&gt;
&lt;br /&gt;
3 - Stack overflow NO ifs found&lt;br /&gt;
&lt;br /&gt;
4 - Stack overflow some ifs obtained&lt;br /&gt;
&lt;br /&gt;
5 - Integer infeasible&lt;br /&gt;
&lt;br /&gt;
6 - (on I/O) only search for first ifs and stop&lt;br /&gt;
&lt;br /&gt;
7 - Infeasible root problem&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;rc&#039;&#039;||Reduced costs. NOT SET.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Iter&#039;&#039;||Number of iterations.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;FuncEv&#039;&#039;||Number of function evaluations.  Set to Iter. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;GradEv&#039;&#039;||Number of gradient evaluations. Set to Iter. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;ConstrEv&#039;&#039;||Number of constraint evaluations.  Set to 0.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;QP.B&#039;&#039;||Basis vector in TOMLAB QP standard. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;MinorIter&#039;&#039;||Number of minor iterations.  NOT SET. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;Solver&#039;&#039;||Name of the solver (miqpBB)&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;SolverAlgorithm&#039;&#039;||Description of the solver.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.kmax&#039;&#039;||Max dimension of reduced space (k), default n, set as 0 if LP.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mlp&#039;&#039;||Maximum number of levels of recursion.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.stackmax&#039;&#039;||Maximum size of the LIFO stack storing info about B&amp;amp;B tree. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.mode&#039;&#039;||Mode of operation, default set as 2 Prob.WarmStart. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.x &#039;&#039;||Solution (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.k&#039;&#039;||Dimension of the reduced space (Warm Start). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.e&#039;&#039;||Steepest-edge normalization coefficients (Warm Start). &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.ls&#039;&#039;||Indices of active constraints, first n-k used for warm start. &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.lp&#039;&#039;||List of pointers to recursion information in ls (Warm Start).&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;DUNDEE.peq&#039;&#039;||Pointer to the end of equality constraint indices in ls (Warm Start).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=MINLP_Using_the_Matlab_Interface&amp;diff=2614</id>
		<title>MINLP Using the Matlab Interface</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MINLP_Using_the_Matlab_Interface&amp;diff=2614"/>
		<updated>2012-01-22T15:50:54Z</updated>

		<summary type="html">&lt;p&gt;Elias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Part Of Manual|title=the MINLP Manual|link=[[MINLP|MINLP]]}}&lt;br /&gt;
&lt;br /&gt;
The main routines in the two-layer design of the interface are shown in [[#Table: The interface routines.]]. Page and section references are given to detailed descriptions on how to use the routines.&lt;br /&gt;
&lt;br /&gt;
====Table: The interface routines.====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Function||Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#bqpd|bqpd]]||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;bqpd.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#bqpdTL|bqpdTL]]||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;bqpd.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#filterSQP|filterSQP]]||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;filterSQP.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#filterSQPTL|filterSQPTL]]||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;filterSQP.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#minlpBB|minlpBB]]||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;minlpBB.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#minlpBBTL|minlpBBTL]]||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;minlpBB.m&#039;&#039;.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#miqpBB|miqpBB]]||The layer one Matlab interface routine, calls the MEX-file interface &#039;&#039;miqpBB.dll&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[MINLP Solver Reference#miqpBBTL|miqpBBTL]]||The layer two interface routine called by the TOMLAB driver routine &#039;&#039;tomRun&#039;&#039;.  This routine then calls &#039;&#039;minlpBB.m&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MINLP control parameters are possible to set from Matlab.&lt;br /&gt;
&lt;br /&gt;
They can be set as inputs to the interface routine &#039;&#039;bqpd &#039;&#039;and the others. The user sets fields in a structure called &#039;&#039;Prob.DUNDEE.optPar&#039;&#039;. The following example shows how to set the print level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Prob.DUNDEE.optPar(1)	= 1; 	%   Setting the  print level&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
</feed>