| |||||||||||
Setops - Index sets Description A example showing the use of index sets and in particular, creating the union and intersection of index sets.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
xbsetops.java /******************************************************** * Xpress-BCL Java Example Problems * ================================ * * file xbsetops.java * `````````````````` * Set operations. * * (c) 2008-2024 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) { XPRBindexSet ports, cities, both, places; int i; try (XPRBprob p = new XPRBprob("Setops")) { /* Initialize BCL and 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(); } } } | |||||||||||
© Copyright 2024 Fair Isaac Corporation. |