• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java GLPKConstants类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.gnu.glpk.GLPKConstants的典型用法代码示例。如果您正苦于以下问题:Java GLPKConstants类的具体用法?Java GLPKConstants怎么用?Java GLPKConstants使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



GLPKConstants类属于org.gnu.glpk包,在下文中一共展示了GLPKConstants类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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);
}
 
开发者ID:KeepTheBeats,项目名称:alevin-svn2,代码行数:20,代码来源:LpSolver.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:17,代码来源:GLPKLPSolverImpl.java


示例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 );
		}			
	}
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:25,代码来源:GLPKLPSolverImpl.java


示例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 );
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:19,代码来源:GLPKUtils.java


示例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 );
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:24,代码来源:CCAwareGLPKSolver.java


示例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 );
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:15,代码来源:GLPKLPSolverImpl.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:38,代码来源:GLPKLPSolverImpl.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:12,代码来源:GLPKLPSolverImpl.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:14,代码来源:GLPKMIPSolverImpl.java


示例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++;
    }        
}
 
开发者ID:robol,项目名称:shift-scheduler,代码行数:36,代码来源:TimetableSolver.java


示例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++;
    }
}
 
开发者ID:robol,项目名称:shift-scheduler,代码行数:34,代码来源:TimetableSolver.java


示例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++;
}
 
开发者ID:robol,项目名称:shift-scheduler,代码行数:36,代码来源:TimetableSolver.java


示例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++;
        }
    }        
}
 
开发者ID:robol,项目名称:shift-scheduler,代码行数:40,代码来源:TimetableSolver.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:23,代码来源:GLPKLPSolverImpl.java


示例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;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:21,代码来源:GLPKLPSolverImpl.java


示例16: solveLP

import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
/**
	 * Solves the model using the simplex method by default.
	 */
	@Override
	public STATUS solveLP() {
		
		m_simplexCtrl.setMeth( GLPKConstants.GLP_PRIMAL );
		m_simplexCtrl.setTm_lim( 3000 );
		//GLPK.glp_write_lp(m_model, null, "C:\\kl\\tmp\\test.lp" );
		
		GLPK.glp_simplex(m_model, m_simplexCtrl);
		//TODO Rethink perturbation (see commented stuff below) later
		
/*		if (resFlag == GLPKConstants.GLP_ETMLIM) {
			//This means that the model is too hard to solve, most probably due to high
			//primal degeneracy. We perturb it by relaxing lower (=0) column bounds,
			//solve the perturbed version and then try to *re-optimize* the original version 
			m_logger.info( "LP model is too hard, we will perturb it and solve that version first" );

			perturb(m_model, -1E-06);
			m_simplexCtrl.setTm_lim( 300000 );
			m_logger.info( "Solving perturbed instance..." );
			resFlag = GLPK.glp_simplex(m_model, m_simplexCtrl);
			m_logger.info( "... done, restoring the original instance" );
			
			//saveBasis();
			
			perturb(m_model, 0d);
			
			//restoreBasis();
			
			if( resFlag == 0 ) {

				m_logger.info( "Solving the original instance..." );

				m_simplexCtrl.setPresolve( GLPKConstants.GLP_OFF );
				m_simplexCtrl.setMeth( GLPKConstants.GLP_DUAL );
				resFlag = GLPK.glp_simplex( m_model, m_simplexCtrl );
				m_logger.info( resFlag == 0	? "... done!" : "... it didn't work, fail :(" );
				
			} else m_logger.info( "Perturbed instance is no easier, fail" );
		}
		
		if (resFlag != 0) {

			writeLP( "C:///kl//tmp//bad.glpk" );
			//There's no hope...
			throw new CPException("GLPK simplex solver returned an error: " + resFlag, null);
		}*/
		
		return getStatus();
	}
 
开发者ID:klinovp,项目名称:pronto,代码行数:53,代码来源:GLPKLPSolverImpl.java


示例17: setMaximize

import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
/**
 * @param max
 * @throws CPException
 */
@Override
public void setMaximize(boolean max) throws CPException {
	
	GLPK.glp_set_obj_dir(m_model, max ? GLPKConstants.GLP_MAX : GLPKConstants.GLP_MIN);
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:10,代码来源:GLPKLPSolverImpl.java


示例18: getMaximize

import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public boolean getMaximize() {
	
	return GLPK.glp_get_obj_dir( m_model ) == GLPKConstants.GLP_MAX;
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:6,代码来源:GLPKLPSolverImpl.java


示例19: setVariableUpperBound

import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public void setVariableUpperBound(int varIndex, double bound) {

	if (bound <= 0d) {
		
		GLPK.glp_set_col_bnds( m_model, varIndex, GLPKConstants.GLP_FX, 0d, 0d );
		
	} else if (bound == Double.POSITIVE_INFINITY) {
		
		GLPK.glp_set_col_bnds( m_model, varIndex, GLPKConstants.GLP_LO, 0d, bound );
		
	} else {
		
		GLPK.glp_set_col_bnds( m_model, varIndex, GLPKConstants.GLP_DB, 0d, bound );
	}
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:17,代码来源:GLPKLPSolverImpl.java


示例20: setVariableLowerBound

import org.gnu.glpk.GLPKConstants; //导入依赖的package包/类
@Override
public void setVariableLowerBound(int varIndex, double lb) {

	int type = GLPK.glp_get_col_type( m_model, varIndex );
	double ub = GLPK.glp_get_col_ub( m_model, varIndex );
	
	if (lb == Double.NEGATIVE_INFINITY) {

		type = (type == GLPKConstants.GLP_FX || type == GLPKConstants.GLP_UP)
												? GLPKConstants.GLP_UP : GLPKConstants.GLP_FR;
		
	} else {
		
		type = (type == GLPKConstants.GLP_FX || type == GLPKConstants.GLP_UP)
												? GLPKConstants.GLP_FX : GLPKConstants.GLP_LO;
	}
	
	GLPK.glp_set_col_bnds( m_model, varIndex, type, lb, ub );		
}
 
开发者ID:klinovp,项目名称:pronto,代码行数:20,代码来源:GLPKLPSolverImpl.java



注:本文中的org.gnu.glpk.GLPKConstants类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java EtherTypes类代码示例发布时间:2022-05-22
下一篇:
Java BuildProcess类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap