我有这个问题,我想做什么?

2视图(30天)
问题是这样的。
> > DBFBA(模型3 Ex_Succ (e), Ex_glc (e), 10)
未定义的函数或变量“e”。
这是我的编码
函数[DBFBASol] = DBFBA(模型、列表、targetRxn、substrateRxn MaxKOs)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
imax = 10;%的迭代次数(例如1000 - 5000年)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %函数参数% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
昏暗的长度=(列表);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %蜜蜂算法% % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %参数% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
n =圆(昏暗的+(暗/ 4));%的侦察蜂数量(例如40 - 100)
流行= n;
m = 15;%的数量选择位置(例如10 - 50)
% e = 3;%的精英选择的点(例如10 - 50)
e = MaxKOs;
% nsp = 8;%每个选定的地点周围的蜜蜂数量(除了ellit位置)
新型干法=圆(m / 2);
%棉结= 6;%每个精英的蜜蜂数量的位置
棉结= (e * 2);
已= 30;%补丁半径附近搜索
sc = 1;%不断萎缩;定义为百分比(%)和范围在0 - 100之间
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
全球HTABLE
HTABLE = java.util.Hashtable;
全球MaxKnockOuts
% % % % % % % % % % % % % % % % %
% %反应/基因
% % % % % % % % % % % % % % % % %
rxnok = 1;
geneok = 1;
我= 1:昏暗的
如果(~ ismember(列表{我},model.rxns)), rxnok = 0;结束
如果(~ ismember(列表{我},model.genes)), geneok = 0;结束
结束
如果geneok
显示器(“假设列表基因”);
elseifrxnok
显示器(“假设列表反应”);
其他的
显示器(”名单似乎是基因和反应:流产的);
返回;
结束
如果输入参数个数< 5
MaxKnockOuts =(暗* 0.1);
其他的
MaxKnockOuts = MaxKOs;
结束
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
格式
aa =双(0(流行));
适合=双(0 (1,n));
nghx =已;% %定义块大小
tstart =时钟;
% % % % % % % %初始随机产生% % % % % %
(i = 1: n)
烫= randperm(暗);
k = 1: MaxKnockOuts
业务流程外包(烫发(k),我)= 1;
结束
结束
(i = 1: n)
rxn_vector = bpo(:,我);
rxnList =列表(逻辑(rxn_vector));
nummutations =总和(rxn_vector);
如果nummutations > MaxKnockOuts
继续;
结束
[isValidRxn, removeInd] = ismember (rxnList model.rxns);
removeInd = removeInd (isValidRxn);
modelKO =模型;
modelKO.ub (removeInd) = 0;
modelKO.lb (removeInd) = 0;
FBAsolution = optimizeCbModel (modelKO);
经济增长率= FBAsolution.f;
如果经济增长率< .10
继续;
结束
modelFixGR = modelKO;
γ= 0.9 *经济增长率;
new_gr = FBAsolution。f -伽马;
modelFixGR = changeRxnBounds (modelKO modelKO.rxns (modelKO.c = = 1), new_gr,“l”);
modelFixGR = changeObjective (modelFixGR targetRxn);
solMin = optimizeCbModel (modelFixGR,“马克斯”);
minProd = solMin.f;
适合(我)= minProd * (.98 ^ nummutations) *经济增长率;
结束
% % % % % % % % % % % %的初始随机产生
% % % % % % %运行直到最大迭代数满足% % % % % % % % %
iter = 1: imax
disp (sprintf (“交互图标数量:% 02.0 f 'iter));
% % % %排序健身和立场
(适合sortedFit bPosSort] = funcSort(健康,bpo,昏暗,n);
% % % % % % % % % %选择最好的m
(j = 1: m)
(d = 1:暗)
candidx (d j) =双(bPosSort (d, j));
结束
结束
% % % % % %搜索inrando附近
流行= candidx (:, 1: m);
popold = 0(大小(流行));%切换人口
val = 0(1米);%创建和重置成本“数组”
bestmem = 0(1、暗);%的人口成员
bestmemit = 0(1、暗);%的人口成员在迭代
nfeval = 0;%的数量评估函数
CR = 0.5;
F = 1;
刷新= 5;
刷新=地板(刷新);
% - - - - - -评价最好的成员初始化后- - - - - - - - - - - - - - - - - - - - - - -
ib = 1;%开头第一人口成员
i = 1: m
rxn_vector =流行(:,i);
rxnList =列表(逻辑(rxn_vector));
nummutations =总和(rxn_vector);
如果nummutations > MaxKnockOuts
继续;
结束
[isValidRxn, removeInd] = ismember (rxnList model.rxns);
removeInd = removeInd (isValidRxn);
modelKO =模型;
modelKO.ub (removeInd) = 0;
modelKO.lb (removeInd) = 0;
FBAsolution = optimizeCbModel (modelKO);
growthrate2 = FBAsolution.f;
如果growthrate2 < .10
继续;
结束
modelFixGR = modelKO;
γ= 0.9 *经济增长率;
new_gr = FBAsolution。f -伽马;
modelFixGR = changeRxnBounds (modelKO modelKO.rxns (modelKO.c = = 1), new_gr,“l”);
modelFixGR = changeObjective (modelFixGR targetRxn);
solMin = optimizeCbModel (modelFixGR,“马克斯”);
minProd = solMin.f;
瓦尔(i) = -minProd * (.98 ^ nummutations) *经济增长率;
结束
bestval =瓦尔(1);%到目前为止最好的目标函数值
nfeval = nfeval + 1;
如果(瓦尔(i) < bestval)%如果成员是更好的
ib =我;%保存它的位置
bestval =瓦尔(i);
结束
bestmemit =流行(:,ib);%的当前迭代的成员
bestvalit = bestval;%当前迭代的最佳值
bestmem = bestmemit;%有史以来最好的成员
% - - - - - - DE-Minimization - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% - - - - - - popold是人口竞争。- - - - - - - - - -
% - - - - - -通过一个迭代静态。流行新- - - - - - - - - - - - - - -
新兴好% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pm1 = 0(暗淡,m);%初始化种群矩阵1
pm2 = 0(暗淡,m);%初始化种群矩阵2
量子化学= 0(暗淡,m);%初始化种群矩阵3
pm4 = 0(暗淡,m);%初始化种群矩阵4
pm5 = 0(暗淡,m);%初始化种群矩阵5
bm = 0(暗淡,m);%初始化bestmember矩阵
ui = 0(暗淡,m);%中间扰动向量的人口
梅= 0(暗淡,m);%的面具中间人口
mpo = 0(暗淡,m);老人口%的面具
腐烂= (0:1:m - 1);%旋转索引数组(大小NP)
rotd = (0:1: dim-1);%旋转索引数组(大小D)
rt = 0 (m);%的另一个旋转的索引数组
rtd = 0(暗);%旋转指数交叉索引数组
a1 = 0 (m);%索引数组
a2 = 0 (m);%索引数组
a3 = 0 (m);%索引数组
a4 = 0 (m);%索引数组
a5 = 0 (m);%索引数组
印第安纳州= 0 (4);
popold =流行;%保存旧的人口
印第安纳州= randperm (4);%的索引指针数组
a1 = randperm (m);%洗牌的位置向量
rt =快速眼动(腐烂+印第安纳州(1),m);%旋转指数由印第安纳州(1)的位置
a2 = a1 (rt + 1);%旋转矢量的位置
rt =快速眼动(腐烂+印第安纳州(2),m);
a3 = a2 (rt + 1);
rt =快速眼动(腐烂+印第安纳州(3),m);
a4 = a3 (rt + 1);
rt =快速眼动(腐烂+印第安纳州(4),m);
a5 = a4 (rt + 1);
pm1 = popold (:, a1);%打乱人口1
pm2 = popold (: a2);%打乱人口2
量子化学= popold (:, a3);%打乱人口3
pm4 = popold (:, a4);%打乱人口4
pm5 = popold (:, a5);%打乱人口5
i = 1: m%的人口满最好的成员
bm (:, i) = bestmemit;%的迭代
结束
梅=兰特(暗淡,m) < CR;%所有随机数< CR是1,否则0
ui =量子化学+ F * (pm1 - pm2);%微分变化
ui = popold。* mpo + (ui。*梅)^ 2;%交叉
% - - - - -选择允许哪些向量输入新的人口- - - - - - - - - - - -
i = 1: m
rxn_vector = ui(:,我);
rxnList =列表(逻辑(rxn_vector));
nummutations =总和(rxn_vector);
如果nummutations > MaxKnockOuts
继续;
结束
[isValidRxn, removeInd] = ismember (rxnList model.rxns);
removeInd = removeInd (isValidRxn);
modelKO =模型;
modelKO.ub (removeInd) = 0;
modelKO.lb (removeInd) = 0;
FBAsolution = optimizeCbModel (modelKO);
growthrate3 = FBAsolution.f;
如果growthrate3 < .10
继续;
结束
modelFixGR = modelKO;
γ= 0.9 *经济增长率;
new_gr = FBAsolution。f -伽马;
modelFixGR = changeRxnBounds (modelKO modelKO.rxns (modelKO.c = = 1), new_gr,“l”);
modelFixGR = changeObjective (modelFixGR targetRxn);
solMin = optimizeCbModel (modelFixGR,“马克斯”);
minProd = solMin.f;
tempval (i) = -minProd * (.98 ^ nummutations) *经济增长率;
结束
:temp = tempval (1);
我= 1:temp
nfeval = nfeval + 1;
如果(tempval(我)< =瓦尔(我))%如果竞争对手是比价值“成本数组”
pop (:, i) = ui(:,我);%用新的替换旧的向量(新迭代)
瓦尔(i) = tempval(我);%值保存在“成本数组”
% - - - - -我们只更新bestval在成功的情况下节省时间- - - - - - - - - - - -
如果(min (tempval) < bestval)%如果竞争对手比最好的人
bestval = min (tempval);%的新最佳值
bestmem = ui(:,我);%的新最佳参数向量
结束
结束
结束%——端imember = 1: NP
bestmemit = bestmem;%冻结最好的成员,这对未来的迭代
%的迭代。这是所需的一些策略。
% - - - - -输出部分- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
如果(刷新> 0)
如果刷新(rem (iter) = = 0)
%流(1,迭代:% d,最好:% + 5.2 d, F: % F, CR: % F, NP: % d \ n ', iter, bestval, F, CR, m);
% n = 1: m
%流(“最佳(% d) = % f \ n ', m, bestmem (m));
%结束
结束
结束
如果(瓦尔(1米)< sortedFit(1米)
bPosSort(:,米)= ui(:,米);
sortedFit(1米)=瓦尔(1米);
结束
% % %附近搜索的结束
% % %减少所有的补丁使用收缩常数(sc)变量
nghx = nghx * ((100 - sc) / 100);
% % %发送其他蜜蜂随机搜索…
% % % % %的蜜蜂数量随机搜索
ranSearchBees = n - m;
(k = 1: ranSearchBees)
烫= randperm(暗);
e = 1: MaxKnockOuts
bPosSortcand(烫发(e), k) = 1;
结束
结束
(k = 1: ranSearchBees)
rxn_vectorSortcand = bPosSortcand (:, k);
rxnListSortcand =列表(逻辑(rxn_vectorSortcand));
nummutationsSortcand =总和(rxn_vectorSortcand);
如果nummutationsSortcand > MaxKnockOuts
继续;
结束
[isValidRxnSortcand, removeIndSortcand] = ismember (rxnListSortcand model.rxns);
removeIndSortcand = removeIndSortcand (isValidRxnSortcand);
modelKOSortcand =模型;
modelKOSortcand.ub (removeIndSortcand) = 0;
modelKOSortcand.lb (removeIndSortcand) = 0;
FBA万博 尤文图斯solutionSortcand = optimizeCbModel (modelKOSortcand);
growthrateSortcand = FBA万博 尤文图斯solutionSortcand.f;
如果growthrateSortcand < .10
继续;
结束
modelFixGRSortcand = modelKOSortcand;
γ= 0.9 *经济增长率;
new_grSortcand = FBA万博 尤文图斯solutionSortcand。f -伽马;
modelFixGRSortcand = changeRxnBounds (modelKOSortcand modelKOSortcand.rxns (modelKOSortcand.c = = 1), new_grSortcand,“l”);
modelFixGRSortcand = changeObjective (modelFixGRSortcand targetRxn);
solMinSortcand = optimizeCbModel (modelFixGRSortcand,“马克斯”);
minProdSortcand = solMinSortcand.f;
sortedFitcand (k) = -minProdSortcand * (.98 ^ nummutations) *经济增长率;
如果(sortedFitcand (k) < sortedFit (k + m))
bPosSort (:, m + k) = bPosSortcand (:, k);
sortedFit (k + m) = sortedFitcand (k);
结束
结束
(适合sortedFit bPosSort] = funcSort (sortedFit bPosSort,昏暗,n);
:模板(iter) =双(sortedFit (1:));
sortedFit (1,1);
:v (iter) = sortedFit (1,1);
结束
minProdFixGR = sortedFit (1,1);
成绩= sortedFit;
BPCY = sortedFit (1,1);
t = bPosSort (: 1);
r =列表(逻辑(t));
最好= t;
DBFBASol = GetDBFBASol(模型、列表、targetRxn substrateRxn, bpo,最好的,分数,BPCY, rxnok);
sort_temp =排序(模板);
Final_Result = v (1: iter, 1);
情节(Final_Result)
标题(“差蜜蜂通量平衡分析”)
包含(的代名)
ylabel (的目标函数)
saveas (gcf' /用户/ fahmiarieef /桌面/ psm /引用/信息/结果/ Objective_Function ',“jpg”)
[biomassValues, targetValues lineHandle] = productionEnvelope(模型中,r,“k”、targetRxn model.rxns (model.c = = 1));
saveas (gcf' /用户/ fahmiarieef /桌面/ psm /引用/信息/结果/ Production_Envelope ',“jpg”)
tstart End_Time =结束(时钟)
结束
谁能告诉我哪个地方做错了?

答案(1)

马特·J
马特·J 2015年12月13日
编辑:马特·J 2015年12月13日
问题是在命令行中调用,而不是内部DFBA ()
> > DBFBA(模型3 Ex_Succ (e), Ex_glc (e), 10)
未定义的函数或变量“e”。
变量“e”并不存在。
4评论
约翰D 'Errico
约翰D 'Errico 2015年12月13日
创建在你调用一个函数,在函数存在的时间点。所以你想用e作为一个变量,在e是定义。

登录置评。

类别

找到更多的在矩阵和数组帮助中心文件交换

社区寻宝

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

开始狩猎!