在matlab通过yalmip调用cplex编程 目标函数似乎一直有问题


% 清除工作区
clear;clc;close all;
x=intvar(7,4,4);
y=intvar(7,4,4);
    %自定义MC的值
    for i=1:7
        for j=1:4
            for k=1:4
                MC(i,j,k)=i+k+j
            end
        end
    end
    %自定义EC的值
    for i=1:7
        for j=1:4
            for k=1:4
                EC(i,j,k)=i+k
            end
        end
    end
    %随机生成F的值
    for i=1:7
        for j=1:4
            for k=1:4
                F(i,j,k)=round (rand (1,1)*5)
            end
        end
    end
    %计算IF
    for i=1:4
        for j=1:4
            for k=1:4
                if F(i,j,k)>F(j,i,k)
                    IF(i,j,k)=1-F(j,i,k)/F(i,j,k);
                else
                    IF(i,j,k)=0
                end
            end
        end
    end
    for i=5:7
        for j=1:4
            for k=1:4
                IF(i,j,k)=0
            end
        end
    end
    %论文给定的一些值以及假设
    CP=3350;
    DW=36510;
    RF=200;
    FE=113540;
    D1=0;
    D2=100;
    D3=0;
    %创造约束
    %满足容量约束1
    add1constr=sum(x(:,:,1),'all')+sum(y(:,:,1),'all')+sum(x(:,:,2),'all')+sum(y(:,:,2),'all');
               +2*sum(x(:,:,3),'all')+2*sum(y(:,:,3),'all')+2*sum(x(:,:,4),'all')+2*sum(y(:,:,4),'all')<=CP;
    %假设重量分别为10和20,满足载重约束2
    add2constr=10*sum (x,'all')+20*sum (y,'all')<=DW;
    %冷藏型满足插头约束3
    add3constr=sum(x(:,:,2),'all')+sum(x(:,:,4),'all')<=RF;
    %40型数量不能超过设计约束4
    add4constr=sum(x(:,:,3),'all')+sum(x(:,:,4),'all')+sum(y(:,:,3),'all')+sum(y(:,:,4),'all')<=FE;
C=[ add1constr
    add2constr
    add3constr
    add4constr];
ops = sdpsettings('verbose',0,'solver','cplex');
z=sum(x,'all')+sum(y,'all');
reuslt = optimize(C,z);

代码如上所示 报错Second argument (the objective function h) should be an sdpvar or logdet object (or empty).
第一次用yalmip matlab也很生疏 不知道怎么办

img

img

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。