저는 17 개의 방정식, 총 변수의 최소 합을 계산할 수있는 506 개의 변수로 구성된 선형 시스템을 가지고 있습니다. 이것은 잘 작동하지만, 지금까지는 해결책이 19 가지 변수를 조합 한 결과입니다.opensolver에서 선택된 변수를 제한하는 것
결국 결국 최적의 변수가 무엇인지 미리 알지 못하고 선택한 변수의 양을 10 개로 제한하고 싶습니다. (솔버가 나와 내포하는 비율과 비율).
값이 0보다 커지면 (즉, 변수가 선택되었음을 의미하는) 부 울린 = 1을 설정할 수 있고, 변수가 최적의 솔루션으로 선택되지 않은 경우 0을 설정할 수 있습니다.
그리고 나서 부울 값의 합은 최대 10입니다.
그러나 이것은 약간 정교하게 보입니다. 나는 서브 세트가있는 큰 세트를 해결하는 것이 일반적인 문제라고 생각하기 때문에 opensolver에 내장 옵션이 있는지 궁금합니다. 내 정교한 방법은 크게 성능이 저하 어떻게
- :
그래서 사람에 대한 제안이 있습니까? (* 나는 아직 오픈 솔버 알고리즘에 대한 내재적 이해력을 가지고 있지 않다.)
- 오픈 솔버 옵션 내에서의 제안은 내 최대 욕구에 대한 설명이다. 10 개의 솔루션 변수? I는 열 (18 명) 엔트리를 세 개의 데이터 목록이
: 아래에 제공된 정보에 기초
는 I 우선 문제의 크기를 축소
W7:W23,AC7:AD23
하는 수동 (함께 : W28 = 6000, AC28=600,W29 = 1,AC29 =1
)는 선형 조합에서 같음/초과 목표 목록 :
그래서 내가 (원래 모두 opensolver 같이 해석 엑셀)
솔버에 제약 W28,AC28:AD28 = integer
을 추가 W28:W29, AC28:AD29
에 descion 변수를 넣어했다 그리고 난 해결사의 제약 W29,AC29:AD29 = Boolean
을 추가 (모두 원래의 엑셀 솔버이어서
) opensolver 같이 I는 정수 * 부울의 승산 = I는 시도 선택된 변수 NR을 제한하기 위해 (W7:W23 etc)
에서 상기리스트의 실제 배율, 또한이 설명 된 제약 조건에 따라 세포를로 제한(효과적으로 11 이하로 설정된 부울의 양을 줄이거 나 그렇게 생각했지만 부울은 해결자가 부울로 평가하지 않음).
이 새로운 곱한 목록
는W34:W50,AC34:AD50
에 배치되고, 합계가에 위치하고 있습니다 :
EGY34:EGY50
는 따라서 최종 점검이 같은 제약 조건으로 추가됩니다
EGY34:EGY50 =>EGM34:EGM50
그리고 어떻게 선형에 대한 질문이 있었다 솔버가 이러한 제약 조건을 평가하면 수행합니까?
a. EGY34:EGY50 must be larger or equal than/to EGM34:EGM50
또는
B의 합을 생각하십시오. 그것은 생각합니까 :.. 모든 행 X EGYx must be larger or equal than/to EGMx
지금까지 내가 언급 한 B는 "그러나 나는 확인하고 싶은
을하지만 내 주요 질문에 대한 우려 :
진화를 사용한 후 알고리즘은 부울로 지정된 desicion 변수에 대해 0.99994 값을 사용하는 방법/이유는 무엇입니까?
죄송합니다. 이것을 종종 "카디널리티 제약"이라고합니다. 0이 아닌 솔루션 값을 계산하기 위해 추가 바이너리 변수를 사용할 필요가 없습니다. –
그리고 네, 해결 시간이 느려질 것으로 예상됩니다. - 아마도 아주 많이 : ( –
@ErwinKalvelagen 감사합니다! 나는 문제가 발생했을 때마다 비틀 거릴 때마다 실제적으로 그것의 이름뿐만 아니라 실제로 그것을 다루는 방법. 나는 카디널리티 제약을 찾아 내 문제와 어떻게 관련되는지 이해하려고 노력한다. –