Originally posted by: SystemAdmin
[frenky_ser said:]
Good afternoon! (Sorry for my English)
Your help is very necessary to me!
According to users manual(ILOG CPLEX) for solution of the MILP problem I take following steps:
1.Create problem
[problemPtr, env, status] = calllib(Params('CplexLibraryName'), 'CPXcreateprob', EnvCPLEX, 0, 'testMilpProblem')
2.Set data
status = calllib(Params('CplexLibraryName'), 'CPXcopylp', EnvCPLEX, problemPtr, size(A,2), size(A,1), fn_CPLEX_Consts('CPX_MIN'),...
full(f), full(b), sense, matbeg, matcnt, matind, matval, full(lb), full(ub), []);
3.Change problem type
status = calllib(Params('CplexLibraryName'), 'CPXchgprobtype', EnvCPLEX, problemPtr, fn_CPLEX_Consts('CPXPROB_MILP'));
4.Change variables type
status = calllib(Params('CplexLibraryName'), 'CPXcopyctype', EnvCPLEX, problemPtr, var_type);
where var_type - array 'IIII...'. This array elements count = variables count
5. Optimise (CPXmipopt)
status = calllib(Params('CplexLibraryName'), 'CPXmipopt', EnvCPLEX, problemPtr);
6. Solution
numcols = calllib(Params('CplexLibraryName'), 'CPXgetnumcols', EnvCPLEX, problemPtr);
numrows = calllib(Params('CplexLibraryName'), 'CPXgetnumrows', EnvCPLEX, problemPtr);
% ÞÿÃâøüðûÃÅýþõ Ãâ¬ÃµÃËõýøõ
pxmin = libpointer('doublePtr', zeros([numcols 1]));
[status, env, envProblem, xmin] = calllib(Params('CplexLibraryName'), 'CPXgetx', EnvCPLEX, problemPtr, pxmin, 0, numcols - 1);
Solution correct, all is excellent!!! :)))
7. Change problem type (CPXPROB_FIXEDMILP)
status = calllib(Params('CplexLibraryName'), 'CPXchgprobtype', EnvCPLEX, problemPtr, fn_CPLEX_Consts('CPXPROB_FIXEDMILP'));
8. Optimise (CPXlpopt or CPXprimopt)
status = calllib(Params('CplexLibraryName'), 'CPXlpopt', EnvCPLEX, problemPtr);
9. Get dual parameters
pdual = libpointer('doublePtr', zeros([numrows 1]));
[status, env, envProblem, [b]dual[/b]] = calllib(Params('CplexLibraryName'), 'CPXgetpi', EnvCPLEX, problemPtr, pdual, 0, numrows - 1);
Where parameter [b]dual[/b] = empty array [0 0 0 ...] [b]ALWAYS:(([/b], even for very simple tasks...Why?
Thanks
#CPLEXOptimizers#DecisionOptimization