0

파이썬에서 선형 프로그래밍 문제에 제약 조건을 추가하려고 시도 중입니다. pulp 라이브러리를 사용하고 있습니다. 나는 아래 코드를 시도했다.파이썬 펄프 제약

for week in range(14,52), i in I.index: 
    k = week 
    model += sum(x[(i, j, week, B)] for week in range(k, k+13), 
             j in J.index) <= 1 

I와 J는 다음과 같은 한 인덱스

I.index = ['A','B','C'] 
J.index = [1,2,3] 

내가 오류가 SyntaxError: Generator expression must be parenthesized if not sole argument입니다. 이 링크를 연구했습니다. Generator expression must be parenthesized if not sole argument 그러나 문제가 해결되지 않은 것 같습니다. 어떤 도움을 주셔서 감사합니다.

+1

IDK 펄프를 사용하는 경우가 훨씬 더 빨리 될 것입니다,하지만 난 생각 두안의 의견은 제대로 표시 당신의 첫 번째 라인조차도 잘못되었다 :'for week (range (14,52), I.index) '와 같이 컴파일된다. 그래서 for 루프는 2 개 원소를 반복한다. 'range' 생성자 (아마도 이것은 문제입니다) 그리고 두 번째 것은 bool 문입니다 ([1,2,3] == True에서 1과 같음) –

답변

0

또는 사용되는 구문이

for week in range(14,52), i in I.index: 
    k = week 
    model += sum(x[(i, j, week, B)] for week in range(k, k+13) 
            for j in J.index) <= 1 

해야하지만,이 경우는 lpSum() 함수를

for week in range(14,52), i in I.index: 
    k = week 
    model += lpSum(x[(i, j, week, B)] for week in range(k, k+13) 
            for j in J.index) <= 1