当前位置: 首页 > news >正文

两阶段鲁棒优化matlab实现——CCG和benders

目录

1 主要内容

2 部分代码

3 程序结果

4 程序链接


主要内容

程序采用matlab复现经典论文《Solving two-stage robust optimization problems using a column-and-constraint generation method》算例,实现了C&CG和benders算法两部分内容,通过对比学习能够方便掌握两种算法的编程要点,深入了解C&CG算法优势,对于学习鲁棒优化是不可多得的资料,程序均采用matlab+cplex求解!

2 部分代码

y = binvar(3,1);
z = sdpvar(3,1);
x =sdpvar(9,100,'full');
eta = sdpvar(1);
g = sdpvar(3,1);
pi = sdpvar(size(G,1),1);
v=binvar(size(G,1),1);
w=binvar(size(G,2),1);
%% CCG
LB=-inf; UB=inf; iter=1; BigM=1e5;
​
MP_Cons = [ 0<=z<=800*y, 772<=sum(z), b'*x(:,iter)<=eta, 0<=x(:,iter) ];
MP_Obj = coe1*y +coe2*z+eta ;
ops = sdpsettings('solver','cplex','verbose',0);
​
Uncertain_Cons=[ 0<=g<=1, sum(g)<=1.8, g(1)+g(2)<=1.2 ];
​
while abs(UB-LB) >1e-5disp(['迭代第',num2str(iter),'次'])optimize(MP_Cons,MP_Obj,ops);LB = max(LB, value(MP_Obj));                % LBSP_Obj = b'*x(:,iter) ;SP_Cons = [ Uncertain_Cons, 0<=x(:,iter), G*x(:,iter)>=h-E*[value(y);value(z)]-M*g  ];SP_Cons = [SP_Cons, 0<=pi,  G'*pi<=b ];SP_Cons = [SP_Cons, G*x(:,iter)-h+E*[value(y); value(z)]+M*g <= BigM*(1-v) ];SP_Cons = [SP_Cons, pi<=BigM*v];SP_Cons = [SP_Cons, b-G'*pi <= BigM*(1-w) ];SP_Cons = [SP_Cons, x(:,iter)<=BigM*w ];    sol_SP=optimize(SP_Cons,-SP_Obj,ops);if sol_SP.problem==0                             % SP is solvedUB=min(UB, coe1*value(y)+coe2*value(z)+value(SP_Obj));           % UBdisp([' g =   ',num2str(value(g)')]);endMP_Cons = [MP_Cons, 0<=x(:,iter+1), b'*x(:,iter+1)<= eta, G*x(:,iter+1)>=h- E*[y;z]-M*value(g) ];iter = iter+1;display([' LB: ',num2str(LB), '    UB: ',num2str(UB),]);
end

程序结果

4 程序链接

【免费】两阶段鲁棒优化matlab实现——C&CG和benders

http://www.lryc.cn/news/168489.html

相关文章:

  • 二进制安全虚拟机Protostar靶场(4)写入shellcode,基础知识讲解 Stack Five
  • 【Flink实战】玩转Flink里面核心的Source Operator实战
  • [2023-09-12]Oracle备库查询报ORA-01187
  • leetcode 16.最接近的三数之和
  • antd table 自定义排序图标
  • 第十九章、【Linux】开机流程、模块管理与Loader
  • GMAC PHY介绍
  • 华为OD机考算法题:最远足迹
  • QScrollBar滚动条、QSlider滑块、 QDial表盘
  • Prometheus+Grafana可视化监控【MySQL状态】
  • 五,编译定制rom并刷机实现硬改(二)
  • Modbus协议详解3:数据帧格式 - RTU帧 ASCII帧的区别
  • 认识数据分析
  • Learn Prompt-ChatGPT 精选案例:写作博客
  • 《确保安全:PostgreSQL安全配置与最佳实践》
  • Unity中Shader抓取屏幕并实现扭曲效果
  • 深浅拷贝详解
  • @Scheduled 定时任务
  • 丙烯酸共聚聚氯乙烯树脂
  • Navicat导入Excel数据顺序变了
  • uni-app的生命周期
  • Vulnhub实战-DC9
  • 软件设计模式系列之七——原型模式
  • PMP考试注意事项有哪些?
  • chartgpt+midjourney
  • 【SpringMVC】自定义注解
  • 【李沐深度学习笔记】数据操作实现
  • 【深度学习-注意力机制attention 在seq2seq中应用】
  • 详解混合类型文件(Polyglot文件)的应用生成与检测
  • QT之QTableView的简介