www.artelys.com !"#$%&'%()*%#+,!-#
Xpress-Kalis A CP Solver integrated in the FICO Xpress Optimization Suite Alexandre Marié, Sylvain Mouret, Susanne Heipcke
© 2011 Fair Isaac Corporation. Confidential. 1 © 2011 Fair Isaac Corporation. Confidential. 1
Profile The leader in predictive analytics for decision management Founded: 1956 NYSE: FICO Revenues: $676 million (fiscal 2012)
Products and Services
Scores and related analytic models Analytic applications for risk management, fraud, marketing, mobility Tools for decision management
Clients and Markets
5,000+ clients in 80 countries Industry focus: Banking, insurance, retail, health care
Recent Rankings
#1 in services operations analytics (IDC) #6 in worldwide analytics analytics software (IDC) #7 in Business Intelligence, CPM and Analytic Applications (Gartner) #26 in the FinTech 100 (American Banker)
Offices
20+ offices worldwide, HQ in San Jose, California, USA 2,400 employees Regional Hubs: San Rafael (CA); San Diego (CA); New York; Roseville, MN; London; Birmingham (UK); Istanbul; Madrid; Munich; Sao Paulo; Bangalore; Beijing; and Singapore.
FICO Snapshot
© 2011 Fair Isaac Corporation. Confidential. 2 © 2013 Fair Isaac Corporation. Confidential. 2
FICO Product Portfolio For Specific Decision Processes
Marketing Origination Customer Management
Collections and Recovery
Fraud Management Mobile
Applications
FICO® Customer Dialogue Manager
FICO® Analytic Offer Manager
FICO® Origination Manager
FICO® TRIAD®
Customer Manager
FICO® Debt Manager
FICO® Recovery Management
System
FICO® Falcon® Fraud Manager
FICO® Insurance Fraud Manager FICO® Claims
Fraud Manager
FICO® Adeptra® Fraud Resolution FICO® Adeptra® Risk Intervention
Manager
Custom / Embedded Analytics
Targeting Models
Time-to-Event Analytics
Consumer and Small
Business Risk Models
Economic Impact Models
Behavior Scorecards Transaction
Analytics
Collections Scores
Consortium Fraud Models Custom Fraud
Models Application Fraud
Models
For Any Decision Process
Scores B2B: FICO® Score FICO® Credit Capacity Index FICO® Insurance Risk Scores B2C: myFICO®
Tools Business Rules Management: FICO® Blaze Advisor® Predictive Analytics: FICO® Model Builder FICO® Model Central Optimization: FICO® Xpress Optimization Suite FICO® Decision Optimizer
Professional Services
Custom Analytics Operational Best Practices Strategy Design and Optimization
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +#
XPRESS-KALIS
More than a CP solver!
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# -#
FICO XPRESS OPTIMIZATION SUITE
!"#$%&'(')*+,'-./&'+)*0,'-.1$
23*4)',$&'5637+8*-$9:67)78'5$
;*)('35$
.&*%//0@EF##-.'<3:.'&$=75>:)$?-(73*-,'-.$
.&*%//0@;/4<>'#@++)76:8*-$A'+)*0,'-.$
.&*%//0G9/%3#B*&')7-<$:-&$+3*<3:,,7-<$):-<>:<'$
.&*%//01234/###
! C2/B#2$#
.&*%//0A&B(4C%*#
.&*%//0H9;I4;%2*#
#! I8#! G@8#! J8#! G@J8#! J7J8#! G@J7J8##
! J8#! J7J8#! $A78#! HI8###
;7,+)'D$E+8,7F'3$
G:337'3$E+8,7F'3$
B#2$E+8,7F'3$
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# K#
" Developed by Artelys since 2001 " Object-oriented environment to model and solve complex
problems using constraints programming (CP) and mixed-integer programming (MIP) techniques
" C++ libraries " Many applications successfully deployed and in use
ARTELYS KALIS (IN A NUTSHELL)
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# L#
EXAMPLE OF APPLICATIONS
!"!#$%&'!"()#*"+!",#M -./0123/4'56744849'740':2;<016849'
M +784=<4742<'56744849'
+>"?@>A,?#)"$'M -./0123/4':2;<016849'M B/8:=':2;<016849'M (<;826<'#/1349'
,#>"C-*#,'M #<:/1.2<'766/273/4'M +784=<4742<'-6744849'
B?+>"'#!CC*?#A!C'M A.<D'./:=<.849&'./=73/4'M ,8E<=7F6849'
"!,G*#H&',!I!A*+C'M "<=D/.J'0<:894'M @.<K1<42L'7::894E<4='
>'G)M!'#>"$!'*@'>--I)A>,)*"C'
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# "#
" A flexible framework for constraint optimization, result of joint efforts between Artelys and FICO (Xpress Team)
" Eases the experimentation with alternative model formulations and simulation of different data scenarios: quick prototyping
" Seamless integration within the FICO Xpress Optimization Suite
XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# N#
" A Mosel module: implement and solve CP problems using the Mosel language " D/%*0O*4%;=3P#(9=%34;<#9O#Q9(&3%R#/4'D2B9;/S#;9'#*%/%*:%=#'9#/9TU2*%#/&%Q4234/'/#
" O*9(#O9*(D32B9;#'9#4(&3%(%;'2B9;#4;#2#/>9*'#32&/%#9O#B(%#" /(233#&%*O9*(2;Q%#9:%*>%2=#" D/%#/'2;=2*=#G9/%3#O2Q434B%/#O9*#=2'2#>2;=34;<S#(9=%3#2;23P/4/S#=%)D<<4;<S#V#
" &9//4)434'P#'9#4;'%*2Q'#U4'>#9'>%*#/93:%*/#WA&B(4C%*#2;=#H9;I4;%2*X#" &9//4)434'P#'9#4(&3%(%;'#2=:2;Q%=#/93DB9;#/'*2'%<4%/#2;=#>%D*4/BQ/#
XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# Y#
XPRESS-KALIS
!"#$%&'()"*&+,&-($"-.'/01""""1$)2&+&3450$%&'()6(-57"89:"1$)2&+&3450$%&'()6'-57";9"!!"#$%&'&()*+,!!!!!<=">"?@A@7@B@7@C@7@#@7@D@7@E@7@F@7@G@7@H@I"!"C.('3/1""""""J=">"8KK;"!"L.M1"""""*N"&++&O4<=7J=9".%"P2*&+"!"Q'3-$+"&11,R/$0")."P$(("4S7O9""!!#+"-"#$%&'&()*+,!!!!"#&)&"%+.3"5TU$"F'&+0,&/57"V;"W'(O7"VXXYK"U))2NZZMMMKR'&+0,&/KP.K'[Z1'0.['"""*4@A@789>\:"*4@E@789>]:"*4@B@7V9>Y:"*4@F@7V9>^:"""*4@A@7]9>V:"*4@D@7]9>_:"*4@G@7]9>`:"*4@#@7^9>8:""""*4@H@7^9>Y:"*4@C@7Y9>]:"*4@F@7Y9>;:"*4@A@7`9>`:""""*4@E@7`9>^:"*4@B@7_9>_:"*4@D@7_9>V:"*4@H@7_9>]:"""*4@C@7\9>^:"*4@G@7\9>8:"*4@#@7;9>;:"*4@H@7;9>\:""!"A((a0,%%$+$/)"*&('$1",/"+.M1""""%.+&((4O",/"J=9!&%%.")//#'#+(4'/,./4S",/"<=9"?*4S7O9I9""!"A((a0,%%$+$/)"*&('$1",/"P.('3/1""""%.+&((4S",/"<=9"&%%.")//#'#+(4'/,./4O",/"J=9"?*4S7O9I9""!"A((a0,%%$+$/)"*&('$1",/"]S]"1b'&+$1"""%.+&((4,",/"XKKV9"0."""""&%%.")//#'#+(4'/,./4S",/"?@A@7@B@7@C@I7"O",/"?8c]d,7Vc]d,7]c]d,I9"?*4S7O9I9"""""""&%%.")//#'#+(4'/,./4S",/"?@#@7@D@7@E@I7"O",/"?8c]d,7Vc]d,7]c]d,I9"?*4S7O9I9""""""&%%.")//#'#+(4'/,./4S",/"?@F@7@G@7@H@I7"O",/"?8c]d,7Vc]d,7]c]d,I9"?*4S7O9I9""""$/0a0."""!"=.(*$")U$"2+.-($3""""1.(P)N>"X""""MU,($"4$0./)+".+#1(.,*%9"0."""""1.(P)c>8"2+,/)61.('),./41.(P)9""""$/0a0.""""M+,)$(/45Q'3-$+".%"1.('),./1N"57"1.(P)9""""M+,)$(/45T,3$"12$/)",/"$/'3$+&),./N"57"R$)2&+&345CefghTATHeQ6THfD597"51$P59""""M+,)$(/45Q'3-$+".%"/.0$1N"57"R$)2&+&345Qe#D=599""
(>#)>NI!C'
M>,>'
A*"C,#>)",C'
C*I()"$##
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# Z#
" Xpress-IVE: solver-specific features for Xpress-Kalis " :4/D234C2B9;#9O#78#/%2*Q>#'*%%#" /%2*Q>#/'2B/BQ/#" )D43'04;#/Q>%=D34;<#*%&*%/%;'2B9;#U4'>#[2;\#Q>2*'#2;=#*%/9D*Q%#D/2<%#=42<*2(#
" D/%#/'2;=2*=#@EF#O2Q434B%/#O9*#U9*]4;<#U4'>#(9=%3/S#=%^;4;<#D/%*#<*2&>/S#=%)D<<4;<S#%'Q_#
XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !,#
FEATURES
Specialized for your problems…
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !!#
" Decision Variables " `4/Q*%'%#W/%'#9*#*2;<%#9O#4;'%<%*/X#" 79;B;D9D/#Wa92B;<0&94;'#4;'%*:23X#
" Constraints " I4;%2*#b#H9;34;%2*#
" /D(S#&9U%*S#&*9=DQ'S#=4:4=%S#%R&9;%;B23S#V#" I9<4Q23#
" W6#9*#cXS#W6#2;=#cXS#W6"cXS#W6decX#" $P()934Q#
" 233f=4g%*%;'S#2)/S#=4/'2;Q%S#%3%(%;'#W!`b+`XS#9QQD**%;Q%S#=4/'*4)D'%S#4(&34%/S#%hD4:S#QPQ3%S#%'Q_#
" i/%*0=%^;%=#Q9;'*24;'/#
FEATURES OF XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !+#
" Search " ^;=#9;%#b#233#b#)%/'#W2QQ9*=4;<#'9#/9(%#9&B(4C2B9;#Q*4'%*49;X#/93DB9;W/X#
" 79;^<D*2)3%#&*%0=%^;%=#/'*2'%<4%/#" $%2*Q>#U4'>#*%/'2*'S#=4Q>9'9(4Q#9)j%QB:%#/%2*Q>S#V#
" 7D/'9(4C2)3%#Q>94Q%#9O#)*2;Q>4;<#/Q>%(%/#" F;D(%*2B9;#9O#:23D%/S#=9(24;#/&34k;<S#)*2;Q>4;<#9;#=4/jD;QB9;/S#V#
" i/%*0=%^;%=#/%2*Q>#>%D*4/BQ/#
FEATURES OF XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !-#
" Scheduling " l4<>03%:%3#(9=%34;<#9)j%Q'/#O9*#/Q>%=D34;<#W'2/]/#b#*%/9D*Q%/X#" 7D(D32B:%#2;=#=4/jD;QB:%S#*%;%U2)3%#b#;9;0*%;%U2)3%#*%/9D*Q%/#Q9;/'*24;'/#
" $%'D&#B(%/S#*%/9D*Q%#4=3%#B(%/S#*%/9D*Q%#D/2<%#&*9^3%/#" $Q>%=D34;<#9*4%;'%=#/%2*Q>#&*9Q%//#
" Example: job-shop scheduling " $Q>%=D3%#'>%#&*9=DQB9;#9O#2#/%'#9O#j9)/#9;#2#/%'#9O#(2Q>4;%/_#" F:%*P#j9)#4/#&*9=DQ%=#)P#2#/%hD%;Q%#9O#'2/]/S#%2Q>#9O#'>%/%#'2/]/#4/#&*9Q%//%=#9;#2#=4g%*%;'#(2Q>4;%_#
" 6#(2Q>4;%#&*9Q%//%/#2'#(9/'#9;%#j9)#2'#2#B(%_#
SCHEDULING WITH XPRESS-KALIS
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !K#
" Scheduling model " D/4;<#'2/]/#2;=#D;2*P#*%/9D*Q%#9)j%Q'/#" =%O2D3'#/Q>%=D34;<#/%2*Q>#
EXAMPLE: JOBSHOP SCHEDULING
0$P(&+&),./1""WeB=">"8KKQW " " " "!"=$)".%"i.-1""fACG">"8KKQf " " " "!"=$)".%"+$1.'+P$1""LD=N"&++&O4WeB=7fACG9".%",/)$R$+"!"L$1.'+P$"'1$".%")&1[1""#hLN"&++&O4WeB=7fACG9".%",/)$R$+"!"#'+&),./1".%")&1[1"""+$1N"&++&O4fACG9".%"P2+$1.'+P$ " "!"L$1.'+P$1"")&1[N"&++&O4WeB=7fACG9".%"P2)&1["!"T&1[1"$/0a0$P(&+&),./1""KKK " " " " "!"H/,),&(,j$")U$"0&)&"!
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !L#
EXAMPLE: JOBSHOP SCHEDULING
"GeLHkeQN>"1'34i",/"WeB=7"3",/"fACG9"#hL4i739""%.+&((4i",/"WeB=9"R$)$/04)&1[4i7Qf99"l>"GeLHkeQ""!"=$)),/R"'2")U$"+$1.'+P$1"4P&2&P,)O"89""%.+&((43",/"fACG9"""1$)6+$1.'+P$6&))+,-')$14+$14397"mAnH=6hQALJ6LD=ehLCD7"89""!"=$)),/R"'2")U$")&1[1"40'+&),./17"+$1.'+P$"'1$09""%.+&((4i",/"WeB=7"3",/"fACG9"""1$)6)&1[6&))+,-')$14)&1[4i7397"#hL4i7397"+$14LD=4i73999""!"g+$P$0$/P$"P./1)+&,/)1"-$)M$$/")U$")&1[1".%"$*$+O"i.-""%.+&(("4i",/"WeB=7"3",/"8KKQfa89"""1$)1'PP$11.+14)&1[4i7397"?)&1[4i73c89I9""!"=.(*$")U$"2+.-($3"o"2+,/)"1.('),./"",%"P261PU$0'($4R$)3&[$12&/9lpX")U$/"""M+,)$(/45T.)&("P.32($),./"),3$N"57"R$)1.(4R$)3&[$12&/99""$/0a,%"!
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !"#
" Xpress-IVE: automated display (Gantt chart, resource diagrams) of results for scheduling problems
EXAMPLE: JOBSHOP SCHEDULING
[2;\#Q>2*'5#`%'243%=#'2/]#4;O9*(2B9;5#
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !N#
" Integration of CP and MIP algorithms
MIP/CP INTEGRATION
M @;O%*%;Q%#(%'>9=/#M 79;Q4/%#(9=%334;<#M FR&394'/#39Q23#Q9;/'*24;'#/'*DQ'D*%#
78#
M m%32R2B9;#(%'>9=/#M `D234'P#'>%9*P#M FR&394'/#<39)23#(2'*4R#/'*DQ'D*%#
G@8#
G@8#2;=#78#>2:%#Q9(&3%(%;'2*P#/'*%;<'>/#
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !Y#
" Automatic linear relaxations generated by Kalis " 2:2432)3%#O9*#34;%2*#Q9;/'*24;'/S#2330=4g%*%;'S#9QQD**%;Q%S#=4/'*4)D'%S#(4;4(D(b(2R4(D(S#2)/93D'%#:23D%S#=4/'2;Q%S#%3%(%;'S#QPQ3%S#39<4Q23#W4(&34%/S#9*S#2;=S#%hD4:X#
" Possibility to display and extend the linear relaxations generated by Kalis (or else define your own)
" Linear relaxations solved by Xpress-Optimizer " Fully automatic, configurable or even user-defined interaction " Can be used to solve min max problems found in game theory
MIP/CP INTEGRATION
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# !Z#
APPLICATION EXAMPLE
Nuclear Power Plant Preventive Maintenance Planning
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +,#
" Schedule nuclear power plant preventive maintenances " Y#P%2*#&%*49=#O9*#LY#;DQ3%2*#*%2Q'9*/#
" Different kinds of maintenance stops: " F:%*P#P%2*#b#L#P%2*/#b#!,#P%2*/#WLbYb!K#U%%]/X#" G2R4(D(#=4/'2;Q%#4;#B(%#)%'U%%;#'U9#/'9&/#
" Subject to cumulative resource constraints: " $&%Q4^Q#'993#;%%=%=#'9#*%(9:%#2;=#*%&32Q%#'>%#*%2Q'9*#Q9:%*#O9*#!,#P%2*/#(24;'%;2;Q%#
" l4<>3P#/&%Q4234C%=#(24;'%;2;Q%#9&%*2'9*/#2;=#%;<4;%%*/#2*%#;%%=%=#O9*#'>%/%#Q9(&3%R#9&%*2B9;/#
" Enough active power plants to satisfy demand
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +!#
Scheduling subproblem
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# ++#
Planning subproblem
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +-#
Combined subproblem
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +K#
" Main difficulty: " 8*9=DQB9;#2;=#(24;'%;2;Q%#'2/]/#(D/'#)%#/Q>%=D3%=#9;#2#=243P#)2/4/#
" 8*9=DQB9;#&9U%*#2;=#=%(2;=#=2'2#2*%#'9#)%#=%23'#U4'>#9;#2#(9;'>3P#)2/4/#
" Need for a problem-specific constraints that links production tasks with production power variables ##n2/]#&*9j%QB9;#Q9;/'*24;'/#
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +L#
Task projection constraints
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +"#
Solution display in IVE
PREVENTIVE MAINTENANCE PLANNING
!"#$%&'%()*%#+,!-# .&*%//01234/5#6#78#/93:%*#4;'%<*2'%=#4;#'>%#?@7A#.&*%//#A&B(4C2B9;#$D4'%# +N#
ANY QUESTIONS?
Thank you for your attention