你好,我想问你一些关于优化与白杨建造的交流

40视图(30天)
你好,我是在学习MATLAB的优化
但它很困难,需要一些帮助我的代码。
我喜欢下但MATLAB代码指定识别函数或变量x”
所以我试图用“全球x”之前或空白的变量。
正如你期望,肯定没有工作
有谁帮我能给我建议吗?
谢谢你阅读我的请求
函数y =目标
MyObject = actxserver (“Hysys.Application”);
全球simcase %;
FileNamePath =“Test_Compressor stage_simplified”;
MySimCase = MyObject.SimulationCases.Open (“C: \用户桌面\液化天然气液化系统\ \ PSE_7 \ N2膨胀循环\多目标优化\白杨建造\ Test_Compressor stage_simplified.hsc”);
MySimCase.Visible = true;%的情况是在阿斯彭建造的
MyOperations = MySimCase.Flowsheet.Operations;%得到数据从我们的simcase操作
MyFlowSheet = MySimCase.get (“工艺流程图”);%访问流程
MyMaterialStreams = MyFlowSheet.get (“MaterialStreams”);%访问流模拟材料
MyEnergyStreams = MyFlowSheet.get (“EnergyStreams”);%的能量流
MyK1 =得到(MyOperations,“项目”,“k - 1”);
MyK2 =得到(MyOperations,“项目”,“K-2”);
MyE1 =得到(MyOperations,“项目”,“e 1”);
MyStreams = MySimCase.Flowsheet.Streams;
MyM0 =得到(MyStreams,“项目”,“M0”);
MyM1 =得到(MyStreams,“项目”,“M1”);
MyM2 =得到(MyStreams,“项目”,“平方米”);
MyM3 =得到(MyStreams,“项目”,“M3”);
MyW_1 =得到(MyStreams,“项目”,“w1”);
MyW_2 =得到(MyStreams,“项目”,“报税表”);
MyQ_1 =得到(MyStreams,“项目”,“q1”);
MyK1_Energy = MyK1.EnergyValue
MyK2_Energy = MyK2.EnergyValue
磅= [107];
乌兰巴托= [1000];
一个= [];
b = [];
Aeq = [];
说真的= [];
x0 = [150];
nonlincon = @GA_Con_Comps;
%选择= optimoptions(“遗传算法”,“显示”,“通路”,“算法”,“内点”);
MyM1。PressureValue = x;
如果MyM2。TemperatureValue < 30
MyM3。TemperatureValue = MyM2.TemperatureValue;
其他的
MyM3。TemperatureValue = 30;
结束
目标= MyK1_Energy + MyK2_Energy
x = ga(目标1 A、b Aeq,说真的,磅,乌兰巴托,nonlincon,选择);
disp (x)
disp ([的最终目的:num2str(客观(x))))
结束

接受的答案

马里奥苹果
马里奥苹果 2020年7月26日
编辑:马里奥苹果 2020年7月26日
我做了类似的事情,你应该把所有这些代码相关的建造功能“客观”,然后调用一个匿名函数。
[x, fval] = ga (@ (x)目标(x), 1, A, b, Aeq,说真的,磅,乌兰巴托,nonlincon,选择);
你不必为ga宣布x变量。
函数fobj (x) =目标
%若代码
%发送x到模拟
%得到你想要的价值,向fobj优化
fobj = MyK1_Energy + MyK2_Energy;
结束
13个评论

登录置评。

更多的答案(0)

类别

找到更多的在风险管理工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!