遗传算法解决混合整数问题(MATLAB)

问题

 问题条件:混合钢,获得25吨 发钢,要求含有5%的碳和5%的钼(重量=1.25吨),目标是最小化混合钢的成本

材料1:四块钢锭,每个钢锭只有一个可以用

材料2:三种合金钢和一种废钢。合金和废钢不必整吨购买

存在整数约束,线性等式约束,上下界约束

 目标函数

function sum = ob_mix_int(x,cost)
% 示例:
% 最小化 Rosenbrock 函数
% f = 100*(y - x^2)^2 + (1 - x)^2

% 编辑以下行以添加您的计算方法
sum = cost*x';
end

GA优化算法->将GA优化所得的结果再接一个线性优化器

 

%% 问题

%问题条件:混合钢,获得25吨 发钢,要求含有5%的碳和5%的钼(重量=1.25吨),目标是最小化混合钢的成本

%材料1:四块钢锭,每个钢锭只有一个可以用

%材料2:三种合金钢和一种废钢。合金和废钢不必整吨购买

%存在整数约束,线性等式约束,上下界约束
%% 初始化

integer=1:4;
cost=[350*5,330*3,310*4,280*6,500,450,400,100];
lb=zeros(8,1);
ub=lb;
ub(1:end)=inf;
ub(1:4,1)=1;
n=8;
Aeq=[5 3 4 6 1 1 1 1;
    0.25 0.12 0.2 0.18 0.08 0.07 0.06 0.03;
    0.15 0.09 0.16 0.24 0.06 0.07 0.08 0.09];
beq=[25;1.25;1.25]
%% 遗传

% 将固定参数传递给 objfun
objfun = @(x)ob_mix_int(x,cost);

% 设置非默认求解器选项
options = optimoptions("ga","PopulationSize",100,"MaxGenerations",10,...
    "Display","off");

% 求解
[solution,objectiveValue] = ga(objfun,n,[],[],Aeq,beq,lb,ub,[],integer,...
    options);

% 清除变量
clearvars objfun options
%% 优化

% 设置非默认求解器选项
options2 = optimoptions("intlinprog","Display","final");

% 求解
[solution2,objectiveValue2] = intlinprog(cost,integer,[],[],Aeq,beq,lb,ub,...
    solution,options2);

% 清除变量
clearvars options2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值