Error during MILP using function INTLINPROG

4 visualizzazioni (ultimi 30 giorni)
hechuan
hechuan il 5 Lug 2016
Commentato: DianChao Lin il 27 Ago 2019
When I run a program using function INTLINPROG, it appear the following words: " INTLINPROG encountered an internal error that caused the solution to lose integer and/or linear constraint feasibility. We are sorry for the inconvenience. Please contact technical support for assistance with your problem, quoting the code "-2_4". " What is the problem?
  3 Commenti
Huy Nguyen
Huy Nguyen il 18 Mar 2019
Can you help me? this is my code. I made the same mistake.
tic;
clc;
clear all;
close all;
%% Thong so cua bai toan
Ppvf = xlsread('datamoi','A2:A25');
Pwtf = xlsread('datamoi','B2:B25');
Pl = xlsread('datamoi','C2:C25');
Price = xlsread('price');
Ppvmax = 1.1*Ppvf; Ppvmin = 0.9*Ppvf;
Pwtmax = 1.1*Pwtf; Pwtmin = 0.9*Pwtf;
Cgs = Price(:,1)'; %%Gia ban dien cho luoi
Cgb = Price(:,2)'; %%Gia mua dien tu luoi
Cpv = Price(:,3)'; %%Chi phi cua nang luong mat troi
Cwt = Price(:,4)'; %%Chi phi cua nang luong gio
Cch = Price(:,5)'; %%Chi phi sac pin
Cdis = Price(:,6)'; %%Chi phi xa pin
Pch_max = 4; Pdis_max = 4; Pgb_max = 2; Pgs_max = 10^9;
Emax = 5; Emin = 1; E1 = 2.5; E25 = 2.5;
nch = 0.95; ndis = 0.95; delta_t = 1; s = 0.0000;
M = 10^9;
%% Xac dinh UB, LB, Aeq, beq, Aineq, bineq
f1 = [-Cpv -Cwt -Cch -Cdis -Cgb Cgs];
f2 = zeros(1,527);
f = [f1 f2];
intcon = 168:215;
intcon = 408:671;
LB = [Ppvmin.*ones(24,1); Pwtmin.*ones(24,1); zeros(24,1); zeros(24,1); zeros(24,1); zeros(24,1); ones(23,1)*Emin; zeros(48,1); -Inf*ones(96,1); -Inf*ones(24,1); zeros(24,1); -Inf*ones(24,1); -Inf*ones(24,1); zeros(264,1)];
UB = [Ppvmax.*ones(24,1); Pwtmax.*ones(24,1); ones(24,1)*Pch_max; ones(24,1)*Pdis_max; ones(24,1)*Pgb_max; ones(24,1)*Pgs_max; ones(23,1)*Emax; ones(48,1); zeros(96,1); Inf*ones(24,1); Inf*ones(24,1); zeros(24,1); Inf*ones(24,1); ones(264,1)];
%% Cac rang buoc bat dang thuc
%% Rang buoc bat dang thuc ban dau
Aineq1_1 = zeros(24,671);
Aineq1_1(:,97:120)= eye(24);
Aineq1_1(:,168:191)= -Pgb_max*eye(24);
%% ------------------------------------------------------------------------
Aineq1_2 = zeros(24,671);
Aineq1_2(:,121:144)= eye(24);
Aineq1_2(:,168:191)= Pgs_max*eye(24);
%% ------------------------------------------------------------------------
Aineq1_3 = zeros(24,671);
Aineq1_3(:,49:72)= eye(24);
Aineq1_3(:,192:215)= -Pch_max*eye(24);
%% ------------------------------------------------------------------------
Aineq1_4 = zeros(24,671);
Aineq1_4(:,73:96) = eye(24);
Aineq1_4(:,192:215)= Pdis_max*eye(24);
%% ------------------------------------------------------------------------
Aineq1_5 = zeros(23,671);
Aineq1_5(:,145:167)= -eye(23);
%% ------------------------------------------------------------------------
Aineq1_6 = zeros(23,671);
Aineq1_6(:,145:167)= eye(23);
%% ------------------------------------------------------------------------
%% hihi
Aineq1 = [Aineq1_1; Aineq1_2; Aineq1_3; Aineq1_2; Aineq1_5; Aineq1_6];
%% ------------------------------------------------------------------------
%% Rang buoc bien doi ngau
%% ------------------------------------------------------------------------
Aineq2_1 = zeros(24,671);
Aineq2_1(:,216:239)= eye(24);
Aineq2_1(:,312:335)= eye(24);
%% ------------------------------------------------------------------------
Aineq2_2 = zeros(24,671);
Aineq2_2(:,240:263)= eye(24);
Aineq2_2(:,312:335)= -eye(24);
%% ------------------------------------------------------------------------
Aineq2_3 = zeros(24,671);
Aineq2_3(:,264:287)= eye(24);
Aineq2_3(:,312:335)= -eye(24);
Aineq2_3(:,384:407)= -nch*eye(24);
%% ------------------------------------------------------------------------
Aineq2_4 = zeros(24,671);
Aineq2_4(:,288:311)= eye(24);
Aineq2_4(:,312:335)= eye(24);
Aineq2_4(:,384:407)= (1/ndis)*eye(24);
%% ------------------------------------------------------------------------
Aineq2_5 = zeros(24,671);
Aineq2_5(:,336:359)= eye(24);
Aineq2_5(:,360:383)= eye(24);
Aineq2_5(:,384:407)= -eye(24);
%% ------------------------------------------------------------------------
%% hihi
Aineq2 = [Aineq2_1; Aineq2_2; Aineq2_3; Aineq2_4; Aineq2_5]; %% Rang buoc bien doi ngau
%% ------------------------------------------------------------------------
Aineq3_1 = zeros(24,671);
Aineq3_1(:,216:239)= -eye(24);
Aineq3_1(:,408:431)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_2 = zeros(24,671);
Aineq3_2(:,97:120)= -eye(24);
Aineq3_2(:,168:191)= Pgb_max*eye(24);
Aineq3_2(:,408:431)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_3 = zeros(24,671);
Aineq3_3(:,240:263)= -eye(24);
Aineq3_3(:,432:455)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_4 = zeros(24,671);
Aineq3_4(:,121:144)= -eye(24);
Aineq3_4(:,168:191)= -Pgs_max*eye(24);
Aineq3_4(:,432:455)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_5 = zeros(24,671);
Aineq3_5(:,264:287)= -eye(24);
Aineq3_5(:,456:479)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_6 = zeros(24,671);
Aineq3_6(:,49:72)= -eye(24);
Aineq3_6(:,192:215)= Pch_max*eye(24);
Aineq3_6(:,456:479)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_7 = zeros(24,671);
Aineq3_7(:,288:311)= -eye(24);
Aineq3_7(:,480:503)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_8 = zeros(24,671);
Aineq3_8(:,73:96)= -eye(24);
Aineq3_8(:,192:215)= -Pdis_max*eye(24);
Aineq3_8(:,480:503)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_9 = zeros(24,671);
Aineq3_9(:,336:359)= -eye(24);
Aineq3_9(:,504:527)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_10 = zeros(24,671);
I = [zeros(1,23); -eye(23)];
Aineq3_10(:,145:167)= I;
Aineq3_10(:,504:527)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_11 = zeros(24,671);
Aineq3_11(:,360:383)= -eye(24);
Aineq3_11(:,528:551)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_12 = zeros(24,671);
I = [zeros(1,23); -eye(23)];
Aineq3_12(:,145:167)= I;
Aineq3_12(:,528:551)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_13 = zeros(24,671);
Aineq3_13(:,97:120)= -eye(24);
Aineq3_13(:,552:575)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_14 = zeros(24,671);
Aineq3_14(:,216:239)= -eye(24);
Aineq3_14(:,312:335)= -eye(24);
Aineq3_14(:,552:575)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_15 = zeros(24,671);
Aineq3_15(:,121:144)= -eye(24);
Aineq3_15(:,576:599)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_16 = zeros(24,671);
Aineq3_16(:,240:263)= -eye(24);
Aineq3_16(:,312:335)= eye(24);
Aineq3_16(:,576:599)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_17 = zeros(24,671);
Aineq3_17(:,49:72)= -eye(24);
Aineq3_17(:,600:623)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_18 = zeros(24,671);
Aineq3_18(:,264:287)= -eye(24);
Aineq3_18(:,312:335)= eye(24);
Aineq3_18(:,384:407)= nch*eye(24);
Aineq3_18(:,600:623)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_19 = zeros(24,671);
Aineq3_19(:,73:96)= -eye(24);
Aineq3_19(:,624:647)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_20 = zeros(24,671);
Aineq3_20(:,288:311)= -eye(24);
Aineq3_20(:,312:335)= -eye(24);
Aineq3_20(:,624:647)= -M*eye(24);
Aineq3_20(:,384:407)= -(1/ndis)*eye(24);
%% ------------------------------------------------------------------------
Aineq3_21 = zeros(24,671);
I = [zeros(1,23); -eye(23)];
Aineq3_21(:,145:167)= I;
Aineq3_21(:,648:671)= M*eye(24);
%% ------------------------------------------------------------------------
Aineq3_22 = zeros(24,671);
Aineq3_22(:,336:359)= -eye(24);
Aineq3_22(:,360:383)= -eye(24);
Aineq3_22(:,384:407)= eye(24);
Aineq3_22(:,648:671)= -M*eye(24);
%% ------------------------------------------------------------------------
Aineq3A = [Aineq3_1;Aineq3_2;Aineq3_3;Aineq3_4;Aineq3_5;Aineq3_6;Aineq3_7;Aineq3_8;Aineq3_9;Aineq3_10;Aineq3_11];
Aineq3B = [Aineq3_12;Aineq3_13;Aineq3_14;Aineq3_15;Aineq3_16;Aineq3_17;Aineq3_18;Aineq3_19;Aineq3_20;Aineq3_21;Aineq3_22];
Aineq3 = [Aineq3A; Aineq3B];
%% hihi
Aineq = [Aineq1; Aineq2; Aineq3]; %% Rang buoc bat dang thuc
%% ---------------------
bineq1 = [zeros(24,1); Pgs_max*ones(24,1); zeros(24,1); Pdis_max*ones(24,1); -Emin*ones(23,1); Emax*ones(23,1)];
Cch = Cch';Cdis=Cdis';Cgb=Cgb';Cgs=Cgs';Cpv=Cpv';Cwt=Cwt';
bineq2 = [Cgb.*ones(24,1); -Cgs.*ones(24,1); Cch.*ones(24,1); Cdis.*ones(24,1); zeros(24,1)];
bineq3A = [M*ones(24,1); zeros(24,1); M*ones(24,1); -Pgs_max*ones(24,1); M*ones(24,1); zeros(24,1); M*ones(24,1); -Pdis_max*ones(24,1); M*ones(24,1); E1 - Emin; -Emin*ones(23,1) ; M*ones(24,1)];
bineq3B = [E1 - Emax; -Emax*ones(23,1) ; M*ones(24,1); -Cgb.*ones(24,1); M*ones(24,1); Cgs.*ones(24,1); M*ones(24,1); -Cch.*ones(24,1); M*ones(24,1); -Cdis.*ones(24,1); M*ones(24,1); zeros(24,1)];
bineq3 = [bineq3A; bineq3B];
bineq = [bineq1; bineq2; bineq3];
%% ------------------------------------------------------------------------
%% Rang buoc dang thuc
Aeq1 = zeros(24,671);
Aeq1(:,1:24) = eye(24);
Aeq1(:,25:48) = eye(24);
Aeq1(:,49:72) = -eye(24);
Aeq1(:,73:96) = eye(24);
Aeq1(:,97:120) = eye(24);
Aeq1(:,121:144) = -eye(24);
%% --------------------------------------
Aeq2 = zeros(24,671);
N = [-(1-s)*eye(22) zeros(22,1)];
P = [zeros(22,1) eye(22)];
Aeq2_1_1 = N + P;
Aeq2_1 = [1 zeros(1,22); Aeq2_1_1; zeros(1,22) -(1-s)];
Aeq2(:,145:167) = Aeq2_1;
Aeq2(:,49:72) = -nch*delta_t*eye(24);
Aeq2(:,73:96) = (1/ndis)*delta_t*eye(24);
%% ---------------------------------------
Aeq = [Aeq1; Aeq2];
beq = [Pl; E1; zeros(22,1); -E25];
%% ------------------------------------------
%% Thuc hien bo giai MILP
%options = optimoptions('intlinprog','Display','off');
[x,fval,exitflag,output] = intlinprog(f,intcon,Aineq,bineq,Aeq,beq,LB,UB);
% x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options)
%x = intlinprog(f,intcon,Aineq,bineq,Aeq,beq,LB,UB);
Walter Roberson
Walter Roberson il 26 Mar 2019
You are probably going to need to contact Support on this, as the routine that needs to be debugged is not available as MATLAB source for me to read.

