You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SNOPT的非线性离散约束优化问题求解及结果偏差咨询

带非线性约束的非线性离散优化问题求解求助

我是优化领域新手,目前需要解决一类带非线性约束的非线性离散优化问题:以给定预测时域内绝缘系统的总成本最小化为目标,求解其最优温度,计划采用SNOPT非线性求解器。用常规MATLAB编码验证结果后,所得曲线与预期不符,无法确定自身分析逻辑是否正确。

问题概述

目标函数用于求解预测时域内使绝缘系统总成本最小的最优温度,目标函数与约束有对应的数学描述,预期得到呈U型的成本-温度曲线,但我通过编码得到的曲线不符合该趋势。

问题数据

  • 基础参数:
    • A=1.07×10^8
    • h=1
    • T_ref=87.5
    • N=20
    • p1=0.001;p2=0.0037;
  • 优化变量:$u_t$
  • 模型类型:带非线性约束的非线性成本函数,拟采用SNOPT非线性求解器求解
  • 符号含义:
    • N:预测时域(年)
    • T_ref:参考温度
    • X_DP:第k年绝缘系统的温度
    • h:离散时间模型的时间步长(1年)
    • R:额定负载下负载损耗与空载损耗的比值
    • E:活化能
    • A:指前因子
    • beta:温度降低带来的成本线性系数

验证代码(MATLAB)

close all; clear all;
h=1;
N=20;
a=250;
R=8.314;
A=1.07*10^8;
E=111000;
Tref=87.5;
p1=0.0019; 
p2=0.0037;
p3=0.0037;
Utt=[80,80.7894736842105,81.5789473684211,82.3684210526316,83.1578947368421,... % The value of Utt given here represent the temperature increment over a predictive horizon.
     83.9473684210526,84.7368421052632,85.5263157894737,86.3157894736842,...
     87.1052631578947,87.8947368421053,88.6842105263158,89.4736842105263,...
     90.2631578947369,91.0526315789474,91.8421052631579,92.6315789473684,...
     93.4210526315790,94.2105263157895,95];
 
Utt1 = [95,94.2105263157895,93.4210526315790,92.6315789473684,91.8421052631579,... % The value of Utt1 given here represent the temperature decrement over a predictive horizon.
    91.0526315789474,90.2631578947369,89.4736842105263,88.6842105263158,...
    87.8947368421053,87.1052631578947,86.3157894736842,85.5263157894737,...
    84.7368421052632,83.9473684210526,83.1578947368421,82.3684210526316,...
    81.5789473684211,80.7894736842105,80]; 
Ut1=zeros(1,N);
Ut2=zeros(1,N); 
 
 
Xdp =zeros(N,N);
Xdp(1,1)=1000;

Xdp1 =zeros(N,N);
Xdp1(1,1)=1000;
 
 
   
    for L=1:N-1
     for k=1:N-1
        %vt(k+L)=Ut(k-L+1);
        Xdq(k+1,L) =(1/Xdp(k,L))+A*exp((-1*E)/(R*(Utt(k)+273)))*24*365*h;
        Xdp(k+1,L)=1/(Xdq(k+1,L));  
        Xdp(k,L+1)=1/(Xdq(k+1,L));  
        Xdq1(k+1,L) =(1/Xdp1(k,L))+A*exp((-1*E)/(R*(Utt1(k)+273)))*24*365*h;
        Xdp1(k+1,L)=1/(Xdq1(k+1,L));  
        Xdp1(k,L+1)=1/(Xdq1(k+1,L));  
     end   
        
    end
 % MATLAB code
 
for j =1:N-1
    Ut1(j)= -p1*(Utt(j)-Tref);
    Ut2(j)= -p2*(Utt1(j)-Tref);
        
end
sum00=sum(Ut1);
sum01=sum(Ut2);
 
X1=1./Xdp(:,1);
Xf=1./Xdp(:,20);
Total= table(X1,Xf);
Tdiff =a*(Total.Xf-Total.X1);

X22=1./Xdp1(:,1);
X2f=1./Xdp1(:,20);
Total22= table(X22,X2f);
Tdiff22 =a*(Total22.X2f-Total22.X22);

obj=(sum00+(Tdiff));
ob1 = min(obj);
obj2=sum01+Tdiff22;
ob2 = min(obj2);
 
 plot(Utt,obj,'-o');
 hold on 
 plot(Utt1,obj) 

求助需求

请帮忙确认我的分析逻辑是否正确,并解决结果曲线与预期不符的问题。

内容的提问来源于stack exchange,提问作者Ali Noman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:10:33