首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何求出求解不等式系统的最小值?

如何求出求解不等式系统的最小值?
EN

Stack Overflow用户
提问于 2016-11-16 15:02:47
回答 1查看 587关注 0票数 2

我已经在here中搜索过了,但是当我尝试用JOptimizer库在JOptimizer中实现LP时,它就失去了意义,

我需要找到一个方法来解决这个简单的不平等:

代码语言:javascript
复制
x*k+y*k'>0

通过以下方式:

代码语言:javascript
复制
1>=x>=0
1>=y>=0

其中k和k‘是给定的常数。

解决这个问题的最好方法是什么?

有人能帮我解决我的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-05 21:17:46

看来你对线性规划一无所知。请读一读。这是你想要的答案。

代码语言:javascript
复制
import com.joptimizer.functions.ConvexMultivariateRealFunction;
import com.joptimizer.functions.LinearMultivariateRealFunction;
import com.joptimizer.optimizers.JOptimizer;
import com.joptimizer.optimizers.OptimizationRequest;
import com.joptimizer.optimizers.PrimalDualMethod;

/**
 *
 * @author K.P.L.Kanchana
 */
public class Demo {

    public static void main(String[] args){
//        BasicConfigurator.configure(); // uncomment and see the console log4j:WARN

           // setting value for k as k1 variable
           double k1 = 100.2;

           // setting value for k' as k2 variable
           double k2 = 30.4;

        // Objective function (plane)
        LinearMultivariateRealFunction objectiveFunction = new LinearMultivariateRealFunction(new double[] {-k1, -k2}, 0); // Maximize kX + K'X

        //inequalities (polyhedral feasible set G.X<H )
        ConvexMultivariateRealFunction[] inequalities = new ConvexMultivariateRealFunction[4];
        // x > 0 ('<=' constraints not applicable in JOptimizer)
        inequalities[0] = new LinearMultivariateRealFunction(new double[] {-1, 0}, 0); // -x > o
        // y > 0 ('<=' constraints not applicable in JOptimizer)
        inequalities[1] = new LinearMultivariateRealFunction(new double[] {0, -1}, 0); // -y > o
        // x < 1 ('<=' constraints not applicable in JOptimizer)
        inequalities[2] = new LinearMultivariateRealFunction(new double[] {1, 0}, -1); // x-1 < o
        // y < 1 ('<=' constraints not applicable in JOptimizer)
        inequalities[3] = new LinearMultivariateRealFunction(new double[] {0, 1}, -1); // y-1 < o

        //optimization problem
        OptimizationRequest or = new OptimizationRequest();
        or.setF0(objectiveFunction);
        or.setFi(inequalities);

        or.setToleranceFeas(JOptimizer.DEFAULT_FEASIBILITY_TOLERANCE);
        or.setTolerance(JOptimizer.DEFAULT_TOLERANCE);

        //optimization
        PrimalDualMethod opt = new PrimalDualMethod();
        opt.setOptimizationRequest(or);
        try {
            int returnCode = opt.optimize();
        }
        catch (Exception ex) {
            ex.printStackTrace();
            return;
        }

        // get the solution
        double[] sol = opt.getOptimizationResponse().getSolution();

        // display the solution
        System.out.println("X = " + sol[0]);
        System.out.println("X = " + sol[1]);
    }

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40635396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档