1
GLPK for Java (http://glpk-java.sourceforge.net/)를 사용하여 이진 변수를 기반으로 선형 프로그래밍 문제를 해결하려고하지만 계산 결과에 변수에 대한 소수 결과가 표시됩니다.GLPK for Java - 이진 변수 MIP는 분수 결과를 제공합니다.
는 I 코드의 대부분을 생략하지만, 중요 부분은 I
GLPK.glp_add_cols(lp, data.size());
for (int i = 0; i < data.size(); i++) {
GLPK.glp_set_col_name(lp, i + 1, "x" + (i + 1));
GLPK.glp_set_col_kind(lp, i + 1, GLPKConstants.GLP_BV);
}
데이터 계수들을 포함하는 테이블이다 이진
같이 변수를 정의하는 다음이다.나는 (제안 문서에 의해) 내가 단면을 사용하여 사전 처리를 추가하면 presolver에게 오류
glp_intopt: optimal basis to initial LP relaxation not provided
The problem could not be solved
을
glp_iocp iocpParm = new glp_iocp();
iocpParm.setPresolve(GLPK.GLP_ON);
GLPK.glp_init_iocp(iocpParm);
ret = GLPK.glp_intopt(lp, iocpParm);
결과입니다 사용하여 문제를 해결하려고하면
glp_smcp smcpParm = new glp_smcp();
GLPK.glp_init_smcp(smcpParm);
GLPK.glp_simplex(lp, smcpParm);
결과는 분수
Problem created
GLPK Simplex Optimizer, v4.63
1 row, 4 columns, 4 non-zeros
0: obj = 0.000000000e+00 inf = 1.231e+03 (1)
1: obj = 1.231000000e+03 inf = 0.000e+00 (0)
OPTIMAL LP SOLUTION FOUND
GLPK Integer Optimizer, v4.63
1 row, 4 columns, 4 non-zeros
4 integer variables, all of which are binary
Integer optimization begins...
+ 1: mip = not found yet >= -inf (1; 0)
Solution found by heuristic: 1600
+ 2: >>>>> 1.400000000e+03 >= 1.400000000e+03 0.0% (1; 0)
+ 2: mip = 1.400000000e+03 >= tree is empty 0.0% (0; 1)
INTEGER OPTIMAL SOLUTION FOUND
z = 1231.0
x1 = 0.769375
x2 = 0.0
x3 = 0.0
x4 = 0.0
어떻게하면 바이너리 솔루션을 얻을 수 있습니까?
결과를 어떻게 읽습니까? – harold
당신은 요점이 있어요! 감사. glp_mip_col_val 대신 glp_get_col_prim을 사용하고있었습니다. 당신이 대답을 쓰면 나는 그것을 받아 들일 것입니다. – sthor69