Create structs (RayList, MultiRowModel, Tableau)
This commit is contained in:
@@ -22,6 +22,8 @@ extern "C" {
|
||||
#include <math.h>
|
||||
#include <multirow/lp.h>
|
||||
#include <multirow/util.h>
|
||||
#include <multirow/lfree2d.h>
|
||||
#include <multirow/cg.h>
|
||||
#include <infinity/greedy-nd.h>
|
||||
}
|
||||
|
||||
@@ -363,19 +365,26 @@ TEST(GreedyNDTest, generate_cut_test_1)
|
||||
{
|
||||
int rval = 0;
|
||||
|
||||
double f[] = { 0.5, 0.5 };
|
||||
double rays[] =
|
||||
{
|
||||
1.0, 1.0,
|
||||
1.0, -1.0,
|
||||
-1.0, -1.0,
|
||||
-1.0, 1.0,
|
||||
0.0, 1.0,
|
||||
1.0, 0.0
|
||||
};
|
||||
double r0[] = { 1.0, 1.0 };
|
||||
double r1[] = { 1.0, -1.0 };
|
||||
double r2[] = { -1.0, -1.0 };
|
||||
double r3[] = { -1.0, 1.0 };
|
||||
double r4[] = { 0.0, 1.0 };
|
||||
double r5[] = { 1.0, 0.0 };
|
||||
double beta[6];
|
||||
|
||||
rval = GREEDY_ND_generate_cut(2, 6, f, rays, beta);
|
||||
struct MultiRowModel model;
|
||||
CG_malloc_model(&model, 2, 6);
|
||||
LFREE_push_ray(&model.rays, r0);
|
||||
LFREE_push_ray(&model.rays, r1);
|
||||
LFREE_push_ray(&model.rays, r2);
|
||||
LFREE_push_ray(&model.rays, r3);
|
||||
LFREE_push_ray(&model.rays, r4);
|
||||
LFREE_push_ray(&model.rays, r5);
|
||||
model.f[0] = 0.5;
|
||||
model.f[1] = 0.5;
|
||||
|
||||
rval = GREEDY_ND_generate_cut(&model, beta);
|
||||
abort_if(rval, "GREEDY_ND_generate_cut failed");
|
||||
|
||||
EXPECT_NEAR(beta[0], 0.5, 1e-6);
|
||||
@@ -393,19 +402,27 @@ TEST(GreedyNDTest, generate_cut_test_2)
|
||||
{
|
||||
int rval = 0;
|
||||
|
||||
double f[] = { 0.75, 0.75, 0.75};
|
||||
double rays[] =
|
||||
{
|
||||
1.0, 0.0, 0.0,
|
||||
-1.0, 0.0, 0.0,
|
||||
0.0, 1.0, 0.0,
|
||||
0.0, -1.0, 0.0,
|
||||
0.0, 0.0, 1.0,
|
||||
0.0, 0.0, -1.0
|
||||
};
|
||||
double r0[] = { 1.0, 0.0, 0.0 };
|
||||
double r1[] = {-1.0, 0.0, 0.0 };
|
||||
double r2[] = { 0.0, 1.0, 0.0 };
|
||||
double r3[] = { 0.0, -1.0, 0.0 };
|
||||
double r4[] = { 0.0, 0.0, 1.0 };
|
||||
double r5[] = { 0.0, 0.0, -1.0 };
|
||||
double beta[6];
|
||||
|
||||
rval = GREEDY_ND_generate_cut(3, 6, f, rays, beta);
|
||||
struct MultiRowModel model;
|
||||
CG_malloc_model(&model, 3, 6);
|
||||
LFREE_push_ray(&model.rays, r0);
|
||||
LFREE_push_ray(&model.rays, r1);
|
||||
LFREE_push_ray(&model.rays, r2);
|
||||
LFREE_push_ray(&model.rays, r3);
|
||||
LFREE_push_ray(&model.rays, r4);
|
||||
LFREE_push_ray(&model.rays, r5);
|
||||
model.f[0] = 0.75;
|
||||
model.f[1] = 0.75;
|
||||
model.f[2] = 0.75;
|
||||
|
||||
rval = GREEDY_ND_generate_cut(&model, beta);
|
||||
abort_if(rval, "GREEDY_ND_generate_cut failed");
|
||||
|
||||
EXPECT_NEAR(beta[0], 0.75, 1e-6);
|
||||
@@ -416,6 +433,7 @@ TEST(GreedyNDTest, generate_cut_test_2)
|
||||
EXPECT_NEAR(beta[5], 2.25, 1e-6);
|
||||
|
||||
CLEANUP:
|
||||
CG_free_model(&model);
|
||||
if(rval) FAIL();
|
||||
}
|
||||
|
||||
|
||||
@@ -53,39 +53,36 @@ TEST(InfinityTest, sort_rays_angle_test)
|
||||
{
|
||||
int rval = 0;
|
||||
|
||||
int n_rays = 5;
|
||||
double beta[] = {0, 1, 2, 3, 4};
|
||||
double r0[] = { 1.0, 1.0 };
|
||||
double r1[] = { 1.0, 0.0 };
|
||||
double r2[] = { 1.0, -1.0 };
|
||||
double r3[] = { -1.0, 0.0 };
|
||||
double r4[] = { 2.0, 0.0 };
|
||||
|
||||
RayList rays;
|
||||
LFREE_init_ray_list(&rays, 2, 5);
|
||||
LFREE_push_ray(&rays, r0);
|
||||
LFREE_push_ray(&rays, r1);
|
||||
LFREE_push_ray(&rays, r2);
|
||||
LFREE_push_ray(&rays, r3);
|
||||
LFREE_push_ray(&rays, r4);
|
||||
|
||||
rval = sort_rays_by_angle(&rays);
|
||||
abort_if(rval, "sort_rays_by_angle failed");
|
||||
|
||||
SortPair sp0, sp1, sp2, sp3, sp4;
|
||||
|
||||
double rays[] = {
|
||||
1.0, 1.0,
|
||||
1.0, 0.0,
|
||||
1.0, -1.0,
|
||||
-1.0, 0.0,
|
||||
2.0, 0.0,
|
||||
};
|
||||
|
||||
rval = sort_rays_angle(rays, n_rays, beta);
|
||||
abort_if(rval, "sort_rays_angle failed");
|
||||
|
||||
sp0 = { 0, &rays[0] };
|
||||
sp1 = { 1, &rays[2] };
|
||||
sp2 = { 2, &rays[4] };
|
||||
sp3 = { 3, &rays[6] };
|
||||
sp4 = { 4, &rays[8] };
|
||||
sp0 = { 0, LFREE_get_ray(&rays, 0) };
|
||||
sp1 = { 1, LFREE_get_ray(&rays, 1) };
|
||||
sp2 = { 2, LFREE_get_ray(&rays, 2) };
|
||||
sp3 = { 3, LFREE_get_ray(&rays, 3) };
|
||||
sp4 = { 4, LFREE_get_ray(&rays, 4) };
|
||||
|
||||
EXPECT_LE(_qsort_cmp_rays_angle(&sp0, &sp1), 0);
|
||||
EXPECT_LE(_qsort_cmp_rays_angle(&sp1, &sp2), 0);
|
||||
EXPECT_LE(_qsort_cmp_rays_angle(&sp2, &sp3), 0);
|
||||
EXPECT_LE(_qsort_cmp_rays_angle(&sp3, &sp4), 0);
|
||||
|
||||
EXPECT_EQ(beta[0], 3);
|
||||
EXPECT_EQ(beta[1], 0);
|
||||
EXPECT_TRUE(beta[2] == 1 || beta[2] == 4);
|
||||
EXPECT_TRUE(beta[3] == 1 || beta[3] == 4);
|
||||
EXPECT_TRUE(beta[2] != beta[3]);
|
||||
EXPECT_EQ(beta[4], 2);
|
||||
|
||||
CLEANUP:
|
||||
LFREE_free_ray_list(&rays);
|
||||
if (rval) FAIL();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user