/********************************************************
Xpress-BCL C# Example Problems
==============================
file xbgoalobj.cs
`````````````````
Archimedian and pre-emptive goal programming
using objective functions.
(c) 2008 Fair Isaac Corporation
authors: S.Heipcke, D.Brett.
********************************************************/
using System;
using System.Text;
using System.IO;
using Optimizer;
using BCL;
namespace Examples
{
public class TestAdvGoalObj
{
const int NGOALS = 3;
// **** Data ****
string[] Type = {"perc", "abs", "perc"};
string[] Sense = {"max", "min", "max"};
double[] Weight = {100, 1, 0.1};
double[] Deviation = {10, 4, 20};
public void modelgo()
{
XPRBvar x,y;
XPRBctr[] goalCtr = new XPRBctr[NGOALS];
XPRBctr aCtr;
double[] Target = new double[NGOALS];
XPRBexpr[] goal = new XPRBexpr[NGOALS];
XPRBexpr wobj;
XPRBprob prob;
XPRSprob xprsp;
int i,g;
prob = new XPRBprob("Goal");
// Adding the variables
x = prob.newVar("x", BCLconstant.XPRB_PL);
y = prob.newVar("y", BCLconstant.XPRB_PL);
// Adding a constraint
aCtr = prob.newCtr("Limit", 42*x + 13*y <= 100);
// Goals
goal[0] = 5*x + 2*y - 20;
goal[1] = -3*x + 15*y - 48;
goal[2] = 1.5*x + 21*y - 3.8;
for(g=0;g= ":" <= ")+
Target[g]);
if(g==NGOALS-1)
System.Console.WriteLine(" " + prob.getObjVal());
else
System.Console.WriteLine(" " + (goalCtr[g].getAct() -
goalCtr[g].getRHS() + Target[g]));
}
}
public static void Main()
{
XPRB.init();
TestAdvGoalObj TestInstance = new TestAdvGoalObj();
if (XPRB.init() != 0) return;
TestInstance.modelgo();
XPRB.finish();
return;
}
}
} |