问题
问题条件:混合钢,获得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