Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab 3.3.sln
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab 3.3.sln	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab 3.3.sln	(revision 16582)
@@ -465,7 +465,7 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.MOCMAEvolutionStrategy-3.3", "HeuristicLab.Algorithms.MOCMAEvolutionStrategy\3.3\HeuristicLab.Algorithms.MOCMAEvolutionStrategy-3.3.csproj", "{0E2E224F-E9B2-41F3-B510-09183EEBA2AF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MathematicalOptimization-3.3", "HeuristicLab.MathematicalOptimization\3.3\HeuristicLab.MathematicalOptimization-3.3.csproj", "{FA3B9270-48B7-4C77-9FEA-2A6EDE82E909}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MathematicalOptimization.Views-3.3", "HeuristicLab.MathematicalOptimization.Views\3.3\HeuristicLab.MathematicalOptimization.Views-3.3.csproj", "{D1D69043-17E6-4B8C-BF41-0799C7E56032}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ExactOptimization-3.3", "HeuristicLab.MathematicalOptimization\3.3\HeuristicLab.ExactOptimization-3.3.csproj", "{FA3B9270-48B7-4C77-9FEA-2A6EDE82E909}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ExactOptimization.Views-3.3", "HeuristicLab.MathematicalOptimization.Views\3.3\HeuristicLab.ExactOptimization.Views-3.3.csproj", "{D1D69043-17E6-4B8C-BF41-0799C7E56032}"
 EndProject
 Global
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/HeuristicLab.OrTools-6.10.0.csproj
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/HeuristicLab.OrTools-6.10.0.csproj	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/HeuristicLab.OrTools-6.10.0.csproj	(revision 16582)
@@ -112,10 +112,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Content Include="glpk-license.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="glpk_4_65.dll">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
     <Content Include="Google.OrTools-license.txt">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/Plugin.cs.frame
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/Plugin.cs.frame	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/Plugin.cs.frame	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Diagnostics;
 using System.IO;
 using System.Linq;
@@ -35,17 +36,11 @@
   [PluginFile("Google.OrTools_version.txt", PluginFileType.Data)]
   [PluginFile("Google.Protobuf.dll", PluginFileType.Assembly)]
-  [PluginFile("glpk_4_65.dll", PluginFileType.NativeDll)]
-  [PluginFile("glpk-license.txt", PluginFileType.License)]
   public class HeuristicLabOrToolsPlugin : PluginBase {
 
-    ~HeuristicLabOrToolsPlugin() {
-      OnUnload(); // HACK: remove once ticket #2961 is resolved
-    }
-
     public override void OnUnload() {
-      base.OnUnload();
-
+      // HACK: free handle to native DLL used temporarily by the Hive Slave
+      // should be solved for all native DLLs used by the Hive Slave
       var dllDir = new FileInfo(GetType().Assembly.Location).Directory;
-      if (dllDir == null)
+      if (dllDir == null || !dllDir.FullName.Contains(Path.DirectorySeparatorChar + "PluginTemp" + Path.DirectorySeparatorChar))
         return;
 
@@ -56,4 +51,7 @@
 
       foreach (var nativeDll in dllDir.EnumerateFiles().Where(f => nativeDlls.Contains(f.Name))) {
+        if (Process.GetCurrentProcess().Modules.Cast<ProcessModule>().All(m => m.ModuleName != nativeDll.Name))
+          continue;
+
         var handle = LoadLibrary(nativeDll.FullName);
         if (handle == IntPtr.Zero)
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/glpk-license.txt
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/glpk-license.txt	(revision 16581)
+++ 	(revision )
@@ -1,674 +1,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.Designer.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.Designer.cs	(revision 16582)
@@ -0,0 +1,95 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Data.Views;
+
+namespace HeuristicLab.ExactOptimization.Views {
+  partial class FileBasedLinearProblemDefinitionView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.openButton = new System.Windows.Forms.Button();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.stringConvertibleValueView = new HeuristicLab.Data.Views.StringConvertibleValueView();
+      this.SuspendLayout();
+      // 
+      // openButton
+      // 
+      this.openButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.openButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
+      this.openButton.Location = new System.Drawing.Point(167, 0);
+      this.openButton.Name = "openButton";
+      this.openButton.Size = new System.Drawing.Size(24, 24);
+      this.openButton.TabIndex = 3;
+      this.openButton.UseVisualStyleBackColor = true;
+      this.openButton.Click += new System.EventHandler(this.openButton_Click);
+      // 
+      // stringConvertibleValueView
+      // 
+      this.stringConvertibleValueView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.stringConvertibleValueView.Caption = "StringConvertibleValue View";
+      this.stringConvertibleValueView.Content = null;
+      this.stringConvertibleValueView.LabelVisible = true;
+      this.stringConvertibleValueView.Location = new System.Drawing.Point(4, 2);
+      this.stringConvertibleValueView.Name = "stringConvertibleValueView";
+      this.stringConvertibleValueView.ReadOnly = false;
+      this.stringConvertibleValueView.Size = new System.Drawing.Size(157, 21);
+      this.stringConvertibleValueView.TabIndex = 0;
+      // 
+      // FileValueView
+      // 
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.stringConvertibleValueView);
+      this.Controls.Add(this.openButton);
+      this.Name = "FileValueView";
+      this.Size = new System.Drawing.Size(194, 24);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Button openButton;
+    protected System.Windows.Forms.OpenFileDialog openFileDialog;
+    protected StringConvertibleValueView stringConvertibleValueView;
+  }
+}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProblemDefinitionView.cs	(revision 16582)
@@ -0,0 +1,65 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.ExactOptimization.LinearProgramming;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.ExactOptimization.Views {
+  [View(nameof(FileBasedLinearProblemDefinitionView))]
+  [Content(typeof(FileBasedLinearProblemDefinition), IsDefaultView = true)]
+  public partial class FileBasedLinearProblemDefinitionView : ItemView {
+    public new FileBasedLinearProblemDefinition Content {
+      get => (FileBasedLinearProblemDefinition)base.Content;
+      set => base.Content = value;
+    }
+
+    public FileBasedLinearProblemDefinitionView() {
+      InitializeComponent();
+      stringConvertibleValueView.LabelVisible = false;
+      stringConvertibleValueView.ReadOnly = true;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      openButton.Enabled = !Locked && !ReadOnly && Content != null;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        stringConvertibleValueView.Content = null;
+        return;
+      }
+
+      stringConvertibleValueView.Content = Content.FileNameParam.Value.StringValue;
+      openFileDialog.Filter = Content.FileNameParam.Value.FileDialogFilter;
+    }
+
+    protected virtual void openButton_Click(object sender, EventArgs e) {
+      openFileDialog.Filter = Content.FileNameParam.Value.FileDialogFilter;
+      if (openFileDialog.ShowDialog(this) != DialogResult.OK) return;
+      Content.FileNameParam.Value.Value = openFileDialog.FileName;
+    }
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProgrammingProblemDefinitionView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProgrammingProblemDefinitionView.Designer.cs	(revision 16581)
+++ 	(revision )
@@ -1,78 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-# endregion
-
-namespace HeuristicLab.MathematicalOptimization.Views {
-  partial class FileBasedLinearProgrammingProblemDefinitionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.SuspendLayout();
-      // 
-      // viewHost
-      // 
-      this.viewHost.Caption = "View";
-      this.viewHost.Content = null;
-      this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.viewHost.Enabled = false;
-      this.viewHost.Location = new System.Drawing.Point(0, 0);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(150, 150);
-      this.viewHost.TabIndex = 0;
-      this.viewHost.ViewsLabelVisible = true;
-      this.viewHost.ViewType = null;
-      // 
-      // LinearProgrammingProblemDefinitionFileView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.viewHost);
-      this.Name = "LinearProgrammingProblemDefinitionFileView";
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private MainForm.WindowsForms.ViewHost viewHost;
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProgrammingProblemDefinitionView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/FileBasedLinearProgrammingProblemDefinitionView.cs	(revision 16581)
+++ 	(revision )
@@ -1,54 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MathematicalOptimization.LinearProgramming;
-
-namespace HeuristicLab.MathematicalOptimization.Views {
-
-  [View(nameof(FileBasedLinearProgrammingProblemDefinitionView))]
-  [Content(typeof(FileBasedLinearProgrammingProblemDefinition), IsDefaultView = true)]
-  public partial class FileBasedLinearProgrammingProblemDefinitionView : ItemView {
-
-    public FileBasedLinearProgrammingProblemDefinitionView() {
-      InitializeComponent();
-    }
-
-    public new FileBasedLinearProgrammingProblemDefinition Content {
-      get => (FileBasedLinearProgrammingProblemDefinition)base.Content;
-      set {
-        base.Content = value;
-        OnContentChanged();
-      }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        viewHost.Content = null;
-      } else {
-        viewHost.Content = Content.FileNameParam;
-        Caption = Content.Name;
-      }
-    }
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/HeuristicLab.ExactOptimization.Views-3.3.csproj
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/HeuristicLab.ExactOptimization.Views-3.3.csproj	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/HeuristicLab.ExactOptimization.Views-3.3.csproj	(revision 16582)
@@ -0,0 +1,289 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D1D69043-17E6-4B8C-BF41-0799C7E56032}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.ExactOptimization.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.ExactOptimization.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <LangVersion>default</LangVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Clients.Access-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Clients.Access-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Clients.Access.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Clients.Access.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Clients.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Data-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimizer-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Optimizer-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="WindowsBase" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="FileBasedLinearProblemDefinitionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="FileBasedLinearProblemDefinitionView.Designer.cs">
+      <DependentUpon>FileBasedLinearProblemDefinitionView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LinearProgrammingAlgorithmView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LinearProgrammingAlgorithmView.Designer.cs">
+      <DependentUpon>LinearProgrammingAlgorithmView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LinearProgrammingProblemView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LinearProgrammingProblemView.Designer.cs">
+      <DependentUpon>LinearProgrammingProblemView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ProgrammableLinearProblemDefinitionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProgrammableLinearProblemDefinitionView.Designer.cs">
+      <DependentUpon>ProgrammableLinearProblemDefinitionView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="app.config">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="Plugin.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Clients.Access.Administration\3.3\HeuristicLab.Clients.Access.Administration-3.3.csproj">
+      <Project>{C9CF6AE8-4637-4A75-9141-042F479B5D50}</Project>
+      <Name>HeuristicLab.Clients.Access.Administration-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.CodeEditor\3.4\HeuristicLab.CodeEditor-3.4.csproj">
+      <Project>{C38691AE-ECB4-489A-A05D-B035554E0168}</Project>
+      <Name>HeuristicLab.CodeEditor-3.4</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0e27a536-1c4a-4624-a65e-dc4f4f23e3e1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj">
+      <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project>
+      <Name>HeuristicLab.Data.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MathematicalOptimization\3.3\HeuristicLab.ExactOptimization-3.3.csproj">
+      <Project>{fa3b9270-48b7-4c77-9fea-2a6ede82e909}</Project>
+      <Name>HeuristicLab.ExactOptimization-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662b4b15-8f4d-4ae5-b3eb-d91c215f5af2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Programmable.Views\3.3\HeuristicLab.Problems.Programmable.Views-3.3.csproj">
+      <Project>{6F023B90-2091-40A9-8AC0-B0338DFF8E5F}</Project>
+      <Name>HeuristicLab.Problems.Programmable.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Programmable\3.3\HeuristicLab.Problems.Programmable-3.3.csproj">
+      <Project>{EE07BFF8-B23D-41F5-8AD7-AC9598D7A2C9}</Project>
+      <Name>HeuristicLab.Problems.Programmable-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Scripting.Views\3.3\HeuristicLab.Scripting.Views-3.3.csproj">
+      <Project>{0C2917C8-7AA8-4E18-800A-C4D064F992ED}</Project>
+      <Name>HeuristicLab.Scripting.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Scripting\3.3\HeuristicLab.Scripting-3.3.csproj">
+      <Project>{21977CC3-1757-4B3B-87BD-FF817AAA900F}</Project>
+      <Name>HeuristicLab.Scripting-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/HeuristicLab.MathematicalOptimization.Views-3.3.csproj
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/HeuristicLab.MathematicalOptimization.Views-3.3.csproj	(revision 16581)
+++ 	(revision )
@@ -1,239 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D1D69043-17E6-4B8C-BF41-0799C7E56032}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.MathematicalOptimization.Views</RootNamespace>
-    <AssemblyName>HeuristicLab.MathematicalOptimization.Views-3.3</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-    <LangVersion>default</LangVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignAssembly>true</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\bin\HeuristicLab.Data-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="WindowsBase" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="FileBasedLinearProgrammingProblemDefinitionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="FileBasedLinearProgrammingProblemDefinitionView.Designer.cs">
-      <DependentUpon>FileBasedLinearProgrammingProblemDefinitionView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ProgrammableLinearProgrammingProblemDefinitionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ProgrammableLinearProgrammingProblemDefinitionView.Designer.cs">
-      <DependentUpon>ProgrammableLinearProgrammingProblemDefinitionView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="LinearProgrammingProblemView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="LinearProgrammingProblemView.Designer.cs">
-      <DependentUpon>LinearProgrammingProblemView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <None Include="app.config">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="Plugin.cs.frame" />
-    <Compile Include="Plugin.cs" />
-    <None Include="Properties\AssemblyInfo.cs.frame" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.CodeEditor\3.4\HeuristicLab.CodeEditor-3.4.csproj">
-      <Project>{C38691AE-ECB4-489A-A05D-B035554E0168}</Project>
-      <Name>HeuristicLab.CodeEditor-3.4</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
-      <Project>{0e27a536-1c4a-4624-a65e-dc4f4f23e3e1}</Project>
-      <Name>HeuristicLab.Common.Resources-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
-      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
-      <Name>HeuristicLab.Common-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
-      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
-      <Name>HeuristicLab.Core.Views-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
-      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
-      <Name>HeuristicLab.Core-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj">
-      <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project>
-      <Name>HeuristicLab.Data.Views-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
-      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
-      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
-      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
-      <Name>HeuristicLab.MainForm-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MathematicalOptimization\3.3\HeuristicLab.MathematicalOptimization-3.3.csproj">
-      <Project>{fa3b9270-48b7-4c77-9fea-2a6ede82e909}</Project>
-      <Name>HeuristicLab.MathematicalOptimization-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
-      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
-      <Name>HeuristicLab.Optimization-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Programmable\3.3\HeuristicLab.Problems.Programmable-3.3.csproj">
-      <Project>{EE07BFF8-B23D-41F5-8AD7-AC9598D7A2C9}</Project>
-      <Name>HeuristicLab.Problems.Programmable-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Scripting.Views\3.3\HeuristicLab.Scripting.Views-3.3.csproj">
-      <Project>{0C2917C8-7AA8-4E18-800A-C4D064F992ED}</Project>
-      <Name>HeuristicLab.Scripting.Views-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Scripting\3.3\HeuristicLab.Scripting-3.3.csproj">
-      <Project>{21977CC3-1757-4B3B-87BD-FF817AAA900F}</Project>
-      <Name>HeuristicLab.Scripting-3.3</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="ProgrammableLinearProgrammingProblemDefinitionView.resx">
-      <DependentUpon>ProgrammableLinearProgrammingProblemDefinitionView.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-  <PropertyGroup>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.Designer.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.Designer.cs	(revision 16582)
@@ -0,0 +1,159 @@
+﻿using HeuristicLab.Common.Resources;
+
+namespace HeuristicLab.ExactOptimization.Views {
+  partial class LinearProgrammingAlgorithmView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LinearProgrammingAlgorithmView));
+      this.exportModelButton = new System.Windows.Forms.Button();
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.showInRunCheckBox = new System.Windows.Forms.CheckBox();
+      this.tabControl.SuspendLayout();
+      this.parametersTabPage.SuspendLayout();
+      this.problemTabPage.SuspendLayout();
+      this.resultsTabPage.SuspendLayout();
+      this.runsTabPage.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Size = new System.Drawing.Size(671, 404);
+      // 
+      // problemTabPage
+      // 
+      this.problemTabPage.Controls.Add(this.showInRunCheckBox);
+      this.problemTabPage.Controls.Add(this.exportModelButton);
+      this.problemTabPage.Controls.SetChildIndex(this.newProblemButton, 0);
+      this.problemTabPage.Controls.SetChildIndex(this.openProblemButton, 0);
+      this.problemTabPage.Controls.SetChildIndex(this.problemViewHost, 0);
+      this.problemTabPage.Controls.SetChildIndex(this.exportModelButton, 0);
+      this.problemTabPage.Controls.SetChildIndex(this.showInRunCheckBox, 0);
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.Size = new System.Drawing.Size(659, 392);
+      // 
+      // problemViewHost
+      // 
+      this.problemViewHost.TabIndex = 4;
+      // 
+      // newProblemButton
+      // 
+      this.toolTip.SetToolTip(this.newProblemButton, "New Programmable Model");
+      // 
+      // openProblemButton
+      // 
+      this.toolTip.SetToolTip(this.openProblemButton, "Import Model From File");
+      // 
+      // resultsTabPage
+      // 
+      this.resultsTabPage.Size = new System.Drawing.Size(671, 404);
+      // 
+      // resultsView
+      // 
+      this.resultsView.Size = new System.Drawing.Size(659, 392);
+      // 
+      // runsTabPage
+      // 
+      this.runsTabPage.Size = new System.Drawing.Size(671, 404);
+      // 
+      // runsView
+      // 
+      this.runsView.Size = new System.Drawing.Size(659, 392);
+      // 
+      // storeAlgorithmInEachRunCheckBox
+      // 
+      this.toolTip.SetToolTip(this.storeAlgorithmInEachRunCheckBox, "Check to store a copy of the algorithm in each run.");
+      // 
+      // startButton
+      // 
+      this.toolTip.SetToolTip(this.startButton, "Start/Resume Algorithm");
+      // 
+      // pauseButton
+      // 
+      this.toolTip.SetToolTip(this.pauseButton, "Pause Algorithm");
+      // 
+      // stopButton
+      // 
+      this.toolTip.SetToolTip(this.stopButton, "Stop Algorithm");
+      // 
+      // resetButton
+      // 
+      this.toolTip.SetToolTip(this.resetButton, "Reset Algorithm");
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      // 
+      // exportModelButton
+      // 
+      this.exportModelButton.Image = VSImageLibrary.SaveAs;
+      this.exportModelButton.Location = new System.Drawing.Point(66, 6);
+      this.exportModelButton.Name = "exportModelButton";
+      this.exportModelButton.Size = new System.Drawing.Size(24, 24);
+      this.exportModelButton.TabIndex = 2;
+      this.toolTip.SetToolTip(this.exportModelButton, "Export Model To File");
+      this.exportModelButton.UseVisualStyleBackColor = true;
+      this.exportModelButton.Click += new System.EventHandler(this.exportModelButton_Click);
+      // 
+      // showInRunCheckBox
+      // 
+      this.showInRunCheckBox.AutoSize = true;
+      this.showInRunCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.showInRunCheckBox.Location = new System.Drawing.Point(96, 11);
+      this.showInRunCheckBox.Name = "showInRunCheckBox";
+      this.showInRunCheckBox.Size = new System.Drawing.Size(90, 17);
+      this.showInRunCheckBox.TabIndex = 3;
+      this.showInRunCheckBox.Text = "&Show in Run:";
+      this.toolTip.SetToolTip(this.showInRunCheckBox, "Check to show the model in each run.");
+      this.showInRunCheckBox.UseVisualStyleBackColor = true;
+      this.showInRunCheckBox.CheckedChanged += new System.EventHandler(this.showInRunCheckBox_CheckedChanged);
+      // 
+      // LinearProgrammingAlgorithmView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "LinearProgrammingAlgorithmView";
+      this.tabControl.ResumeLayout(false);
+      this.parametersTabPage.ResumeLayout(false);
+      this.problemTabPage.ResumeLayout(false);
+      this.problemTabPage.PerformLayout();
+      this.resultsTabPage.ResumeLayout(false);
+      this.runsTabPage.ResumeLayout(false);
+      this.runsTabPage.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Button exportModelButton;
+    private System.Windows.Forms.SaveFileDialog saveFileDialog;
+    protected System.Windows.Forms.CheckBox showInRunCheckBox;
+  }
+}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingAlgorithmView.cs	(revision 16582)
@@ -0,0 +1,62 @@
+﻿using System;
+using System.Windows.Forms;
+using HeuristicLab.ExactOptimization.LinearProgramming;
+using HeuristicLab.MainForm;
+using HeuristicLab.Optimization.Views;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.ExactOptimization.Views {
+
+  [View(nameof(LinearProgrammingAlgorithmView))]
+  [Content(typeof(LinearProgrammingAlgorithm), IsDefaultView = true)]
+  public partial class LinearProgrammingAlgorithmView : BasicAlgorithmView {
+    public LinearProgrammingAlgorithmView() {
+      InitializeComponent();
+    }
+
+    protected override void newProblemButton_Click(object sender, EventArgs e) {
+      ((LinearProblem)Content.Problem).ProblemDefinition = new ProgrammableLinearProblemDefinition();
+    }
+
+    protected override void openProblemButton_Click(object sender, EventArgs e) {
+      openFileDialog.Title = "Import Model";
+      openFileDialog.Filter = "All Supported Files (*.mps;*.bin;*.prototxt)|*.mps;*.bin;*.prototxt|" +
+                              "Mathematical Programming System Files (*.mps)|*.mps|" +
+                              "Google OR-Tools Protocol Buffers Files (*.bin;*.prototxt)|*.bin;*.prototxt|" +
+                              "All Files (*.*)|*.*";
+
+      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
+        newProblemButton.Enabled = openProblemButton.Enabled = false;
+        problemViewHost.Enabled = false;
+
+        try {
+          ((LinearProblem)Content.Problem).ProblemDefinition = new FileBasedLinearProblemDefinition {
+            FileName = openFileDialog.FileName
+          };
+        } catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        } finally {
+          problemViewHost.Enabled = true;
+          newProblemButton.Enabled = openProblemButton.Enabled = true;
+        }
+      }
+    }
+
+    private void exportModelButton_Click(object sender, EventArgs e) {
+      saveFileDialog.Title = "Export Model";
+      saveFileDialog.Filter = "CPLEX LP File (*.lp)|*.lp|" +
+                              "Mathematical Programming System File (*.mps)|*.mps|" +
+                              "Google OR-Tools Protocol Buffers Text File (*.prototxt)|*.prototxt|" +
+                              "Google OR-Tools Protocol Buffers Binary File (*.bin)|*.bin";
+
+      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
+        ((LinearProblem)Content.Problem).ExportModel(saveFileDialog.FileName);
+      }
+    }
+
+    private void showInRunCheckBox_CheckedChanged(object sender, EventArgs e) {
+      if (Content != null)
+        ((LinearProblem)Content.Problem).ProblemDefinitionParameter.GetsCollected = showInRunCheckBox.Checked;
+    }
+  }
+}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.Designer.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.Designer.cs	(revision 16582)
@@ -23,5 +23,5 @@
 using HeuristicLab.Common.Resources;
 
