manbet体育手机客户端


通过圆圈优化实验的源代码


来自Math Import *的Gurobipy Import *导入随机导入时间导入Sys#在百万约束中定义的圆圈上工作T0 = time.time()n = 1024 * 1024 m =型号('圆优化')x = m.addvars(2,LB = -2,UB = 2)WB = 0 WC = 0 WD = 0 maxdiff = 0 niter = 0边缘= 1.01 m.addconstr(x [0] * cos((2 * pi * i)/ n)+ X [1] * SIN((2 * pi * i)/ n)<= 1在范围内(n))打印(在%.2f秒'%中添加了2 var和%d约束,time.time() -  t0))m .params.outputflag = 0 m.params.presolve = 0#现在选择随机目标并优化。产生的最佳#解决方案必须在I中的圆范围内(4096):theta = 2 * pi * wandom.random()a = cos(theta)b = sin(theta)m.setobjective(x [0] * a+ x [1] * b)m.optimize()niter + = m.itercount#查看#半径一个圆圈的边界的解决方案有多远,如果我们最小化(a,b)最佳解决方案应该是(-a,-b)error =(x [0] .x + a)*(x [0] .x + a)+(x [1] .x + b)*(x [1] .x +b)#显示大多数彻底解决方案(错误>边缘* maxdiff或M.boundvio>边际* WB或M.Constvio>边际* WC或M.Dualvio>边际* WD):MaxDiff = Max(MaxDiff,错误)WB =max(wb,m.boundvio)wc = max(wb,m.constrvio)wd = max(wd,m.dualvio)打印(错误:%g%g%g%g iter%d%d kappa%g'%(maxdiff,wb,wc,wd,i,niter,m.kappaexact)))sys.stdout.flush()