シミュレーション実行中のエラー発生の解決法
조회 수: 2 (최근 30일)
이전 댓글 표시
simulink内で被覆制御を実現しようと考えています.
しかし,このようなエラーが表示され,実行することが出来ません.

simulink内は添付画像のようになっています.

シミュレーションの設定は以下のようになっています.

MASCCver4はLevel-2 MATLAB S-Functionを使用しています.
プログラムはこのようになっています.
function setup(block)
% Setup number of ports (Input & Output) ======================= %
% S-Functionブロックの入出力データ数を入力
block.NumInputPorts = 2; % 入力データ数
block.NumOutputPorts = 1; % 出力データ数
% Setup the each ports properties to be inherited or dynamic === %
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
% Seup the each Input ports properties ========================= %
% 入力データの大きさを設定
% エージェントの位置p
block.InputPort(1).Dimensions = [8 1];
block.InputPort(1).SamplingMode = 'Sample';
%エージェントの個数
block.InputPort(2).Dimensions = 1;
block.InputPort(2).SamplingMode = 'Sample';
% Seup the Output port properties ============================== %
% 出力データの大きさを設定
block.OutputPort(1).Dimensions = [8 1];
block.OutputPort(1).SamplingMode = 'Sample';
% Setup the Sampling Time ====================================== %
% サンプリング周期を設定(Simulinkと同じ場合は「-1」)
block.SampleTime = [-1 0];
block.RegBlockMethod('Update', @Update);
end
function Update(block)
% 入力データを取得 ============================================= %
p = block.InputPort(1).Data;
N = block.InputPort(2).Data;
% 出力データの計算 ============================================= %
phi = @(q,p) min( ...
sqrt(sum((q - reshape(p,2,N)).^2)));
phiv = @(X,Y,p) arrayfun(@(x,y) phi([x,y]',p),X,Y);
J = @(p) quad2d( @(X,Y) phiv(X,Y,p), ...
0, 1, 0, 1, 'Singular', false);
dJdp = @(p) numjac( @(t,p) J(p), ...
0, p, J(p), 1e-6*ones(2*N, 1), [], 0);
% 出力データを設定 ============================================== %
block.OutputPort(1).Data = dJdp(p)';
end
解決法をご教授いただけますよう、何卒よろしくお願いします.
댓글 수: 2
stozaki
2023년 7월 5일
エラーメッセージにおいて、代数ループが原因のような記述が見えます。
エラーメッセージの後半(図では隠れて見えませんが。。)にヒントが記載されておりませんか?
代数ループが原因であれば、以下の回答を参考にしては如何でしょうか?
また、代数ループに関する説明は以下が参考になると思われます。
답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!