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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.