-#include "opencv2/ts.hpp"
#include "precomp.hpp"
#include <climits>
#include <algorithm>
#include <cstdarg>
+#define ALEX_DEBUG
+
namespace cv{namespace optim{
using std::vector;
+using namespace std;
#ifdef ALEX_DEBUG
#define dprintf(x) printf x
static void print_matrix(const Mat& x){
- printf("\ttype:%d vs %d,\tsize: %d-on-%d\n",(x).type(),CV_64FC1,(x).rows,(x).cols);
- for(int i=0;i<(x).rows;i++){
+ printf("\ttype:%d vs %d,\tsize: %d-on-%d\n",x.type(),CV_64FC1,x.rows,x.cols);
+ if(!true){
+ //cout<<x;
+ }
+ else{
+
+ for(int i=0;i<x.rows;i++){
printf("\t[");
- for(int j=0;j<(x).cols;j++){
- printf("%g, ",(x).at<double>(i,j));
+ for(int j=0;j<x.cols;j++){
+ printf("%g, ",x.at<double>(i,j));
}
printf("]\n");
}
+ }
}
static void print_simplex_state(const Mat& c,const Mat& b,double v,const std::vector<int> N,const std::vector<int> B){
printf("\tprint simplex state\n");
- printf("v=%g\n",(v));
+ printf("v=%g\n",v);
printf("here c goes\n");
- print_matrix((c));
+ print_matrix(c);
printf("non-basic: ");
- for (std::vector<int>::const_iterator it = (N).begin() ; it != (N).end(); ++it){
+ for (std::vector<int>::const_iterator it = N.begin() ; it != N.end(); ++it){
printf("%d, ",*it);
}
printf("\n");
printf("here b goes\n");
- print_matrix((b));
+ print_matrix(b);
printf("basic: ");
- for (std::vector<int>::const_iterator it = (B).begin() ; it != (B).end(); ++it){
+ for (std::vector<int>::const_iterator it = B.begin() ; it != B.end(); ++it){
printf("%d, ",*it);
}
printf("\n");
}
#else
-#define dprintf(x) do {} while (0)
-#define print_matrix(x) do {} while (0)
-#define print_simplex_state(c,b,v,N,B) do {} while (0)
+#define dprintf(x)
+#define print_matrix(x)
+#define print_simplex_state(c,b,v,N,B)
#endif
/**Due to technical considerations, the format of input b and c is somewhat special:
for(int I=1;I<old_c.cols;I++){
if((iterator=std::find(N.begin(),N.end(),I))!=N.end()){
dprintf(("I=%d from nonbasic\n",I));
- fflush(stdout);
int iterator_offset=iterator-N.begin();
c(0,iterator_offset)+=old_c(0,I);
print_matrix(c);
}else{
dprintf(("I=%d from basic\n",I));
- fflush(stdout);
int iterator_offset=std::find(B.begin(),B.end(),I)-B.begin();
c-=old_c(0,I)*b.row(iterator_offset).colRange(0,b.cols-1);
v+=old_c(0,I)*b(iterator_offset,b.cols-1);