Hi Miles,
       Thanks again for the reply. Here are my answers:
(1) For the initial state, instead of using the Neel state |10101010...>, I used the one where singly occupied site (denoted by 1) and vacant site (denoted by 0) are randomly placed in the lattice.
(2) As you suggested, I added a small field term on the first site for the spin-1 case. The only difference I found was in the values of the the correlation between the first few sites.
(3) Likewise, I modeled this system with "Spinless" siteset, I obtained results nearly identical to the spin-1/2 case.
(4) Here's the code for the spin-1 case:
double pi = M_PI;
       
int N = 100;
double c = 0.1; 
        
double h = 1;
    
double J_factor = -0.5;
int gamma = 180; 
    
int theta = 0; 
double B_o = 1; 
    
double B_e = B_o;
        
double B_2 = B_o * exp(-c*(2 * sin ((gamma*pi/180)/2) - 1) ); 
    
double U = 30;
    
double V_e = 1 - 3 * pow(cos(pi - (gamma*pi/180)/2 - theta*pi/180), 2);
    
double V_o = 1 - 3 * pow(cos((gamma*pi/180)/2 - theta*pi/180), 2);
    
double V_2 = (1/pow((2*(1 - cos(gamma*pi/180))), 1.5)) * (1 - 3 * pow(cos(pi/2 - theta*pi/180), 2));
        
double a_o = V_o/B_o;
    
double a_e = V_e/B_e;
    
double a_2 = V_2/B_2;
          
auto sites = SpinOne(N);
    
auto ampo = AutoMPO(sites);
for(int j = 1; j <= N; ++j)
    {
    ampo += U, "Sz2",j;
    ampo += U,"Sz",j; 
    }                
        
for(int j = 1; j < N; ++j)
    { 
       if(j%2 != 0)
           {
           ampo += B_o * J_factor,"S+",j,"S-",j+1; 
        ampo += B_o * J_factor,"S-",j,"S+",j+1; 
           ampo += B_o * a_o,"Sz",j,"Sz",j+1;
           }
       else 
           {
           ampo += B_e * J_factor,"S+",j,"S-",j+1; 
        ampo += B_e * J_factor,"S-",j,"S+",j+1; 
           ampo += B_e * a_e,"Sz",j,"Sz",j+1;
           }
    }
for(int j = 1; j < N-1; ++j) 
    {
    ampo += B_2 * J_factor,"S+",j,"S-",j+2;
    ampo += B_2 * J_factor,"S-",j,"S+",j+2;
        ampo += B_2 * a_2,"Sz",j,"Sz",j+2; 
    }        
for(int j = 1; j <= N; ++j)
    {
    ampo += h,"Sz",j;
    }
                
auto H = IQMPO(ampo);
    
auto initState = InitState(sites); 
        
cout << endl << "#Vector v(N):" << endl;
        
int v[N] = {1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0};
        
cout << endl << endl << "#Initial wavefunction MPS mapped to vector v(N):" << endl;
    
for(int i = 1; i <= N; ++i) 
       {
       if(v[i-1] == 1)
           {
           initState.set(i,"Z0"); 
        cout << "0 ";
        }
    else if(v[i-1] == 0)
           {
           initState.set(i,"Dn"); 
        cout << "-1 ";
        }    
       }
       
auto psi = IQMPS(initState);
            
printfln("Initial energy = %.5f", overlap(psi,H,psi) );
auto sweeps = Sweeps(7);
sweeps.maxm() = 10,20,80,200,300,400,400;
sweeps.minm() = 1,1,1,1,1,1,1;
sweeps.cutoff() = 1E-5,1E-6,1E-7,1E-8,1E-8,1E-8;
sweeps.niter() = 4,3,3,2,2,2,2;
sweeps.noise() = 1E-5,1E-5,1E-8,1E-9,1E-10,1E-10,1E-10;
println(sweeps);
auto energy = dmrg(psi,H,sweeps,{"Quiet=",true});