2017-05-08 5 views
0

최종 결과를 더욱 구체화하기 위해 최적화 문제를 반복적으로 실행하고 싶습니다.scipy linprog를 사용하는 최적화를위한 고정 소수점 경계

본질적 목적 변수 (등식과 부등식 제한 대상) 세트의 최대 값을 최소화시킨 후는 최대, 제외 세트 최대 최소화하고 최대 최소화 가장 큰 두 숫자 등등 ...

내가 생각하고있는 알고리즘을 제외한 집합 이다 :

  1. 실행집합의 최대 값을 최소화하기 위해 모든 변수를 제한없이으로 설정하십시오.
  2. 최적화 문제를 해결할 수 있고 성공적으로 해결되었다고 가정하면 bounds=[..., (opt_val, opt_val), ...]을 설정하여 최대 값을 opt_val으로 수정하십시오. 다른 모든 변수의 범위는 (-numpy.inf, numpy.inf)입니다.
  3. b_ub의 계수를 numpy.inf으로 변경하여 해당 변수에 해당하는 부등 수 제약 조건을 비효율적으로 만듭니다.
  4. 수정 된 경계 및 불평등 벡터를 사용하여 시뮬레이션을 재실행하십시오.

이 오류없이 실행할 수 있지만이 scipy 것 같아/명시 적으로 내가 변수에 배치의 경계를 무시 NumPy와 - 나는 해당 opt_val하지 않은 내가 '고정'한 변수에 대한 결과를 얻을 수 있습니다.

scipy는 변수를 단일 부동 소수점 숫자로 제한하는 경계를 처리 할 수 ​​있습니까? 내 문제를 해결하는 가장 좋은 방법입니까?

내가 개발 한 코드는 실제로 매우 광범위하므로 여기에 게시하지 않은 이유가 있습니다. 물론 코드 기반 솔루션은 기대하지 않습니다. 내가 여기서 찾고있는 것은 scipy가 단일 플로트로 제한된 경계 간격을 처리 할 수 ​​있는지, 더 높은 수준에서 올바른 방법을 사용하는지 여부에 대한 예/아니오 응답입니다.

https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.linprog.html의 설명서에는 고정 소수점 경계를 지정할 수 있는지 여부가 명시되어 있지 않습니다.

+0

더 나은 LP 해석기를 사용해보십시오. Scipy.optimize.linprog은 그리 강력하지 않습니다. –

+0

verfiy @ ErwinKalvelagen의 의견을 구하는 사람들에게 : http://stackoverflow.com/questions/43106053/why-does-scipy-optimize-linprog-return-a-solution-that-does-not-satisfy- constrai/43106433 – Charlie

답변

0

불평등 제약을 완화하는 것이 문제였습니다. 나는 실수로 이완했다 모든 고정 변수에 관한 제약 조건 대신에 제약 조건 중 을 완화해야했습니다.

@ ErwinKalvelagen의 의견은 여전히 ​​주목할 가치가 있습니다.