<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Lengning Liu's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/lengningliu/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/lengningliu/feed.xml</link>
    <description>The way that can be told of is not an unvarying way</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:16:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Using Solver Foundation and plug-in solvers in IronPython</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/using-solver-foundation-and-plug-in-solvers-in-ironpython</link>
      <pubDate>Wed, 04 Nov 2009 14:43:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/11/04/using-solver-foundation-and-plug-in-solvers-in-ironpython/</guid>
      <description><![CDATA[Solver Foundation provides an easy-to-use and flexible plug-in infrastructure as an addition to...]]></description>
      <content:encoded><![CDATA[<FONT size=3><FONT face=Calibri>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Solver Foundation provides an easy-to-use and flexible plug-in infrastructure as an addition to its already rich set of solvers. Users can choose their favorite plugin solvers to solve the model, and yet leverage all features provided in Solver Foundation Services (SFS). <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The key process is to register the plug-in solvers via an app.config file. A typical config file looks as follows:<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-themecolor: accent1; mso-border-themetint: 191" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;?</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">xml</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">version</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue"> ?&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">section</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">name</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MsfConfig</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">type</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Microsoft.SolverFoundation.Services.MsfConfigSection, Microsoft.Solver.Foundation, Version=2.0.2.8632, Culture=neutral, PublicKeyToken=31bf3856ad364e35</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowLocation</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Everywhere</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowExeDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MachineToApplication</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">restartOnExternalChanges</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">requirePermission</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<SPAN style="COLOR: blue"> /&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolver<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">capability</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">&lt;plug-in solver capability&gt;</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">assembly</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">&lt;path\to\your\plug-in\solver\dll</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">solverclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">&lt;plug-in solver class name&gt;</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">directiveclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">&lt;plug-in solver directive class name&gt;</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">parameterclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">&lt;plug-in solver parameter class name&gt;</SPAN>"<SPAN style="COLOR: blue">/&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;</SPAN><B><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The information such as assembly name and solver class name can usually be found from the plug-in solver provider.<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The config file then will co-exist with the compiled exe file of the user app. When, inside the app code, a Solve call is issued, SFS will pick a solver based on the model kind, directive instances passed in, and the solver registration.<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The app code in this case can be written in any .NET compliant language such as C# or VB.NET.<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><A href="http://www.codeplex.com/wikipage?ProjectName=IronPython"><FONT color=#0000ff>IronPython</FONT></A> is “an implementation of the Python programming language running under .NET …” So it is possible to use Solver Foundation, and with plug-in solvers, in IronPython code. However, one difficulty is that Python is an interpreted language. Therefore we cannot compile Python code to an exe file. So how do we register our plug-in solvers?<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The trick is to register the plug-in solvers inside <B style="mso-bidi-font-weight: normal">ipy.exe.config</B> (or <B style="mso-bidi-font-weight: normal">ipy64.exe.config</B>). These two files must be put under the same folder with ipy.exe and ipy64.exe. We assume <B style="mso-bidi-font-weight: normal">IronPython 2.6 RC2</B> in the following discussion.<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>There is IronPython sample code under <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">&lt;your document folder&gt;\Microsoft Solver Foundation\Samples\SolverFoundationServices\IronPython</I></B> if we install Solver Foundation v2.0. We will use the petrochem-sfs.py as the example. Let us again use Gurobi solver as our plug-in solver. Gurobi solver dlls are installed by default under <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">C:\Program Files\Microsoft Solver Foundation\2.0.2.8632\Plugins</I></B> (and <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">C:\Program Files\Microsoft Solver Foundation\2.0.2.8632\Plugins(x86)</I></B> if the target platform is 64bit). So the plug-in solver registration looks as follows:<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-themecolor: accent1; mso-border-themetint: 191" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><FONT size=3><FONT face=Calibri>ipy.exe.config<o:p></o:p></FONT></FONT></B></P></TD></TR>
<TR style="mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #a7c0de; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-top-themecolor: accent1; mso-border-top-alt: solid #7BA1CE 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 127; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-border-top-themetint: 191" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;?</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">xml</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">version</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue"> ?&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">section</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">name</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MsfConfig</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">type</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Microsoft.SolverFoundation.Services.MsfConfigSection, Microsoft.Solver.Foundation, Version=2.0.2.8632, Culture=neutral, PublicKeyToken=31bf3856ad364e35</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowLocation</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Everywhere</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowExeDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MachineToApplication</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">restartOnExternalChanges</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">requirePermission</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<SPAN style="COLOR: blue"> /&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolver<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">capability</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">LP</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">assembly</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">C:\Program Files\Microsoft Solver Foundation\2.0.2.8632\Plugins(x86)\GurobiPlugin.dll</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">solverclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiSolver</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">directiveclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiDirective</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">parameterclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiParams</SPAN>"<SPAN style="COLOR: blue">/&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;</SPAN><B><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-themecolor: accent1; mso-border-themetint: 191" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><FONT size=3><FONT face=Calibri>ipy64.exe.config<o:p></o:p></FONT></FONT></B></P></TD></TR>
<TR style="mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #a7c0de; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-top-themecolor: accent1; mso-border-top-alt: solid #7BA1CE 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 127; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-border-top-themetint: 191" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;?</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">xml</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">version</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue"> ?&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">section</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">name</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MsfConfig</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">type</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Microsoft.SolverFoundation.Services.MsfConfigSection, Microsoft.Solver.Foundation, Version=2.0.2.8632, Culture=neutral, PublicKeyToken=31bf3856ad364e35</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowLocation</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Everywhere</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">allowExeDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MachineToApplication</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">restartOnExternalChanges</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">requirePermission</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<SPAN style="COLOR: blue"> /&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolver<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">capability</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">LP</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">assembly</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">C:\Program Files\Microsoft Solver Foundation\2.0.2.8632\Plugins\GurobiPlugin.dll</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">solverclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiSolver</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">directiveclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiDirective</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">parameterclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiParams</SPAN>"<SPAN style="COLOR: blue">/&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold">&gt;</SPAN><B><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Now if we run the petrochem-sfs.py sample (ipy -O petrochem-sfs.py), we will see that Gurobi solver is used:<o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="mso-no-proof: yes"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape style="WIDTH: 468pt; HEIGHT: 231pt; VISIBILITY: visible; mso-wrap-style: square" id=_x0020_0 o:spid="_x0000_i1025" type="#_x0000_t75"><v:imagedata src="file:///C:\Users\lengliu\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""></v:imagedata></v:shape></SPAN><o:p></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P></FONT></FONT>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-no-proof: yes"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape style="WIDTH: 468pt; HEIGHT: 231pt; VISIBILITY: visible; mso-wrap-style: square" id=_x0020_0 o:spid="_x0000_i1025" type="#_x0000_t75"><v:imagedata src="file:///C:\Users\lengliu\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""></v:imagedata></v:shape></SPAN><o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;<IMG style="WIDTH: 739px; HEIGHT: 365px" src="http://cxanvg.bay.livefilestore.com/y1pYbV_jTIGnXo-Mjd_H34oXJfIByLMbT_R16Cs_ohiJ6Jg7O6DWUvRlVKfLpgRqFIQUf_scD7qI13FqV3Q9b-sfzqTSU-dcBlX/p1.png" width=739 height=365 mce_src="http://cxanvg.bay.livefilestore.com/y1pYbV_jTIGnXo-Mjd_H34oXJfIByLMbT_R16Cs_ohiJ6Jg7O6DWUvRlVKfLpgRqFIQUf_scD7qI13FqV3Q9b-sfzqTSU-dcBlX/p1.png"></FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>Lengning</FONT></o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Sparse input data and data binding</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/sparse-input-data-and-data-binding</link>
      <pubDate>Mon, 02 Nov 2009 20:27:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/11/02/sparse-input-data-and-data-binding/</guid>
      <description><![CDATA[Solver Foundation supports flexible data binding so that the algebraic model can be separated from...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Solver Foundation supports flexible data binding so that the algebraic model can be separated from the data source. In Solver Foundation, both parameters and decisions can be bound to data source. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>It makes writing and maintaining models really easy.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>To bind a parameter to a data source, we usually need to specify the data source, the value field, and indexes. For example, the following parameter WarehouseCap is bound to the table that has two columns.</FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><o:p><IMG style="WIDTH: 509px; HEIGHT: 333px" src="http://kauaea.bay.livefilestore.com/y1pu7uG_wIE4bnvqOPIC-zhx31aD7_fem071eu5m5Z6ZTWyvPDtlNDzMJ1rDEEeRHYkZueaLPKoLfSjJCdj_HxUfAY2HEzwykwQ/p1.png" width=509 height=333 mce_src="http://kauaea.bay.livefilestore.com/y1pu7uG_wIE4bnvqOPIC-zhx31aD7_fem071eu5m5Z6ZTWyvPDtlNDzMJ1rDEEeRHYkZueaLPKoLfSjJCdj_HxUfAY2HEzwykwQ/p1.png"></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-no-proof: yes"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape style="WIDTH: 381.75pt; HEIGHT: 249.75pt; VISIBILITY: visible; mso-wrap-style: square" id=_x0020_0 type="#_x0000_t75" o:spid="_x0000_i1025"><v:imagedata o:title="" src="file:///C:\Users\lengliu\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"></v:imagedata></v:shape></SPAN><o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>The table looks as follows.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 99.1pt; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-bottom-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-bottom-alt: solid #4F81BD 1.0pt" class=MsoTableMediumList1Accent1 border=1 cellSpacing=0 cellPadding=0 width=132 class="MsoTableMediumList1Accent1">
<TBODY>
<TR style="HEIGHT: 15pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>warehouse<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>capacity<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 0">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>10<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 1">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>29<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>3<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>13<o:p></o:p></FONT></FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Column warehouse is the index column/field, and column capacity is the value column/field.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>In C#, the binding can be set via the following line.<o:p></o:p></FONT></FONT></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>_model.WarehouseCap.SetBinding(warehouseCaps, <SPAN style="COLOR: #a31515">"Capacity"</SPAN>, <SPAN style="COLOR: #a31515">"Warehouse"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>assuming warehouseCaps is an IEnumerable that contains the data.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>The sparse data case is where the table contains multiple index columns and not all the combinations of the index values exist in the table. For example, there could be a table that records the cost of shipping goods from warehouses to stores. However, it is usually not the case that every warehouse can ship goods and every store. For example,<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 147.1pt; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-bottom-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-bottom-alt: solid #4F81BD 1.0pt" class=MsoTableMediumList1Accent1 border=1 cellSpacing=0 cellPadding=0 width=196 class="MsoTableMediumList1Accent1">
<TBODY>
<TR style="HEIGHT: 15pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>warehouse<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>store<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>cost<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 0">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>100<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 1">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>3<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>200<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>3<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>150<o:p></o:p></FONT></FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Such table represents input data that are sparse. By default, the missing rows all have the value column being zero.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Currently in Solver Foundation v2.0, we cannot bind to such sparse data directly. However, we observe that the values appearing in an index column of the sparse table form a subset of the values allowed for that index column. Furthermore, Solver Foundation allows parameters to appear as the indexes to other parameters or decisions. We can use the following approach to bind to this sparse table.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Let us introduce a helper column called costid into the table.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 195.1pt; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-bottom-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-alt: solid #4F81BD 1.0pt; mso-border-bottom-alt: solid #4F81BD 1.0pt" class=MsoTableMediumList1Accent1 border=1 cellSpacing=0 cellPadding=0 width=260 class="MsoTableMediumList1Accent1">
<TBODY>
<TR style="HEIGHT: 15pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>costid<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>warehouse<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>store<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>cost<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 0">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>0<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>100<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 1">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>3<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>200<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="HEIGHT: 15pt; mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal align=right><B><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>2<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 51.1pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=68 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>3<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>1<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #4f81bd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 48pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; HEIGHT: 15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63; mso-border-bottom-themecolor: accent1" vAlign=top width=64 noWrap>
<P style="TEXT-ALIGN: right; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal align=right><SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>150<o:p></o:p></FONT></FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Now we create two extra parameters called CostWarehouse and CostStore, which will be bound to the warehouse column and store column respectively. The needed parameter Cost will be bound to the cost column as we expected. All three parameters now use costid as the index.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Here are the actual definitions for the three parameters.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Sets[Any],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>costid<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Integers[0, Infinity],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CostWarehouse[costid],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CostStore[costid]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Reals[-Infinity, Infinity],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Cost[costid]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>],<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Assume we have a decision called Ship defined as follows.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Sets[Any],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>warehouse,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>store<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Decisions[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Integers[0, 1],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Ship[warehouse, store]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<B><o:p></o:p></B></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Ship[w, s] being 1 if and only if we want to ship goods from warehouse w to store s.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Now suppose we want to construct as constraint that says “the total cost of shipping is between 100 and 400. The constraint can be written as follows.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold">100 &lt;= Sum[{id, costid}, Cost[id] * <SPAN style="BACKGROUND: yellow; mso-highlight: yellow">Ship[CostWarehouse[id], CostStore[id]]</SPAN>] &lt;= 400<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Notice that we iterate through all rows in the cost table and use parameter CostWarehouse[id] and CostStore[id] as indexes on decision Ship.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>To ensure that we do not ship any goods from incompatible warehouse and store pairs, we add the following constraint using the fact that default values are zero:<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold">Foreach[{w, warehouse}, {s, store}, Ship[w, s] &lt;= Sum[{id, costid}, AsInt[CostWarehouse[id] == w &amp; CostStore[id] == s]]<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>We leave it to the reader to figure out how this constraint works. Notice that, in the last constraint, the complicated right-hand side of the inequality actually is reduced to a constant value. So the model is still a MILP model.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Here is the complete model.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold">Model[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Sets[Integers[0, Infinity]],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>costid,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>warehouse,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>store<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Integers[0, Infinity],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CostWarehouse[costid],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CostStore[costid]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Parameters[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Reals[-Infinity, Infinity],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Cost[costid],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>WarehouseCap[warehouse],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>StoreCap[store]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Decisions[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Integers[0, 1],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Ship[warehouse, store]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Constraints[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Constraint1 -&gt; 100 &lt;= Sum[{id, costid}, Cost[id] * Ship[CostWarehouse[id], CostStore[id]]] &lt;= 400,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Constraint2 -&gt; Foreach[{w, warehouse}, {s, store}, Ship[w, s] &lt;= Sum[{id, costid}, AsInt[CostWarehouse[id] == w &amp; CostStore[id] == s]]</SPAN><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold">]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>],<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Goals[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Maximize[<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Goal1 -&gt; Annotation[Sum[{w, warehouse}, {s, store}, Ship[w, s]], "order", 0]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>]<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt; mso-bidi-font-weight: bold">]<B><o:p></o:p></B></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Here is a sample run.<o:p></o:p></FONT></FONT></P>
<P mce_keep="true">
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableGrid border=1 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">[11/2/2009 10:54:59 PM] Solve started...<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">[11/2/2009 10:55:00 PM] ===Solver Foundation Service Report===<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Datetime: 11/2/2009 10:55:00 PM<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Model Name: Default<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Capabilities Requested: MILP<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Solve Time (ms): 34<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Total Time (ms): 187<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Solve Completion Status: Optimal<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Solver Selected: SolverFoundation.Plugin.Gurobi.GurobiSolver<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Algorithm: Dual<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Arithmetic: Double<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Variables: 9 -&gt; 20 + 11<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Rows: 11 -&gt; 11<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Nonzeros: 21<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Eliminated Slack Variables: 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Pricing (double): Automatic<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Pivot Count: 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Phase 1 Pivots: -1 + 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Phase 2 Pivots: -1 + 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Factorings: -1 + 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Degenerate Pivots: -1 (0.00 %)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Branches: 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">===Solution Details===<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Goals:<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Goal1: 2<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Decisions:<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(1, 2): 1<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(2, 3): 1<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(3, 1): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(1, 1): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(1, 3): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(2, 1): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(2, 2): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(3, 2): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">Ship(3, 3): 0<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Microsoft Sans Serif','sans-serif'; FONT-SIZE: 8.5pt">[11/2/2009 10:55:00 PM] Solve Complete<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>The actual workbook is attached too.</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>Lengning</FONT></o:p></P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/09/91/65/59/SolverFoundation-SparseDataBinding.xlsx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-91-65-59/SolverFoundation_2D00_SparseDataBinding.xlsx">SolverFoundation-SparseDataBinding.xlsx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Deploy OML model from Excel to Visual Studio</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/deploy-oml-model-from-excel-to-visual-studio</link>
      <pubDate>Fri, 30 Oct 2009 13:58:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/10/30/deploy-oml-model-from-excel-to-visual-studio/</guid>
      <description><![CDATA[Deploy-to-C# is a new feature we shipped in Solver Foundation v2.0 Excel Add-in. The idea is to...]]></description>
      <content:encoded><![CDATA[<P><STRONG>Deploy-to-C#</STRONG> is a new feature we shipped in Solver Foundation v2.0 Excel Add-in. The idea is to simplify the process of deploying an OML model written in the Add-in into a Visual Studio project that builds the same model using Solver Foundation Services APIs. With this new feature, users who are comfortable in writing and debugging their models in Excel/OML environment now can produce an equivalent C# model by a click of a button. Once the C# model is generated, users can further embed the model code into their applications. It is also possible now to solve the model using multiple directives or use plug-in solvers.</P>
<P>In this post, we will show how to use the Deploy functionality to convert an OML model into a Visual Studio project. To repeat the following steps yourself, please make sure you have Microsoft Office 2007, Visual Studio 2008, and Solver Foundation v2.0 installed. Furthermore, to try out the plug-in solver you have, please update the solver registration section in the config file accordingly.</P>
<P>In Solver Foundation v2.0 release, we include a sample on the supply chain planning. It can be found under &lt;your documents folder&gt;\Microsoft Solver Foundation\Samples\Excel\LP. Let us start with this sample.</P>
<P>Once we load this Excel file, we can see the data are stored in the spreadsheet and the OML model is presented in our new modeling pane.</P>
<P mce_keep="true"><IMG style="WIDTH: 1055px; HEIGHT: 625px" src="http://kauaea.bay.livefilestore.com/y1plVtB2uyKxAVlexm4vH5axrYISFjam0ktoBJ3nRDpBbavdaElBNX0WMVc9XuxzTdZzueomY1nm7fvIsaUEeYEXAvO_6SUxPVP/p1.jpg" width=1279 height=769 mce_src="http://kauaea.bay.livefilestore.com/y1plVtB2uyKxAVlexm4vH5axrYISFjam0ktoBJ3nRDpBbavdaElBNX0WMVc9XuxzTdZzueomY1nm7fvIsaUEeYEXAvO_6SUxPVP/p1.jpg"></P>
<P>We can solve the model in Excel by clicking the Solve button. Here is the result.</P>
<P mce_keep="true"><IMG style="WIDTH: 1058px; HEIGHT: 599px" src="http://kauaea.bay.livefilestore.com/y1p6_XVRjmKK4ITZbH7KSMrKoH92xp3nxN9Kt4KIc7dJNANAR487x931l_Fb124CVxcnlqiS4vpZULeC9c8Vr-OcosW3wfHHw-Y/p2.jpg" width=1278 height=764 mce_src="http://kauaea.bay.livefilestore.com/y1p6_XVRjmKK4ITZbH7KSMrKoH92xp3nxN9Kt4KIc7dJNANAR487x931l_Fb124CVxcnlqiS4vpZULeC9c8Vr-OcosW3wfHHw-Y/p2.jpg"></P>
<P>As we can see from the log, Solver Foundation simplex solver is used with the default setting to solve this model.</P>
<P>Now let us start deploying the model into C#. We notice the new Deploy button in the Ribbon.</P>
<P mce_keep="true"><IMG style="WIDTH: 164px; HEIGHT: 141px" src="http://kauaea.bay.livefilestore.com/y1pVblxQi0LoxqmIXur-WV8NDfKDUUtnVfNs6GqySLrbUvsMmFvtBQPYGRna8XC-ARYPkE0R4C51c090WQ30Fptm5XiqSRzE3T6/p3.jpg" width=164 height=141 mce_src="http://kauaea.bay.livefilestore.com/y1pVblxQi0LoxqmIXur-WV8NDfKDUUtnVfNs6GqySLrbUvsMmFvtBQPYGRna8XC-ARYPkE0R4C51c090WQ30Fptm5XiqSRzE3T6/p3.jpg"></P>
<P>Let us click on it. The following window pops up, where we can specify the C# file name for the model to be deployed. Let's call it SupplyChainPlanning.cs.</P>
<P mce_keep="true"><IMG style="WIDTH: 757px; HEIGHT: 533px" src="http://kauaea.bay.livefilestore.com/y1pfOyWOg4c16nHf12W-HQ6BsZlqkMgJ34tAapw0tYdL7vyL1-sy_0ADfRbFA1DwDl_MDkJ8Lsl2O62VpaTSSn8SSuAWReEmiEg/p4.jpg" width=757 height=533 mce_src="http://kauaea.bay.livefilestore.com/y1pfOyWOg4c16nHf12W-HQ6BsZlqkMgJ34tAapw0tYdL7vyL1-sy_0ADfRbFA1DwDl_MDkJ8Lsl2O62VpaTSSn8SSuAWReEmiEg/p4.jpg"></P>
<P>Now we have two files created under the target folder: SupplyChainPlanning.cs and SupplyChainPlanning.xml. The first file contains the equivalent model written in C# and the second xml file contains the data from the spreadsheet. The model now can be embedded into any Visual Studio C# project.</P>
<P mce_keep="true"><IMG style="WIDTH: 807px; HEIGHT: 450px" src="http://kauaea.bay.livefilestore.com/y1pGobTjuAwQs96qbQ4DZwlZ6ug6KQblz2Nw796qKYQYg8NAkqu-HG82fElmstm68YQwihfEethkFGkBjv2R_p2hygz2S6PDpl8/p5.jpg" width=807 height=450 mce_src="http://kauaea.bay.livefilestore.com/y1pGobTjuAwQs96qbQ4DZwlZ6ug6KQblz2Nw796qKYQYg8NAkqu-HG82fElmstm68YQwihfEethkFGkBjv2R_p2hygz2S6PDpl8/p5.jpg"></P>
<P>Let us now open Visual Studio 2008 and create a new C# console project. Notice that Solver Foundation v2.0 installation creates two project templates in Visual Studio 2008. Let us pick the Solver Foundation Console Application template.</P>
<P mce_keep="true"><IMG style="WIDTH: 801px; HEIGHT: 563px" src="http://kauaea.bay.livefilestore.com/y1p01evCK7LaoXVUJHAPbqVWXDexQSDujyBy_MyjoWGopXg0EO_t5-hWWxNX8px3LWxsO0RP7iz4bTisquOWq1G-iQH1hchLo5_/p6.jpg" width=801 height=563 mce_src="http://kauaea.bay.livefilestore.com/y1p01evCK7LaoXVUJHAPbqVWXDexQSDujyBy_MyjoWGopXg0EO_t5-hWWxNX8px3LWxsO0RP7iz4bTisquOWq1G-iQH1hchLo5_/p6.jpg"></P>
<P>After the project is created, let us add the SupplyChainPlanning.cs and SupplyChainPlanning.xml into the project. We can delete the sample model file created automatically by the template because we are not going to use it. We make sure that the xml file will be always copied to the output directory during compilation since it contains the data we need.</P>
<P mce_keep="true"><IMG style="WIDTH: 1027px; HEIGHT: 599px" src="http://kauaea.bay.livefilestore.com/y1p0Qe471kpZeITzbuFZ9D7TySRwfXQoeVua5oj5YHdOYDizzZD1CC-Ta66Sfw2y4xYS4IfefpW3Sw11WvArUfW2ie6WUZfUdWi/p7.jpg" width=1279 height=767 mce_src="http://kauaea.bay.livefilestore.com/y1p0Qe471kpZeITzbuFZ9D7TySRwfXQoeVua5oj5YHdOYDizzZD1CC-Ta66Sfw2y4xYS4IfefpW3Sw11WvArUfW2ie6WUZfUdWi/p7.jpg"></P>
<P>Next, we need to write some glue code to bind the data from XML file to the model. This part is not automatically done at this moment. However, the data binding code is pretty straightforward. We use LINQ to XML in this case.</P>
<P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">Program</SPAN> {<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: #2b91af">ExportedModel</SPAN> _model;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> Program() {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">ExportedModel</SPAN>();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> Run() {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>BindData();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> solution = _model.Context.Solve();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(solution.GetReport().ToString());<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> BindData() {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> data = <SPAN style="COLOR: #2b91af">XElement</SPAN>.Load(<SPAN style="COLOR: #a31515">"SupplyChainPlanning.xml"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> manufactureLoads =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> load<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"manufactureLoads"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Product = load.Element(<SPAN style="COLOR: #a31515">"Product"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Load = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(load.Element(<SPAN style="COLOR: #a31515">"ManufactureLoads"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> factoryCapacities =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> cap<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"factoryCapacity"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Factory = cap.Element(<SPAN style="COLOR: #a31515">"Factory"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Capacity = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(cap.Element(<SPAN style="COLOR: #a31515">"FactoryCapacity"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> unitManufactureCosts =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> cost<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"unitManufactureCost"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Product = cost.Element(<SPAN style="COLOR: #a31515">"Product"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Cost = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(cost.Element(<SPAN style="COLOR: #a31515">"UnitManufactureCost"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> transports =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> tran<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"transport"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Product = tran.Element(<SPAN style="COLOR: #a31515">"Product"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Area = tran.Element(<SPAN style="COLOR: #a31515">"Geography"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Factory = tran.Element(<SPAN style="COLOR: #a31515">"Factory"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Transport = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(tran.Element(<SPAN style="COLOR: #a31515">"Transport"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> demandForecastPrices =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> demand<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"demandForecastPrice"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">where</SPAN> demand.Elements().Count() == 4<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Product = demand.Element(<SPAN style="COLOR: #a31515">"Product"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Area = demand.Element(<SPAN style="COLOR: #a31515">"Geography"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>Promotion = demand.Element(<SPAN style="COLOR: #a31515">"Promotion"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Price = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(demand.Element(<SPAN style="COLOR: #a31515">"demandForecastPrice"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> demandForecastUnits =<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">from</SPAN> demand<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">in</SPAN> data.Descendants(<SPAN style="COLOR: #a31515">"demandForecastUnits"</SPAN>)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">where</SPAN> demand.Elements().Count() == 4<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">select</SPAN> <SPAN style="COLOR: blue">new<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Product = demand.Element(<SPAN style="COLOR: #a31515">"Product"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Area = demand.Element(<SPAN style="COLOR: #a31515">"Geography"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Promotion = demand.Element(<SPAN style="COLOR: #a31515">"Promotion"</SPAN>).Value,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Units = <SPAN style="COLOR: #2b91af">Convert</SPAN>.ToDouble(demand.Element(<SPAN style="COLOR: #a31515">"demandForecastUnits"</SPAN>).Value)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.manufactureLoads.SetBinding(manufactureLoads, <SPAN style="COLOR: #a31515">"Load"</SPAN>, <SPAN style="COLOR: #a31515">"Product"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.factoryCapacity.SetBinding(factoryCapacities, <SPAN style="COLOR: #a31515">"Capacity"</SPAN>, <SPAN style="COLOR: #a31515">"Factory"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.unitManufactureCost.SetBinding(unitManufactureCosts, <SPAN style="COLOR: #a31515">"Cost"</SPAN>, <SPAN style="COLOR: #a31515">"Product"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.transport.SetBinding(transports, <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #a31515">"Transport"</SPAN>, <SPAN style="COLOR: #a31515">"Product"</SPAN>, <SPAN style="COLOR: #a31515">"Area"</SPAN>, <SPAN style="COLOR: #a31515">"Factory"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.demandForecastPrice.SetBinding(demandForecastPrices, <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #a31515">"Price"</SPAN>, <SPAN style="COLOR: #a31515">"Product"</SPAN>, <SPAN style="COLOR: #a31515">"Area"</SPAN>, <SPAN style="COLOR: #a31515">"Promotion"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_model.demandForecastUnits.SetBinding(demandForecastUnits, <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #a31515">"Units"</SPAN>, <SPAN style="COLOR: #a31515">"Product"</SPAN>, <SPAN style="COLOR: #a31515">"Area"</SPAN>, <SPAN style="COLOR: #a31515">"Promotion"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> Main(<SPAN style="COLOR: blue">string</SPAN>[] args) {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> program = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Program</SPAN>();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>program.Run();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>}</SPAN><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE></P>
<P mce_keep="true">Note that we have a where clause in building demandForecastPrices and demandForecastUnits. We leave to the readers to experiment why the where clause is needed.</P>
<P>Now let's run the console app. Here is the output. For simplicity, we skip the decision values. We can verify that the objective function value is the same as we have seen in Excel.</P>
<TABLE border=1 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD vAlign=top width=638>
<P>===Solver Foundation Service Report===</P>
<P>Datetime: 10/30/2009 12:03:57</P>
<P>Model Name: Default</P>
<P>Capabilities Requested: LP</P>
<P>Solve Time (ms): 515</P>
<P>Total Time (ms): 911</P>
<P>Solve Completion Status: Optimal</P>
<P>Solver Selected: Microsoft.SolverFoundation.Solvers.SimplexSolver</P>
<P>Directives:</P>
<P>Microsoft.SolverFoundation.Services.Directive</P>
<P>Algorithm: Primal</P>
<P>Arithmetic: Hybrid</P>
<P>Variables: 154 -&gt; 154 + 77</P>
<P>Rows: 104 -&gt; 77</P>
<P>Nonzeros: 416</P>
<P>Eliminated Slack Variables: 0</P>
<P>Pricing (exact): SteepestEdge</P>
<P>Pricing (double): SteepestEdge</P>
<P>Basis: Slack</P>
<P>Pivot Count: 114</P>
<P>Phase 1 Pivots: 0 + 0</P>
<P>Phase 2 Pivots: 114 + 0</P>
<P>Factorings: 6 + 1</P>
<P>Degenerate Pivots: 82 (71.93 %)</P>
<P>Branches: 0</P>
<P>===Solution Details===</P>
<P>Goals:</P>
<P>Profit: 9158191.66666667</P>
<P mce_keep="true">&nbsp;</P></TD></TR></TBODY></TABLE>
<P mce_keep="true">Now to illustrate a more advance usage of Solver Foundation in this C# project, let's include a solver registration and use a plug-in solver to solve it.</P>
<P>To use a plug-in solver with Solver Foundation, please make sure you have all the needed DLLs from the plug-in solver vendor. In this example, we will use Gurobi solver to solve this LP model.</P>
<P>First we need to add a config file to the project so that we can register the plug-in solvers. Here is what the app.config file looks like</P>
<P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA1CE 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent1 border=1 cellSpacing=0 cellPadding=0 class="MsoTableMediumGrid1Accent1">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #7ba1ce 1pt solid; BORDER-LEFT: #7ba1ce 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3e0ef; BORDER-TOP: #7ba1ce 1pt solid; BORDER-RIGHT: #7ba1ce 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&lt;?</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">xml</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">version</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue"> ?&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">section</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">name</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MsfConfig</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">type</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Microsoft.SolverFoundation.Services.MsfConfigSection, Microsoft.Solver.Foundation, Version=2.0.2.8632, Culture=neutral, PublicKeyToken=31bf3856ad364e35</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">allowLocation</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">allowDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">Everywhere</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">allowExeDefinition</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">MachineToApplication</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">restartOnExternalChanges</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">requirePermission</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">true</SPAN>"<SPAN style="COLOR: blue"> /&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">configSections</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">MsfPluginSolver<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">capability</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">LP</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">assembly</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">GurobiPlugin.dll</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">solverclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiSolver</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">directiveclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiDirective</SPAN>"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">parameterclass</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">=</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">"<SPAN style="COLOR: blue">SolverFoundation.Plugin.Gurobi.GurobiParams</SPAN>"<SPAN style="COLOR: blue">/&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">MsfPluginSolvers</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">MsfConfig</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">configuration</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-bidi-font-weight: bold">&gt;</SPAN><B><o:p></o:p></B></P></TD></TR></TBODY></TABLE></P>
<P mce_keep="true">Notice that we register Gurobi solver as an LP solver here, with Gurobi solver's class, directive class, and parameter class names.</P>
<P>Next, we need to include necessary DLLs into the project so that Solver Foundation can find them. Here is what the project looks like now.</P>
<P mce_keep="true"><IMG style="WIDTH: 338px; HEIGHT: 653px" src="http://kauaea.bay.livefilestore.com/y1pk8JE5WU6i-Iy097z0UP8IwX1i81ZjjeBh3T9thTFjfevGVVa4ZV1JZ9fC3ryPumpU3_eiQWLCI_5f7mkzNCIONOCYeancS5K/p8.jpg" width=338 height=653 mce_src="http://kauaea.bay.livefilestore.com/y1pk8JE5WU6i-Iy097z0UP8IwX1i81ZjjeBh3T9thTFjfevGVVa4ZV1JZ9fC3ryPumpU3_eiQWLCI_5f7mkzNCIONOCYeancS5K/p8.jpg"></P>
<P>Here we reference GurobiPlugin.dll (plug-in solver wrapper) and add the gurobi20.dll (unmanaged code DLL for the actual solver) to the project. Notice that we set the "Copy to Output Directory" property of gurobi20.dll to "Copy Always" too. These two DLLs are shipped with Solver Foundation v2.0 and can be found under &lt;your program files folder&gt;\ Microsoft Solver Foundation\2.0.2.8632\Plugins.</P>
<P>Now let's run the application again. This time, we will see from the report that Gurobi solver is used and the same objective function value is returned.</P>
<TABLE border=1 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD vAlign=top width=638>
<P>===Solver Foundation Service Report===</P>
<P>Datetime: 10/30/2009 13:48:28</P>
<P>Model Name: Default</P>
<P>Capabilities Requested: LP</P>
<P>Solve Time (ms): 110</P>
<P>Total Time (ms): 522</P>
<P>Solve Completion Status: Optimal</P>
<P>Solver Selected: <B>SolverFoundation.Plugin.Gurobi.GurobiSolver</B></P>
<P>Directives:</P>
<P>Microsoft.SolverFoundation.Services.Directive</P>
<P>Algorithm: Dual</P>
<P>Arithmetic: Double</P>
<P>Variables: 154 -&gt; 258 + 104</P>
<P>Rows: 104 -&gt; 104</P>
<P>Nonzeros: 416</P>
<P>Eliminated Slack Variables: 0</P>
<P>Pricing (double): Automatic</P>
<P>Pivot Count: 36</P>
<P>Phase 1 Pivots: -1 + 0</P>
<P>Phase 2 Pivots: -1 + 0</P>
<P>Factorings: -1 + 0</P>
<P>Degenerate Pivots: -1 (-2.78 %)</P>
<P>Branches: 0</P>
<P>===Solution Details===</P>
<P>Goals:</P>
<P>Profit: <B>9158191.66666666</B></P></TD></TR></TBODY></TABLE>
<P mce_keep="true">To tweak the settings of Gurobi solver, we can further create a Gurobi solver directive and change the settings there. Then we pass the directive instance into Solve call. I will leave this to the readers to experiment.</P>
<P>This sample goes through all steps in deploying an OML model from Excel to Visual Studio. I hope it helps in your application development. Thank you for your time.</P>
<P>Lengning</P>]]></content:encoded>
    </item>
    <item>
      <title>Try out our F# ODSL and SFS wrapper sample with the newly released F# October CTP (1.9.7.8)</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/try-out-our-f-odsl-and-sfs-wrapper-sample-with-the-newly-released-f-october-ctp-1-9-7-8</link>
      <pubDate>Thu, 22 Oct 2009 09:16:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/10/22/try-out-our-f-odsl-and-sfs-wrapper-sample-with-the-newly-released-f-october-ctp-1-9-7-8/</guid>
      <description><![CDATA[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx
The F# ODSL and SFS...]]></description>
      <content:encoded><![CDATA[<P><A href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx">http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx</A></P>
<P>The F# ODSL and SFS wrapper included in Solver Foundation v2.0 utilize the new feature, unit of measure, in F# to facilitate more robust modeling experience. In order to try out the sample, you will need to download the most recent update of F#, v1.9.7.8, from the link above.</P>
<P>Have fun!</P>]]></content:encoded>
    </item>
    <item>
      <title>Solver Foundation V2.0 is shipped today!</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/solver-foundation-v2-0-is-shipped-today</link>
      <pubDate>Fri, 09 Oct 2009 02:04:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/10/09/solver-foundation-v2-0-is-shipped-today/</guid>
      <description><![CDATA[We are pleased to announce the release of Solver Foundation v2.0. This is the fourth on-time...]]></description>
      <content:encoded><![CDATA[<P><FONT size=3 face=Calibri>We are pleased to announce the release of <B>Solver Foundation v2.0</B>. This is the fourth on-time commercial release for the product. The Express edition is available now at </FONT><A href="http://code.msdn.microsoft.com/solverfoundation"><FONT size=3 face=Calibri>http://code.msdn.microsoft.com/solverfoundation</FONT></A><FONT size=3><FONT face=Calibri>. The Standard Edition of Solver Foundation v2.0 has released-to-manufacturing, and will be available online via MSDN subscriber downloads the week of 11oct09, and offline world-wide via MSDN in approximately two months later. Our Enterprise edition is also available. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>In version 2, we focused on growing our collection of solvers, vastly improving our tooling experience, and introduced the beginnings of what will be our simulation framework. At a high level, Solver Foundation v2.0 has the following new features:<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Top level features we are introducing in Version 2.0:<o:p></o:p></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><B>Design Tools</B>. We have improved the integration, interchange, and workflow of our design surfaces for Excel, SharePoint, and Visual Studio – modelers will now be able to take models algorithmically designed in Excel and inject this directly into a full-fledged Visual Studio/C# solutions with the press of a “deploy” button. Additionally, a model can be sent directly to SharePoint using our script-safe OMLX format. This is a long-term focus area to make modeling as easy as possible without losing any capabilities for the advanced user. <o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><B>Solver Foundation Services</B> <o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Stochastic Programming and Optimization with Monte Carlo simulation capabilities. The SFS supports random parameters and recourse decisions, allowing for the definition and solution of two-stage stochastic models<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Submodels<B>.</B>&nbsp; Our master model can now define and reference submodels, allowing for better encapsulation and reuse<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Special Ordered Sets<B>.</B>&nbsp; Introduced SOS1 and increased flexibility in the definition of SOS2 constraints<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Solver Plug-in SDK improvements to include Special Ordered Sets, more detailed reporting (e.g., IIS), and expanded our solver partner ecosystem to include LINDO Systems<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B><FONT face=Calibri>Solvers<o:p></o:p></FONT></B></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Gurobi version 2.0 Solver is included in our release, and is the default Solver Foundation MIP solver<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Second Order Conic Programming (SOCP) Solver Extensions to our IPM Solver to support rich constraint modeling (we can now have nonlinear goals and constraints)<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; mso-bidi-font-weight: bold"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Extensions to the Simplex Solver to support SOS1 and SOS2 modeling and solving<B><o:p></o:p></B></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Improved our in-house Mixed Integer Programming Solver <o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Metaheuristics and Global Constraints for our Constraint Solver (developed in conjunction with our friends at MSR Cambridge) to ease and simplify declarative modeling with more powerful constructs <o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Created a new <B>F# Optimization DSL</B> (ODSL) that incorporates units-of-measure work from MSR Cambridge<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Increased our solver vendor and modeling partner ecosystem to include LKINDO Systems and Princeton Consultants – more information can be found at </FONT><A href="http://www.solverfoundation.com/"><FONT face=Calibri>www.solverfoundation.com</FONT></A><o:p></o:p></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>Our core DLL is now localized in German. This is the start of our longer term focus to localize all of Solver Foundation in the top languages world-wide<o:p></o:p></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri>A host of other improvements<o:p></o:p></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Optimization domain specific language in F# with units of measure</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/optimization-domain-specific-language-in-f-with-units-of-measure</link>
      <pubDate>Sat, 05 Sep 2009 00:08:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/09/05/optimization-domain-specific-language-in-f-with-units-of-measure/</guid>
      <description><![CDATA[In Solver Foundation CTP release, we shipped an optimization domain specific language (ODSL) in F#,...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT face=Calibri><FONT size=3>In Solver Foundation CTP release, we shipped an optimization domain specific language (ODSL) in F#, which embedded Solver Foundation simplex solver for solving linear programming models. In the upcoming&nbsp;version 2&nbsp;release, we will ship an enhanced version of this ODSL. Here are some of the highlights:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3 face=Calibri>Units of measure: in F# numerical quantities can be annotated by a unit such as kilogram, dollar per day. These annotations not only provide additional and explicit documentation on the nature of the quantities involved, but also allow F# to statically check that no mistake is made in the use of these quantities: adding Watt and Newton is incorrect for example.</FONT></P>
<P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraphCxSpLast><FONT size=3 face=Calibri>Units of measures in F# are declared as follows:</FONT></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: auto auto auto 0.5in; WIDTH: 6.65in; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #B3CC82 1.0pt; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent3 border=1 cellSpacing=0 cellPadding=0 width=638 class="MsoTableMediumGrid1Accent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #b3cc82 1pt solid; BORDER-LEFT: #b3cc82 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #e6eed5; BORDER-TOP: #b3cc82 1pt solid; BORDER-RIGHT: #b3cc82 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Dollar<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Barrel<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Day<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> ProductionRate = Barrel/Day <o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpFirst><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraphCxSpLast><FONT size=3 face=Calibri>The syntax for annotating a numerical value with its measure is shown below:</FONT></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: auto auto auto 0.5in; WIDTH: 6.65in; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #B3CC82 1.0pt; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent3 border=1 cellSpacing=0 cellPadding=0 width=638 class="MsoTableMediumGrid1Accent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #b3cc82 1pt solid; BORDER-LEFT: #b3cc82 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #e6eed5; BORDER-TOP: #b3cc82 1pt solid; BORDER-RIGHT: #b3cc82 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> dailyOutput = 9000.0&lt;Barrel/Day&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> price = 140.0&lt;Dollar/Barrel&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> dailyCost = dailyOutput * price<o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpFirst><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraphCxSpLast><FONT size=3 face=Calibri>In our new ODSL, units of measures can be used in modeling a problem, which help modelers to catch errors in the model where incompatible quantities are used in the constraints or goal functions. Here is a simple example of the Petrochem problem.</FONT></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: auto auto auto 0.5in; WIDTH: 6.65in; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #B3CC82 1.0pt; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent3 border=1 cellSpacing=0 cellPadding=0 width=638 class="MsoTableMediumGrid1Accent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #b3cc82 1pt solid; BORDER-LEFT: #b3cc82 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #e6eed5; BORDER-TOP: #b3cc82 1pt solid; BORDER-RIGHT: #b3cc82 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> a = 20.0&lt;Dollar/Barrel&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> b = 15.0&lt;Dollar/Barrel&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> sa = var&lt;Barrel/Day&gt;()<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>let</SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB> vz = var&lt;_&gt;()<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5; tab-stops: 102.15pt" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5; tab-stops: 102.15pt" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>minimise (a * sa + b * vz)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>where<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: ES" lang=ES>[<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: ES" lang=ES><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0.3 * sa + 0.4 * vz &gt;= 2000.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: ES" lang=ES><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0.4 * sa + 0.2 * vz &gt;= 1500.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: ES" lang=ES><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0.2 * sa + 0.3 * vz &gt;= 500.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: ES" lang=ES><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>sa &lt;= 9000.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>vz &lt;= 6000.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sa &gt;= 0.&lt;_&gt;;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>vz &gt;= 0.&lt;_&gt;<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>]<o:p></o:p></SPAN></B></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpFirst><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpMiddle><FONT size=3 face=Calibri>Note that if quantities such as a&nbsp;were defined to have a measure other than Dollar/Barrel, F# would have&nbsp;caught the error in the goal function where b*vz had the measure Dollar/Day while a*sa did not.</FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3 face=Calibri>Solver Foundation wrapper in F#: this wrapper directly wraps Solver Foundation APIs and does not use F# quotations. With this wrapper, we also enabled units of measure in models that are written against Solver Foundation APIs. Here is the model of the same Petrochem problem written in this wrapper:</FONT></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: auto auto auto 0.5in; WIDTH: 6.65in; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #B3CC82 1.0pt; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableMediumGrid1Accent3 border=1 cellSpacing=0 cellPadding=0 width=638 class="MsoTableMediumGrid1Accent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #b3cc82 1pt solid; BORDER-LEFT: #b3cc82 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 6.65in; PADDING-RIGHT: 5.4pt; BACKGROUND: #e6eed5; BORDER-TOP: #b3cc82 1pt solid; BORDER-RIGHT: #b3cc82 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent3; mso-border-themetint: 191; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=638>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Dollar<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Barrel<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> Day<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>[&lt;Measure&gt;] <SPAN style="COLOR: blue">type</SPAN> ProductionRate = Barrel/Day<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><o:p>&nbsp;</o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Initialization of the SFS model from the context<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>// We use the SfsModel class that wraps the usual SFS Model class<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>// and additionally keeps track of the F#-specific type information <o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> context = SolverContext.GetContext()<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> petrochem = <SPAN style="COLOR: blue">new</SPAN> SfsModel(context)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><o:p>&nbsp;</o:p></SPAN></B></P><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><STRONG>&nbsp;&nbsp;&nbsp; /// Optimization variable: Production in Saudi-Arabia<o:p></o:p></STRONG></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><STRONG><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> buyfromSA = petrochem.CreateRealVariable&lt;ProductionRate&gt;()<o:p></o:p></STRONG></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><STRONG><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">/// Optimization variable: Production in Venezuela<o:p></o:p></SPAN></STRONG></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><STRONG><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> buyfromVZ = petrochem.CreateRealVariable&lt;ProductionRate&gt;()<o:p></o:p></STRONG></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><STRONG></STRONG></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes"></SPAN></SPAN></B>&nbsp;</P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Add the production constraints: <o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>// How much of gasoline, jet fuel and machine lubricants can<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// we refine from the oil provided by the two supplier countries?<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> c1 = petrochem.AddConstraint (<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>0.3*buyfromSA + 0.4*buyfromVZ &gt;&gt;== 2000.0&lt;Barrel/Day&gt;)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> c2 = petrochem.AddConstraint (<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>0.4*buyfromSA + 0.2*buyfromVZ &gt;&gt;== 1500.0&lt;Barrel/Day&gt;)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> c3 = petrochem.AddConstraint (<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>0.2*buyfromSA + 0.3*buyfromVZ &gt;&gt;== 500.0&lt;Barrel/Day&gt;)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-add-space: auto" class=MsoListParagraph><B><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">/// Maximum production in Saudi-Arabia<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> maxProductionSA = 9000.0&lt;_&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">/// Maximum production in Venezuela<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> maxProductionVZ = 6000.0&lt;_&gt;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><o:p>&nbsp;</o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Add the maximum production constraints to the model<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>petrochem.AddConstraints [|<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0.0&lt;_&gt; &lt;&lt;== buyfromVZ; <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>buyfromVZ &lt;&lt;== maxProductionVZ;<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0.0&lt;_&gt; &lt;&lt;== buyfromSA ; buyfromSA &lt;&lt;== maxProductionSA <o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>|]<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5; mso-add-space: auto" class=MsoListParagraph><B><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">/// Business goal: minimize the running costs<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> runningCost = petrochem.AddGoal (GoalKind.Minimize, <o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>20.0&lt;Dollar/Barrel&gt;*buyfromSA + <o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB>15.0&lt;Dollar/Barrel&gt;*buyfromVZ)<o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">/// Solution to the petrochem example<o:p></o:p></SPAN></SPAN></B></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; mso-yfti-cnfc: 5" class=MsoNormal><B><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes; mso-ansi-language: EN-GB" lang=EN-GB><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">let</SPAN> petrochemSolution = petrochem.Solve()</SPAN><o:p></o:p></B></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>The ODSL and the wrapper source code will be shipped in Solver Foundation&nbsp;version 2&nbsp;as a sample on how to enable F# to solve optimization problems. More details will be available in the release doc. The essence here is that, being a complete .NET solution and CLS compliant, Solver Foundation can be easily embedded in other .NET environments to help our customers to solve their problems in the environment that they are most familiar with.</FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>Version 2 of Solver Foundation contains a number of new features and enhancements. Please also check out Nathan’s <A href="http://blogs.msdn.com/natbr/archive/2009/09/03/solver-foundation-2-0-preview-simulation-and-stochastic-programming.aspx" mce_href="http://blogs.msdn.com/natbr/archive/2009/09/03/solver-foundation-2-0-preview-simulation-and-stochastic-programming.aspx">blog</A> on simulation and stochastic programming. For more information, please stay tuned for the actual release.</FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>Lengning</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Solver Foundation v1.2 is released!</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/solver-foundation-v1-2-is-released</link>
      <pubDate>Thu, 16 Apr 2009 12:54:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/04/16/solver-foundation-v1-2-is-released/</guid>
      <description><![CDATA[Please check out www.solverfoundation.com for an immediate access to our Express edition. Standard...]]></description>
      <content:encoded><![CDATA[<P>Please check out <A href="http://www.solverfoundation.com/">www.solverfoundation.com</A> for an immediate access to our Express edition. Standard edition will be ready through MSDN subscription in the following days.</P>
<P>It's really exciting to see three releases in five months.</P>
<P>- Lengning</P>]]></content:encoded>
    </item>
    <item>
      <title>Very good Excel/OML tutorial from Amsterdam Optimization Modeling Group</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/very-good-exceloml-tutorial-from-amsterdam-optimization-modeling-group</link>
      <pubDate>Tue, 31 Mar 2009 13:27:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/03/31/very-good-exceloml-tutorial-from-amsterdam-optimization-modeling-group/</guid>
      <description><![CDATA[http://www.amsterdamoptimization.com/msf.html]]></description>
      <content:encoded><![CDATA[<P><A href="http://www.amsterdamoptimization.com/msf.html">http://www.amsterdamoptimization.com/msf.html</A></P>]]></content:encoded>
    </item>
    <item>
      <title>Solver Foundation website is online</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/solver-foundation-website-is-online</link>
      <pubDate>Wed, 21 Jan 2009 19:31:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/01/21/solver-foundation-website-is-online/</guid>
      <description><![CDATA[http://www.solverfoundation.com
Official&nbsp;website of Solver Foundation.]]></description>
      <content:encoded><![CDATA[<P><A href="http://www.solverfoundation.com/" mce_href="http://www.solverfoundation.com/">http://www.solverfoundation.com</A></P>
<P>Official&nbsp;website of Solver Foundation.</P>]]></content:encoded>
    </item>
    <item>
      <title>Solver Foundation in Action!</title>
      <link>https://docs.microsoft.com/archive/blogs/lengningliu/solver-foundation-in-action</link>
      <pubDate>Mon, 19 Jan 2009 13:51:00 GMT</pubDate>
      <dc:creator><![CDATA[lengningliu]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lengningliu/2009/01/19/solver-foundation-in-action/</guid>
      <description><![CDATA[Here is a post that describes a recent use case of Microsoft Solver Foundation in real world...]]></description>
      <content:encoded><![CDATA[<P>Here is a post that describes a recent use case of <A class="" title="Microsoft Solver Foundation" href="http://www.solverfoundation.com/" mce_href="http://www.solverfoundation.com">Microsoft Solver Foundation</A> in real world applications.</P>
<P><A href="http://blogs.msdn.com/pascal/archive/2009/01/13/l-agenda-des-techdays-2009-a-t-enti-rement-construit-avec-microsoft-solver-foundation.aspx">http://blogs.msdn.com/pascal/archive/2009/01/13/l-agenda-des-techdays-2009-a-t-enti-rement-construit-avec-microsoft-solver-foundation.aspx</A></P>
<P>Thank you Pascal for contacting us with the problem and collaborating with us to get the work done in time. It was great fun for us working with you.</P>]]></content:encoded>
    </item>
  </channel>
</rss>