kqkpsdp.gms : 카디널리티 제약 이차 배낭 문제의 SDP Convexification

설명

이 모델은 카디널리티 제약 조건 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;