噜啦噜啦噜呼呼呼 2023-08-05 16:44 采纳率: 70.7%
浏览 13
已结题

matlab非线性规划的飞行管理问题


%飞行管理问题

clear;clc
format long g
date=[150 140 243;  % 绘制飞机的初始位置
      8    85 236;
      150 155 220.5;
      145 50 159;
      130 150 230;
      0 0 52];
  plot(date(:,1),date(:,2),'.r')
  axis([0 160 0 160]);
  box on;
  hold on;
  for i=1:6
      text(date(i,1)+2,date(i,2)+2,['飞机', num2str(i)],'FontSize',8);%更改字号大小为8
  end
  x0=zeros(6,1);
  lb=-ones(6,1)*pi/6;
  ub=ones(6,1)*pi/6;
  [x,fval]=fmincon(@fun3,x0,[],[],[],[],lb,ub,@nonlfun3)
function f=fun3(x)  %决策变量x为六架飞机调整的角度
    f=sum(abs(x))*180/pi;  % 目标函数第一种定义:绝对值的和(将弧度转换为度数)
end

function [c,ceq]=nonlfun3(x)
    xx= [150 85 150 145 130  0]; % 飞机初始位置的横坐标
    yy= [140 85 155  50 150  0]; % 飞机初始位置的纵坐标
    theta = [243 236 220.5 159 230 52] * pi / 180; % 飞机初始的飞行方向角 
    v = 800;  % 飞机速度
    co=cos(theta+x);
    si=sin(theta+x);
    d=zeros(6);
    for i=2:6
        for j=1:i-1
            fenzi=(yy(j)-yy(i))*(si(j)-si(i))+(xx(j)-xx(i))*(co(j)-co(i));
            fenmu=v*((si(j)-si(i))^2+(co(j)-co(i))^2);
            t(i,j)=-fenzi/fenmu;
            if t(i,j)<0
                d(i,j)=1000;% 此时最初的位置就是相距最近的点,因为最初的时候所有飞机两两之间的距离就大于8,因此未来绝不会相撞,我们令它们的距离为一个特别大的数
            else
                d(i,j)=sqrt((xx(j)-xx(i)+v*t(i,j)*(co(j)-co(i)))^2+(yy(j)-yy(i)+v*t(i,j)*(si(j)-si(i)))^2);
            end
        end
    end
    c=ones(15,1)*8.000001 - [d(2,1); d(3,1:2)'; d(4,1:3)'; d(5,1:4)'; d(6,1:5)'];  
     % 12个非线性不等式约束: “最短距离>8” 等价于 “8 - 最短距离<0”
     % 注意: 由于Matlab标准型中取的是小于等于号,因此这里取一个比8略大的数:8.000001-最短距离<=0 ]
    ceq=[];
end


img

为什么运行的时候报错,哪里有问题?

img

  • 写回答

2条回答 默认 最新

  • 不良使 Python领域潜力新星 2023-08-05 19:14
    关注

    正确安装了优化工具箱,并且在代码中正确调用了fmincon函数
    license('test', 'optimization_toolbox') 验证一下 1 正确安装 否则安装失败
    确保fmincon函数调用中的函数名与fun3和nonlfun3函数的名称匹配
    x0 = zeros(6, 1);
    lb = -ones(6, 1) * pi / 6;
    ub = ones(6, 1) * pi / 6;
    [x, fval] = fmincon(@fun3, x0, [], [], [], [], lb, ub, @nonlfun3);
    这代码应该没啥问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 修改了问题 8月5日
  • 创建了问题 8月5日

悬赏问题

  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案