Excel 해 찾기: 제약 조건을 0 또는 보다 큰 것으로 정의합니다.

Excel 해 찾기: 제약 조건을 0 또는 보다 큰 것으로 정의합니다.

구매 주문을 최적화하는 모델을 만들고 있습니다.

주문할 금액은 500보다 크거나 0과 같아야 합니다.

Solver에서 이러한 제약 조건을 어떻게 정의합니까?

이진 제약 조건을 시도하고 여러 가지 다른 공식도 시도했지만 아무 것도 작동하지 않는 것 같습니다.

기본적으로 Solver에서 표현이 가능해야 하는데 OR어떻게 해야 하나요?

편집: 다음 링크에서 내가 사용하고 있는 Excel 파일을 볼 수 있습니다. 여기를 클릭하세요

답변1

그럼 0은 허용되고, 1은 허용되지 않고, 499는 허용되지 않고, 501은 허용된다는 건가요? 인접하지 않은 영역처럼 보입니다. 따라서 이는 순수한 최적화 문제가 아니라 일종의 조합 문제이기도 합니다. 유감스럽게도 솔버가 이 문제를 처리할 수 없습니다.

두 가지 사용 사례를 별도로 분석해야 합니다.

  • 금액이 0입니다(고정 값, 단순 계산).
  • 양은 500 이상입니다(제약 >=500을 사용하여 해 찾기에서 최적화).

그런 다음 IF 공식을 사용하여 이 두 경우를 비교합니다.


편집하다:

Karl이 제안한 대로 "이진" 및 "정수" 제약 조건을 사용하려고 시도했지만 작동하지 않았습니다.

  • 이진 변수 0-1과 연속 변수 >=500을 생성한 다음 IF를 사용하여 연속 변수를 복사하거나 구매 값에 0을 씁니다.
  • 이진 변수 0-1과 연속 변수 >=500을 생성한 다음 구매를 해당 제품으로 계산합니다.
  • 499보다 큰 정수 변수를 생성한 다음 IF를 사용하여 구매 값에 대해 499를 0으로 바꿉니다.

모든 경우에 결과는 잘못된 경우가 많았으며 초기 조건에 따라 달라졌습니다. 분명히 Solver는 그런 것을 좋아하지 않습니다.

그런 다음 위 제안을 6가지 구매 가치 모두에 적용하고 이를 독립적으로 최적화하는 방법(예: 모든 달의 비용 합계를 최적화하는 방법)에 대해 생각했습니다. 그러나 이는 독립적이지 않은 것으로 밝혀졌습니다. 개시 재고는 이전 달에 따라 달라지며 한 달 동안의 최적 구매는 이전 달에 구매가 이루어졌는지 여부에 따라 달라집니다. 따라서 매달 간단한 IF를 추가하는 것은 불가능합니다.

내가 할 수 있는 최선은 다음과 같습니다.

0~1의 이진변수와 500보다 큰 연속변수를 추가하고 IF를 사용하여 매월 구매액을 계산했습니다. 하지만 Solver를 사용하여 연속형 변수만 최적화했습니다. 이진 변수는 매개변수입니다. 즉, 구매가 이루어질 월을 선택한 다음 해 찾기를 사용하여 이러한 구매 가치를 계산한 다음 결과 총 비용을 기록합니다.

이는 구매 및 비구매의 모든 조합에 대해 반복되어야 합니다. 이 조합의 수는 2 6 =64 입니다. 그러나 실제로 1월에 아무것도 구매하지 않으면 허용되지 않는 마이너스 마감 재고가 발생하게 됩니다. 따라서 유효한 조합은 32개뿐입니다. 조합 인덱스에서 이진 값을 계산하는 수식을 추가하고 인덱스를 32번 반복했으며 매번 솔버를 수동으로 실행하고 결과를 각 조합에 대해 "값으로만" 복사했습니다.

결과적으로 최소 비용은 4,625,00€이고 이 값에 도달하는 데는 두 가지 조합이 있습니다.

다음은 Solver 스크린샷과 함께 Google Docs에 업로드된 파일입니다.

수동으로 Solver를 여러 번 실행하는 것은 지루한 일입니다. 매크로를 사용하면 자동화할 수 있다고 생각합니다.

답변2

(목적 함수의) 변수 값이 이진수라는 제약 조건을 추가하여 이진 변수를 만듭니다. 목적 함수에서 이 변수의 계수는 0이어야 합니다. 그런 다음 평소와 같이 다음 제약 조건을 추가합니다.

-500B+X>=0(절대로 500 미만으로 떨어지지 않음)

-MB+X<=0(B가 0일 때 이전 제약 조건 강제 0과 결합)

B= 이진변수1

M=매우 큰 양수(X보다 클 수 있음)

X= 연속변수

[편집하다]

다음과 같은 작업을 원하신다는 점을 이해합니다(시트 파일도 일부 변경했지만 여기서 작업한 Excel 파일은 공유할 수 없습니다).

여기에 이미지 설명을 입력하세요

관련 정보