Solver Foundation LINQ to SQL example
Erwin, a modeling consultant and top Solver Foundation user, encountered some problems trying to do two-way data binding using DataTable objects. There are more details on this discussion thread. Ross, a member of the Solver Foundation team, was kind enough to code up a workaround for Erwin's example. In addition to this CS file, you will need to create a new DBML file called SampleDataContext, as I described in a previous post.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.OleDb;
using System.Data.Linq;
using System.Text;
using Microsoft.SolverFoundation.Services;
using System.IO;
namespace OML1
{
class Test
{
static void Main(string[] args)
{
Test t = new Test();
t.Solve();
}
// Holds the OML model
string strModel = @"Model[
Parameters[Sets,I],
Parameters[Reals,p[I]],
Decisions[Reals[0,Infinity],x[I]],
Constraints[
Foreach[{i,I}, x[i]==p[i]]
]
]";
// SFS
SolverContext context;
SampleDataContext data;
// Constructor
public Test()
{
context = SolverContext.GetContext();
data = new SampleDataContext("Data Source=Sql_server_name;Initial Catalog=DataPartitionAllocation20_5;Integrated Security=True");
context.DataSource = data;
}
// Solve the problem
public void Solve()
{
context.LoadModel(FileFormat.OML, new StringReader(strModel));
Parameter p = context.CurrentModel.Parameters.First(q => q.Name == "p");
p.SetBinding(data.P, "value", new string[] { "index" });
Decision x = context.CurrentModel.Decisions.First(d => d.Name == "x");
x.SetBinding(data.X, "value", new string[] { "index" });
Solution solution = context.Solve();
Console.Write("{0}", solution.GetReport());
context.PropagateDecisions();
}
}
}
Comments
- Anonymous
June 02, 2009
PingBack from http://asp-net-hosting.simplynetdev.com/solver-foundation-linq-to-sql-example/