기금넷 공식사이트 - 복권 조회 - 2002년 수학적 모델링 문제 B "복권의 수학"에서 MATLAB 또는 LINGO를 사용하여 비선형 문제에 대한 최적 솔루션의 코드 구현입니다. (제목은 아래와 같습니다.
2002년 수학적 모델링 문제 B "복권의 수학"에서 MATLAB 또는 LINGO를 사용하여 비선형 문제에 대한 최적 솔루션의 코드 구현입니다. (제목은 아래와 같습니다.
혼합 정수 계획법 문제여야 합니다. 현재 MATLAB에는 이 문제를 해결하기 위한 관련 기능이 없습니다.
저는 "하이브리드(비)선형 프로그래밍 소프트웨어 패키지"를 개발했는데, 그 설명은 다음과 같습니다. (죄송하지만 일부는 Word에서 표시할 수 없습니다.)
이 소프트웨어 패키지의 주요 프로그램에는 두 가지가 있습니다. 하나는 혼합 선형 프로그래밍을 다루는 것이고, 다른 하나는 비선형 프로그래밍을 다루는 것입니다.
1. 혼합 선형 계획법(MixIntDiscLineProg.m)
2. 혼합 비선형 계획법 문제(MixIntDiscNLProg)
여기서 는 독립 변수이고 는 벡터입니다. 의 상한 및 하한은 각각 선형 제약 조건의 방정식 제약 조건의 계수 행렬 및 상수 항이고, 선형 제약 조건의 계수 행렬 및 부등식 제약 조건이며, 각각 비선형 제약 조건의 방정식 제약 조건 및 부등식 제약 조건입니다. 은 값 범위가 이고, 는 정수 변수이고, 나머지는 연속 변수입니다.
xstatus 배열을 사용하여 이산 또는 정수 변수의 상태를 설정할 수 있습니다. 여기서 xstatus (1,:)는 xstatus (2,:)에 있는 이산 또는 정수 변수의 첨자입니다. 의 각 요소의 값은 1 또는 2이다. 1이면 해당 열의 독립변수가 정수변수임을 의미한다. 2이면 해당 열의 변수가 이산변수임을 의미한다. ;은 값 범위의 서수에 있는 해당 열의 이산 변수 값이거나, 변수가 정수인 경우 0입니다. 따라서 다음과 같이 표현될 수 있습니다:
여기에 설명할 네 가지 예가 있으며 나머지는 다음 설명에서 볼 수 있습니다.
예 1. 모든 변수는 정수입니다.
두 프로그램에서 별도로 수정하세요.
isAllInteger=1;
나머지 이산 변수 값 범위는 설정할 필요가 없습니다.
예시 2. x2, x4, x7은 정수이고 나머지는 연속형 변수입니다.
두 프로그램을 각각 수정합니다.
isAllInteger=0;
다음과 같이 수정합니다.
"checkIntDisc"를 호출하는 모든 것 기본 프로그램 형식은 "checkIntDisc(..., xstatus)"가 됩니다.
예 3. x2, x4는 정수이고, x3, x7, x9는 D1 세트에서 가져오고 나머지는 연속 변수입니다.
두 프로그램을 각각 수정합니다.
isAllInteger=0;
다음과 같이 수정합니다.
"checkIntDisc"를 호출하는 모든 것 기본 프로그램 형식은 "checkIntDisc(..., xstatus, D1)"입니다.
예 4. x2, x4는 정수이고, x3 및 x9는 D1 세트에서 가져오고, x7은 값 D2를 가져오고, 나머지는 연속형 변수입니다.
두 프로그램을 각각 수정합니다.
isAllInteger=0;
다음과 같이 수정합니다.
"checkIntDisc"를 호출하는 모든 것 기본 프로그램 형식이 "checkIntDisc(..., xstatus, D1, D2)"로 변경됩니다.
두 프로그램을 사용하기 위한 구체적인 단계: Matlab 환경에서는 "File/set path... " 경로를 추가하려면 "\ ..." 실제 문제를 기반으로 다음 6단계에 따라 일련의 매개변수와 파일을 수정하십시오.
1) 매개변수는 fmincom 함수의 요구 사항에 따라 제공됩니다. m
A , B, Aeq, Beq, LB, UB, X0
2) 'obj_fun.m'은 목적 함수 소스 파일입니다.
3) 'nl_con_fun.m'은 비선형 제약 소스 파일입니다(정수 또는 이산 요구 사항을 포함하지 않음)
4) 모든 구성 요소가 정수 요구 사항인지 여부를 설정합니다.
isAllInteger=1; 정수
isAllInteger =0 모든 구성요소가 정수는 아닙니다
5) 값 범위 매개변수 D1 수정 - 이산 변수의 Dm
D1=; x(1), x(2 ), x(3)
D2=[2.5, 3, 4, 6, 8, 10, 12.2, 16.6]; 필요한 경우 “checkIntDisc(. .., xstatus, D1)”를 “checkIntDisc(..., xstatus, D1, .., Dm)”으로 수정합니다.
6) 배열 수정
자세한 내용은 다음 주소로 보내주세요: spjin@whut.edu.cn
- 관련 기사
- 동영상을 보내 돈을 벌 수 있는 소프트웨어가 있나요?
- 복권 당첨 복권은 찾을 수 없습니다 _ 복권 당첨 복권은 번호를 찾을 수 없습니다
- 누가 게임 왕 KM 을 썼습니까? 요즘 어떠세요?
- 로또 전문가들은 정지 시간을 예측했다
- 꽃다발 포장지를 묶는 과정
- 대표는 대학생들에게 금융지식 보급 활동을 실시할 것을 건의하는데, 어떤 금융사기를 아십니까?
- 헬스 트레이너가 되고 싶은데 어떻게 해야 하나요 ~
- Ubros에 대한 정보를 알려주세요. 너무 오랫동안 찾고 있었는데 못 찾겠어요.
- 다운로드 읽기' 푸른 나무 역전광마' txt 전문을 읽고 바이두망판 구름 자원을 구하다.
- 2 색 볼 2+ 1 보너스