-namespace HeuristicLab.MathematicalOptimization.Views {
+namespace HeuristicLab.ExactOptimization.Views {
   partial class LinearProgrammingProblemView {
     /// <summary> 
@@ -49,14 +49,8 @@
     private void InitializeComponent() {
       this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LinearProgrammingProblemView));
       this.panel1 = new System.Windows.Forms.Panel();
       this.ViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.panel2 = new System.Windows.Forms.Panel();
-      this.modelTypeNameLabel = new System.Windows.Forms.Label();
-      this.modelTypeLabel = new System.Windows.Forms.Label();
-      this.changeModelTypeButton = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       this.panel1.SuspendLayout();
-      this.panel2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -64,5 +58,4 @@
       // 
       this.panel1.Controls.Add(this.ViewHost);
-      this.panel1.Controls.Add(this.panel2);
       this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
       this.panel1.Location = new System.Drawing.Point(0, 0);
@@ -77,51 +70,11 @@
       this.ViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
       this.ViewHost.Enabled = false;
-      this.ViewHost.Location = new System.Drawing.Point(0, 30);
+      this.ViewHost.Location = new System.Drawing.Point(0, 0);
       this.ViewHost.Name = "ViewHost";
       this.ViewHost.ReadOnly = false;
-      this.ViewHost.Size = new System.Drawing.Size(300, 120);
+      this.ViewHost.Size = new System.Drawing.Size(300, 150);
       this.ViewHost.TabIndex = 6;
       this.ViewHost.ViewsLabelVisible = false;
       this.ViewHost.ViewType = null;
-      // 
-      // panel2
-      // 
-      this.panel2.Controls.Add(this.modelTypeNameLabel);
-      this.panel2.Controls.Add(this.modelTypeLabel);
-      this.panel2.Controls.Add(this.changeModelTypeButton);
-      this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
-      this.panel2.Location = new System.Drawing.Point(0, 0);
-      this.panel2.Name = "panel2";
-      this.panel2.Size = new System.Drawing.Size(300, 30);
-      this.panel2.TabIndex = 5;
-      // 
-      // modelTypeNameLabel
-      // 
-      this.modelTypeNameLabel.AutoSize = true;
-      this.modelTypeNameLabel.Location = new System.Drawing.Point(95, 9);
-      this.modelTypeNameLabel.Name = "modelTypeNameLabel";
-      this.modelTypeNameLabel.Size = new System.Drawing.Size(31, 13);
-      this.modelTypeNameLabel.TabIndex = 6;
-      this.modelTypeNameLabel.Text = "none";
-      // 
-      // modelTypeLabel
-      // 
-      this.modelTypeLabel.AutoSize = true;
-      this.modelTypeLabel.Location = new System.Drawing.Point(3, 9);
-      this.modelTypeLabel.Name = "modelTypeLabel";
-      this.modelTypeLabel.Size = new System.Drawing.Size(39, 13);
-      this.modelTypeLabel.TabIndex = 5;
-      this.modelTypeLabel.Text = "Model Type:";
-      // 
-      // changeModelTypeButton
-      // 
-      this.changeModelTypeButton.Image = VSImageLibrary.RefreshDocument;
-      this.changeModelTypeButton.Location = new System.Drawing.Point(68, 3);
-      this.changeModelTypeButton.Name = "changeModelType";
-      this.changeModelTypeButton.Size = new System.Drawing.Size(24, 24);
-      this.changeModelTypeButton.TabIndex = 4;
-      this.toolTip.SetToolTip(this.changeModelTypeButton, "Change Model Type");
-      this.changeModelTypeButton.UseVisualStyleBackColor = true;
-      this.changeModelTypeButton.Click += new System.EventHandler(this.changeModelTypeButton_Click);
       // 
       // LinearProgrammingProblemView
@@ -131,6 +84,4 @@
       this.Size = new System.Drawing.Size(300, 150);
       this.panel1.ResumeLayout(false);
-      this.panel2.ResumeLayout(false);
-      this.panel2.PerformLayout();
       this.ResumeLayout(false);
 
@@ -141,10 +92,6 @@
     private System.Windows.Forms.Panel panel1;
     private MainForm.WindowsForms.ViewHost ViewHost;
-    private System.Windows.Forms.Panel panel2;
-    protected System.Windows.Forms.Button changeModelTypeButton;
     private System.Windows.Forms.ToolTip toolTip;
     protected System.Windows.Forms.Button newProblemDefinitionButton;
-    private System.Windows.Forms.Label modelTypeLabel;
-    private System.Windows.Forms.Label modelTypeNameLabel;
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/LinearProgrammingProblemView.cs	(revision 16582)
@@ -21,19 +21,15 @@
 
 using System;
-using System.Windows.Forms;
 using HeuristicLab.Core.Views;
+using HeuristicLab.ExactOptimization.LinearProgramming;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.MathematicalOptimization.LinearProgramming;
-using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.MathematicalOptimization.Views {
+namespace HeuristicLab.ExactOptimization.Views {
 
   [View(nameof(LinearProgrammingProblemView))]
-  [Content(typeof(LinearProgrammingProblem), true)]
+  [Content(typeof(LinearProblem), IsDefaultView = true)]
   public partial class LinearProgrammingProblemView : ItemView {
     protected ViewHost definitionView;
-
-    private TypeSelectorDialog problemTypeSelectorDialog;
 
     public LinearProgrammingProblemView() {
@@ -42,6 +38,6 @@
     }
 
-    public new LinearProgrammingProblem Content {
-      get => (LinearProgrammingProblem)base.Content;
+    public new LinearProblem Content {
+      get => (LinearProblem)base.Content;
       set => base.Content = value;
     }
@@ -49,6 +45,6 @@
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
+      Content.NameChanged -= ContentOnNameChanged;
       Content.ProblemDefinitionChanged -= ContentOnProblemDefinitionChanged;
-      Content.NameChanged -= ContentOnNameChanged;
     }
 
@@ -69,20 +65,4 @@
     }
 
-    private void changeModelTypeButton_Click(object sender, EventArgs e) {
-      if (problemTypeSelectorDialog == null) {
-        problemTypeSelectorDialog = new TypeSelectorDialog { Caption = "Select Model Type" };
-        problemTypeSelectorDialog.TypeSelector.Caption = "Available Model Types";
-        problemTypeSelectorDialog.TypeSelector.Configure(typeof(ILinearProgrammingProblemDefinition), false, true);
-      }
-      if (problemTypeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          Content.ProblemDefinition =
-            (ILinearProgrammingProblemDefinition)problemTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
-        } catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-
     private void ContentOnNameChanged(object sender, EventArgs eventArgs) {
       Caption = Content.Name;
@@ -90,23 +70,5 @@
 
     private void ContentOnProblemDefinitionChanged(object sender, EventArgs eventArgs) {
-      var problemDefinition = ((LinearProgrammingProblem)sender).ProblemDefinition;
-      definitionView.Content = problemDefinition;
-
-      switch (problemDefinition) {
-        case null:
-          modelTypeNameLabel.Text = "none";
-          break;
-
-        case ProgrammableLinearProgrammingProblemDefinition _:
-          modelTypeNameLabel.Text = "Script";
-          break;
-
-        case FileBasedLinearProgrammingProblemDefinition _:
-          modelTypeNameLabel.Text = "File";
-          break;
-
-        default:
-          throw new NotImplementedException("Unknown problem definition type.");
-      }
+      definitionView.Content = ((LinearProblem)sender).ProblemDefinition;
     }
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Plugin.cs.frame	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Plugin.cs.frame	(revision 16582)
@@ -22,8 +22,8 @@
 using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.MathematicalOptimization {
+namespace HeuristicLab.ExactOptimization {
 
-  [Plugin("HeuristicLab.MathematicalOptimization.Views", "Views for mathematical optimization", "3.3.15.$WCREV$")]
-  [PluginFile("HeuristicLab.MathematicalOptimization.Views-3.3.dll", PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.ExactOptimization.Views", "Views for exact optimization", "3.3.15.$WCREV$")]
+  [PluginFile("HeuristicLab.ExactOptimization.Views-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.CodeEditor", "3.4")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
@@ -32,11 +32,14 @@
   [PluginDependency("HeuristicLab.Core.Views", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Data.Views", "3.3")]
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
-  [PluginDependency("HeuristicLab.MathematicalOptimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
+  [PluginDependency("HeuristicLab.ExactOptimization", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Programmable", "3.3")]
   [PluginDependency("HeuristicLab.Scripting", "3.3")]
   [PluginDependency("HeuristicLab.Scripting.Views", "3.3")]
-  public class HeuristicLabMathematicalOptimizationViewsPlugin : PluginBase {
+  public class HeuristicLabExactOptimizationViewsPlugin : PluginBase {
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.Designer.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.Designer.cs	(revision 16582)
@@ -0,0 +1,179 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+
+namespace HeuristicLab.ExactOptimization.Views {
+  partial class ProgrammableLinearProblemDefinitionView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProgrammableLinearProblemDefinitionView));
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.variableStoreView = new HeuristicLab.Scripting.Views.VariableStoreView();
+      this.infoTabControl.SuspendLayout();
+      this.outputTabPage.SuspendLayout();
+      this.errorListTabPage.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // compileButton
+      // 
+      this.toolTip.SetToolTip(this.compileButton, "Compile (F6)");
+      // 
+      // infoTabControl
+      // 
+      this.infoTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.infoTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.infoTabControl.Location = new System.Drawing.Point(0, 0);
+      this.infoTabControl.Size = new System.Drawing.Size(572, 113);
+      // 
+      // outputTabPage
+      // 
+      this.outputTabPage.Size = new System.Drawing.Size(564, 87);
+      // 
+      // outputTextBox
+      // 
+      this.outputTextBox.Size = new System.Drawing.Size(558, 81);
+      // 
+      // errorListTabPage
+      // 
+      this.errorListTabPage.Size = new System.Drawing.Size(0, 87);
+      // 
+      // errorListView
+      // 
+      this.errorListView.Size = new System.Drawing.Size(0, 81);
+      // 
+      // codeEditor
+      // 
+      this.codeEditor.Size = new System.Drawing.Size(572, 429);
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Size = new System.Drawing.Size(572, 546);
+      this.splitContainer1.SplitterDistance = 429;
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.splitContainer2.Location = new System.Drawing.Point(6, 56);
+      this.splitContainer2.MinimumSize = new System.Drawing.Size(300, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.splitContainer1);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.variableStoreView);
+      this.splitContainer2.Panel2MinSize = 250;
+      this.splitContainer2.Size = new System.Drawing.Size(826, 546);
+      this.splitContainer2.SplitterDistance = 572;
+      this.splitContainer2.TabIndex = 10;
+      // 
+      // variableStoreView
+      // 
+      this.variableStoreView.Caption = "ItemCollection View";
+      this.variableStoreView.Content = null;
+      this.variableStoreView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.variableStoreView.Location = new System.Drawing.Point(0, 0);
+      this.variableStoreView.Name = "variableStoreView";
+      this.variableStoreView.ReadOnly = true;
+      this.variableStoreView.Size = new System.Drawing.Size(250, 546);
+      this.variableStoreView.TabIndex = 10;
+      // 
+      // ProgrammableLinearProblemDefinitionView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer2);
+      this.Name = "ProgrammableLinearProblemDefinitionView";
+      this.Controls.SetChildIndex(this.infoTextLabel, 0);
+      this.Controls.SetChildIndex(this.compileButton, 0);
+      this.Controls.SetChildIndex(this.splitContainer2, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.infoLabel, 0);
+      this.infoTabControl.ResumeLayout(false);
+      this.outputTabPage.ResumeLayout(false);
+      this.outputTabPage.PerformLayout();
+      this.errorListTabPage.ResumeLayout(false);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.SplitContainer splitContainer2;
+    private Scripting.Views.VariableStoreView variableStoreView;
+  }
+}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProblemDefinitionView.cs	(revision 16582)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+using HeuristicLab.ExactOptimization.LinearProgramming;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.Programmable;
+using HeuristicLab.Scripting.Views;
+
+namespace HeuristicLab.ExactOptimization.Views {
+
+  [View(nameof(ProgrammableLinearProblemDefinitionView))]
+  [Content(typeof(ProgrammableLinearProblemDefinition), IsDefaultView = true)]
+  public partial class ProgrammableLinearProblemDefinitionView : ScriptView {
+
+    public new ProgrammableLinearProblemDefinition Content {
+      get => (ProgrammableLinearProblemDefinition)base.Content;
+      set => base.Content = value;
+    }
+
+    public ProgrammableLinearProblemDefinitionView() {
+      InitializeComponent();
+      splitContainer2.Panel2MinSize = 25;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      variableStoreView.Content = Content?.VariableStore;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      variableStoreView.Enabled = Content != null && !Locked && !ReadOnly;
+    }
+
+    public override bool Compile() {
+      try {
+        base.Compile();
+      } catch (ProblemDefinitionScriptException e) {
+        PluginInfrastructure.ErrorHandling.ShowErrorDialog(e);
+        return false;
+      }
+      return true;
+    }
+
+    protected override void Content_CodeChanged(object sender, EventArgs e) {
+      base.Content_CodeChanged(sender, e);
+      UpdateInfoTextLabel("Code changed, compilation necessary!", Color.Red);
+    }
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.Designer.cs	(revision 16581)
+++ 	(revision )
@@ -1,189 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-
-using System.ComponentModel;
-using System.Windows.Forms;
-using HeuristicLab.Scripting.Views;
-
-namespace HeuristicLab.MathematicalOptimization.Views {
-  partial class ProgrammableLinearProgrammingProblemDefinitionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProgrammableLinearProgrammingProblemDefinitionView));
-      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      this.variableStoreView = new HeuristicLab.Scripting.Views.VariableStoreView();
-      this.infoTabControl.SuspendLayout();
-      this.outputTabPage.SuspendLayout();
-      this.errorListTabPage.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
-      this.splitContainer2.Panel1.SuspendLayout();
-      this.splitContainer2.Panel2.SuspendLayout();
-      this.splitContainer2.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // compileButton
-      // 
-      this.toolTip.SetToolTip(this.compileButton, "Compile (F6)");
-      // 
-      // imageList
-      // 
-      this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
-      this.imageList.Images.SetKeyName(0, "");
-      this.imageList.Images.SetKeyName(1, "");
-      // 
-      // infoTabControl
-      // 
-      this.infoTabControl.Size = new System.Drawing.Size(593, 113);
-      // 
-      // outputTabPage
-      // 
-      this.outputTabPage.Size = new System.Drawing.Size(585, 87);
-      // 
-      // outputTextBox
-      // 
-      this.outputTextBox.Size = new System.Drawing.Size(579, 81);
-      // 
-      // errorListTabPage
-      // 
-      this.errorListTabPage.Size = new System.Drawing.Size(585, 87);
-      // 
-      // errorListView
-      // 
-      this.errorListView.Size = new System.Drawing.Size(579, 81);
-      // 
-      // codeEditor
-      // 
-      this.codeEditor.Size = new System.Drawing.Size(593, 429);
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer1.Size = new System.Drawing.Size(593, 546);
-      this.splitContainer1.SplitterDistance = 429;
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(68, 0);
-      this.nameTextBox.Size = new System.Drawing.Size(742, 20);
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Location = new System.Drawing.Point(816, 3);
-      // 
-      // splitContainer2
-      // 
-      this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.splitContainer2.Location = new System.Drawing.Point(6, 56);
-      this.splitContainer2.Name = "splitContainer2";
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.splitContainer1);
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.variableStoreView);
-      this.splitContainer2.Size = new System.Drawing.Size(826, 546);
-      this.splitContainer2.SplitterDistance = 593;
-      this.splitContainer2.TabIndex = 10;
-      // 
-      // variableStoreView
-      // 
-      this.variableStoreView.Caption = "ItemCollection View";
-      this.variableStoreView.Content = null;
-      this.variableStoreView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.variableStoreView.Location = new System.Drawing.Point(0, 0);
-      this.variableStoreView.Name = "variableStoreView";
-      this.variableStoreView.ReadOnly = false;
-      this.variableStoreView.Size = new System.Drawing.Size(229, 546);
-      this.variableStoreView.TabIndex = 10;
-      // 
-      // LinearProgrammingProblemDefinitionScriptView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.splitContainer2);
-      this.Name = "LinearProgrammingProblemDefinitionScriptView";
-      this.Controls.SetChildIndex(this.infoTextLabel, 0);
-      this.Controls.SetChildIndex(this.compileButton, 0);
-      this.Controls.SetChildIndex(this.splitContainer2, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.infoTabControl.ResumeLayout(false);
-      this.outputTabPage.ResumeLayout(false);
-      this.outputTabPage.PerformLayout();
-      this.errorListTabPage.ResumeLayout(false);
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-      this.splitContainer1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.splitContainer2.Panel1.ResumeLayout(false);
-      this.splitContainer2.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
-      this.splitContainer2.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private SplitContainer splitContainer2;
-    private VariableStoreView variableStoreView;
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.cs	(revision 16581)
+++ 	(revision )
@@ -1,70 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Drawing;
-using HeuristicLab.MainForm;
-using HeuristicLab.MathematicalOptimization.LinearProgramming;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Problems.Programmable;
-using HeuristicLab.Scripting.Views;
-
-namespace HeuristicLab.MathematicalOptimization.Views {
-
-  [View(nameof(ProgrammableLinearProgrammingProblemDefinitionView))]
-  [Content(typeof(ProgrammableLinearProgrammingProblemDefinition), IsDefaultView = true)]
-  public partial class ProgrammableLinearProgrammingProblemDefinitionView : ScriptView {
-
-    public ProgrammableLinearProgrammingProblemDefinitionView() {
-      InitializeComponent();
-    }
-
-    public new ProgrammableLinearProgrammingProblemDefinition Content {
-      get => (ProgrammableLinearProgrammingProblemDefinition)base.Content;
-      set => base.Content = value;
-    }
-
-    public override bool Compile() {
-      try {
-        base.Compile();
-      } catch (ProblemDefinitionScriptException e) {
-        ErrorHandling.ShowErrorDialog(e);
-        return false;
-      }
-      return true;
-    }
-
-    protected override void Content_CodeChanged(object sender, EventArgs e) {
-      base.Content_CodeChanged(sender, e);
-      UpdateInfoTextLabel("Code changed, compilation necessary!", Color.Red);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      variableStoreView.Content = Content?.VariableStore;
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      variableStoreView.Enabled = Content != null && !Locked && !ReadOnly;
-    }
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.resx
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.resx	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/ProgrammableLinearProgrammingProblemDefinitionView.resx	(revision 16582)
@@ -129,5 +129,5 @@
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACG
-        CQAAAk1TRnQBSQFMAgEBAgEAAQgBAAEIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        CQAAAk1TRnQBSQFMAgEBAgEAAQgBAAEQAQABEAEAARABAAT/AQkBEAj/AUIBTQE2AQQGAAE2AQQCAAEo
         AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
@@ -169,7 +169,10 @@
         AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAE/wYAAfABDwYAAcABAwYAAcABAwQAAYABAQGAAQEEAAGA
         AQEBgAEBBAABwAEDAYABAQQAAcABAwGAAQEEAAHgAQcBgAEBBAAB4AEHAYABAQQAAfABDwGAAQEEAAH4
-        AR8BgAEBBAAB+AEfAcABAwQAAfwBPwHAAQMEAAH8AT8B8AEPBAAE/wQACw==
+        AR8BgAEBBAAB+AEfAcABAwQAAfwBPwHAAQMEAAH8AT8B8AEPBAAE/xoACw==
 </value>
   </data>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>120, 17</value>
+  </metadata>
   <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>120, 17</value>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 16582)
@@ -27,10 +27,10 @@
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("HeuristiclLab.MathematicalOptimization.Views")]
-[assembly: AssemblyDescription("Views for mathematical optimization")]
+[assembly: AssemblyTitle("HeuristiclLab.ExactOptimization.Views")]
+[assembly: AssemblyDescription("Views for exact optimization")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("HEAL")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2018 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2019 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/app.config
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/app.config	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization.Views/3.3/app.config	(revision 16582)
@@ -3,9 +3,9 @@
   <configSections>
     <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-      <section name="HeuristicLab.MathematicalOptimization.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+      <section name="HeuristicLab.ExactOptimization.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
     </sectionGroup>
   </configSections>
   <userSettings>
-    <HeuristicLab.MathematicalOptimization.Properties.Settings>
+    <HeuristicLab.ExactOptimization.Properties.Settings>
       <setting name="ScipLibraryName" serializeAs="String">
         <value>scip.dll</value>
@@ -20,5 +20,5 @@
         <value>glpk_4_65.dll</value>
       </setting>
-    </HeuristicLab.MathematicalOptimization.Properties.Settings>
+    </HeuristicLab.ExactOptimization.Properties.Settings>
   </userSettings>
 </configuration>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.ExactOptimization-3.3.csproj
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.ExactOptimization-3.3.csproj	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.ExactOptimization-3.3.csproj	(revision 16582)
@@ -0,0 +1,263 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{FA3B9270-48B7-4C77-9FEA-2A6EDE82E909}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.ExactOptimization</RootNamespace>
+    <AssemblyName>HeuristicLab.ExactOptimization-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <LangVersion>default</LangVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Google.OrTools, Version=6.9.5866.0, Culture=neutral, PublicKeyToken=5d849a56a8afc8c7, processorArchitecture=AMD64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\Google.OrTools.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.OrTools-6.10.0, Version=6.10.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.OrTools-6.10.0.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="WindowsBase" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="LinearProgramming\Algorithms\ResultStatus.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\BopSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\CoinOrSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ExternalLinearSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\GlopSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\GlpkSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IExternalLinearSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IIncrementalLinearSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ExternalIncrementalLinearSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IncrementalLinearSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\ProblemType.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\ScipSolver.cs" />
+    <Compile Include="LinearProgramming\Problems\CompiledProblemDefinition.cs" />
+    <Compile Include="LinearProgramming\Problems\FileBasedLinearProblemDefinition.cs" />
+    <Compile Include="LinearProgramming\Problems\LinearProblem.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\CplexSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\GurobiSolver.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ILinearSolver.cs" />
+    <Compile Include="LinearProgramming\Problems\ILinearProblemDefinition.cs" />
+    <Compile Include="LinearProgramming\Algorithms\LinearProgrammingAlgorithm.cs" />
+    <Compile Include="LinearProgramming\Algorithms\LinearSolverExtensions.cs" />
+    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\LinearSolver.cs" />
+    <Compile Include="LinearProgramming\Problems\ProgrammableLinearProblemDefinition.cs" />
+    <Compile Include="LinearProgramming\Algorithms\ProtoWriteFormat.cs" />
+    <Compile Include="LinearProgramming\Algorithms\SolverResponseStatus.cs" />
+    <Resource Include="LinearProgramming\Templates\CompiledLinearProblemDefinition.cs" />
+    <Compile Include="LinearProgramming\Templates\ScriptTemplates.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>ScriptTemplates.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <None Include="app.config">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="Plugin.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>PublicSettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="LinearProgramming\Templates\ScriptTemplates.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <SubType>Designer</SubType>
+      <LastGenOutput>ScriptTemplates.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj">
+      <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project>
+      <Name>HeuristicLab.Analysis-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.PermutationEncoding\3.3\HeuristicLab.Encodings.PermutationEncoding-3.3.csproj">
+      <Project>{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}</Project>
+      <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Programmable\3.3\HeuristicLab.Problems.Programmable-3.3.csproj">
+      <Project>{EE07BFF8-B23D-41F5-8AD7-AC9598D7A2C9}</Project>
+      <Name>HeuristicLab.Problems.Programmable-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.TravelingSalesman\3.3\HeuristicLab.Problems.TravelingSalesman-3.3.csproj">
+      <Project>{D767C38D-8014-46B0-9A32-03A3AECCE34A}</Project>
+      <Name>HeuristicLab.Problems.TravelingSalesman-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Scripting\3.3\HeuristicLab.Scripting-3.3.csproj">
+      <Project>{21977CC3-1757-4B3B-87BD-FF817AAA900F}</Project>
+      <Name>HeuristicLab.Scripting-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.MathematicalOptimization-3.3.csproj
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.MathematicalOptimization-3.3.csproj	(revision 16581)
+++ 	(revision )
@@ -1,261 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{FA3B9270-48B7-4C77-9FEA-2A6EDE82E909}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.MathematicalOptimization</RootNamespace>
-    <AssemblyName>HeuristicLab.MathematicalOptimization-3.3</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-    <LangVersion>default</LangVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignAssembly>true</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Google.OrTools, Version=6.9.5866.0, Culture=neutral, PublicKeyToken=5d849a56a8afc8c7, processorArchitecture=AMD64">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\bin\Google.OrTools.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.OrTools-6.10.0, Version=6.10.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\bin\HeuristicLab.OrTools-6.10.0.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="WindowsBase" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="LinearProgramming\Algorithms\Solvers\BopSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\CoinOrSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ExternalLinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\GlopSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\GlpkSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IExternalLinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IIncrementalLinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ExternalIncrementalLinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IncrementalLinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\ProblemType.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\ScipSolver.cs" />
-    <Compile Include="LinearProgramming\Problems\CompiledProblemDefinition.cs" />
-    <Compile Include="LinearProgramming\Problems\FileBasedLinearProgrammingProblemDefinition.cs" />
-    <Compile Include="LinearProgramming\Problems\LinearProgrammingProblem.cs" />
-    <Compile Include="LinearProgramming\Algorithms\BasisStatus.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\CplexSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\GurobiSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ILinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\IncrementalityValues.cs" />
-    <Compile Include="LinearProgramming\Algorithms\IntegerParam.cs" />
-    <Compile Include="LinearProgramming\Algorithms\LpAlgorithmValues.cs" />
-    <Compile Include="LinearProgramming\Problems\ILinearProgrammingProblemDefinition.cs" />
-    <Compile Include="LinearProgramming\Algorithms\LinearProgrammingAlgorithm.cs" />
-    <Compile Include="LinearProgramming\Algorithms\LinearSolverExtensions.cs" />
-    <Compile Include="LinearProgramming\Algorithms\OptimizationProblemType.cs" />
-    <Compile Include="LinearProgramming\Algorithms\Solvers\Base\LinearSolver.cs" />
-    <Compile Include="LinearProgramming\Algorithms\DoubleParam.cs" />
-    <Compile Include="LinearProgramming\Algorithms\ProtoWriteFormat.cs" />
-    <Compile Include="LinearProgramming\Algorithms\ResultStatus.cs" />
-    <Compile Include="LinearProgramming\Problems\ProgrammableLinearProgrammingProblemDefinition.cs" />
-    <Resource Include="LinearProgramming\Templates\CompiledLinearProgrammingProblemDefinition.cs" />
-    <Compile Include="LinearProgramming\Templates\ScriptTemplates.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>ScriptTemplates.resx</DependentUpon>
-    </Compile>
-    <Compile Include="LinearProgramming\Algorithms\SolverResponseStatus.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-      <DependentUpon>Settings.settings</DependentUpon>
-    </Compile>
-    <None Include="app.config">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="Plugin.cs.frame" />
-    <Compile Include="Plugin.cs" />
-    <None Include="Properties\AssemblyInfo.cs.frame" />
-    <None Include="Properties\Settings.settings">
-      <Generator>PublicSettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="LinearProgramming\Templates\ScriptTemplates.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>ScriptTemplates.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj">
-      <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project>
-      <Name>HeuristicLab.Analysis-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
-      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
-      <Name>HeuristicLab.Collections-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
-      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
-      <Name>HeuristicLab.Common.Resources-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
-      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
-      <Name>HeuristicLab.Common-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
-      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
-      <Name>HeuristicLab.Core-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
-      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
-      <Name>HeuristicLab.Data-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
-      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
-      <Name>HeuristicLab.Optimization-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
-      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
-      <Name>HeuristicLab.Parameters-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
-      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
-      <Name>HeuristicLab.Persistence-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Programmable\3.3\HeuristicLab.Problems.Programmable-3.3.csproj">
-      <Project>{EE07BFF8-B23D-41F5-8AD7-AC9598D7A2C9}</Project>
-      <Name>HeuristicLab.Problems.Programmable-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Scripting\3.3\HeuristicLab.Scripting-3.3.csproj">
-      <Project>{21977CC3-1757-4B3B-87BD-FF817AAA900F}</Project>
-      <Name>HeuristicLab.Scripting-3.3</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-  <PropertyGroup>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/BasisStatus.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/BasisStatus.cs	(revision 16581)
+++ 	(revision )
@@ -1,33 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  // Advanced usage: possible basis status values for a variable and the
-  // slack variable of a linear constraint.
-  public enum BasisStatus {
-    Free = 0,
-    AtLowerBound,
-    AtUpperBound,
-    FixedValue,
-    Basic
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/DoubleParam.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/DoubleParam.cs	(revision 16581)
+++ 	(revision )
@@ -1,39 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  // Enumeration of parameters that take continuous values.
-  public enum DoubleParam {
-
-    // Limit for relative MIP gap.
-    RelativeMipGap = 0,
-
-    // Advanced usage: tolerance for primal feasibility of basic
-    // solutions. This does not control the integer feasibility
-    // tolerance of integer solutions for MIP or the tolerance used
-    // during presolve.
-    PrimalTolerance = 1,
-
-    // Advanced usage: tolerance for dual feasibility of basic solutions.
-    DualTolerance = 2
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/IncrementalityValues.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/IncrementalityValues.cs	(revision 16581)
+++ 	(revision )
@@ -1,32 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  public enum IncrementalityValues {
-
-    // Start solve from scratch.
-    IncrementalityOff = 0,
-
-    // Reuse results from previous solve as much as the underlying solver allows.
-    IncrementalityOn = 1
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/IntegerParam.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/IntegerParam.cs	(revision 16581)
+++ 	(revision )
@@ -1,39 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Algorithms {
-
-  // Enumeration of parameters that take integer or categorical values.
-  public enum IntegerParam {
-
-    // Advanced usage: presolve mode.
-    Presolve = 1000,
-
-    // Algorithm to solve linear programs.
-    LpAlgorithm = 1001,
-
-    // Advanced usage: incrementality from one solve to the next.
-    Incrementality = 1002,
-
-    // Advanced usage: enable or disable matrix scaling.
-    Scaling = 1003
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearProgrammingAlgorithm.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearProgrammingAlgorithm.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearProgrammingAlgorithm.cs	(revision 16582)
@@ -30,11 +30,11 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  [Item("Linear/Mixed Integer Programming (LP/MIP)", "Linear/mixed integer programming implemented in several solvers. " +
-    "See also https://dev.heuristiclab.com/trac.fcgi/wiki/Documentation/Howto/LinearMixedIntegerProgramming")] // TODO: update link
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  [Item("Mixed-Integer Linear Programming (LP, MIP)", "Linear/mixed integer programming implemented in several solvers. " +
+    "See also https://dev.heuristiclab.com/trac.fcgi/wiki/Documentation/Reference/ExactOptimization")]
   [Creatable(CreatableAttribute.Categories.ExactAlgorithms)]
   [StorableClass]
-  public class LinearProgrammingAlgorithm : BasicAlgorithm {
+  public sealed class LinearProgrammingAlgorithm : BasicAlgorithm {
 
     [Storable]
@@ -42,10 +42,4 @@
 
     [Storable]
-    private readonly IFixedValueParameter<FileValue> exportModelParam;
-
-    [Storable]
-    private readonly IFixedValueParameter<EnumValue<LpAlgorithmValues>> lpAlgorithmParam;
-
-    [Storable]
     private readonly IFixedValueParameter<BoolValue> presolveParam;
 
@@ -64,4 +58,67 @@
     [Storable]
     private IConstrainedValueParameter<ILinearSolver> linearSolverParam;
+
+    #region Problem Properties
+
+    public new LinearProblem Problem {
+      get => (LinearProblem)base.Problem;
+      set => base.Problem = value;
+    }
+
+    public override Type ProblemType { get; } = typeof(LinearProblem);
+
+    #endregion
+    #region Parameter Properties
+
+    public IFixedValueParameter<DoubleValue> DualToleranceParameter => dualToleranceParam;
+    public IConstrainedValueParameter<ILinearSolver> LinearSolverParameter => linearSolverParam;
+    public IFixedValueParameter<BoolValue> PresolveParameter => presolveParam;
+    public IFixedValueParameter<DoubleValue> PrimalToleranceParameter => primalToleranceParam;
+    public IFixedValueParameter<PercentValue> RelativeGapToleranceParameter => relativeGapToleranceParam;
+    public IFixedValueParameter<BoolValue> ScalingParameter => scalingParam;
+    public IFixedValueParameter<TimeSpanValue> TimeLimitParameter => timeLimitParam;
+
+    #endregion
+    #region Properties
+
+    public double DualTolerance {
+      get => dualToleranceParam.Value.Value;
+      set => dualToleranceParam.Value.Value = value;
+    }
+
+    public ILinearSolver LinearSolver {
+      get => linearSolverParam.Value;
+      set => linearSolverParam.Value = value;
+    }
+
+    public bool Presolve {
+      get => presolveParam.Value.Value;
+      set => presolveParam.Value.Value = value;
+    }
+
+    public double PrimalTolerance {
+      get => primalToleranceParam.Value.Value;
+      set => primalToleranceParam.Value.Value = value;
+    }
+
+    public double RelativeGapTolerance {
+      get => relativeGapToleranceParam.Value.Value;
+      set => relativeGapToleranceParam.Value.Value = value;
+    }
+
+    public bool Scaling {
+      get => scalingParam.Value.Value;
+      set => scalingParam.Value.Value = value;
+    }
+
+    public override bool SupportsPause => LinearSolver.SupportsPause;
+    public override bool SupportsStop => LinearSolver.SupportsStop;
+
+    public TimeSpan TimeLimit {
+      get => timeLimitParam.Value.Value;
+      set => timeLimitParam.Value.Value = value;
+    }
+
+    #endregion
 
     public LinearProgrammingAlgorithm() {
@@ -70,9 +127,7 @@
 
       ILinearSolver defaultSolver;
-      linearSolverParam.ValidValues.Add(new BopSolver());
       linearSolverParam.ValidValues.Add(defaultSolver = new CoinOrSolver());
       linearSolverParam.ValidValues.Add(new CplexSolver());
       linearSolverParam.ValidValues.Add(new GlopSolver());
-      linearSolverParam.ValidValues.Add(new GlpkSolver());
       linearSolverParam.ValidValues.Add(new GurobiSolver());
       linearSolverParam.ValidValues.Add(new ScipSolver());
@@ -80,41 +135,31 @@
 
       Parameters.Add(relativeGapToleranceParam = new FixedValueParameter<PercentValue>(nameof(RelativeGapTolerance),
-        "Limit for relative MIP gap.", new PercentValue(MPSolverParameters.kDefaultRelativeMipGap)));
+        "Limit for relative MIP gap.", new PercentValue(SolverParameters.DefaultRelativeMipGap)));
       Parameters.Add(timeLimitParam = new FixedValueParameter<TimeSpanValue>(nameof(TimeLimit),
-        "Limit for runtime. Set to zero for unlimited runtime.", new TimeSpanValue()));
+        "Limit for runtime. Set to zero for unlimited runtime.",
+        new TimeSpanValue(new TimeSpan(0, 1, 0))));
       Parameters.Add(presolveParam =
-        new FixedValueParameter<BoolValue>(nameof(Presolve), "Advanced usage: presolve mode.", new BoolValue()));
-      Parameters.Add(lpAlgorithmParam = new FixedValueParameter<EnumValue<LpAlgorithmValues>>(nameof(LpAlgorithm),
-        "Algorithm to solve linear programs.", new EnumValue<LpAlgorithmValues>(LpAlgorithmValues.DualSimplex)));
+        new FixedValueParameter<BoolValue>(nameof(Presolve), "Advanced usage: presolve mode.",
+          new BoolValue(SolverParameters.DefaultPresolve == SolverParameters.PresolveValues.PresolveOn)) { Hidden = true });
       Parameters.Add(dualToleranceParam = new FixedValueParameter<DoubleValue>(nameof(DualTolerance),
         "Advanced usage: tolerance for dual feasibility of basic solutions.",
-        new DoubleValue(MPSolverParameters.kDefaultDualTolerance)));
+        new DoubleValue(SolverParameters.DefaultDualTolerance)) { Hidden = true });
       Parameters.Add(primalToleranceParam = new FixedValueParameter<DoubleValue>(nameof(PrimalTolerance),
         "Advanced usage: tolerance for primal feasibility of basic solutions. " +
         "This does not control the integer feasibility tolerance of integer " +
         "solutions for MIP or the tolerance used during presolve.",
-        new DoubleValue(MPSolverParameters.kDefaultPrimalTolerance)));
+        new DoubleValue(SolverParameters.DefaultPrimalTolerance)) { Hidden = true });
       Parameters.Add(scalingParam = new FixedValueParameter<BoolValue>(nameof(Scaling),
-        "Advanced usage: enable or disable matrix scaling.", new BoolValue()));
-      Parameters.Add(exportModelParam =
-        new FixedValueParameter<FileValue>(nameof(ExportModel),
-          "Path of the file the model should be exported to. Run the algorithm to export the model.",
-          new FileValue {
-            SaveFile = true,
-            FileDialogFilter = "CPLEX LP File (*.lp)|*.lp|" +
-                               "Mathematical Programming System File (*.mps)|*.mps|" +
-                               "Google OR-Tools Protocol Buffers Text File (*.prototxt)|*.prototxt|" +
-                               "Google OR-Tools Protocol Buffers Binary File (*.bin)|*.bin"
-          }));
-
-      Problem = new LinearProgrammingProblem();
+        "Advanced usage: enable or disable matrix scaling.", new BoolValue()) { Hidden = true });
+
+      Problem = new LinearProblem();
     }
 
     [StorableConstructor]
-    protected LinearProgrammingAlgorithm(bool deserializing)
+    private LinearProgrammingAlgorithm(bool deserializing)
       : base(deserializing) {
     }
 
-    protected LinearProgrammingAlgorithm(LinearProgrammingAlgorithm original, Cloner cloner)
+    private LinearProgrammingAlgorithm(LinearProgrammingAlgorithm original, Cloner cloner)
       : base(original, cloner) {
       linearSolverParam = cloner.Clone(original.linearSolverParam);
@@ -122,72 +167,7 @@
       timeLimitParam = cloner.Clone(original.timeLimitParam);
       presolveParam = cloner.Clone(original.presolveParam);
-      lpAlgorithmParam = cloner.Clone(original.lpAlgorithmParam);
       dualToleranceParam = cloner.Clone(original.dualToleranceParam);
       primalToleranceParam = cloner.Clone(original.primalToleranceParam);
       scalingParam = cloner.Clone(original.scalingParam);
-      exportModelParam = cloner.Clone(original.exportModelParam);
-    }
-
-    public double DualTolerance {
-      get => dualToleranceParam.Value.Value;
-      set => dualToleranceParam.Value.Value = value;
-    }
-
-    public string ExportModel {
-      get => exportModelParam.Value.Value;
-      set => exportModelParam.Value.Value = value;
-    }
-
-    public ILinearSolver LinearSolver {
-      get => linearSolverParam.Value;
-      set => linearSolverParam.Value = value;
-    }
-
-    public IConstrainedValueParameter<ILinearSolver> LinearSolverParameter {
-      get => linearSolverParam;
-      set => linearSolverParam = value;
-    }
-
-    public LpAlgorithmValues LpAlgorithm {
-      get => lpAlgorithmParam.Value.Value;
-      set => lpAlgorithmParam.Value.Value = value;
-    }
-
-    public bool Presolve {
-      get => presolveParam.Value.Value;
-      set => presolveParam.Value.Value = value;
-    }
-
-    public double PrimalTolerance {
-      get => primalToleranceParam.Value.Value;
-      set => primalToleranceParam.Value.Value = value;
-    }
-
-    public new LinearProgrammingProblem Problem {
-      get => (LinearProgrammingProblem)base.Problem;
-      set => base.Problem = value;
-    }
-
-    public override Type ProblemType { get; } = typeof(LinearProgrammingProblem);
-
-    public double RelativeGapTolerance {
-      get => relativeGapToleranceParam.Value.Value;
-      set => relativeGapToleranceParam.Value.Value = value;
-    }
-
-    public override ResultCollection Results { get; } = new ResultCollection();
-
-    public bool Scaling {
-      get => scalingParam.Value.Value;
-      set => scalingParam.Value.Value = value;
-    }
-
-    public override bool SupportsPause => LinearSolver.SupportsPause;
-
-    public override bool SupportsStop => LinearSolver.SupportsStop;
-
-    public TimeSpan TimeLimit {
-      get => timeLimitParam.Value.Value;
-      set => timeLimitParam.Value.Value = value;
     }
 
@@ -216,13 +196,9 @@
       LinearSolver.PrimalTolerance = PrimalTolerance;
       LinearSolver.DualTolerance = DualTolerance;
-      LinearSolver.LpAlgorithm = LpAlgorithm;
       LinearSolver.Presolve = Presolve;
       LinearSolver.RelativeGapTolerance = RelativeGapTolerance;
       LinearSolver.Scaling = Scaling;
       LinearSolver.TimeLimit = TimeLimit;
-      LinearSolver.ExportModel = ExportModel;
-      var executionTime = ExecutionTime;
-      ExecutionTimeChanged += (sender, args) => executionTime = ExecutionTime;
-      LinearSolver.Solve(Problem.ProblemDefinition, ref executionTime, Results, cancellationToken);
+      LinearSolver.Solve(Problem.ProblemDefinition, Results, cancellationToken);
     }
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearSolverExtensions.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearSolverExtensions.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearSolverExtensions.cs	(revision 16582)
@@ -22,5 +22,5 @@
 using Google.OrTools.LinearSolver;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public static class LinearSolverExtensions {
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LpAlgorithmValues.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LpAlgorithmValues.cs	(revision 16581)
+++ 	(revision )
@@ -1,29 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  public enum LpAlgorithmValues {
-    DualSimplex = 10,
-    PrimalSimplex = 11,
-    BarrierAlgorithm = 12
-  }
-}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/OptimizationProblemType.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/OptimizationProblemType.cs	(revision 16581)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  // The type of problems (LP or MIP) that will be solved and the
-  // underlying solver (GLOP, GLPK, CLP, CBC or SCIP) that will solve them.
-  public enum OptimizationProblemType {
-
-    // Linear programming problems.
-    ClpLinearProgramming = 0,  // Recommended default value.
-    GlpkLinearProgramming = 1,
-    GlopLinearProgramming = 2,
-    GurobiLinearProgramming = 6,
-    CplexLinearProgramming = 10,
-
-    // Integer programming problems.
-    ScipMixedIntegerProgramming = 3,  // Recommended default value.
-    GlpkMixedIntegerProgramming = 4,
-    CbcMixedIntegerProgramming = 5,
-    GurobiMixedIntegerProgramming = 7,
-    CplexMixedIntegerProgramming = 11,
-    BopIntegerProgramming = 12
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProblemType.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProblemType.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProblemType.cs	(revision 16582)
@@ -20,5 +20,5 @@
 #endregion
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public enum ProblemType {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProtoWriteFormat.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProtoWriteFormat.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProtoWriteFormat.cs	(revision 16582)
@@ -20,5 +20,5 @@
 #endregion
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public enum ProtoWriteFormat {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ResultStatus.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ResultStatus.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ResultStatus.cs	(revision 16582)
@@ -1,34 +1,13 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
+﻿namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  // The status of solving the problem.
   public enum ResultStatus {
-    Optimal,       // optimal.
-    Feasible,      // feasible, or stopped by limit.
-    Infeasible,    // proven infeasible.
-    Unbounded,     // proven unbounded.
-    Abnormal,      // abnormal, i.e., error of some kind.
-    ModelInvalid,  // the model is trivially invalid (NaN coefficients, etc).
-    NotSolved = 6  // not been solved yet.
+    Optimal,        // optimal.
+    Feasible,       // feasible, or stopped by limit.
+    Infeasible,     // proven infeasible.
+    Unbounded,      // proven unbounded.
+    Abnormal,       // abnormal, i.e., error of some kind.
+    ModelInvalid,   // the model is trivially invalid (NaN coefficients, etc).
+    NotSolved = 6,  // not been solved yet.
+    OptimalWithinTolerance = int.MaxValue  // optimal within gap tolerance but objective != bound
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/SolverResponseStatus.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/SolverResponseStatus.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/SolverResponseStatus.cs	(revision 16582)
@@ -20,5 +20,7 @@
 #endregion
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+using Google.OrTools.LinearSolver;
+
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public enum SolverResponseStatus {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalIncrementalLinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalIncrementalLinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalIncrementalLinearSolver.cs	(revision 16582)
@@ -26,5 +26,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [StorableClass]
@@ -53,5 +53,7 @@
     }
 
-    protected override Solver CreateSolver(OptimizationProblemType optimizationProblemType,
+    public IFixedValueParameter<FileValue> LibraryNameParameter => libraryNameParam;
+
+    protected override Solver CreateSolver(Solver.OptimizationProblemType optimizationProblemType,
       string libraryName = null) => base.CreateSolver(optimizationProblemType, LibraryName);
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalLinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalLinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ExternalLinearSolver.cs	(revision 16582)
@@ -26,5 +26,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [StorableClass]
@@ -53,5 +53,7 @@
     }
 
-    protected override Solver CreateSolver(OptimizationProblemType optimizationProblemType,
+    public IFixedValueParameter<FileValue> LibraryNameParameter => libraryNameParam;
+
+    protected override Solver CreateSolver(Solver.OptimizationProblemType optimizationProblemType,
       string libraryName = null) => base.CreateSolver(optimizationProblemType, LibraryName);
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IExternalLinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IExternalLinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IExternalLinearSolver.cs	(revision 16582)
@@ -20,5 +20,5 @@
 #endregion
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public interface IExternalLinearSolver : ILinearSolver {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IIncrementalLinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IIncrementalLinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IIncrementalLinearSolver.cs	(revision 16582)
@@ -22,5 +22,5 @@
 using System;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public interface IIncrementalLinearSolver : ILinearSolver {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ILinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ILinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ILinearSolver.cs	(revision 16582)
@@ -25,14 +25,8 @@
 using HeuristicLab.Optimization;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   public interface ILinearSolver : IParameterizedNamedItem {
     double DualTolerance { get; set; }
-
-    string ExportModel { get; set; }
-
-    bool Incrementality { get; set; }
-
-    LpAlgorithmValues LpAlgorithm { get; set; }
 
     bool Presolve { get; set; }
@@ -56,7 +50,7 @@
     void Reset();
 
-    void Solve(ILinearProgrammingProblemDefinition problemDefintion, ref TimeSpan executionTime, ResultCollection results);
+    void Solve(ILinearProblemDefinition problemDefintion, ResultCollection results);
 
-    void Solve(ILinearProgrammingProblemDefinition problemDefintion, ref TimeSpan executionTime,
+    void Solve(ILinearProblemDefinition problemDefintion,
       ResultCollection results, CancellationToken cancellationToken);
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IncrementalLinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IncrementalLinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IncrementalLinearSolver.cs	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Diagnostics;
 using System.Linq;
 using System.Threading;
@@ -31,15 +32,19 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [StorableClass]
   public class IncrementalLinearSolver : LinearSolver, IIncrementalLinearSolver {
-    [Storable] protected readonly IValueParameter<TimeSpanValue> qualityUpdateIntervalParam;
 
-    private IndexedDataRow<double> bpcRow;
+    [Storable]
+    protected readonly IValueParameter<TimeSpanValue> qualityUpdateIntervalParam;
 
-    private IndexedDataRow<double> qpcRow;
+    private readonly Stopwatch stopwatch = new Stopwatch();
 
-    [Storable] private IndexedDataTable<double> qualityPerClock;
+    [Storable]
+    private TimeSpan executionTime = TimeSpan.Zero;
+
+    [Storable]
+    private IndexedDataTable<double> qualityPerClock;
 
     public IncrementalLinearSolver() {
@@ -77,11 +82,20 @@
     }
 
+    public IValueParameter<TimeSpanValue> QualityUpdateIntervalParameter => qualityUpdateIntervalParam;
+
     public virtual bool SupportsQualityUpdate => true;
+
     protected virtual TimeSpan IntermediateTimeLimit => QualityUpdateInterval;
 
-    public override void Solve(ILinearProgrammingProblemDefinition problemDefinition, ref TimeSpan executionTime,
+    public override void Reset() {
+      base.Reset();
+      stopwatch.Reset();
+      executionTime = TimeSpan.Zero;
+    }
+
+    public override void Solve(ILinearProblemDefinition problemDefinition,
       ResultCollection results, CancellationToken cancellationToken) {
       if (!SupportsQualityUpdate || QualityUpdateInterval == TimeSpan.Zero) {
-        base.Solve(problemDefinition, ref executionTime, results, cancellationToken);
+        base.Solve(problemDefinition, results, cancellationToken);
         return;
       }
@@ -102,5 +116,8 @@
           return;
 
+        stopwatch.Start();
         Solve(problemDefinition, results, IntermediateTimeLimit);
+        stopwatch.Stop();
+        executionTime += stopwatch.Elapsed;
         UpdateQuality(results, executionTime);
 
@@ -120,9 +137,17 @@
 
     private void UpdateQuality(ResultCollection results, TimeSpan executionTime) {
+      IndexedDataRow<double> qpcRow;
+      IndexedDataRow<double> bpcRow;
+
       if (!results.Exists(r => r.Name == "QualityPerClock")) {
         qualityPerClock = new IndexedDataTable<double>("Quality per Clock");
         qpcRow = new IndexedDataRow<double>("Objective Value");
         bpcRow = new IndexedDataRow<double>("Bound");
+        qualityPerClock.Rows.Add(qpcRow);
+        qualityPerClock.Rows.Add(bpcRow);
         results.AddOrUpdateResult("QualityPerClock", qualityPerClock);
+      } else {
+        qpcRow = qualityPerClock.Rows["Objective Value"];
+        bpcRow = qualityPerClock.Rows["Bound"];
       }
 
@@ -133,5 +158,5 @@
 
       var objective = ((DoubleValue)results["BestObjectiveValue"].Value).Value;
-      var bound = solver.IsMIP() ? ((DoubleValue)results["BestObjectiveBound"].Value).Value : double.NaN;
+      var bound = solver.IsMip() ? ((DoubleValue)results["BestObjectiveBound"].Value).Value : double.NaN;
       var time = executionTime.TotalSeconds;
 
@@ -140,5 +165,4 @@
           qpcRow.Values.Add(Tuple.Create(time, objective));
           qpcRow.Values.Add(Tuple.Create(time, objective));
-          qualityPerClock.Rows.Add(qpcRow);
           results.AddOrUpdateResult("BestObjectiveValueFoundAt", new TimeSpanValue(TimeSpan.FromSeconds(time)));
         }
@@ -152,5 +176,5 @@
       }
 
-      if (!solver.IsMIP())
+      if (!solver.IsMip())
         return;
 
@@ -159,5 +183,4 @@
           bpcRow.Values.Add(Tuple.Create(time, bound));
           bpcRow.Values.Add(Tuple.Create(time, bound));
-          qualityPerClock.Rows.Add(bpcRow);
         }
       } else {
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/LinearSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/LinearSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/LinearSolver.cs	(revision 16582)
@@ -34,5 +34,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [StorableClass]
@@ -49,5 +49,6 @@
     public LinearSolver() {
       Parameters.Add(problemTypeParam =
-        new ValueParameter<EnumValue<ProblemType>>(nameof(ProblemType), new EnumValue<ProblemType>()));
+        new ValueParameter<EnumValue<ProblemType>>(nameof(ProblemType),
+          new EnumValue<ProblemType>(ProblemType.MixedIntegerProgramming)));
       Parameters.Add(solverSpecificParametersParam =
         new FixedValueParameter<TextValue>(nameof(SolverSpecificParameters), new TextValue()));
@@ -65,16 +66,13 @@
     }
 
-    public double DualTolerance { get; set; } = MPSolverParameters.kDefaultDualTolerance;
-
-    public string ExportModel { get; set; }
+    public double DualTolerance { get; set; } = SolverParameters.DefaultDualTolerance;
 
     public bool Incrementality { get; set; } =
-          MPSolverParameters.kDefaultIncrementality == MPSolverParameters.INCREMENTALITY_ON;
-
-    public LpAlgorithmValues LpAlgorithm { get; set; }
-
-    public bool Presolve { get; set; } = MPSolverParameters.kDefaultPresolve == MPSolverParameters.PRESOLVE_ON;
-
-    public double PrimalTolerance { get; set; } = MPSolverParameters.kDefaultPrimalTolerance;
+      SolverParameters.DefaultIncrementality == SolverParameters.IncrementalityValues.IncrementalityOn;
+
+    public SolverParameters.LpAlgorithmValues LpAlgorithm { get; set; }
+    protected virtual Solver.OptimizationProblemType OptimizationProblemType { get; }
+    public bool Presolve { get; set; } = SolverParameters.DefaultPresolve == SolverParameters.PresolveValues.PresolveOn;
+    public double PrimalTolerance { get; set; } = SolverParameters.DefaultPrimalTolerance;
 
     public ProblemType ProblemType {
@@ -83,6 +81,6 @@
     }
 
-    public double RelativeGapTolerance { get; set; } = MPSolverParameters.kDefaultRelativeMipGap;
-
+    public IValueParameter<EnumValue<ProblemType>> ProblemTypeParameter => problemTypeParam;
+    public double RelativeGapTolerance { get; set; } = SolverParameters.DefaultRelativeMipGap;
     public bool Scaling { get; set; }
 
@@ -92,8 +90,8 @@
     }
 
+    public IFixedValueParameter<TextValue> SolverSpecificParametersParameter => solverSpecificParametersParam;
     public virtual bool SupportsPause => true;
     public virtual bool SupportsStop => true;
     public virtual TimeSpan TimeLimit { get; set; } = TimeSpan.Zero;
-    protected virtual OptimizationProblemType OptimizationProblemType { get; }
 
     public override IDeepCloneable Clone(Cloner cloner) => new LinearSolver(this, cloner);
@@ -118,13 +116,12 @@
 
     public bool ExportAsProto(string fileName, ProtoWriteFormat writeFormat = ProtoWriteFormat.ProtoBinary) =>
-      solver != null && solver.ExportModelAsProtoFormat(fileName, (int)writeFormat);
-
-    public SolverResponseStatus ImportFromMps(string fileName, bool? fixedFormat) => solver == null
-      ? SolverResponseStatus.Abnormal
-      : (SolverResponseStatus)solver.ImportModelFromMpsFormat(fileName, fixedFormat.HasValue, fixedFormat ?? false);
-
-    public SolverResponseStatus ImportFromProto(string fileName) => solver == null
-      ? SolverResponseStatus.Abnormal
-      : (SolverResponseStatus)solver.ImportModelFromProtoFormat(fileName);
+      solver != null && solver.ExportModelAsProtoFormat(fileName, (Google.OrTools.LinearSolver.ProtoWriteFormat)writeFormat);
+
+    public MPSolverResponseStatus ImportFromMps(string fileName, bool? fixedFormat) =>
+      solver?.ImportModelFromMpsFormat(fileName, fixedFormat.HasValue, fixedFormat ?? false) ??
+      (MPSolverResponseStatus)SolverResponseStatus.Abnormal;
+
+    public MPSolverResponseStatus ImportFromProto(string fileName) =>
+      solver?.ImportModelFromProtoFormat(fileName) ?? (MPSolverResponseStatus)SolverResponseStatus.Abnormal;
 
     public bool InterruptSolve() => solver?.InterruptSolve() ?? false;
@@ -135,13 +132,13 @@
     }
 
-    public virtual void Solve(ILinearProgrammingProblemDefinition problemDefintion, ref TimeSpan executionTime,
+    public virtual void Solve(ILinearProblemDefinition problemDefintion,
       ResultCollection results, CancellationToken cancellationToken) =>
-      Solve(problemDefintion, ref executionTime, results);
-
-    public virtual void Solve(ILinearProgrammingProblemDefinition problemDefinition, ref TimeSpan executionTime,
+      Solve(problemDefintion, results);
+
+    public virtual void Solve(ILinearProblemDefinition problemDefinition,
       ResultCollection results) =>
       Solve(problemDefinition, results, TimeLimit);
 
-    public virtual void Solve(ILinearProgrammingProblemDefinition problemDefinition, ResultCollection results,
+    public virtual void Solve(ILinearProblemDefinition problemDefinition, ResultCollection results,
       TimeSpan timeLimit) {
       if (solver == null) {
@@ -158,51 +155,18 @@
       ResultStatus resultStatus;
 
-      using (var parameters = new MPSolverParameters()) {
-        parameters.SetDoubleParam(MPSolverParameters.RELATIVE_MIP_GAP, RelativeGapTolerance);
-        parameters.SetDoubleParam(MPSolverParameters.PRIMAL_TOLERANCE, PrimalTolerance);
-        parameters.SetDoubleParam(MPSolverParameters.DUAL_TOLERANCE, DualTolerance);
-        parameters.SetIntegerParam(MPSolverParameters.PRESOLVE,
-          Presolve ? MPSolverParameters.PRESOLVE_ON : MPSolverParameters.PRESOLVE_OFF);
-        parameters.SetIntegerParam(MPSolverParameters.LP_ALGORITHM, (int)LpAlgorithm);
-        parameters.SetIntegerParam(MPSolverParameters.INCREMENTALITY,
-          Incrementality ? MPSolverParameters.INCREMENTALITY_ON : MPSolverParameters.INCREMENTALITY_OFF);
-        parameters.SetIntegerParam(MPSolverParameters.SCALING,
-          Scaling ? MPSolverParameters.SCALING_ON : MPSolverParameters.SCALING_OFF);
+      using (var parameters = new SolverParameters()) {
+        parameters.SetDoubleParam(SolverParameters.DoubleParam.RelativeMipGap, RelativeGapTolerance);
+        parameters.SetDoubleParam(SolverParameters.DoubleParam.PrimalTolerance, PrimalTolerance);
+        parameters.SetDoubleParam(SolverParameters.DoubleParam.DualTolerance, DualTolerance);
+        parameters.SetIntegerParam(SolverParameters.IntegerParam.Presolve,
+          (int)(Presolve ? SolverParameters.PresolveValues.PresolveOn : SolverParameters.PresolveValues.PresolveOff));
+        parameters.SetIntegerParam(SolverParameters.IntegerParam.Incrementality,
+          (int)(Incrementality ? SolverParameters.IncrementalityValues.IncrementalityOn : SolverParameters.IncrementalityValues.IncrementalityOff));
+        parameters.SetIntegerParam(SolverParameters.IntegerParam.Scaling,
+          (int)(Scaling ? SolverParameters.ScalingValues.ScalingOn : SolverParameters.ScalingValues.ScalingOff));
 
         if (!solver.SetSolverSpecificParametersAsString(SolverSpecificParameters))
           throw new ArgumentException("Solver specific parameters could not be set.");
 
-        if (!string.IsNullOrWhiteSpace(ExportModel)) {
-          var fileInfo = new FileInfo(ExportModel);
-
-          if (!fileInfo.Directory?.Exists ?? false) {
-            Directory.CreateDirectory(fileInfo.Directory.FullName);
-          }
-
-          bool exportSuccessful;
-          switch (fileInfo.Extension) {
-            case ".lp":
-              exportSuccessful = ExportAsLp(ExportModel);
-              break;
-
-            case ".mps":
-              exportSuccessful = ExportAsMps(ExportModel);
-              break;
-
-            case ".prototxt":
-              exportSuccessful = ExportAsProto(ExportModel, ProtoWriteFormat.ProtoText);
-              break;
-
-            case ".bin": // remove file extension as it is added by OR-Tools
-              exportSuccessful = ExportAsProto(Path.ChangeExtension(ExportModel, null));
-              break;
-
-            default:
-              throw new NotSupportedException("File format selected to export model is not supported.");
-          }
-        }
-
-        // TODO: show warning if file export didn't work (if exportSuccessful is false)
-
         resultStatus = (ResultStatus)solver.Solve(parameters);
       }
@@ -211,8 +175,6 @@
 
       problemDefinition.Analyze(solver, results);
-      results.AddOrUpdateResult("ResultStatus", new EnumValue<ResultStatus>(resultStatus));
-      results.AddOrUpdateResult("BestObjectiveValue", new DoubleValue(objectiveValue ?? double.NaN));
-
-      if (solver.IsMIP()) {
+
+      if (solver.IsMip()) {
         var objectiveBound = solver.Objective()?.BestBound();
         var absoluteGap = objectiveValue.HasValue && objectiveBound.HasValue
@@ -224,4 +186,8 @@
           : (double?)null;
 
+        if (resultStatus == ResultStatus.Optimal && absoluteGap.HasValue && !absoluteGap.Value.IsAlmost(0)) {
+          resultStatus = ResultStatus.OptimalWithinTolerance;
+        }
+
         results.AddOrUpdateResult("BestObjectiveBound", new DoubleValue(objectiveBound ?? double.NaN));
         results.AddOrUpdateResult("AbsoluteGap", new DoubleValue(absoluteGap ?? double.NaN));
@@ -229,8 +195,11 @@
       }
 
+      results.AddOrUpdateResult("ResultStatus", new EnumValue<ResultStatus>(resultStatus));
+      results.AddOrUpdateResult("BestObjectiveValue", new DoubleValue(objectiveValue ?? double.NaN));
+
       results.AddOrUpdateResult("NumberOfConstraints", new IntValue(solver.NumConstraints()));
       results.AddOrUpdateResult("NumberOfVariables", new IntValue(solver.NumVariables()));
 
-      if (solver.IsMIP() && solver.Nodes() >= 0) {
+      if (solver.IsMip() && solver.Nodes() >= 0) {
         results.AddOrUpdateResult(nameof(solver.Nodes), new DoubleValue(solver.Nodes()));
       }
@@ -243,5 +212,5 @@
     }
 
-    protected virtual Solver CreateSolver(OptimizationProblemType optimizationProblemType, string libraryName = null) {
+    protected virtual Solver CreateSolver(Solver.OptimizationProblemType optimizationProblemType, string libraryName = null) {
       if (!string.IsNullOrEmpty(libraryName) && !File.Exists(libraryName)) {
         var paths = new List<string> {
@@ -256,5 +225,5 @@
 
       try {
-        solver = new Solver(Name, (int)optimizationProblemType, libraryName ?? string.Empty);
+        solver = new Solver(Name, optimizationProblemType, libraryName ?? string.Empty);
       } catch {
         throw new InvalidOperationException($"Could not create {optimizationProblemType}.");
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/BopSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/BopSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/BopSolver.cs	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("BOP", "BOP (https://developers.google.com/optimization/reference/bop/bop_solver/) can be used out of the box.")]
@@ -52,6 +53,8 @@
     }
 
-    protected override OptimizationProblemType OptimizationProblemType =>
-               OptimizationProblemType.BopIntegerProgramming;
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
+      Solver.OptimizationProblemType.BopIntegerProgramming;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new BopSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CoinOrSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CoinOrSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CoinOrSolver.cs	(revision 16582)
@@ -20,11 +20,10 @@
 #endregion
 
-using System;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("Clp/Cbc", "Clp (https://projects.coin-or.org/Clp) and Cbc (https://projects.coin-or.org/Cbc) can be used out of the box.")]
@@ -51,13 +50,10 @@
     public override bool SupportsStop => false;
 
-    protected override OptimizationProblemType OptimizationProblemType =>
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
       ProblemType == ProblemType.LinearProgramming
-        ? OptimizationProblemType.ClpLinearProgramming
-        : OptimizationProblemType.CbcMixedIntegerProgramming;
+        ? Solver.OptimizationProblemType.ClpLinearProgramming
+        : Solver.OptimizationProblemType.CbcMixedIntegerProgramming;
 
-    public override void Solve(ILinearProgrammingProblemDefinition problemDefinition, ResultCollection results, TimeSpan timeLimit) {
-      // TODO: warning that solver cannot be stopped or paused
-      base.Solve(problemDefinition, results, timeLimit);
-    }
+    public override IDeepCloneable Clone(Cloner cloner) => new CoinOrSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CplexSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CplexSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CplexSolver.cs	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("CPLEX", "CPLEX (https://www.ibm.com/analytics/cplex-optimizer) must be installed and licenced.")]
@@ -40,6 +41,9 @@
         "# for file format, see https://www.ibm.com/support/knowledgecenter/SSSA5P_12.8.0/ilog.odms.cplex.help/CPLEX/FileFormats/topics/PRM.html" + Environment.NewLine +
         "# for parameters, see https://www.ibm.com/support/knowledgecenter/SSSA5P_12.8.0/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListTopical.html" + Environment.NewLine +
-        "# example:" + Environment.NewLine +
-        "# CPXPARAM_RandomSeed 10" + Environment.NewLine;
+        "# examples:" + Environment.NewLine +
+        "# CPXPARAM_RandomSeed 10" + Environment.NewLine +
+        "# CPXPARAM_LPMethod 4 # Barrier (LP)" + Environment.NewLine +
+        "# CPXPARAM_MIP_Strategy_SubAlgorithm 4 # Barrier (MIP)" + Environment.NewLine +
+        "# CPXPARAM_MIP_Strategy_Search 2 # Apply dynamic search (MIP)" + Environment.NewLine;
     }
 
@@ -53,8 +57,10 @@
     }
 
-    protected override OptimizationProblemType OptimizationProblemType =>
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
       ProblemType == ProblemType.LinearProgramming
-        ? OptimizationProblemType.CplexLinearProgramming
-        : OptimizationProblemType.CplexMixedIntegerProgramming;
+        ? Solver.OptimizationProblemType.CplexLinearProgramming
+        : Solver.OptimizationProblemType.CplexMixedIntegerProgramming;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new CplexSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlopSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlopSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlopSolver.cs	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -26,5 +27,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("Glop", "Glop (https://developers.google.com/optimization/lp/glop) can be used out of the box.")]
@@ -37,6 +38,7 @@
         "# for file format, see Protocol Buffers text format (https://developers.google.com/protocol-buffers/docs/overview#whynotxml)" + Environment.NewLine +
         "# for parameters, see https://github.com/google/or-tools/blob/v6.10/ortools/glop/parameters.proto" + Environment.NewLine +
-        "# example:" + Environment.NewLine +
-        "# random_seed: 10" + Environment.NewLine;
+        "# examples:" + Environment.NewLine +
+        "# random_seed: 10" + Environment.NewLine +
+        "# use_dual_simplex: true (LP)" + Environment.NewLine;
     }
 
@@ -50,6 +52,8 @@
     }
 
-    protected override OptimizationProblemType OptimizationProblemType =>
-      OptimizationProblemType.GlopLinearProgramming;
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
+      Solver.OptimizationProblemType.GlopLinearProgramming;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new GlopSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlpkSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlpkSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlpkSolver.cs	(revision 16582)
@@ -20,4 +20,5 @@
 #endregion
 
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -26,5 +27,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("GLPK", "GLPK (https://www.gnu.org/software/glpk/) can be used out of the box.")]
@@ -49,8 +50,10 @@
     public override bool SupportsPause => false;
 
-    protected override OptimizationProblemType OptimizationProblemType =>
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
       ProblemType == ProblemType.LinearProgramming
-        ? OptimizationProblemType.GlpkLinearProgramming
-        : OptimizationProblemType.GlpkMixedIntegerProgramming;
+        ? Solver.OptimizationProblemType.GlpkLinearProgramming
+        : Solver.OptimizationProblemType.GlpkMixedIntegerProgramming;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new GlpkSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GurobiSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GurobiSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GurobiSolver.cs	(revision 16582)
@@ -21,4 +21,5 @@
 
 using System;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("Gurobi", "Gurobi (http://www.gurobi.com/) must be installed and licenced.")]
@@ -39,6 +40,8 @@
         "# for file format, see http://www.gurobi.com/documentation/8.1/refman/prm_format.html" + Environment.NewLine +
         "# for parameters, see http://www.gurobi.com/documentation/8.1/refman/parameters.html" + Environment.NewLine +
-        "# example:" + Environment.NewLine +
-        "# Seed 10" + Environment.NewLine;
+        "# examples:" + Environment.NewLine +
+        "# Seed 10" + Environment.NewLine +
+        "# Method 2 # Barrier (LP, root node of MIP)" + Environment.NewLine +
+        "# NodeMethod 2 # Barrier (MIP)" + Environment.NewLine;
     }
 
@@ -53,8 +56,10 @@
     }
 
-    protected override OptimizationProblemType OptimizationProblemType =>
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
       ProblemType == ProblemType.LinearProgramming
-        ? OptimizationProblemType.GurobiLinearProgramming
-        : OptimizationProblemType.GurobiMixedIntegerProgramming;
+        ? Solver.OptimizationProblemType.GurobiLinearProgramming
+        : Solver.OptimizationProblemType.GurobiMixedIntegerProgramming;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new GurobiSolver(this, cloner);
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/ScipSolver.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/ScipSolver.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/ScipSolver.cs	(revision 16582)
@@ -22,4 +22,5 @@
 using System;
 using System.Threading;
+using Google.OrTools.LinearSolver;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -29,5 +30,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
 
   [Item("SCIP", "SCIP (http://scip.zib.de/) must be installed and licenced.")]
@@ -43,6 +44,8 @@
       SolverSpecificParameters =
         "# for file format and parameters, see https://scip.zib.de/doc/html/PARAMETERS.php" + Environment.NewLine +
-        "# example:" + Environment.NewLine +
-        "# branching/random/seed = 10" + Environment.NewLine;
+        "# examples:" + Environment.NewLine +
+        "# branching/random/seed = 10" + Environment.NewLine +
+        "# lp/initalgorithm = b # Barrier (root node of MIP)" + Environment.NewLine +
+        "# lp/resolvealgorithm = b # Barrier (MIP)" + Environment.NewLine;
     }
 
@@ -56,12 +59,14 @@
     }
 
+    protected override Solver.OptimizationProblemType OptimizationProblemType =>
+      Solver.OptimizationProblemType.ScipMixedIntegerProgramming;
+
     protected override TimeSpan IntermediateTimeLimit => timeLimit += QualityUpdateInterval;
 
-    protected override OptimizationProblemType OptimizationProblemType =>
-          OptimizationProblemType.ScipMixedIntegerProgramming;
+    public override IDeepCloneable Clone(Cloner cloner) => new ScipSolver(this, cloner);
 
-    public override void Solve(ILinearProgrammingProblemDefinition problemDefintion, ref TimeSpan executionTime, ResultCollection results, CancellationToken cancellationToken) {
+    public override void Solve(ILinearProblemDefinition problemDefintion, ResultCollection results, CancellationToken cancellationToken) {
       timeLimit = TimeSpan.Zero;
-      base.Solve(problemDefintion, ref executionTime, results, cancellationToken);
+      base.Solve(problemDefintion, results, cancellationToken);
     }
   }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/CompiledProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/CompiledProblemDefinition.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/CompiledProblemDefinition.cs	(revision 16582)
@@ -20,10 +20,24 @@
 #endregion
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
+using HeuristicLab.Common;
+using HeuristicLab.Core;
 
-  public abstract class CompiledProblemDefinition {
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  public class CompiledProblemDefinition : Item {
+
+    public CompiledProblemDefinition() {
+    }
+
+    protected CompiledProblemDefinition(CompiledProblemDefinition original, Cloner cloner) : base(original, cloner) {
+    }
+
     public dynamic vars { get; set; }
 
-    public abstract void Initialize();
+    public override IDeepCloneable Clone(Cloner cloner) =>
+      new CompiledProblemDefinition(this, cloner);
+
+    public virtual void Initialize() {
+    }
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/FileBasedLinearProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/FileBasedLinearProblemDefinition.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/FileBasedLinearProblemDefinition.cs	(revision 16582)
@@ -0,0 +1,99 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Drawing;
+using System.IO;
+using Google.OrTools.LinearSolver;
+using HeuristicLab.Common;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  [Item("Linear Problem Definition File (MPS, OR-Tools Protocol Buffers Files)", "File that defines the model for linear/mixed integer programming problem.")]
+  [StorableClass]
+  public sealed class FileBasedLinearProblemDefinition : ParameterizedNamedItem, ILinearProblemDefinition {
+
+    [Storable]
+    private readonly IFixedValueParameter<FileValue> fileNameParam;
+
+    [Storable]
+    private byte[] fileContent;
+
+    public FileBasedLinearProblemDefinition() {
+      Parameters.Add(fileNameParam = new FixedValueParameter<FileValue>(nameof(FileName), new FileValue()));
+      fileNameParam.Value.FileDialogFilter =
+        "All Supported Files (*.mps;*.bin;*.prototxt)|*.mps;*.bin;*.prototxt|" +
+        "Mathematical Programming System Files (*.mps)|*.mps|" +
+        "Google OR-Tools Protocol Buffers Files (*.bin;*.prototxt)|*.bin;*.prototxt|" +
+        "All Files (*.*)|*.*";
+      fileNameParam.Value.PathChanged += (o, e) => {
+        if (File.Exists(FileName)) {
+          fileContent = File.ReadAllBytes(FileName);
+        }
+      };
+    }
+
+    private FileBasedLinearProblemDefinition(FileBasedLinearProblemDefinition original, Cloner cloner)
+      : base(original, cloner) {
+      fileNameParam = cloner.Clone(original.fileNameParam);
+    }
+
+    [StorableConstructor]
+    private FileBasedLinearProblemDefinition(bool deserializing) : base(deserializing) { }
+
+    public new static Image StaticItemImage => VSImageLibrary.File;
+
+    public string FileName {
+      get => fileNameParam.Value.Value;
+      set => fileNameParam.Value.Value = value;
+    }
+
+    public IFixedValueParameter<FileValue> FileNameParam => fileNameParam;
+
+    public void Analyze(Solver solver, ResultCollection results) {
+    }
+
+    public void BuildModel(Solver solver) {
+      var fileInfo = new FileInfo(FileName);
+      var tempFileName = Path.GetTempFileName();
+
+      try {
+        File.WriteAllBytes(tempFileName, fileContent);
+
+        var status = (SolverResponseStatus)(fileInfo.Extension == ".mps"
+          ? solver.ImportModelFromMpsFormat(tempFileName)
+          : solver.ImportModelFromProtoFormat(tempFileName));
+
+        if (status == SolverResponseStatus.Abnormal)
+          throw new FileFormatException($"'{FileName}' is not a valid MPS or Google OR-Tools Protocol Buffers file.");
+      } finally {
+        File.Delete(tempFileName);
+      }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) => new FileBasedLinearProblemDefinition(this, cloner);
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/FileBasedLinearProgrammingProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/FileBasedLinearProgrammingProblemDefinition.cs	(revision 16581)
+++ 	(revision )
@@ -1,96 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Drawing;
-using System.IO;
-using Google.OrTools.LinearSolver;
-using HeuristicLab.Common;
-using HeuristicLab.Common.Resources;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  [Item("File-Based Linear/Mixed Integer Programming Problem Definition", "File that defines the model for linear/mixed integer programming problem.")]
-  [StorableClass]
-  public sealed class FileBasedLinearProgrammingProblemDefinition : ParameterizedNamedItem, ILinearProgrammingProblemDefinition {
-
-    [Storable]
-    private readonly IFixedValueParameter<FileValue> fileNameParam;
-
-    [Storable]
-    private byte[] fileContent;
-
-    public FileBasedLinearProgrammingProblemDefinition() {
-      Parameters.Add(fileNameParam = new FixedValueParameter<FileValue>(nameof(FileName), new FileValue()));
-      fileNameParam.Value.FileDialogFilter =
-        "All Supported Files (*.mps;*.bin;*.prototxt)|*.mps;*.bin;*.prototxt|" +
-        "Mathematical Programming System Files (*.mps)|*.mps|" +
-        "Google OR-Tools Protocol Buffers Files (*.bin;*.prototxt)|*.bin;*.prototxt|" +
-        "All Files (*.*)|*.*";
-      fileNameParam.Value.PathChanged += (o, e) => {
-        if (File.Exists(FileName)) {
-          fileContent = File.ReadAllBytes(FileName);
-        }
-      };
-    }
-
-    private FileBasedLinearProgrammingProblemDefinition(FileBasedLinearProgrammingProblemDefinition original, Cloner cloner)
-      : base(original, cloner) {
-      fileNameParam = cloner.Clone(original.fileNameParam);
-    }
-
-    [StorableConstructor]
-    private FileBasedLinearProgrammingProblemDefinition(bool deserializing) : base(deserializing) { }
-
-    public new static Image StaticItemImage => VSImageLibrary.File;
-
-    public string FileName {
-      get => fileNameParam.Value.Value;
-      set => fileNameParam.Value.Value = value;
-    }
-
-    public IFixedValueParameter<FileValue> FileNameParam => fileNameParam;
-
-    public void Analyze(Solver solver, ResultCollection results) {
-    }
-
-    public void BuildModel(Solver solver) {
-      var fileInfo = new FileInfo(FileName);
-      var tempFileName = Path.GetTempFileName();
-      File.WriteAllBytes(tempFileName, fileContent);
-
-      var status = (SolverResponseStatus)(fileInfo.Extension == ".mps"
-        ? solver.ImportModelFromMpsFormat(tempFileName)
-        : solver.ImportModelFromProtoFormat(tempFileName));
-
-      if (status == SolverResponseStatus.Abnormal)
-        throw new FileFormatException($"'{FileName}' is not a valid MPS or Google OR-Tools Protocol Buffers file.");
-
-      File.Delete(tempFileName);
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) => new FileBasedLinearProgrammingProblemDefinition(this, cloner);
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProblemDefinition.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProblemDefinition.cs	(revision 16582)
@@ -0,0 +1,34 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using Google.OrTools.LinearSolver;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  public interface ILinearProblemDefinition : IItem {
+
+    void Analyze(Solver solver, ResultCollection results);
+
+    void BuildModel(Solver solver);
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProgrammingProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProgrammingProblemDefinition.cs	(revision 16581)
+++ 	(revision )
@@ -1,34 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using Google.OrTools.LinearSolver;
-using HeuristicLab.Common;
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  public interface ILinearProgrammingProblemDefinition : IContent {
-
-    void Analyze(Solver solver, ResultCollection results);
-
-    void BuildModel(Solver solver);
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProblem.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProblem.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProblem.cs	(revision 16582)
@@ -0,0 +1,147 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using Google.OrTools.LinearSolver;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  [Item("Mixed-Integer Linear Programming Problem (LP, MIP)", "Represents a linear/mixed integer problem.")]
+  [StorableClass]
+  public sealed class LinearProblem : Problem, IStorableContent {
+
+    [Storable]
+    private readonly IValueParameter<ILinearProblemDefinition> problemDefinitionParam;
+
+    public LinearProblem() {
+      Parameters.Remove(Parameters["Operators"]);
+      Parameters.Add(problemDefinitionParam = new ValueParameter<ILinearProblemDefinition>("Model",
+        new ProgrammableLinearProblemDefinition(), false));
+    }
+
+    private LinearProblem(LinearProblem original, Cloner cloner)
+      : base(original, cloner) {
+      problemDefinitionParam = cloner.Clone(original.problemDefinitionParam);
+    }
+
+    [StorableConstructor]
+    private LinearProblem(bool deserializing) : base(deserializing) {
+    }
+
+    public event EventHandler ProblemDefinitionChanged;
+
+    public string Filename { get; set; }
+
+    public ILinearProblemDefinition ProblemDefinition {
+      get => problemDefinitionParam.Value;
+      set {
+        if (problemDefinitionParam.Value == value)
+          return;
+        problemDefinitionParam.Value = value;
+        ProblemDefinitionChanged?.Invoke(this, EventArgs.Empty);
+      }
+    }
+
+    public IValueParameter<ILinearProblemDefinition> ProblemDefinitionParameter => problemDefinitionParam;
+
+    public override IDeepCloneable Clone(Cloner cloner) => new LinearProblem(this, cloner);
+
+    public override void CollectParameterValues(IDictionary<string, IItem> values) {
+      base.CollectParameterValues(values);
+
+      if (ProblemDefinition == null) return;
+
+      values.Add("Model Type", new StringValue(
+        (ProblemDefinition.GetType().GetCustomAttributes().Single(a => a is ItemAttribute) as ItemAttribute).Name));
+
+      if (ProblemDefinition is ProgrammableLinearProblemDefinition model) {
+        values.Add("Model Name", new StringValue(model.Name));
+      }
+    }
+
+    public void ExportModel(string fileName) {
+      if (string.IsNullOrWhiteSpace(fileName))
+        throw new ArgumentNullException(nameof(fileName));
+      if (ProblemDefinition == null)
+        throw new ArgumentNullException(nameof(ProblemDefinition));
+
+      var fileInfo = new FileInfo(fileName);
+
+      if (!fileInfo.Directory?.Exists ?? false) {
+        Directory.CreateDirectory(fileInfo.Directory.FullName);
+      }
+
+      var solver = new Solver(ProblemDefinition.ItemName, Solver.OptimizationProblemType.CbcMixedIntegerProgramming);
+
+      ProblemDefinition.BuildModel(solver);
+
+      var exportSuccessful = false;
+      switch (fileInfo.Extension) {
+        case ".lp":
+          var lpFormat = solver.ExportModelAsLpFormat(false);
+          if (!string.IsNullOrEmpty(lpFormat)) {
+            File.WriteAllText(fileName, lpFormat);
+            exportSuccessful = true;
+          }
+          break;
+
+        case ".mps":
+          var mpsFormat = solver.ExportModelAsMpsFormat(false, false);
+          if (!string.IsNullOrEmpty(mpsFormat)) {
+            File.WriteAllText(fileName, mpsFormat);
+            exportSuccessful = true;
+          }
+          break;
+
+        case ".prototxt":
+          exportSuccessful = solver.ExportModelAsProtoFormat(fileName,
+            (Google.OrTools.LinearSolver.ProtoWriteFormat)ProtoWriteFormat.ProtoText);
+          break;
+
+        case ".bin": // remove file extension as it is added by OR-Tools
+          fileName = Path.ChangeExtension(fileName, null);
+          exportSuccessful = solver.ExportModelAsProtoFormat(fileName,
+            (Google.OrTools.LinearSolver.ProtoWriteFormat)ProtoWriteFormat.ProtoBinary);
+          break;
+
+        default:
+          throw new NotSupportedException($"File format {fileInfo.Extension} to export model is not supported.");
+      }
+
+      if (!exportSuccessful)
+        throw new InvalidDataException("Model could not be exported.");
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+    }
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs	(revision 16581)
+++ 	(revision )
@@ -1,71 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  [Item("Linear/Mixed Integer Programming Problem (LP/MIP)", "Represents a linear/mixed integer problem.")]
-  [StorableClass]
-  public sealed class LinearProgrammingProblem : Problem {
-    [Storable]
-    private ILinearProgrammingProblemDefinition problemDefinition;
-
-    public LinearProgrammingProblem() {
-      Parameters.Remove(Parameters["Operators"]);
-    }
-
-    private LinearProgrammingProblem(LinearProgrammingProblem original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    [StorableConstructor]
-    private LinearProgrammingProblem(bool deserializing) : base(deserializing) {
-    }
-
-    public event EventHandler ProblemDefinitionChanged;
-
-    public ILinearProgrammingProblemDefinition ProblemDefinition {
-      get => problemDefinition;
-      set {
-        if (problemDefinition == value)
-          return;
-        problemDefinition = value;
-        ProblemDefinitionChanged?.Invoke(this, EventArgs.Empty);
-      }
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) => new LinearProgrammingProblem(this, cloner);
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-    }
-
-    private void OnProblemDefinitionChanged() {
-      OnOperatorsChanged();
-      OnReset();
-    }
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProblemDefinition.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProblemDefinition.cs	(revision 16582)
@@ -0,0 +1,151 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Linq;
+using System.Reflection;
+using Google.OrTools.LinearSolver;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.ExactOptimization.LinearProgramming.Templates;
+using HeuristicLab.Optimization;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.Programmable;
+using HeuristicLab.Scripting;
+
+namespace HeuristicLab.ExactOptimization.LinearProgramming {
+
+  [Item("Programmable Linear Problem Definition (LP, MIP)",
+    "Script that defines the model for a linear/mixed integer programming problem.")]
+  [StorableClass]
+  public sealed class ProgrammableLinearProblemDefinition : Script, ILinearProblemDefinition,
+    IStorableContent {
+    private readonly object compileLock = new object();
+
+    [Storable]
+    private readonly VariableStore variableStore;
+
+    [Storable]
+    private bool codeChanged;
+
+    private volatile ILinearProblemDefinition compiledProblemDefinition;
+
+    public ProgrammableLinearProblemDefinition()
+      : base(ScriptTemplates.CompiledLinearProblemDefinition) {
+      Name = "Programmable Linear Problem Definition";
+      variableStore = new VariableStore();
+    }
+
+    [StorableConstructor]
+    private ProgrammableLinearProblemDefinition(bool deserializing) : base(deserializing) {
+    }
+
+    private ProgrammableLinearProblemDefinition(ProgrammableLinearProblemDefinition original,
+      Cloner cloner) : base(original, cloner) {
+      variableStore = cloner.Clone(original.variableStore);
+      codeChanged = original.codeChanged;
+    }
+
+    public event EventHandler ProblemDefinitionChanged;
+
+    public string Filename { get; set; }
+    public dynamic Instance => compiledProblemDefinition;
+    public VariableStore VariableStore => variableStore;
+
+    private ILinearProblemDefinition CompiledProblemDefinition {
+      get {
+        // double checked locking pattern
+        if (compiledProblemDefinition == null) {
+          lock (compileLock) {
+            if (compiledProblemDefinition == null) {
+              if (codeChanged)
+                throw new ProblemDefinitionScriptException("The code has been changed, but was not recompiled.");
+              Compile(false);
+            }
+          }
+        }
+
+        return compiledProblemDefinition;
+      }
+    }
+
+    public void Analyze(Solver solver, ResultCollection results) => CompiledProblemDefinition.Analyze(solver, results);
+
+    public void BuildModel(Solver solver) => CompiledProblemDefinition.BuildModel(solver);
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ProgrammableLinearProblemDefinition(this, cloner);
+    }
+
+    public override Assembly Compile() => Compile(true);
+
+    protected override void OnCodeChanged() {
+      base.OnCodeChanged();
+      compiledProblemDefinition = null;
+      codeChanged = true;
+    }
+
+    private Assembly Compile(bool fireChanged) {
+      var assembly = base.Compile();
+      var types = assembly.GetTypes();
+      if (!types.Any(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)))
+        throw new ProblemDefinitionScriptException("The compiled code doesn't contain a problem definition." + Environment.NewLine +
+                                                   $"The problem definition must be a subclass of {nameof(CompiledProblemDefinition)} and implement {nameof(ILinearProblemDefinition)}.");
+      if (types.Count(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)) > 1)
+        throw new ProblemDefinitionScriptException("The compiled code contains multiple problem definitions." + Environment.NewLine +
+                                                   $"Only one subclass of {nameof(CompiledProblemDefinition)} is allowed.");
+
+      CompiledProblemDefinition inst;
+      try {
+        inst = (CompiledProblemDefinition)Activator.CreateInstance(types.Single(x =>
+         typeof(CompiledProblemDefinition).IsAssignableFrom(x)));
+      } catch (Exception e) {
+        compiledProblemDefinition = null;
+        throw new ProblemDefinitionScriptException(
+          "Instantiating the problem definition failed." + Environment.NewLine + "Check your default constructor.", e);
+      }
+
+      try {
+        inst.vars = new Variables(VariableStore);
+        inst.Initialize();
+      } catch (Exception e) {
+        compiledProblemDefinition = null;
+        throw new ProblemDefinitionScriptException(
+          "Initializing the problem definition failed." + Environment.NewLine + "Check your Initialize() method.", e);
+      }
+
+      try {
+        compiledProblemDefinition = (ILinearProblemDefinition)inst;
+        if (fireChanged) OnProblemDefinitionChanged();
+      } catch (Exception e) {
+        compiledProblemDefinition = null;
+        throw new ProblemDefinitionScriptException(
+          "Using the problem definition in the problem failed." + Environment.NewLine +
+          "Examine this error message carefully.", e);
+      }
+
+      codeChanged = false;
+      return assembly;
+    }
+
+    private void OnProblemDefinitionChanged() => ProblemDefinitionChanged?.Invoke(this, EventArgs.Empty);
+  }
+}
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProgrammingProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProgrammingProblemDefinition.cs	(revision 16581)
+++ 	(revision )
@@ -1,150 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Linq;
-using System.Reflection;
-using Google.OrTools.LinearSolver;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.Programmable;
-using HeuristicLab.Scripting;
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  [Item("Programmable Linear/Mixed Integer Programming Problem Definition",
-    "Script that defines the model and evaluates the solution for a linear/mixed integer programming problem.")]
-  [StorableClass]
-  public sealed class ProgrammableLinearProgrammingProblemDefinition : Script, ILinearProgrammingProblemDefinition,
-    IStorableContent {
-    private readonly object compileLock = new object();
-
-    [Storable] private readonly VariableStore variableStore;
-
-    [Storable] private bool codeChanged;
-
-    private volatile ILinearProgrammingProblemDefinition compiledProblemDefinition;
-
-    public ProgrammableLinearProgrammingProblemDefinition()
-      : base(ScriptTemplates.CompiledLinearProgrammingProblemDefinition) {
-      Name = "Programmable Linear/Mixed Integer Programming Problem Definition";
-      variableStore = new VariableStore();
-    }
-
-    [StorableConstructor]
-    private ProgrammableLinearProgrammingProblemDefinition(bool deserializing) : base(deserializing) {
-    }
-
-    private ProgrammableLinearProgrammingProblemDefinition(ProgrammableLinearProgrammingProblemDefinition original,
-      Cloner cloner) : base(original, cloner) {
-      variableStore = cloner.Clone(original.variableStore);
-      codeChanged = original.codeChanged;
-    }
-
-    public event EventHandler ProblemDefinitionChanged;
-
-    public string Filename { get; set; }
-    public dynamic Instance => compiledProblemDefinition;
-    public VariableStore VariableStore => variableStore;
-
-    private ILinearProgrammingProblemDefinition CompiledProblemDefinition {
-      get {
-        // double checked locking pattern
-        if (compiledProblemDefinition == null) {
-          lock (compileLock) {
-            if (compiledProblemDefinition == null) {
-              if (codeChanged)
-                throw new ProblemDefinitionScriptException("The code has been changed, but was not recompiled.");
-              Compile(false);
-            }
-          }
-        }
-
-        return compiledProblemDefinition;
-      }
-    }
-
-    private bool SuppressEvents { get; set; }
-
-    public void Analyze(Solver solver, ResultCollection results) => CompiledProblemDefinition.Analyze(solver, results);
-
-    public void BuildModel(Solver solver) => CompiledProblemDefinition.BuildModel(solver);
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ProgrammableLinearProgrammingProblemDefinition(this, cloner);
-    }
-
-    public override Assembly Compile() => Compile(true);
-
-    protected override void OnCodeChanged() {
-      base.OnCodeChanged();
-      compiledProblemDefinition = null;
-      codeChanged = true;
-    }
-
-    private Assembly Compile(bool fireChanged) {
-      var assembly = base.Compile();
-      var types = assembly.GetTypes();
-      if (!types.Any(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)))
-        throw new ProblemDefinitionScriptException("The compiled code doesn't contain a problem definition." + Environment.NewLine +
-                                                   "The problem definition must be a subclass of CompiledProblemDefinition.");
-      if (types.Count(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)) > 1)
-        throw new ProblemDefinitionScriptException("The compiled code contains multiple problem definitions." + Environment.NewLine +
-                                                   "Only one subclass of CompiledProblemDefinition is allowed.");
-
-      CompiledProblemDefinition inst;
-      try {
-        inst = (CompiledProblemDefinition)Activator.CreateInstance(types.Single(x =>
-         typeof(CompiledProblemDefinition).IsAssignableFrom(x)));
-      } catch (Exception e) {
-        compiledProblemDefinition = null;
-        throw new ProblemDefinitionScriptException(
-          "Instantiating the problem definition failed." + Environment.NewLine + "Check your default constructor.", e);
-      }
-
-      try {
-        inst.vars = new Variables(VariableStore);
-        inst.Initialize();
-      } catch (Exception e) {
-        compiledProblemDefinition = null;
-        throw new ProblemDefinitionScriptException(
-          "Initializing the problem definition failed." + Environment.NewLine + "Check your Initialize() method.", e);
-      }
-
-      try {
-        compiledProblemDefinition = (ILinearProgrammingProblemDefinition)inst;
-        if (fireChanged) OnProblemDefinitionChanged();
-      } catch (Exception e) {
-        compiledProblemDefinition = null;
-        throw new ProblemDefinitionScriptException(
-          "Using the problem definition in the problem failed." + Environment.NewLine +
-          "Examine this error message carefully (often there is an issue with the defined encoding).", e);
-      }
-
-      codeChanged = false;
-      return assembly;
-    }
-
-    private void OnProblemDefinitionChanged() => ProblemDefinitionChanged?.Invoke(this, EventArgs.Empty);
-  }
-}
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProblemDefinition.cs	(revision 16582)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProblemDefinition.cs	(revision 16582)
@@ -0,0 +1,46 @@
+﻿using System;
+using System.Linq;
+using System.Collections.Generic;
+using Google.OrTools.LinearSolver;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.ExactOptimization.LinearProgramming;
+using HeuristicLab.Optimization;
+using Variable = Google.OrTools.LinearSolver.Variable;
+
+public class CompiledLinearProblemDefinition : CompiledProblemDefinition, ILinearProblemDefinition {
+  private Variable x;
+  private Variable y;
+
+  public override void Initialize() {
+    // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
+    // Add additional initialization code e.g. private variables that you need for evaluating
+  }
+
+  public void BuildModel(Solver solver) {
+    // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
+    // How to define a model using Google OR-Tools: https://developers.google.com/optimization/introduction/cs
+    // Example model taken from https://developers.google.com/optimization/mip/integer_opt
+    // Define the decision variables
+    x = solver.MakeIntVar(0, 3.5, "x");
+    y = solver.MakeIntVar(0, double.PositiveInfinity, "y");
+    // Define the constraints
+    solver.Add(x + 7 * y <= 17.5);
+    // Define the objective
+    solver.Maximize(x + 10 * y);
+  }
+
+  public void Analyze(Solver solver, ResultCollection results) {
+    // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
+    // Write or update results given the solution values of the decision variables
+    results.AddOrUpdateResult("x", new DoubleValue(x.SolutionValue()));
+    results.AddOrUpdateResult("y", new DoubleValue(y.SolutionValue()));
+    // The decision variables can also be retrieved from the solver
+    //results.AddOrUpdateResult("x", new DoubleValue(solver.LookupVariableOrNull("x").SolutionValue()));
+    //results.AddOrUpdateResult("y", new DoubleValue(solver.LookupVariableOrNull("y").SolutionValue()));
+  }
+
+  // Implement further classes and methods
+}
+
Index: anches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProgrammingProblemDefinition.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProgrammingProblemDefinition.cs	(revision 16581)
+++ 	(revision )
@@ -1,48 +1,0 @@
-﻿using System;
-using System.Linq;
-using System.Collections.Generic;
-using Google.OrTools.LinearSolver;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using Variable = Google.OrTools.LinearSolver.Variable;
-
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-
-  public class CompiledLinearProgrammingProblemDefinition : CompiledProblemDefinition, ILinearProgrammingProblemDefinition {
-    private Variable x;
-    private Variable y;
-
-    public override void Initialize() {
-      // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
-      // Add additional initialization code e.g. private variables that you need for evaluating
-    }
-
-    public void BuildModel(Solver solver) {
-      // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
-      // How to define a model using Google OR-Tools: https://developers.google.com/optimization/introduction/cs
-      // Example model taken from https://developers.google.com/optimization/mip/integer_opt
-      // Define the decision variables
-      x = solver.MakeIntVar(0, 3.5, "x");
-      y = solver.MakeIntVar(0, double.PositiveInfinity, "y");
-      // Define the constraints
-      solver.Add(x + 7 * y <= 17.5);
-      // Define the objective
-      solver.Maximize(x + 10 * y);
-    }
-
-    public void Analyze(Solver solver, ResultCollection results) {
-      // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
-      // Write or update results given the solution values of the decision variables
-      results.AddOrUpdateResult("x", new DoubleValue(x.SolutionValue()));
-      results.AddOrUpdateResult("y", new DoubleValue(y.SolutionValue()));
-      // The decision variables can also be retrieved from the solver
-      //results.AddOrUpdateResult("x", new DoubleValue(solver.LookupVariableOrNull("x").SolutionValue()));
-      //results.AddOrUpdateResult("y", new DoubleValue(solver.LookupVariableOrNull("y").SolutionValue()));
-    }
-
-    // Implement further classes and methods
-  }
-}
-
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.Designer.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.Designer.cs	(revision 16582)
@@ -9,75 +9,79 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-  /// <summary>
-  ///   A strongly-typed resource class, for looking up localized strings, etc.
-  /// </summary>
-  // This class was auto-generated by the StronglyTypedResourceBuilder
-  // class via a tool like ResGen or Visual Studio.
-  // To add or remove a member, edit your .ResX file then rerun ResGen
-  // with the /str option, or rebuild your VS project.
-  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-  internal class ScriptTemplates {
-
-    private static global::System.Resources.ResourceManager resourceMan;
-
-    private static global::System.Globalization.CultureInfo resourceCulture;
-
-    [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-    internal ScriptTemplates() {
+namespace HeuristicLab.ExactOptimization.LinearProgramming.Templates {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class ScriptTemplates {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal ScriptTemplates() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.ExactOptimization.LinearProgramming.Templates.ScriptTemplates", typeof(ScriptTemplates).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to using System;
+        ///using System.Linq;
+        ///using System.Collections.Generic;
+        ///using Google.OrTools.LinearSolver;
+        ///using HeuristicLab.Common;
+        ///using HeuristicLab.Core;
+        ///using HeuristicLab.Data;
+        ///using HeuristicLab.ExactOptimization.LinearProgramming;
+        ///using HeuristicLab.Optimization;
+        ///using Variable = Google.OrTools.LinearSolver.Variable;
+        ///
+        ///public class CompiledLinearProblemDefinition : CompiledProblemDefinition, ILinearProblemDefinition {
+        ///  private Variable x;
+        ///  private Variable y;
+        ///
+        ///  public override void Init [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string CompiledLinearProblemDefinition {
+            get {
+                return ResourceManager.GetString("CompiledLinearProblemDefinition", resourceCulture);
+            }
+        }
     }
-
-    /// <summary>
-    ///   Returns the cached ResourceManager instance used by this class.
-    /// </summary>
-    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-    internal static global::System.Resources.ResourceManager ResourceManager {
-      get {
-        if (object.ReferenceEquals(resourceMan, null)) {
-          global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.MathematicalOptimization.LinearProgramming.Templates.ScriptTemplates" +
-                  "", typeof(ScriptTemplates).Assembly);
-          resourceMan = temp;
-        }
-        return resourceMan;
-      }
-    }
-
-    /// <summary>
-    ///   Overrides the current thread's CurrentUICulture property for all
-    ///   resource lookups using this strongly typed resource class.
-    /// </summary>
-    [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-    internal static global::System.Globalization.CultureInfo Culture {
-      get {
-        return resourceCulture;
-      }
-      set {
-        resourceCulture = value;
-      }
-    }
-
-    /// <summary>
-    ///   Looks up a localized string similar to using System;
-    ///using System.Linq;
-    ///using System.Collections.Generic;
-    ///using Google.OrTools.LinearSolver;
-    ///using HeuristicLab.Common;
-    ///using HeuristicLab.Core;
-    ///using HeuristicLab.Data;
-    ///using HeuristicLab.MathematicalOptimization.LinearProgramming.Problems;
-    ///using HeuristicLab.Optimization;
-    ///using Variable = Google.OrTools.LinearSolver.Variable;
-    ///
-    ///namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
-    ///
-    ///  public class CompiledLinearProgrammingProblemDefinition : CompiledProblemDefinition, ILi [rest of string was truncated]&quot;;.
-    /// </summary>
-    internal static string CompiledLinearProgrammingProblemDefinition {
-      get {
-        return ResourceManager.GetString("CompiledLinearProgrammingProblemDefinition", resourceCulture);
-      }
-    }
-  }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.resx
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.resx	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/ScriptTemplates.resx	(revision 16582)
@@ -119,6 +119,6 @@
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="CompiledLinearProgrammingProblemDefinition" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>compiledlinearprogrammingproblemdefinition.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  <data name="CompiledLinearProblemDefinition" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>compiledlinearproblemdefinition.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
   </data>
 </root>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Plugin.cs.frame
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Plugin.cs.frame	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Plugin.cs.frame	(revision 16582)
@@ -22,9 +22,9 @@
 using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.MathematicalOptimization {
+namespace HeuristicLab.ExactOptimization {
 
-  [Plugin("HeuristicLab.MathematicalOptimization", "Provides support for mathematical optimization based on Google OR-Tools. " +
+  [Plugin("HeuristicLab.ExactOptimization", "Provides support for exact optimization based on Google OR-Tools. " +
     "Requires the Microsoft Visual C++ 2017 Redistributable (x64) - 14.16.27012: https://aka.ms/vs/15/release/vc_redist.x64.exe", "3.3.15.$WCREV$")]
-  [PluginFile("HeuristicLab.MathematicalOptimization-3.3.dll", PluginFileType.Assembly)]
+  [PluginFile("HeuristicLab.ExactOptimization-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Analysis", "3.3")]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
@@ -39,5 +39,5 @@
   [PluginDependency("HeuristicLab.Problems.Programmable", "3.3")]
   [PluginDependency("HeuristicLab.Scripting", "3.3")]
-  public class HeuristicLabMathematicalOptimizationPlugin : PluginBase {
+  public class HeuristicLabExactOptimizationPlugin : PluginBase {
   }
 }
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/AssemblyInfo.cs.frame	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/AssemblyInfo.cs.frame	(revision 16582)
@@ -27,10 +27,10 @@
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("HeuristiclLab.MathematicalOptimization")]
-[assembly: AssemblyDescription("Provides support for mathematical optimization based on Google OR-Tools")]
+[assembly: AssemblyTitle("HeuristicLab.ExactOptimization")]
+[assembly: AssemblyDescription("Provides support for exact optimization based on Google OR-Tools")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("HEAL")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2018 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2019 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.Designer.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.Designer.cs	(revision 16582)
@@ -9,5 +9,5 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.MathematicalOptimization.Properties {
+namespace HeuristicLab.ExactOptimization.Properties {
     
     
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.settings
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.settings	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Properties/Settings.settings	(revision 16582)
@@ -1,4 +1,4 @@
 ﻿<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.MathematicalOptimization.Properties" GeneratedClassName="Settings">
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.ExactOptimization.Properties" GeneratedClassName="Settings">
   <Profiles />
   <Settings>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/app.config
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/app.config	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/app.config	(revision 16582)
@@ -3,9 +3,9 @@
   <configSections>
     <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-      <section name="HeuristicLab.MathematicalOptimization.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+      <section name="HeuristicLab.ExactOptimization.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
     </sectionGroup>
   </configSections>
   <userSettings>
-    <HeuristicLab.MathematicalOptimization.Properties.Settings>
+    <HeuristicLab.ExactOptimization.Properties.Settings>
       <setting name="ScipLibraryName" serializeAs="String">
         <value>scip.dll</value>
@@ -20,5 +20,5 @@
         <value>gurobi81.dll</value>
       </setting>
-    </HeuristicLab.MathematicalOptimization.Properties.Settings>
+    </HeuristicLab.ExactOptimization.Properties.Settings>
   </userSettings>
 </configuration>
Index: /branches/2931_OR-Tools_LP_MIP/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs
===================================================================
--- /branches/2931_OR-Tools_LP_MIP/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs	(revision 16581)
+++ /branches/2931_OR-Tools_LP_MIP/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs	(revision 16582)
@@ -109,4 +109,7 @@
       // CancellationToken.ThrowIfCancellationRequested() must be called from within the Run method, otherwise stop does nothing
       // alternatively check the IsCancellationRequested property of the cancellation token
+      if (!SupportsStop)
+        throw new NotSupportedException("Stop is not supported by this algorithm.");
+
       base.Stop();
       if (ExecutionState == ExecutionState.Paused) OnStopped();
