本文整理汇总了Java中org.gnu.glpk.GLPKConstants类的典型用法代码示例。如果您正苦于以下问题:Java GLPKConstants类的具体用法?Java GLPKConstants怎么用?Java GLPKConstants使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
GLPKConstants类属于org.gnu.glpk包,在下文中一共展示了GLPKConstants类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: initialize
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
public static void initialize() {
try {
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
// try to load Windows library
System.loadLibrary("glpk_4_47_java");
} else {
// try to load Linux library
System.loadLibrary("glpk_java");
}
} catch (UnsatisfiedLinkError e) {
System.err
.println("The dynamic link library for GLPK for Java could not be "
+ "loaded.\nConsider using\njava -Djava.library.path=");
throw e;
}
GLPK.glp_java_set_msg_lvl(GLPKConstants.GLP_JAVA_MSG_LVL_OFF);
GLPK.glp_term_out(GLPKConstants.GLP_OFF);
}
示例2: removeRows
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public void removeRows(int[] indexes) throws CPException {
SWIGTYPE_p_int ind = GLPK.new_intArray( indexes.length + 1 );
for (int i = 0; i < indexes.length; i++) {
GLPK.intArray_setitem( ind, i + 1, indexes[i] );
}
GLPK.glp_del_rows( m_model, indexes.length, ind );
GLPK.delete_intArray( ind );
m_simplexCtrl.setPresolve( GLPKConstants.GLP_ON );
m_colStats = null;
m_rowStats = null;
}
示例3: setRowBounds
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
public void setRowBounds(int rowIndex, double lBound, double uBound) {
if (lBound == Double.NEGATIVE_INFINITY) {
if (uBound == Double.POSITIVE_INFINITY) {
//Set the row free
GLPK.glp_set_row_bnds( m_model, rowIndex, GLPKConstants.GLP_FR, 0, 0 );
} else {
//Upper bound
GLPK.glp_set_row_bnds( m_model, rowIndex, GLPKConstants.GLP_UP, 0, uBound );
}
} else {
if (uBound == Double.POSITIVE_INFINITY) {
//Lower bound
GLPK.glp_set_row_bnds( m_model, rowIndex, GLPKConstants.GLP_LO, lBound, 0 );
} else {
//Double bound
GLPK.glp_set_row_bnds( m_model, rowIndex, GLPKConstants.GLP_DB, lBound, uBound );
}
}
}
示例4: setColumnCoefficients
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
protected static void setColumnCoefficients(glp_prob model, int index, double[] column) {
SWIGTYPE_p_double col = GLPK.new_doubleArray( column.length );
SWIGTYPE_p_int ind = GLPK.new_intArray( column.length );
//Set the coefficients
for (int i = 1; i < column.length; i++) {
GLPK.doubleArray_setitem( col, i, column[i] );
GLPK.intArray_setitem( ind, i, i );
}
GLPK.glp_set_mat_col( model, index, column.length - 1, ind, col );
GLPK.glp_set_col_kind( model, index, GLPKConstants.GLP_CV );
GLPK.glp_set_col_bnds( model, index, GLPKConstants.GLP_LO, 0, Double.MAX_VALUE );
GLPK.delete_doubleArray( col );
GLPK.delete_intArray( ind );
}
示例5: removeColumns
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public void removeColumns(String namePrefix) {
assertIndex();
SWIGTYPE_p_int delIndex = GLPK.new_intArray( getColumnNumber() );
int ind = 1;
for (int i = getFirstColumnIndex(); i <= getColumnNumber(); i++) {
String colName = GLPK.glp_get_col_name( getModel(), i );
if (colName != null && colName.startsWith( namePrefix )) {
GLPK.intArray_setitem( delIndex, ind++, i );
}
}
if (ind > 1) {
GLPK.glp_del_cols( getModel(), ind - 1, delIndex );
}
GLPK.delete_intArray( delIndex );
getSimplexCtrl().setPresolve( GLPKConstants.GLP_ON );
}
示例6: removeColumns
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public void removeColumns(int[] indexes) throws CPException {
SWIGTYPE_p_int ind = GLPK.new_intArray( indexes.length + 1 );
for (int i = 0; i < indexes.length; i++) {
GLPK.intArray_setitem( ind, i + 1, indexes[i] );
}
GLPK.glp_del_cols( m_model, indexes.length, ind );
GLPK.delete_intArray( ind );
m_simplexCtrl.setPresolve( GLPKConstants.GLP_ON );
}
示例7: checkRow
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
private boolean checkRow( SWIGTYPE_p_double row,
SWIGTYPE_p_int varIndexes,
int len,
int type,
double lb,
double ub,
double[] assignment) {
//Compute left hand-side first
double lhs = 0d;
boolean result = false;
for (int i = 1; i <= len; i++) {
int varInd = GLPK.intArray_getitem(varIndexes, i);
double coeff = GLPK.doubleArray_getitem(row, i);
lhs += coeff * assignment[varInd - 1];
}
if (type == GLPKConstants.GLP_FX) {
result = NumberUtils.equal(lhs, lb);
}
if (type == GLPKConstants.GLP_LO) {
result = !NumberUtils.greater(lb, lhs);
}
if (type == GLPKConstants.GLP_UP) {
result = !NumberUtils.greater(lhs, ub);
}
return result;
}
示例8: getStatus
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public STATUS getStatus() {
int status = GLPK.glp_get_status( m_model );
if (status == GLPKConstants.GLP_OPT) return STATUS.OPTIMAL;
if (status == GLPKConstants.GLP_FEAS) return STATUS.FEASIBLE;
if (status == GLPKConstants.GLP_NOFEAS) return STATUS.INFEASIBLE;
return STATUS.UNDEFINED;
}
示例9: getStatus
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public STATUS getStatus() {
int simplexStatus = GLPK.glp_get_status( getModel() );
int mipStatus = GLPK.glp_mip_status( getModel());
if (mipStatus == GLPKConstants.GLP_OPT) return STATUS.OPTIMAL;
if (mipStatus == GLPKConstants.GLP_FEAS) return STATUS.FEASIBLE;
if (mipStatus == GLPKConstants.GLP_NOFEAS
|| simplexStatus == GLPKConstants.GLP_NOFEAS) return STATUS.INFEASIBLE;
return STATUS.UNDEFINED;
}
示例10: requireOneShiftOnly
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
private void requireOneShiftOnly() {
GLPK.glp_add_rows(problem, n * (2*d+1));
for (int i = 0; i < n; i++) {
int shift = i * (d * m + ms);
for (int ii = 0; ii < d; ii++) {
// One shift only in the morning
for (int iii = shift + ii*m + 1; iii <= shift + ii*m + mm; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, iii);
GLPK.doubleArray_setitem(va, el, 1);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX, 1.0, 1.0);
r++;
// One shift only in the afternoon
for (int iii = shift + ii*m + mm + 1; iii <= shift + ii*m + m; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, iii);
GLPK.doubleArray_setitem(va, el, 1);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX, 1.0, 1.0);
r++;
}
// One shift only on Sunday
for (int iii = shift + m*d + 1; iii <= shift + m*d + ms; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, iii);
GLPK.doubleArray_setitem(va, el, 1);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX, 1.0, 1.0);
r++;
}
}
示例11: requireCorrectWorkingHours
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
private void requireCorrectWorkingHours() {
GLPK.glp_add_rows(problem, n);
for (int i = 0; i < n; i++) {
int shift = i * (d*m+ms);
for (int ii = 1; ii <= d; ii++) {
for (int iii = 1; iii <= mm; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + (ii-1)*m + iii);
GLPK.doubleArray_setitem(va, el,
(iii < mm) ? shift_storage.getMorningShift(iii-1).length() : 0.0);
}
for (int iii = 1; iii <= ma; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + (ii-1)*m + mm + iii);
GLPK.doubleArray_setitem(va, el,
(iii < ma) ? shift_storage.getAfternoonShift(iii-1).length() : 0.0);
}
}
// Sunday shifts are at the end
for (int iii = 1; iii <= ms; iii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + d*m + iii);
GLPK.doubleArray_setitem(va, el,
(iii < ms) ? shift_storage.getSundayShift(iii-1).length() : 0.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX,
storage.getEmployee(i).hours, storage.getEmployee(i).hours);
r++;
}
}
示例12: requireMinimumWorkingPeople
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
private void requireMinimumWorkingPeople() {
int minimum_morning_people[] = settings.minimum_working_people_morning;
int minimum_afternoon_people[] = settings.minimum_working_people_afternoon;
int minimum_sunday_people = (ms > 1) ? settings.minimum_working_people_sunday : 0;
GLPK.glp_add_rows(problem, 2*d + 1);
for (int i = 1 ; i <= d; i++) {
// Counting shifts in the morning
for (int ii = 1; ii <= n; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, (ii-1)*(d*m+ms) + (i-1)*m + mm);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_UP, 0.0, n-minimum_morning_people[i-1]);
r++;
// Counting shifts in the afternoon
for (int ii = 1; ii <= n; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, (ii-1)*(d*m+ms) + (i-1)*m + m);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_UP, 0.0, n-minimum_afternoon_people[i-1]);
r++;
}
// Counting shifts on Sundays
for (int ii = 1; ii <= n; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, (ii-1)*(d*m+ms) + d*m+ms);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_UP, 0.0, n-minimum_sunday_people);
r++;
}
示例13: requireCoherentFreeDays
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
private void requireCoherentFreeDays() {
for (int i = 0; i < n; i++) {
Employee e = storage.getEmployee(i);
int shift = i*(d*m+ms);
for (Integer free_morning : e.free_mornings) {
GLPK.glp_add_rows(problem, 1);
for (int ii = 1; ii < mm; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + ii + free_morning * m);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX, 0.0, 0.0);
r++;
}
for (Integer free_afternoon : e.free_afternoons) {
GLPK.glp_add_rows(problem, 1);
for (int ii = 1; ii < ma; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + ii + mm + free_afternoon * m);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_FX, 0.0, 0.0);
r++;
}
if (e.free_sunday) {
GLPK.glp_add_rows(problem, 1);
for (int ii = 1; ii < ms; ii++) {
GLPK.intArray_setitem(ia, ++el, r);
GLPK.intArray_setitem(ja, el, shift + ii + d*m);
GLPK.doubleArray_setitem(va, el, 1.0);
}
GLPK.glp_set_row_bnds(problem, r, GLPKConstants.GLP_UP, 0.0, 0.0);
r++;
}
}
}
示例14: addRow
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
/**
* @param coeffs
* @param rhs
* @param type
* @throws CPException
*/
@Override
public int addRow(double[] row, double rhs, LPSolver.ROW_TYPE type, String name) throws CPException {
int index = GLPK.glp_add_rows( m_model, 1 );
GLPKUtils.setRowCoefficients( m_model, index, row, rhs, type );
if (name != null) {
GLPK.glp_set_row_name( m_model, index, name );
}
m_simplexCtrl.setPresolve( GLPKConstants.GLP_ON );
return index;
}
示例15: getDuals
import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
/**
* @return
*/
@Override
public double[] getDuals() {
double[] duals = null;
if( GLPK.glp_get_prim_stat( m_model ) == GLPKConstants.GLP_FEAS ) {
duals = new double[GLPK.glp_get_num_rows( m_model )];
for( int i = 1; i <= duals.length; i++ ) {
duals[i - 1] = NumberUtils.round( GLPK.glp_get_row_dual( m_model, i ) );
}
}
return duals;
}