Accedi per commentare.

Risposte (2)

Alan Weiss
Alan Weiss il 28 Nov 2016
Sometimes this problem occurs if you set nondefault tolerances. But, without seeing your option settings or function call, I have no other suggestions to offer.
Alan Weiss
MATLAB mathematical toolbox documentation
  6 Commenti
Bernhard Fäßler
Bernhard Fäßler il 7 Feb 2017
Hi AAbreu, have you received an answer? I am currently struggling with quiet the same problem (also Matlab R2016a).
christian colombo
christian colombo il 11 Feb 2017
Same error but using linprog instead of intlinprog (Matlab R2016b)

Accedi per commentare.


Huy Nguyen
Huy Nguyen il 18 Mar 2019
When I run a program using function INTLINPROG, it appear the following words: " INTLINPROG encountered an internal error that caused the solution to lose integer and/or linear constraint feasibility. We are sorry for the inconvenience. Please contact technical support for assistance with your problem, quoting the code "-2_4". " What is the problem?
  1 Commento
DianChao  Lin
DianChao Lin il 27 Ago 2019
I have the same problem in R2016b. After I tried another version R2019a (with the same code), the problem disappeared.
So my suggestion is: changing the matlab's version.

Accedi per commentare.

Categorie

Scopri di più su Argument Definitions in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by