2017-04-20 5 views
-1

거기에, 나는 펄프가 없다. 온라인에서 얻은 몇 가지 예에서 펄프를 배웁니다. 이 예제들은 매우 유용하며 mtself가 간단한 모델을 작성할 수있게되었습니다. 하지만 여전히 복잡한 모델을 구축하기가 어려우며, 드물게 희소 매트릭스가있는 모델입니다.스파 스 매트릭스의 변수와 제약 조건을 생성하는 데 펄프를 사용하는 방법은 무엇입니까?

희소 행렬 및 복잡성 제약 조건이있는 복잡한 예제로 친절하게 게시 해주십시오. y = LpVariable.dicts ("y", (Factorys, Customers), 0,1, LpBinary)와 같이 간단한 변수 대신 필요한 변수 만 만드는 방법을 배우고 싶습니다.

다른 질문이 있습니다. 대부분의 변수가 모델에서 쓸모가없는 변수를 정의하기 위해 단순히 y = LpVariable.dicts ("y", (Factorys, Customers)), 0,1, LpBinary를 사용하면 어떻게됩니까? 객관적인 함수와 제약 조건, 그리고 쓸모없는 변수를 명시 적으로 0으로 설정하는 몇 가지 제약 조건을 추가합니까? 펄프 알고리즘은 처음에는 이러한 uesless 변수를 식별하고 먼저 제거한 다음 크기 축소 문제를 해결하기 위해 Integer Programming 알고리즘 (예 : B & B 또는 B & C)을 실행할 수 있습니까? 이것이 사실이라면, "0으로 쓸모없는 변수를 설정하는"방법은 솔루션 속도를 전혀 감소시키지 않을 것입니다. 내가 맞습니까?

답변

0

이 특히

http://www.stuartmitchell.com/journal/2012/2/3/my-top-n-tips-for-python-coding-in-optimisation-1.html

가이 드문 드문 첫번째 공장과 고객의 세트를 생성하는 데 도움이 될 수 있습니다. 모델 빌드 시간이 길 수 있도록

factories_customers = [(f,c) for f in factories for c in customers 
          if <insert your condition here>] 

그런 다음 "쓸모없는"변수 및 제약 조건을 제거하지 않습니다

y = LpVariable.dicts("y", factories_customers ,0,1,LpBinary) 

펄프를 사용합니다.

그러나 솔루션 알고리즘 (CBC는 기본적으로 변수를 제거하는 사전 해결 알고리즘을 포함합니다).

+0

고맙습니다. 스튜어트. 따라서 쓸데없는 변수를 0으로 설정하면 솔루션 시간에 큰 차이가 없습니다. 모델 구축 시간의 차이점. 모델 구축 시간은 대개 초 또는 1 분 정도이며, 솔루션 시간에 비해 모델 구축 시간은 매우 짧습니다. – liywliyw