如何获得解决不等式系统的最小值?

How to get a minimum value that solve a system of inequalities?

我在 here 中进行了搜索,但是当我尝试使用 JOptimizer 库在 Java 中实现 LP 时,它失去了所有意义,

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

x*k+y*k'>0

与:

1>=x>=0
1>=y>=0

其中 k 和 k' 是常数。

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

谁能帮我解决问题?

看来你对线性规划没有概念。请阅读它。这是您要的答案。

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]);
    }

}