我正在尝试链接 SimEvent 和 MATLAB 的优化模块。为此,我首先需要定义一个运行模拟的函数,然后在优化函数中调用它。我从下面的链接中得到了模拟/优化代码的想法:
http://au.mathworks.com/videos/optimizing-manufacturing-production-processes-68961.html
我试图浏览我在这个视频中看到的所有代码,但是当我应用它时,它不起作用。这是我的代码:
函数最终结果 = SimOpt ()
整数= [1];
A=[];
b=[];
Aeq=[];
beq = [];
磅 = [1];
ub=[10];
最终结果= intlinprog(@f,intcon,A,b,Aeq,beq,lb,ub);
function obj = f(vecX)
NumServers = vecX(1);
NumTruck = vecX(2);
set_param('concreting10/Positioning and Unloading','NumberOfServers',num2str(NumServers));
set_param('concreting10/Washing','NumberOfServers',num2str(NumTruck));
simOut = sim('concreting10','SaveOutput','on','OutputSaveName','WaitingTimeInQueue');
z = simOut.get('WaitingTimeInQueue');
waiting = max(z);
cost = [100 200]*vecX';
obj = waiting*1000+cost;
end
结尾
当我运行整个代码时,我收到以下警告:
使用 intlinprog 时出错(第 122 行) INTLINPROG 要求以下输入为双精度数据类型:“f”。
SimOpt 中的错误(第 26 行) finalresults= intlinprog(@f,intcon,A,b,Aeq,beq,lb,ub);
任何帮助将不胜感激。