The COIN-OR Optimization Suite: Open Source Tools for Optimization Part 3: Python Tools Ted Ralphs INFORMS Computing Society Biennial Meeting Richmond, VA, 10 January 2015 T.K. Ralphs (Lehigh University) COIN-OR January 10, 2015
Outline Introduction to Python 1 Python Tools in COIN-OR 2 CyLP yaposib PuLP and Dippy Pyomo GiMPy GrUMPy CuPPy T.K. Ralphs (Lehigh University) COIN-OR January 10, 2015
Outline Introduction to Python 1 Python Tools in COIN-OR 2 CyLP yaposib PuLP and Dippy Pyomo GiMPy GrUMPy CuPPy T.K. Ralphs (Lehigh University) COIN-OR January 10, 2015
Why Python? Pros As with many high-level languages, development in Python is quick and painless (relative to C++!). Python is popular in many disciplines and there is a dizzying array of packages available. Python’s syntax is very clean and naturally adaptable to expressing mathematical programming models. Python has the primary data structures necessary to build and manipulate models built in. There has been a strong movement toward the adoption of Python as the high-level language of choice for (discrete) optimizers. Sage is quickly emerging as a very capable open-source alternative to Matlab. Cons Python’s one major downside is that it can be very slow. Solution is to use Python as a front-end to call lower-level tools. T.K. Ralphs (Lehigh University) COIN-OR January 10, 2015
Drinking the Python Kool-Aid T.K. Ralphs (Lehigh University) COIN-OR January 10, 2015
����������������������� ������������������� ���������������������� ������� ����������� ������������ ���������� !�"�#��$������ %�������&''&
� (��������������)��)� � (��������������� � �������������) � ����� �������� ��������������������������� ���������� ���������� � *�����"��������)������ � +�������������,�--��������������� � .�/��� �������� � *�����0�����������������"�����
� ������������1�����2 � �����������3��������0������)� � ���������������3������0�������������0������� � ��������� � ������������������ � ����������4����������� � ��������4���������� � ������� � ���������� � ������4�����������������
� �����������������)��������)��)� � ����������������������)�"��������������� � ����������������)�������"��������� � �"������������3�(��+�5�6(70��������5������������7 � ����������������������������������������3 888�������19����0�"����1 888�������19����0�"����1 9����0�"���� 888���:�;&<<& 888��,& =& 888�>������������������
� ���"����������)���0����������������������� >�����?�� ������19����0�"����1 ��:�;&<<& �,& ������� ������� � +�������������������������� @8�������������?�� 9����0�"���� =&
� !����������������� � !�����������)��5��������A�7 � �����������������A���������������������������� � !�������� �����������3�)������)�:�1������"����1 �����������3�)������)�:�1������"����1 ����3�)������)�:�;&<<& ������)������) � ���������� ������2��/���13 � +�������������0��������0��������
��� ��������� 3 "����� ��������� 3 ���������� ���������� B����� ��������� 3 ���������� C�??? ���� ��� ��� �������� 3 ����3 ����3 ���������� ���������� ���������� ����$ ��������
' (���3 K��)�L (��������3 ����5��:�'G���H�&'G��--7 E ������������)�5&'73 I ����DE�::�'3 M ���5�DE�::�'7�I ������� ������51D�J�10��7G ����DF�::�'3 ����DF�::�'3 N N ���5�DF�::�'7�I ���5�DF�::�'7�I ������1K��)�L1 ;& ������1 1 ������51K��)�LJ�17G�O O ;F ������51 J�17G K��)�L O ;P
� ������������������ � ;&0�E?;Q0�'�RR 0�'E==0�5 ;-&7<E,Q<<F0����5�70�'H�H:F � � �������������)�4����$��) � ;HH;M0��4'���0��S;0�@�0��T� � (���)����������������������3 5 � ;,&� 8�' >�;?,&?� 8�'?F0������5;7,&� 8�'?F � ��������������������������� � ���)�5�������������������70�������� � &�<<;''� 8�;&M=MF'M''&&P&&NQ';QNM='E&'FE=M� (���������&?&�����������0�&<<;''�������������������) � � ;/<<&� 8�5 ;-'/7
� 1�����1-1"����1 1�����"����1 >� ������������� � 1�����1<E 1���������������1�>� ���������� � 1�����1B'C 1�1 >��������) � 1�����1B ;C � 1�����1B ;C 1�1 1�1 >�5��������7 >�5��������7 � 1�����1B;3QC 1���1 >�������) � ���51�����17 F >���A� � 1�����1�H�1/����1 ; >����������� � 1�1����1�����1 ; >������� � 1�������3�J�����0�J'EE����0�J������1 � U���)���V�����U��111�������V�����111���1��"������)�1
� R��������������0� ��� ���� ��$�����$�������� � ��:�BNN0�1���������������10�B1��10�1���10�1"���1CC � *��������������������������)� � �-�0��<E0��B'C0��B ;C0��B;3C0����5�7 � (������������������)����� � (������������������)����� � �B'C�:�NP � �B;3&C�:�B1�������10�1��10�1����1C 8�BNP0�1�������10�1��10�1����10�B1��10�1���10�1"���1CC � �����B ;C >� 8�BNP0�1�������10�1��10�1����1C
888���:����)�5F7 >�B'0;0&0E0QC 888��?������5F7 >�B'0;0&0E0Q0FC 888��?���57 >�B'0;0&0E0QC F 888��?������5'0�Q&7 >�BQ&0'0;0&0E0QC 888��?���5'7 888��?���5'7 >�B'0;0&0E0QC >�B'0;0&0E0QC F?F 888��?�������57 >�BQ0E0&0;0'C 888��?����57 >�B'0;0&0E0QC
Recommend
More recommend