我使用在MATLAB(cplexlp)CPLEX线性规划来解决使用CPLEX:通过缩放线性规划
[u,minima,flag] = cplexlp(f,-A,-b,[],[],lb);
,但我需要的问题
min f'u s.t. Au>=b, u>=lb
降低cplexlp的有效公差小于1e-9的解决方案公差,这是文档中的最小公差。 我想我可以将问题缩小(例如10000),并实现1e-13的有效容差。
scale=10000;
tolerance=1e-9;
options = cplexoptimset('cplex');
options.simplex.tolerances.feasibility = tolerance;
options.simplex.tolerances.optimality = tolerance;
[u,minima,flag] = cplexlp(scale*f,-scale*A,-scale*b,[],[],scale*lb,[], [], options);
minima = minima/scale;
它不起作用,宽容度提高到1e-11但不低于。下面的图像以log10为单位显示'实际解决方案'(使用不同的方法找到)和算法为不同参数返回的解决方案(每种颜色不同A,b,x轴是控制问题的一些参数解)。正如你所看到的,只要高于1e-11,真正的解决方案就可以实现。
任何建议为什么这样或怎样避免这个问题?