Knowledge (XXG)

OptimJ

Source đź“ť

91:
with language support for writing optimization models and abstractions for bulk data processing. The extensions and the proprietary product implementing the extensions were developed by Ateji which went out of business in September 2011. OptimJ aims at providing a clear and concise algebraic notation
922:
Generalist concepts are programming concepts that are not specific to OR problems and would make sense for any kind of application development. The generalist concepts added to Java by OptimJ make the expression of OR models easier or more concise. They are often present in older modeling languages
599:
OptimJ also introduces the notion of a decision variable, which basically represents an unknown quantity whose value one is searching. A solution to an optimization problem is a set of values for all its decision variables that respects the constraints of the problem—without decision variables, it
95:
OptimJ models are directly compatible with Java source code, existing Java libraries such as database access, Excel connection or graphical interfaces. OptimJ is compatible with development tools such as Eclipse, CVS, JUnit or JavaDoc. OptimJ is available free with the following solvers: lp_solve,
1560:
Since the OptimJ compiler knows about the structure of all data used in models, it is able to generate a structured graphical view of this data at compile-time. This is especially relevant in the case of associative arrays where the compiler knows the collections used for indexing the various
690:
In the map coloring example, this set of constraints states that in any solution to the map coloring problem, the color of Belgium must be different from the color of Germany, and the color of Germany must be different from the color of Denmark.
92:
for optimization modeling, removing compatibility barriers between optimization modeling and application programming tools, and bringing software engineering techniques such as object-orientation and modern IDE support to optimization experts.
1575:
Another part of the OptimJ GUI reports in real time performance statistics from the solver. This information can be used for understanding performance problems and improving solving time. At this time, it is available only for lp_solve.
600:
would not possible to express optimization problems. The term "decision variable" comes from the optimization community, but decision variables in OptimJ are the same concept as logical variables in logical languages such as Prolog.
1571:
The compiler-generated OptimJ GUI saves the OR expert from writing all the glue code required when mapping graphical libraries to data. It enables rapid prototyping, by providing immediate visual hints about the structure of data.
742:
operator. For instance, instead of listing all countries and their neighbors explicitly in the source code, one may have an array of countries, an array of decision variables representing the color of each country, and an array
998:
Traditionally, associative arrays are heavily used in the expression of optimization problems. OptimJ associative arrays are very handy when associated to their specific initialization syntax. Initial values can be given in
1472:
Comprehension need not apply only to numeric values. Set or multiset-building comprehensions, especially in combination with tuples of strings, make it possible to express queries very similar to SQL database queries:
1102:
are ubiquitous in computing, but absent from most mainstream languages including Java. OptimJ provides a notion of tuple at the language level that can be very useful as indexes in combination with associative arrays.
1681: 1584:
OptimJ is available for free with the following solvers lp_solve, glpk, LP or MPS file formats and also supports the following commercial solvers: Mosek, IBM ILOG CPLEX Optimization Studio.
1540:
In the context of optimization models, comprehension expressions provide a concise and expressive way to pre-process and clean the input data, and format the output data.
2285: 1194:, also called aggregates operations or reductions, are OptimJ expressions that extend a given binary operation over a collection of values. A common example is the sum: 1674: 2545: 2525: 687:
Constraints express conditions that must be true in any solution of the problem. A constraint can be any Java boolean expression involving decision variables.
553:
A model is an extension of a Java class that can contain not only fields and methods but also constraints and an objective function. It is introduced by the
2540: 2530: 2094: 1667: 931:
While Java arrays can only be indexed by 0-based integers, OptimJ arrays can be indexed by values of any type. Such arrays are typically called
1646: 561:. The capabilities of the solver will determine what kind of constraints can be expressed in the model, for instance a linear solver such as 914:
Optionally, when a model describes an optimization problem, an objective function to be minimized or maximized can be stated in the model.
528:
This map coloring example also shows features specific to optimization that have no direct equivalent in Java, introduced by the keywords
2503: 557:
keyword and follows the same rules as class declarations. A non-abstract model must be linked to a solver, introduced by the keyword
1764: 1568:. It can then be customized in many different ways, from simple coloring up to providing new widgets for displaying data elements. 124:
problem is to color a map so that regions sharing a common border have different colors. It can be expressed in OptimJ as follows.
2535: 1642:
Rapid application development with OPTIMJ, a practitioner's experience report. David Gravot, Patrick Viry. EURO 2010 (Lisbon)
2496: 2345: 2183: 2143: 2059: 1940: 1759: 1690: 112:
for optimization problems. Here we will review the optimization concepts added to Java, starting with a concrete example.
1603: 2428: 2365: 2232: 2158: 2079: 1965: 1960: 1895: 1824: 1552:
from OptimJ to standard Java, thus providing immediate compatibility with most development tools of the Java ecosystem.
109: 88: 76: 27: 1652:
OptimJ used in an Approximate Subgame-Perfect Equilibrium Computation Technique for Repeated Games, Laval University
2350: 2266: 2227: 2153: 2069: 1955: 1905: 1769: 2034: 1915: 1549: 648:
In the map coloring example, decision variables were introduced together with the range of values they may take.
2247: 1593: 2443: 593: 522: 1651: 2276: 1990: 1729: 22: 2395: 2335: 2212: 1930: 521:
Readers familiar with Java will notice a strong similarity with this language. Indeed, OptimJ is a
1847: 1843: 1191: 906:), then this code is equivalent to the constraints block of the original map coloring example. 1641: 1253:
Comprehensions can also be used to build collections, such as lists, sets, multisets or maps:
932: 2320: 2202: 2123: 2039: 1910: 859:
is a filter: it keeps only the generated values for which the predicate is true (the symbol
525:
of Java: every valid Java program is also a valid OptimJ program and has the same behavior.
2433: 2375: 2315: 2163: 2074: 1970: 1647:
OptimJ used in an optimization model for mixed-model assembly lines, University of MĂĽnster
34: 2473: 2300: 2192: 2113: 2009: 1865: 1598: 108:
OptimJ combines concepts from object-oriented imperative languages with concepts from
2519: 1659: 1047: 1719: 1709: 596:, which basically represent memory locations that can be written to and read from. 121: 96:
glpk, LP or MPS file formats and also supports the following commercial solvers:
2478: 2468: 2418: 2385: 2256: 2237: 2217: 2173: 2168: 2138: 2084: 2054: 1980: 1935: 1819: 1789: 1714: 1704: 1250:
notation used in mathematics, with a syntax compatible with the Java language.
1623: 1317:
Comprehension expressions can have an arbitrary expression as target, as in:
679:
This is just a shorthand equivalent to putting a constraint on the variable.
1748: 1565: 1247: 1000: 923:
and thus provide OR experts with a familiar way of expressing their models.
2403: 2295: 2108: 2004: 1925: 1860: 1794: 562: 1564:
The basic graphical view generated by the compiler is reminiscent of an
2413: 2310: 2019: 2014: 1975: 1880: 1875: 1870: 1804: 1753: 2463: 2355: 2340: 2029: 1890: 1834: 1814: 1548:
OptimJ is available as an Eclipse plug-in. The compiler implements a
1380:// the sum of all f(i,j), for 0<=i<10, 1<=j<=10 and i!=j 738:
Constraints typically come in batches and can be quantified with the
2457: 2423: 2408: 2380: 2370: 2360: 2330: 2325: 2305: 2290: 2261: 2222: 2207: 2197: 2148: 2133: 2128: 2118: 2103: 2064: 2049: 2044: 2024: 1999: 1950: 1945: 1920: 1885: 1855: 1809: 1784: 1779: 1738: 1375:
They can also have an arbitrary number of generators and filters:
1099: 97: 39: 1900: 1774: 1743: 603:
Decision variables have special types introduced by the keyword
1663: 967:. Accessing OptimJ arrays using the standard Java syntax: 64: 939:
contains the age of persons, identified by their name:
1170:
Tuple types and tuple values are both written between
592:
Imperative languages such as Java provide a notion of
252:// neighbouring countries must have a different color 177:// decision variables hold the color of each country 2442: 2394: 2275: 2246: 2182: 2093: 1989: 1842: 1833: 1728: 1697: 1246:This construction is very similar to the big-sigma 70: 60: 45: 33: 21: 1322:// the sum of all squares of integers from 1 to 10 138:// a simple model for the map-coloring problem 1675: 1478:// select name from persons where age > 18 8: 16: 1839: 1682: 1668: 1660: 15: 735:is the standard Java not-equal operator. 1615: 1258:// the set of all integers from 1 to 10 1199:// the sum of all integers from 1 to 10 616:// a var type for a Java primitive type 288:// a main entry point to test our model 849:over all the values in the collection 631:// a var type for a user-defined class 100:, IBM ILOG CPLEX Optimization Studio. 2546:Programming languages created in 2006 2526:Object-oriented programming languages 7: 1594:Object-oriented Modeling with OptimJ 935:or maps. In this example, the array 747:or a predicate (a boolean function) 565:will only allow linear constraints. 2504:Comparison of optimization software 2541:Discontinued programming languages 2531:Mathematical optimization software 1691:Mathematical optimization software 611:type for each possible Java type. 14: 1556:OptimJ GUI and Rapid Prototyping 1: 2497:List of optimization software 1550:source-to-source translation 845:is a generator: it iterates 110:algebraic modeling languages 843:Country c1 : countries 159:// maximum number of colors 116:The example of map coloring 2562: 1599:The OptimJ language manual 2491: 1078:Here each of the entries 882:, and that the predicate 75: 1475: 1377: 1319: 1255: 1196: 1105: 1052: 1005: 969: 941: 866:Assuming that the array 753: 693: 650: 613: 567: 318:// instantiate the model 126: 1544:Development environment 1090:Extended initialization 1048:extensional definition 1001:intensional definition 863:may be read as "if"). 523:conservative extension 2536:Mathematical modeling 959:denoting an array of 483:"Germany: " 435:"Denmark: " 387:"Belgium: " 1082:is initialized with 749:boolean isNeighbor() 594:imperative variables 544:OR-specific concepts 87:is an extension for 1046:or can be given in 1020:"Stephan" 918:Generalist concepts 745:boolean neighboring 46:First appeared 18: 933:associative arrays 927:Associative arrays 857::isNeighbor(c1,c2) 588:Decision variables 366:// print solutions 2513: 2512: 2487: 2486: 1624:"Ateji is closed" 1580:Supported solvers 1141:"Three" 1032:"Lynda" 890:for the couples ( 104:Language concepts 82: 81: 2553: 2386:Xpress NonLinear 2321:Gurobi Optimizer 2238:Xpress Optimizer 2203:Gurobi Optimizer 2174:Xpress NonLinear 2169:Xpress Optimizer 2124:Gurobi Optimizer 2085:Xpress Optimizer 2040:Gurobi Optimizer 1981:Xpress Optimizer 1911:Gurobi Optimizer 1840: 1684: 1677: 1670: 1661: 1634: 1633: 1631: 1630: 1620: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1468: 1465: 1462: 1459: 1456: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1292: 1289: 1286: 1283: 1280: 1277: 1274: 1271: 1268: 1265: 1262: 1259: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1177: 1173: 1166: 1163: 1160: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1085: 1081: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 994: 991: 988: 985: 982: 979: 976: 973: 966: 962: 958: 951: 948: 945: 938: 905: 901: 897: 893: 889: 885: 881: 877: 873: 869: 862: 858: 852: 848: 844: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 750: 746: 741: 734: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 675: 672: 669: 666: 663: 660: 657: 654: 644: 641: 638: 635: 632: 629: 626: 623: 620: 617: 610: 606: 583: 580: 577: 574: 571: 560: 556: 539: 535: 531: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 259: 256: 253: 250: 247: 244: 241: 238: 235: 232: 229: 226: 223: 220: 217: 214: 211: 208: 205: 202: 199: 196: 193: 190: 187: 184: 181: 178: 175: 172: 169: 166: 163: 160: 157: 154: 151: 148: 145: 142: 139: 136: 133: 130: 56: 54: 35:Designed by 19: 2561: 2560: 2556: 2555: 2554: 2552: 2551: 2550: 2516: 2515: 2514: 2509: 2483: 2438: 2434:Octeract Engine 2390: 2376:Octeract Engine 2316:Galahad library 2271: 2242: 2178: 2164:Octeract Engine 2089: 2075:Octeract Engine 1985: 1971:Octeract Engine 1829: 1724: 1693: 1688: 1657: 1638: 1637: 1628: 1626: 1622: 1621: 1617: 1612: 1590: 1582: 1558: 1546: 1538: 1537: 1534: 1531: 1528: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1470: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1379: 1373: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1315: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1263: 1260: 1257: 1244: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1189: 1184: 1175: 1171: 1168: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1097: 1092: 1083: 1079: 1076: 1075: 1072: 1069: 1066: 1063: 1060: 1057: 1054: 1044: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 996: 995: 992: 989: 986: 983: 980: 977: 974: 971: 964: 960: 956: 953: 952: 949: 946: 943: 936: 929: 920: 912: 903: 899: 895: 891: 887: 883: 879: 875: 871: 867: 860: 856: 850: 846: 842: 840: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 748: 744: 739: 732: 729: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 685: 677: 676: 673: 670: 667: 664: 661: 658: 655: 652: 646: 645: 642: 639: 636: 633: 630: 627: 624: 621: 618: 615: 608: 604: 590: 585: 584: 581: 578: 575: 572: 569: 558: 554: 551: 546: 537: 533: 529: 519: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 302: 299: 296: 293: 290: 287: 284: 281: 278: 275: 272: 269: 266: 263: 260: 257: 254: 251: 248: 245: 242: 239: 236: 233: 230: 227: 224: 221: 218: 215: 212: 209: 206: 203: 200: 197: 194: 191: 188: 185: 182: 179: 176: 173: 170: 167: 164: 161: 158: 155: 152: 149: 146: 143: 140: 137: 134: 131: 128: 118: 106: 52: 50: 28:object-oriented 12: 11: 5: 2559: 2557: 2549: 2548: 2543: 2538: 2533: 2528: 2518: 2517: 2511: 2510: 2508: 2507: 2500: 2492: 2489: 2488: 2485: 2484: 2482: 2481: 2476: 2471: 2466: 2461: 2455: 2452: 2448: 2446: 2440: 2439: 2437: 2436: 2431: 2426: 2421: 2416: 2411: 2406: 2400: 2398: 2392: 2391: 2389: 2388: 2383: 2378: 2373: 2368: 2363: 2358: 2353: 2348: 2343: 2338: 2333: 2328: 2323: 2318: 2313: 2308: 2303: 2301:Artelys Knitro 2298: 2293: 2288: 2282: 2280: 2273: 2272: 2270: 2269: 2264: 2259: 2253: 2251: 2244: 2243: 2241: 2240: 2235: 2230: 2225: 2220: 2215: 2210: 2205: 2200: 2195: 2193:Artelys Knitro 2189: 2187: 2180: 2179: 2177: 2176: 2171: 2166: 2161: 2156: 2151: 2146: 2141: 2136: 2131: 2126: 2121: 2116: 2114:Artelys Knitro 2111: 2106: 2100: 2098: 2091: 2090: 2088: 2087: 2082: 2077: 2072: 2067: 2062: 2057: 2052: 2047: 2042: 2037: 2032: 2027: 2022: 2017: 2012: 2010:Artelys Knitro 2007: 2002: 1996: 1994: 1987: 1986: 1984: 1983: 1978: 1973: 1968: 1963: 1958: 1953: 1948: 1943: 1938: 1933: 1928: 1923: 1918: 1913: 1908: 1903: 1898: 1893: 1888: 1883: 1878: 1873: 1868: 1866:Artelys Knitro 1863: 1858: 1852: 1850: 1837: 1831: 1830: 1828: 1827: 1822: 1817: 1812: 1807: 1802: 1797: 1792: 1787: 1782: 1777: 1772: 1767: 1762: 1757: 1751: 1746: 1741: 1735: 1733: 1726: 1725: 1723: 1722: 1717: 1712: 1707: 1701: 1699: 1695: 1694: 1689: 1687: 1686: 1679: 1672: 1664: 1655: 1654: 1649: 1644: 1636: 1635: 1614: 1613: 1611: 1608: 1607: 1606: 1601: 1596: 1589: 1588:External links 1586: 1581: 1578: 1557: 1554: 1545: 1542: 1476: 1378: 1320: 1256: 1197: 1192:Comprehensions 1188: 1187:Comprehensions 1185: 1183: 1180: 1106: 1096: 1093: 1091: 1088: 1084:names.length() 1053: 1006: 970: 942: 928: 925: 919: 916: 911: 908: 754: 694: 684: 681: 651: 614: 589: 586: 576:SimpleColoring 568: 550: 547: 545: 542: 333:SimpleColoring 321:SimpleColoring 147:SimpleColoring 127: 120:The goal of a 117: 114: 105: 102: 80: 79: 73: 72: 68: 67: 62: 58: 57: 47: 43: 42: 37: 31: 30: 25: 13: 10: 9: 6: 4: 3: 2: 2558: 2547: 2544: 2542: 2539: 2537: 2534: 2532: 2529: 2527: 2524: 2523: 2521: 2506: 2505: 2501: 2499: 2498: 2494: 2493: 2490: 2480: 2477: 2475: 2472: 2470: 2467: 2465: 2462: 2459: 2456: 2453: 2451:Artelys Kalis 2450: 2449: 2447: 2445: 2441: 2435: 2432: 2430: 2427: 2425: 2422: 2420: 2417: 2415: 2412: 2410: 2407: 2405: 2402: 2401: 2399: 2397: 2393: 2387: 2384: 2382: 2379: 2377: 2374: 2372: 2369: 2367: 2364: 2362: 2359: 2357: 2354: 2352: 2349: 2347: 2344: 2342: 2339: 2337: 2334: 2332: 2329: 2327: 2324: 2322: 2319: 2317: 2314: 2312: 2309: 2307: 2304: 2302: 2299: 2297: 2294: 2292: 2289: 2287: 2284: 2283: 2281: 2278: 2274: 2268: 2265: 2263: 2260: 2258: 2255: 2254: 2252: 2249: 2245: 2239: 2236: 2234: 2231: 2229: 2226: 2224: 2221: 2219: 2216: 2214: 2211: 2209: 2206: 2204: 2201: 2199: 2196: 2194: 2191: 2190: 2188: 2185: 2181: 2175: 2172: 2170: 2167: 2165: 2162: 2160: 2157: 2155: 2152: 2150: 2147: 2145: 2142: 2140: 2137: 2135: 2132: 2130: 2127: 2125: 2122: 2120: 2117: 2115: 2112: 2110: 2107: 2105: 2102: 2101: 2099: 2096: 2092: 2086: 2083: 2081: 2078: 2076: 2073: 2071: 2068: 2066: 2063: 2061: 2058: 2056: 2053: 2051: 2048: 2046: 2043: 2041: 2038: 2036: 2033: 2031: 2028: 2026: 2023: 2021: 2018: 2016: 2013: 2011: 2008: 2006: 2003: 2001: 1998: 1997: 1995: 1992: 1988: 1982: 1979: 1977: 1974: 1972: 1969: 1967: 1964: 1962: 1959: 1957: 1954: 1952: 1949: 1947: 1944: 1942: 1939: 1937: 1934: 1932: 1929: 1927: 1924: 1922: 1919: 1917: 1914: 1912: 1909: 1907: 1904: 1902: 1899: 1897: 1894: 1892: 1889: 1887: 1884: 1882: 1879: 1877: 1874: 1872: 1869: 1867: 1864: 1862: 1859: 1857: 1854: 1853: 1851: 1849: 1845: 1841: 1838: 1836: 1832: 1826: 1823: 1821: 1818: 1816: 1813: 1811: 1808: 1806: 1803: 1801: 1798: 1796: 1793: 1791: 1788: 1786: 1783: 1781: 1778: 1776: 1773: 1771: 1768: 1766: 1763: 1761: 1758: 1755: 1752: 1750: 1747: 1745: 1742: 1740: 1737: 1736: 1734: 1731: 1727: 1721: 1718: 1716: 1713: 1711: 1708: 1706: 1703: 1702: 1700: 1696: 1692: 1685: 1680: 1678: 1673: 1671: 1666: 1665: 1662: 1658: 1653: 1650: 1648: 1645: 1643: 1640: 1639: 1625: 1619: 1616: 1609: 1605: 1602: 1600: 1597: 1595: 1592: 1591: 1587: 1585: 1579: 1577: 1573: 1569: 1567: 1562: 1555: 1553: 1551: 1543: 1541: 1474: 1376: 1318: 1254: 1251: 1249: 1195: 1193: 1186: 1181: 1179: 1104: 1101: 1094: 1089: 1087: 1051: 1049: 1004: 1002: 968: 940: 934: 926: 924: 917: 915: 909: 907: 864: 854: 752: 736: 731:The operator 692: 688: 682: 680: 649: 612: 607:. There is a 601: 597: 595: 587: 566: 564: 548: 543: 541: 526: 524: 125: 123: 115: 113: 111: 103: 101: 99: 93: 90: 86: 78: 74: 71:Influenced by 69: 66: 65:www.Ateji.com 63: 59: 48: 44: 41: 38: 36: 32: 29: 26: 24: 20: 2502: 2495: 2479:Xpress Kalis 2460:CP Optimizer 1820:Xpress Mosel 1799: 1770:GNU MathProg 1698:Data formats 1656: 1627:. Retrieved 1618: 1583: 1574: 1570: 1563: 1561:dimensions. 1559: 1547: 1539: 1471: 1374: 1316: 1252: 1245: 1190: 1169: 1098: 1077: 1045: 997: 954: 930: 921: 913: 865: 855: 841: 737: 730: 689: 686: 678: 647: 602: 598: 591: 552: 527: 520: 122:map coloring 119: 107: 94: 84: 83: 2469:Mathematica 2419:Mathematica 2257:Mathematica 2218:Mathematica 2139:Mathematica 2055:Mathematica 1936:Mathematica 1906:GLPK/GLPSOL 1790:Mathematica 1705:Mathematica 963:indexed by 756:constraints 696:constraints 683:Constraints 538:constraints 339:// solve it 255:constraints 2520:Categories 1629:2012-01-11 1610:References 1604:OptimJ GUI 910:Objectives 884:isNeighbor 801:isNeighbor 1749:APMonitor 1566:OLAP cube 1248:summation 1050:, as in: 1003:, as in: 955:The type 870:contains 868:countries 851:countries 792:countries 777:countries 2404:ANTIGONE 2296:ANTIGONE 2186:, MISOCP 2109:ANTIGONE 2005:ANTIGONE 1976:SYMPHONY 1926:Lp_solve 1861:ANTIGONE 1795:MiniZinc 1730:Modeling 1484:multiSet 892:Belgium 886:returns 671:nbColors 563:lp solve 246:nbColors 222:nbColors 198:nbColors 165:nbColors 132:examples 23:Paradigm 2414:Couenne 2311:Couenne 2279:, MINLP 2250:, MISDP 2097:, MIQCP 1835:Solvers 1754:ECLiPSe 1511:persons 1282:hashSet 1267:Integer 1261:HashSet 1156:myTuple 1123:myTuple 904:Denmark 900:Germany 898:) and ( 896:Germany 880:denmark 876:germany 872:belgium 783:Country 768:Country 720:denmark 714:germany 708:germany 702:belgium 659:germany 637:MyClass 582:lpsolve 507:germany 477:println 459:denmark 429:println 411:belgium 381:println 348:extract 279:denmark 273:germany 267:germany 261:belgium 234:germany 210:denmark 186:belgium 153:lpsolve 129:package 61:Website 51: ( 2464:Gecode 2356:NLPQLP 2341:MIDACO 2030:FortMP 1993:, MIQP 1966:SoPlex 1891:FortMP 1815:TOMLAB 1800:OptimJ 1502:Person 1182:Ranges 1147:String 1117:String 1100:Tuples 1095:Tuples 1080:length 1070:length 1058:length 965:String 762:forall 740:forall 579:solver 570:public 559:solver 549:Models 465:System 417:System 369:System 306:String 294:static 291:public 150:solver 141:public 85:OptimJ 17:OptimJ 2474:JaCoP 2458:CPLEX 2454:Comet 2424:LINDO 2409:BARON 2381:WORHP 2371:SNOPT 2361:NPSOL 2346:MINOS 2331:LINDO 2326:IPOPT 2306:BARON 2291:APOPT 2262:MOSEK 2223:MOSEK 2208:LINDO 2198:CPLEX 2149:MOSEK 2144:MINOS 2134:LINDO 2129:IPOPT 2119:CPLEX 2104:APOPT 2065:MOSEK 2060:MINOS 2050:LINDO 2045:IPOPT 2035:HiGHS 2025:CPLEX 2000:APOPT 1951:MOSEK 1946:MINTO 1941:MINOS 1921:LINDO 1916:HiGHS 1886:CPLEX 1856:APOPT 1825:ZIMPL 1810:Pyomo 1780:LINDO 1760:Gekko 1739:AIMMS 1732:tools 1035:-> 1023:-> 828:color 822:color 573:model 555:model 530:model 495:value 447:value 399:value 360:solve 144:model 98:MOSEK 40:Ateji 2429:SCIP 2366:SCIP 2336:LOQO 2233:SCIP 2213:LOQO 2184:SOCP 2159:SCIP 2080:SCIP 1961:SCIP 1931:LOQO 1901:GLOP 1848:MILP 1805:PuLP 1775:JuMP 1765:GAMS 1756:-CLP 1744:AMPL 1529:> 1496:name 1270:> 1264:< 1174:and 1064:name 888:true 878:and 309:args 300:main 297:void 89:Java 77:Java 53:2006 49:2006 2351:NAG 2286:AOA 2277:NLP 2267:NAG 2248:SDP 2228:NAG 2154:NAG 2095:QCP 2070:NAG 2020:CLP 2015:CBC 1956:NAG 1896:GCG 1881:CBC 1876:CLP 1871:BCP 1785:OPL 1720:sol 1710:MPS 1526:age 1487:(){ 1434:int 1419:int 1392:sum 1383:int 1352:int 1334:sum 1325:int 1294:int 1285:(){ 1223:int 1211:sum 1202:int 1144::); 1129:new 1111:int 1073:(); 1055:int 1011:age 1008:int 990:age 972:age 961:int 957:int 947:age 944:int 937:age 751:. 656:int 653:var 634:var 622:int 619:var 609:var 605:var 534:var 510:)); 471:out 462:)); 423:out 414:)); 375:out 363:(); 351:(); 336:(); 330:new 231:int 228:var 207:int 204:var 183:int 180:var 162:int 2522:: 2444:CP 2396:GO 1991:QP 1846:, 1844:LP 1715:nl 1532:18 1461:!= 1449:10 1446:.. 1428:10 1370:}; 1367:10 1364:.. 1358:in 1312:}; 1309:10 1306:.. 1300:in 1241:}; 1238:10 1235:.. 1229:in 1178:. 1176::) 1172:(: 1132:(: 1120::) 1108:(: 1086:. 1041:}; 1038:29 1026:37 978:37 902:, 894:, 874:, 853:. 847:c1 825:!= 816:)) 813:c2 807:c1 786:c2 771:c1 733:!= 717:!= 705:!= 668:.. 662:in 540:. 536:, 532:, 276:!= 264:!= 243:.. 237:in 219:.. 213:in 195:.. 189:in 1683:e 1676:t 1669:v 1632:. 1535:} 1523:. 1520:p 1517:: 1514:, 1508:: 1505:p 1499:| 1493:. 1490:p 1481:` 1467:} 1464:j 1458:i 1455:: 1452:, 1443:1 1440:: 1437:j 1431:, 1425:: 1422:i 1416:| 1413:) 1410:j 1407:, 1404:i 1401:( 1398:f 1395:{ 1389:= 1386:k 1361:1 1355:i 1349:| 1346:i 1343:* 1340:i 1337:{ 1331:= 1328:k 1303:1 1297:i 1291:| 1288:i 1279:` 1276:= 1273:s 1232:1 1226:i 1220:| 1217:i 1214:{ 1208:= 1205:k 1165:; 1162:1 1159:# 1153:= 1150:s 1138:, 1135:3 1126:= 1114:, 1067:. 1061:= 1029:, 1017:{ 1014:= 993:; 987:= 984:x 981:; 975:= 950:; 861:: 837:} 834:} 831:; 819:{ 810:, 804:( 798:: 795:, 789:: 780:, 774:: 765:( 759:{ 726:} 723:; 711:; 699:{ 674:; 665:1 643:; 640:y 628:; 625:x 516:} 513:} 504:. 501:m 498:( 492:. 489:m 486:+ 480:( 474:. 468:. 456:. 453:m 450:( 444:. 441:m 438:+ 432:( 426:. 420:. 408:. 405:m 402:( 396:. 393:m 390:+ 384:( 378:. 372:. 357:. 354:m 345:. 342:m 327:= 324:m 315:{ 312:) 303:( 285:} 282:; 270:; 258:{ 249:; 240:1 225:; 216:1 201:; 192:1 174:; 171:4 168:= 156:{ 135:; 55:)

Index

Paradigm
object-oriented
Designed by
Ateji
www.Ateji.com
Java
Java
MOSEK
algebraic modeling languages
map coloring
conservative extension
lp solve
imperative variables
associative arrays
intensional definition
extensional definition
Tuples
Comprehensions
summation
source-to-source translation
OLAP cube
Object-oriented Modeling with OptimJ
The OptimJ language manual
OptimJ GUI
"Ateji is closed"
Rapid application development with OPTIMJ, a practitioner's experience report. David Gravot, Patrick Viry. EURO 2010 (Lisbon)
OptimJ used in an optimization model for mixed-model assembly lines, University of MĂĽnster
OptimJ used in an Approximate Subgame-Perfect Equilibrium Computation Technique for Repeated Games, Laval University
v
t

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