설명
이 모델은 카디널리티 제약 조건 2차 배낭 문제를 해결합니다. (kQKP)는 SDP 볼록화 방법을 사용합니다. 볼록화 방법에는 준정의 해가 필요합니다. 프로그램.
대형 모델 유형 :RMIQCP
카테고리 : 크레이지 슬롯 모델 라이브러리
메인 파일 : kqkpsdp.gms 포함: 50_25.inc
$title 카디널리티 제약 조건 2차 배낭 문제의 SDP 볼록화(KQKPSDP,SEQ=355)
$onText
이 모델은 카디널리티 제약 조건 2차 배낭 문제를 해결합니다.
(kQKP)는 SDP 볼록화 방법을 사용합니다.
볼록화 방법에는 준정의 해가 필요합니다.
프로그램.
Plateau M.C., Reformulations Quadratiques pour la
프로그래밍 쿼드러티크 및 변수 0-1. 박사 논문,
국립음악원, CEDRIC, 2006.
Guignard, M., 고원 볼록화 방법 확장
비볼록 이차 0-1 프로그램. 기술. 대표, 와튼 스쿨, 2008.
키워드: 완화된 혼합 정수 2차 제약 조건 프로그래밍, 2차
배낭 문제, 컨팩화 방법, 준정정 계획법
$offText
$onEchoV > kQKP.awk
/^$/ # 빈 줄에는 아무것도 하지 않습니다.
!/^$/
if (1==startweight)
printf("\n(i) 가중치가 포함된 매개변수 /\n");
for (i=1; i<=n; i++) printf("n%d %d\n",i,$i);
printf("$offDelim\n/\n");
시작 무게 = 0;
if (1==startprofit)
printf("테이블 p(i,i)는 \n$onDelim\n") 이익을 얻습니다.
for (i=0; i<=n; i++) printf("n%d ",i);
printf("\n"); 시작수익 = 2; 나는=1;
if (2==startprofit)
printf("n%d %s\n",i,$0);
만약 (n==i)
시작수익 = 0;
그렇지 않으면
나++;
if ($2 == "#n:")
n = $1;
printf("$setGlobal n %d\nset i /n1*n%d/;\n", n, n);
if ($2 == "#용량")
printf("스칼라 캡 용량 /%d/;\n", $1);
if ($2 == "#k:")
printf("스칼라 ncard 카디널리티 /%d/;\n", $1);
if ($1 == "#Profits:") startprofit = 1;
if ($1 == "#Weights:") startweight = 1;