Index: /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLPCplexSolver.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLPCplexSolver.cs	(revision 14645)
+++ /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLPCplexSolver.cs	(revision 14646)
@@ -21,6 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Diagnostics;
 using System.IO;
 using System.Linq;
@@ -39,4 +37,6 @@
 
 namespace HeuristicLab.Problems.FacilityLocation.CplexSolver {
+  public enum FlpVariant { FLP, FLP_2 }
+
   [Item("FLP CPLEX Solver", "Solves facility location problem (FLP) instances using CPLEX.")]
   [Creatable(CreatableAttribute.Categories.SingleSolutionAlgorithms)]
@@ -58,9 +58,22 @@
     [Storable]
     private IFixedValueParameter<TimeSpanValue> maximumRuntimeParameter;
-
-    private bool supportsPause;
-
     public IFixedValueParameter<TimeSpanValue> MaximumRuntimeParameter {
       get { return maximumRuntimeParameter; }
+    }
+
+    public TimeSpan MaximumRuntime {
+      get { return maximumRuntimeParameter.Value.Value; }
+      set { maximumRuntimeParameter.Value.Value = value; }
+    }
+
+    [Storable]
+    private IFixedValueParameter<EnumValue<FlpVariant>> flpVariantParameter;
+    public IFixedValueParameter<EnumValue<FlpVariant>> FlpVariantParameter {
+      get { return flpVariantParameter; }
+    }
+
+    public FlpVariant FlpVariant {
+      get { return flpVariantParameter.Value.Value; }
+      set { flpVariantParameter.Value.Value = value; }
     }
 
@@ -70,7 +83,9 @@
       : base(original, cloner) {
       maximumRuntimeParameter = cloner.Clone(original.maximumRuntimeParameter);
+      flpVariantParameter = cloner.Clone(original.flpVariantParameter);
     }
     public FLPCplexSolver() {
       Parameters.Add(maximumRuntimeParameter = new FixedValueParameter<TimeSpanValue>("Maximum Runtime", "Specifies how long CPLEX should be allowed to run.", new TimeSpanValue(TimeSpan.FromSeconds(60))));
+      Parameters.Add(flpVariantParameter = new FixedValueParameter<EnumValue<FlpVariant>>("FLP Variant", "Which FLP variant should be run.", new EnumValue<FlpVariant>(FlpVariant.FLP)));
       Problem = new FacilityLocationProblem();
     }
@@ -85,5 +100,5 @@
 
 
-      var model = Assembly.GetExecutingAssembly().GetManifestResourceNames().SingleOrDefault(x => x.EndsWith(@".FLP.mod"));
+      var model = Assembly.GetExecutingAssembly().GetManifestResourceNames().SingleOrDefault(x => x.EndsWith(@"." + FlpVariant.ToString() + ".mod"));
       var modelStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(model);
 
Index: /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLP_2.mod
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLP_2.mod	(revision 14646)
+++ /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/FLP_2.mod	(revision 14646)
@@ -0,0 +1,40 @@
+﻿//Capacitated Facility Location Problem:
+ 
+int I = ...;
+int J = ...;
+float f[0..(I-1)] = ...;				//Kosten Depot i
+float s[0..(I-1)] = ...;				//KAP Depot i
+float d[0..(J-1)] = ...;				//Bedarf Kunde j
+float c[0..(I-1)][0..(J-1)] = ...;		//Wegkosten von i nach j
+
+range RI = 0..(I-1);
+range RJ = 0..(J-1);
+ 
+dvar float+ x[0..(I-1)][0..(J-1)];		//Transportmenge
+dvar boolean y[0..(I-1)];				//Eröffnung Depot i
+dvar boolean z[0..(I-1)][0..(J-1)];		//Depot i beliefert Kunde j
+
+minimize
+( sum ( i in 0..(I-1) ) ( f[i] * y[i] ) );
+
+
+subject to 
+{
+	//Für jedes Depot gilt: Ausliefermenge x kann maximal so groß sein wie Depot-KAP y
+	forall ( i in 0..(I-1) ) 
+		sum ( j in 0..(J-1) ) ( x[i][j] ) <= s[i] * y[i];
+	
+	//Die Ausliefermenge x kann maximal so groß sein wie der Bedarf des Kunden und es kann nur ausgeliefert werden, wenn das Depot eröffnet wird
+	forall ( i in 0..(I-1), j in 0..(J-1) ) 
+		( x[i][j] ) == ( d[j] * z[i][j] );
+	
+	//Jeder Kunde muss insgesamt genau den Bedarf d geliefert bekommen:
+	forall ( j in 0..(J-1) )
+		sum ( i in 0..(I-1) )  ( x[i][j] ) == d[j];
+	
+	forall ( j in 0..(J-1) )
+		sum ( i in 0..(I-1) ) ( z[i][j] ) == 1;   
+
+	forall ( i in 0..(I-1) )
+		sum ( j in 0..(J-1) ) z[i][j] <= J * y[i];
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/HeuristicLab.Problems.FacilityLocation.CplexSolver-3.3.csproj
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/HeuristicLab.Problems.FacilityLocation.CplexSolver-3.3.csproj	(revision 14645)
+++ /branches/OptimizationNetworks/HeuristicLab.Problems.FacilityLocation.CplexSolver/3.3/HeuristicLab.Problems.FacilityLocation.CplexSolver-3.3.csproj	(revision 14646)
@@ -127,4 +127,7 @@
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="FLP_2.mod" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
