차라리 간단 목적 함수를 최소화하고 싶지만, 어떻게 든 제가하는 방법을 보았다 파이썬 API가선형 및 이차 용어는
을 CPLEX하는에서 올바른 호출을하는 데 문제가 set_quadratic
과 set_quadratic_coefficients
here을 사용해도 내 문제가 해결되지 않았습니다.
내 목적 함수는 선형 변수 세트와
varCoefs = [1]*(numB + numQ)
varLower = [0]*(numB + numQ)
varNames = [(x,"b%s"%x) for x in range(numB)]
varNames += [(len(varNames) + x,"q%s"%x) for x in range(numQ)]
varCoefs += [10]*len(deltas)
varLower += [1]*len(deltas)
varNames += [(len(varNames) + x,"delta%s"%x) for x in range(len(deltas))]
varCoefs += [0]*len(target.v)
varLower += [0]*len(target.v)
sContent = [(len(varNames) + x,"s%s"%x) for x in range(len(target.v))]
varNames += sContent
varCoefs += [-1]
varLower += [0]
varNames += [(len(varNames),'mu')]
problem.variables.add(obj = varCoefs, lb = varLower)
problem.variables.set_names(varNames)
# problem.objective.set_quadratic_coefficients([[['s%s' % x], [1]] for x in range(len(target.v))])
problem.objective.set_quadratic(
[cplex.SparsePair(ind=[sContent[x][0]], val=[1]) for x in range(len(target.v))]
)
모든 것이 차 조건을 추가하려면 마지막 통화까지 작동 차 변수 세트가 있습니다. 어느 시점에서 CPLEX는 다음 오류 CPLEX Error 1226: Array entry 13919 not ascending.
을 두 번 던지고 명령을 무시하면 Python 코드가 계속됩니다.
나는 error을 찾아 보았지만, 저도 도움이되지 않았습니다.
나는 변수를 이름과 하한 우선으로 다시 쓰려고 시도한 다음 나중에 set_linear
과 set_quadratic
을 호출하지만 그 중 하나도 도움이되지 않습니다.
무엇이 여기에 있습니까?
문서가'set_quadratic'에 대해 말한 것처럼, "문제의 변수의 수와 길이가 같은 목록으로"호출해야하기 때문에이 방법이 효과적이라고 생각합니다. – rkersh
아아, 나는 그것을 놓쳤다. 다시 한번 감사드립니다. – Constantine