* Bug #12111 fixed - karmarkar function did not generate appropriate warnings. 11/10711/3
Charlotte HECQUET [Wed, 6 Mar 2013 10:52:21 +0000 (11:52 +0100)]
Change-Id: I6e68e705a676cbdcc3c348a7310bec38cdea82cd

scilab/CHANGES_5.4.X
scilab/modules/optimization/macros/karmarkar.sci
scilab/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref [new file with mode: 0644]
scilab/modules/optimization/tests/nonreg_tests/bug_12111.tst [new file with mode: 0644]

index 7062eed..e8d8ca6 100644 (file)
@@ -406,6 +406,8 @@ Bug fixes
 
 * Bug #12097 fixed - Scilab wrongly detected DLL platform information.
 
+* Bug #12111 fixed - karmarkar function did not generate appropriate warnings.
+
 * Bug #12115 fixed - phaseplot(frq,db,phi) did not work.
 
 * Bug #12119 fixed - bar and barh had wrong x/y bounds.
index 61e34d7..4ac456a 100644 (file)
@@ -233,6 +233,11 @@ function [xopt,fopt,exitflag,iter,yopt]=karmarkar(varargin)
     //
     // Extract the solution from the initial problem
     [xopt,fopt,yopt] = karmarkar_postprocess ( Aeq , beq , c , A , b , lb , ub , pinit , xxopt , yyopt , exitflag )
+
+    if lhs < 3 & exitflag~= 1 then
+        warning(msprintf(gettext("%s: The algorithm did not converge (exitflag= %d).\n"),"karmarkar",exitflag));
+    end
+
 endfunction
 
 function [AAeq,bbeq,cc,xx0,pinit,newposvars] = karmarkar_preprocess ( Aeq , beq , c , A , b , lb , ub , x0 )
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref b/scilab/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref
new file mode 100644 (file)
index 0000000..7f394e5
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 12111 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12111
+//
+// <-- Short Description -->
+// karmarkar does not generate appropriate warnings
+//
+// <-- ENGLISH IMPOSED -->
+A=[-0.1548 -0.0909 -0.0014 -0.0001; 0.0989 -0.0884 0.0004 0];
+B=[0.1966354; 0.2167484];
+C=[0.2056; 0.0908; 0.0012; 0];
+lb=[0; 0; 0; 0];
+ub=[1; 1; 1; 1];
+assert_checktrue(execstr("xopt=karmarkar([],[],C,[],[],[],[],[],A,B,lb,ub)","errcatch")==0);
+WARNING: karmarkar: The algorithm did not converge (exitflag= -2).
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_12111.tst b/scilab/modules/optimization/tests/nonreg_tests/bug_12111.tst
new file mode 100644 (file)
index 0000000..2d68646
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 12111 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12111
+//
+// <-- Short Description -->
+// karmarkar does not generate appropriate warnings
+//
+// <-- ENGLISH IMPOSED -->
+
+A=[-0.1548 -0.0909 -0.0014 -0.0001; 0.0989 -0.0884 0.0004 0];
+B=[0.1966354; 0.2167484];
+C=[0.2056; 0.0908; 0.0012; 0];
+lb=[0; 0; 0; 0];
+ub=[1; 1; 1; 1];
+assert_checktrue(execstr("xopt=karmarkar([],[],C,[],[],[],[],[],A,B,lb,ub)","errcatch")==0);