/********************************************************
Xpress-BCL Java Example Problems
================================
file xbsetops.java
``````````````````
Set operations.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Jan. 2000
********************************************************/
import com.dashoptimization.*;
public class xbsetops
{
/* Define arrays with index names: note that the restriction
to 8 characters does not apply for BCL */
static final String city_names[] = {"rome", "bristol", "london", "paris",
"liverpool"};
static final String port_names[] = {"plymouth", "bristol", "glasgow",
"london", "calais", "liverpool"};
/***********************************************************************/
/**** Create the union of two index sets ****/
static XPRBindexSet createUnion(XPRBprob p, XPRBindexSet a, XPRBindexSet b,
String name)
{
int i;
XPRBindexSet c;
c=p.newIndexSet(name,a.getSize()+b.getSize());
for(i=0;i<a.getSize();i++) c.addElement(a.getIndexName(i));
for(i=0;i<b.getSize();i++) c.addElement(b.getIndexName(i));
return c;
}
/**** Create the intersection of two index sets ****/
static XPRBindexSet createInter(XPRBprob p, XPRBindexSet a, XPRBindexSet b,
String name)
{
int i;
XPRBindexSet c;
c=p.newIndexSet(name,a.getSize()<b.getSize()?a.getSize():b.getSize());
for(i=0;i<a.getSize();i++)
if(b.getIndex(a.getIndexName(i))>=0) c.addElement(a.getIndexName(i));
return c;
}
/***********************************************************************/
public static void main(String[] args)
{
XPRB bcl;
XPRBindexSet ports,cities,both,places;
int i;
XPRBprob p;
bcl = new XPRB(); /* Initialize BCL */
p = bcl.newProb("Setops"); /* Create a new problem */
/* Create sets "cities" and "ports" and add the indices */
cities=p.newIndexSet("cities", city_names.length);
for(i=0; i<city_names.length; i++) cities.addElement(city_names[i]);
ports=p.newIndexSet("ports", port_names.length);
for(i=0; i<port_names.length; i++) ports.addElement(port_names[i]);
/* Create the union of "cities" and "ports" and print it */
places=createUnion(p,cities,ports,"places");
places.print();
/* Create the intersection of "cities" and "ports", print it */
both=createInter(p,cities,ports,"both sets");
both.print();
}
}
|